亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bsp.c

?? ARM7(LPC2131) + FreeRTOS, 基于 Codesourcery gcc, 共10個任務, 僅占 2k RAM
?? C
?? 第 1 頁 / 共 2 頁
字號:
	U1THR = byte;
	while ((U1LSR&0x20)==0) ;
}*/

/*
*--------------------------------------------------------------------------------------------------
*  串口0發送一串, 使用本身的 FIFO 進行發送, 減少中斷次數
*--------------------------------------------------------------------------------------------------
*/
void UART0_putstr(unsigned char const *str)
{
	unsigned char i, finished=0;
	while (1) {
		for (i=0; i<14; i++) {
			if (*str=='\0') { finished = 1; break; }
			U0THR = *str++;
		}
		if (i) while (!(U0LSR&0x20)) ;
		if (finished) break;
	}
}

/*
*--------------------------------------------------------------------------------------------------
*  串口1發送一串
*--------------------------------------------------------------------------------------------------
*/
/*void UART1_putstr(unsigned char const *str)
{
	while (1) {
		if (*str=='\0') break;
		UART1_putchar(*str++);
	}
}*/

/*}}}PART_3*/
/*{{{PART_4, SPI相關*/

/*
*--------------------------------------------------------------------------------------------------
* Hexok 板上七段數碼管由 SPI 接出
*--------------------------------------------------------------------------------------------------
*/
void SPI_Init(void)
{
	PINSEL0 |= 0x00001500;     // 設置SPI管腳連接
	PINSEL0 &= ~(3<<14);
	IODIR0  |= (unsigned long)(1<<nDSEN);
	PINSEL2 &= ~(1<<3);
	IODIR1  |= (0x0F<<DIS1);
	IOSET1  |= (0x0F<<DIS1);
	S0SPCCR  = 0x52;           // 設置SPI時鐘分頻
	S0SPCR   = (0 << 3) |      // CPHA = 0, 數據在SCK 的第一個時鐘沿采樣
		   (1 << 4) |      // CPOL = 1, SCK 為低有效
		   (1 << 5) |      // MSTR = 1, SPI 處于主模式
		   (0 << 6) |      // LSBF = 0, SPI 數據傳輸MSB (位7)在先
		   (0 << 7);       // SPIE = 0, SPI 中斷被禁止
}

/*
*--------------------------------------------------------------------------------------------------
*--------------------------------------------------------------------------------------------------
*/
void SPI_SendData(unsigned char pdata)
{
	IOCLR0 |= (unsigned long)(1<<nDSEN);  // 片選74HC595
	S0SPDR = pdata;
	while ((S0SPSR & 0x80)==0);           // 等待SPIF置位,即等待數據發送完畢
	IOSET0 |= (unsigned long)(1<<nDSEN);
}

/*
*--------------------------------------------------------------------------------------------------
*             A                  H G F E D C B A   LED  value     H G F E D C B A   LED  value
*        ----------              1 1 0 0 0 0 0 0   '0'  0xC0      1 0 0 0 1 0 0 0   'A'  0x88
*        | \  |  / |             1 1 1 1 1 0 0 1   '1'  0xF9      1 0 0 0 0 0 1 1   'b'  0x83
*       F|  \ | /  |B            1 0 1 0 0 1 0 0   '2'  0xA4      1 1 0 0 0 1 1 0   'C'  0xC6
*        |         |             1 0 1 1 0 0 0 0   '3'  0xB0      1 0 1 0 0 0 0 1   'd'  0xA1
*        -----G-----             1 0 0 1 1 0 0 1   '4'  0x99      1 0 0 0 0 1 1 0   'E'  0x86
*        |         |             1 0 0 1 0 0 1 0   '5'  0x92      1 0 0 0 1 1 1 0   'F'  0x8E
*       E|  / | \  |C            1 0 0 0 0 0 1 0   '6'  0x82
*        | /  |  \ |  _          1 1 1 1 1 0 0 0   '7'  0xF8      0 1 1 1 1 0 0 0   '7.' 0x78
*        ----------- | | H       1 0 0 0 0 0 0 0   '8'  0x80      0 0 0 0 0 0 0 0   '8.' 0x00
*             D       -          1 0 0 1 0 0 0 0   '9'  0x90      0 0 0 1 0 0 0 0   '9.' 0x10
*--------------------------------------------------------------------------------------------------
*/
const unsigned char DISP_TAB[16] = {
	/*0    1    2    3    4    5    6    7    8    9    A    b    C    d    E    F*/
	0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
};

/*
*--------------------------------------------------------------------------------------------------
* 顯示4位整數,需動態刷新,且不能大于10000
*--------------------------------------------------------------------------------------------------
*/
void DispNumber(unsigned short x)
{
	unsigned char tmp;
	IOSET1 |= (0x0F<<DIS1);
	tmp = DISP_TAB[x/1000];
	SPI_SendData(tmp); //顯示千位數
	IOCLR1 |= (1<<(DIS4));
	vTaskDelay(_2ms);
	IOSET1 |= (0x0F<<DIS1);
	x %= 1000; tmp = DISP_TAB[x/100];
	SPI_SendData(tmp);
	IOCLR1 |= (1<<(DIS3));
	vTaskDelay(_2ms);
	IOSET1 |= (0x0F<<DIS1);
	x %= 100; tmp = DISP_TAB[x/10];
	SPI_SendData(tmp);
	IOCLR1 |= (1<<(DIS2));
	vTaskDelay(_2ms);
	IOSET1 |= (0x0F<<DIS1);
	x %= 10; tmp = DISP_TAB[x];
	SPI_SendData(tmp);
	IOCLR1 |= (1<<(DIS1));
	vTaskDelay(_2ms);
}

/*
*--------------------------------------------------------------------------------------------------
* 顯示1位整數,無需動態刷新
*--------------------------------------------------------------------------------------------------
*/
/*void DispNumber4(unsigned short x)
{
	IOSET1 |= (0x0F<<DIS1);
	SPI_SendData(DISP_TAB[x]); //顯示千位數
	IOCLR1 |= (1<<(DIS4));
}*/

/*}}}PART_4*/
///*{{{PART_5, I2C相關*/
//
//volatile unsigned char  I2C_sla;          // I2C器件從地址
//volatile unsigned long  I2C_suba;         // I2C器件內部子地址
//volatile unsigned char  I2C_suba_num;     // I2C子地址字節數
//volatile unsigned char  *I2C_buf;         // 數據緩沖區指針
//volatile unsigned long  I2C_num;          // 要讀取/寫入的數據個數
//volatile unsigned char  I2C_end;          // I2C總線結束標志:結束總線是置1
//volatile unsigned char  I2C_suba_en;      // 子地址控制。0--子地址已處理或不需要 1--讀操作 2--寫操作
//
///*
//*--------------------------------------------------------------------------------------------------
//*--------------------------------------------------------------------------------------------------
//*/
//void I2C_Init(void)
//{
//	const unsigned long Fi2c=100000;         // 小于等于 400 kHz
//
//	PINSEL0   = (PINSEL0&0xFFFFFF0F)|0x50;   // 配置P0.2為SCL, P0.3為SDA
//	//NSEL0   = (PINSEL0&(~0xF0))|0x50;      // 不影響其它管腳連接
//	I20SCLH   = (Fpclk/Fi2c+1)/2;            // 設定I2C時鐘頻率(100kbps)
//	I20SCLL   = (Fpclk/Fi2c+0)/2;
//	I20CONCLR = 0x2C;
//	I20CONSET = 0x40;                        // 使能主I2C
//}
//
///*
//*--------------------------------------------------------------------------------------------------
//* 注意處理子地址為2字節的情況。
//*--------------------------------------------------------------------------------------------------
//*/
//void I2C_ISR(void) __attribute__ ((interrupt("IRQ")));
//void I2C_ISR(void)
//{
//	switch (I20STAT&0xF8) { // 根據狀態碼進行相應的處理
//		case 0x08: // 已發送起始條件  主發送和主接收都有 裝入SLA+W或者SLA+R
//			if(I2C_suba_en == 1) {             // SLA+R // 指定子地址讀
//				I20DAT = I2C_sla & 0xFE;   // 先寫入地址
//			} else {                           // SLA+W
//				I20DAT = I2C_sla;          // 否則直接發送從機地址
//			}
//			I20CONCLR = (1 << 3)|              // SI
//				    (1 << 5);              // STA
//			break;
//
//		case 0x10://已發送重復起始條件 主發送和主接收都有 裝入SLA+W或者SLA+R
//			I20DAT = I2C_sla;                  // 重起總線后,重發從地址
//			I20CONCLR = 0x28;                  // 清零SI,STA
//			break;
//
//		case 0x18:
//		case 0x28:// 已發送I20DAT中的數據,已接收ACK
//			if (I2C_suba_en == 0) {
//				if (I2C_num > 0) {
//					I20DAT = *I2C_buf++;
//					I20CONCLR = 0x28;  // 清零SI,STA
//					I2C_num--;
//				} else { // 沒有數據發送了 // 停止總線
//					I20CONSET = (1 << 4);  // STO
//					I20CONCLR = 0x28;  // 清零SI,STA
//					I2C_end = 1;       // 總線已經停止
//				}
//			}
//
//			if(I2C_suba_en == 1) {    // 若是指定地址讀,則重新啟動總線
//				if (I2C_suba_num == 2) {
//					I20DAT = ((I2C_suba >> 8) & 0xff);
//					I20CONCLR = 0x28;  // 清零SI,STA
//					I2C_suba_num--;
//					break;
//				}
//
//				if(I2C_suba_num == 1) {
//					I20DAT = (I2C_suba & 0xff);
//					I20CONCLR = 0x28;  // 清零SI,STA
//					I2C_suba_num--;
//					break;
//				}
//
//				if (I2C_suba_num == 0) {
//					I20CONSET = 0x20;
//					I20CONCLR = 0x08;
//					I2C_suba_en = 0;   // 子地址己處理
//					break;
//				}
//			}
//
//			if (I2C_suba_en == 2) {   // 指定子地址寫,子地址尚未指定,則發送子地址
//				if (I2C_suba_num > 0) {
//					if (I2C_suba_num == 2) {
//						I20DAT = ((I2C_suba >> 8) & 0xff);
//						I20CONCLR = 0x28;
//						I2C_suba_num--;
//						break;
//					}
//					if (I2C_suba_num == 1) {
//						I20DAT    = (I2C_suba & 0xff);
//						I20CONCLR = 0x28;
//						I2C_suba_num--;
//						I2C_suba_en  = 0;
//						break;
//					}
//				}
//			}
//			break;
//
//		case 0x40:// 已發送SLA+R,已接收ACK
//			if (I2C_num <= 1) {           // 如果是最后一個字節
//				I20CONCLR = 1 << 2;   // 下次發送非應答信號
//			} else {
//				I20CONSET = 1 << 2;   // 下次發送應答信號
//			}
//			I20CONCLR = 0x28;             // 清零SI,STA
//			break;
//
//		case 0x20: // 已發送SLA+W,已接收非應答
//		case 0x30: // 已發送I20DAT中的數據,已接收非應答
//		case 0x38: // 在SLA+R/W或數據字節中丟失仲裁
//		case 0x48: // 已發送SLA+R,已接收非應答
//			I20CONCLR = 0x28;
//			I2C_end = 0xFF;
//			break;
//
//		case 0x50: // 已接收數據字節,已返回ACK
//			*I2C_buf++ = I20DAT;
//			I2C_num--;
//			if (I2C_num == 1) {           // 接收最后一個字節
//				I20CONCLR = 0x2C;     // STA,SI,AA = 0
//			} else {
//				I20CONSET = 0x04;     // AA=1
//				I20CONCLR = 0x28;
//			}
//			break;
//
//		case 0x58: // 已接收數據字節,已返回非應答
//			*I2C_buf++ = I20DAT;          // 讀取最后一字節數據
//			I20CONSET = 0x10;             // 結束總線
//			I20CONCLR = 0x28;
//			I2C_end = 1;
//			break;
//
//		default: break;
//	}
//	VICVectAddr = 0x00;                           // 中斷處理結束
//}
//
///*}}}PART_5*/
/*{{{PART_6, ADC相關*/

/*
*--------------------------------------------------------------------------------------------------
*--------------------------------------------------------------------------------------------------
*/
void ADC_Init(void)
{
	PINSEL1 |= (1<<24);               // P0.28連接到AD0.1
	AD0CR  = (1 << 1);              // SEL=8,選擇通道1
	AD0CR |= ((Fpclk/500000-1)<<8); // CLKDIV=Fpclk/1000000-1,轉換時鐘為1MHz
	//0CR |= (0 << 16);             // BURST=0,軟件控制轉換操作
	//0CR |= (0 << 17);             // CLKS=0, 使用11clock轉換
	AD0CR |= (1 << 21);             // PDN=1,正常工作模式
	//0CR |= (0 << 22);             // TEST1:0=00,正常工作模式
	AD0CR |= (1 << 24);             // START=1,直接啟動ADC轉換
	//0CR |= (0 << 27);             // 直接啟動ADC轉換時,此位無效
}

/*
*--------------------------------------------------------------------------------------------------
*--------------------------------------------------------------------------------------------------
*/
void ADC0_read(unsigned long *ADC_Data)
{
	while (!(AD0GDR&0x80000000)) ;             // 等待轉換結束
	*ADC_Data = AD0GDR;
	*ADC_Data = (*ADC_Data>>6)&0x03FF;         // 讀取ADC結果
	AD0CR |= 1 << 24;                          // 再啟動轉換
}

/*}}}PART_6*/

/*=============================================<EOF>=============================================*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久一牛影视| 欧美成人在线直播| 国产成人午夜99999| 日本在线观看不卡视频| 亚洲成人综合网站| 亚洲综合另类小说| 亚洲成人激情综合网| 亚洲chinese男男1069| 午夜激情久久久| 免费久久精品视频| 激情另类小说区图片区视频区| 国产综合久久久久久久久久久久| 国内精品久久久久影院色| 国产电影一区在线| 99久久久精品| 欧美日韩在线播| 欧美日本韩国一区| xf在线a精品一区二区视频网站| 91精品福利在线一区二区三区| 精品处破学生在线二十三| 久久综合视频网| 亚洲欧洲日韩在线| 亚洲一区二区免费视频| 毛片av中文字幕一区二区| 国产精品中文字幕欧美| 91蜜桃免费观看视频| 在线播放91灌醉迷j高跟美女| 精品99一区二区| 亚洲日本va午夜在线电影| 天使萌一区二区三区免费观看| 狠狠色2019综合网| 在线一区二区三区四区五区| 91麻豆精品国产自产在线观看一区| 欧美成人bangbros| 亚洲精品伦理在线| 久久超级碰视频| 日本乱人伦aⅴ精品| 精品国产不卡一区二区三区| 亚洲色图一区二区| 国产在线日韩欧美| 欧美日韩一区 二区 三区 久久精品| 日韩美一区二区三区| 亚洲免费观看在线观看| 国内精品视频666| 欧美日韩三级一区二区| 国产精品视频一二三区| 日韩不卡手机在线v区| 91香蕉视频在线| www国产亚洲精品久久麻豆| 亚洲一区二区三区视频在线| 国产精品一区二区在线看| 欧美视频一区二区在线观看| 国产精品午夜电影| 极品少妇一区二区三区精品视频 | 日韩精品1区2区3区| 国产成人在线视频免费播放| 欧美一区二区三区色| 亚洲情趣在线观看| 波多野洁衣一区| 精品va天堂亚洲国产| 毛片不卡一区二区| 在线成人av网站| 视频在线观看一区| 欧美日韩视频在线一区二区 | 欧美日韩国产首页在线观看| 国产精品久久一卡二卡| 激情文学综合插| 日韩三级视频在线观看| 日韩精品一区第一页| 欧美日韩精品欧美日韩精品一 | 国产亚洲一区二区在线观看| 国产麻豆精品在线| 欧美一区二区三区的| 日本最新不卡在线| 日韩一区二区三区视频在线| 免费成人在线网站| 日韩美女主播在线视频一区二区三区| 日韩精品成人一区二区在线| 欧美一级黄色片| 久久99热国产| 久久精品欧美日韩精品| 国产成人综合在线| 国产精品久久久久四虎| 99久久精品免费看国产免费软件| 国产精品久久久久一区| 99久久精品99国产精品| 亚洲伦在线观看| 欧美日韩国产综合一区二区 | 日韩欧美一区中文| 激情五月婷婷综合网| 久久久久久黄色| 国产99精品国产| 亚洲精品高清在线| 欧美日本一区二区| 国产一区二区美女| 亚洲欧美日韩国产一区二区三区 | 99久久久精品免费观看国产蜜| 亚洲视频免费观看| 欧美日韩大陆在线| 看电视剧不卡顿的网站| 久久久久久一二三区| 99国产精品国产精品久久| 香蕉影视欧美成人| 久久亚洲精精品中文字幕早川悠里| 国产成人99久久亚洲综合精品| 亚洲激情在线激情| 日韩欧美你懂的| 91天堂素人约啪| 美女视频黄免费的久久| 中文字幕免费一区| 欧美精品日韩综合在线| 粉嫩av一区二区三区在线播放| 亚洲日本中文字幕区| 日韩色在线观看| 91久久国产综合久久| 国产裸体歌舞团一区二区| 亚洲综合另类小说| 日本一区二区不卡视频| 欧美精品视频www在线观看 | 色婷婷精品大在线视频| 国产一区二区三区免费看| 亚洲一区在线视频| 日韩美女主播在线视频一区二区三区| 91麻豆精东视频| 国产一区二区三区电影在线观看| 一级女性全黄久久生活片免费| 久久色视频免费观看| 91精品蜜臀在线一区尤物| 国产原创一区二区| 日本美女一区二区| 亚洲国产精品久久艾草纯爱| 国产欧美一区二区三区在线看蜜臀 | 日韩一区二区三区免费看| 成人激情校园春色| 国产一二精品视频| 日韩精品电影一区亚洲| 亚洲成人自拍一区| 亚洲国产综合91精品麻豆| 中文字幕在线视频一区| 久久久久久99久久久精品网站| 欧美一区二区三区日韩| 欧美美女bb生活片| 欧美性生交片4| 欧美伊人精品成人久久综合97 | 精品亚洲免费视频| 日本中文字幕一区二区视频| 亚洲国产日韩一级| 一区二区三区不卡在线观看| 亚洲天堂精品视频| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 99在线热播精品免费| 福利一区福利二区| 成人午夜短视频| 99久久国产综合精品色伊| 国产成+人+日韩+欧美+亚洲| 国产成人免费9x9x人网站视频| 日韩国产精品久久久久久亚洲| 亚洲一区二区av电影| 亚洲国产综合91精品麻豆| 视频一区中文字幕国产| 久久精品噜噜噜成人av农村| 久久不见久久见中文字幕免费| 精品一区二区在线视频| 国产美女精品人人做人人爽| 国产成人综合在线| 成人av网址在线| 在线欧美日韩国产| 欧美日韩国产另类不卡| 日韩手机在线导航| 日韩美女在线视频| 国产精品久久久久久久久免费桃花 | 欧美在线综合视频| 欧美高清dvd| 精品国产自在久精品国产| 国产午夜精品一区二区三区视频 | 中文字幕国产一区二区| 亚洲三级在线免费观看| 国产日产欧美一区| 国产欧美一区二区三区在线看蜜臀 | 欧美日韩精品一区二区在线播放| 日韩欧美亚洲另类制服综合在线| 久久久久国产精品厨房| 日韩一区在线播放| 日韩二区在线观看| 国产精品自在在线| 色婷婷久久一区二区三区麻豆| 欧美人妖巨大在线| 久久色.com| 婷婷开心久久网| 成人h动漫精品一区二区| 欧美日本乱大交xxxxx| 久久免费偷拍视频| 亚洲第一精品在线| 波波电影院一区二区三区| 日韩三级电影网址| 亚洲免费高清视频在线| 国产成人综合在线观看| 91精品中文字幕一区二区三区| 亚洲国产精品av| 老鸭窝一区二区久久精品|