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

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

?? usart_main.c

?? 介紹AVR單片機對串口的簡單中斷發送和中斷接收
?? C
字號:
/***********************************************
****      AVR  USART串口使用范例              ***
****  	                                     ***
**** 作者:  HJJourAVR                        ***
**** 編譯器:WINAVR20050214                   ***
****                                         ***
****  	www.OurAVR.com	 2005.9.10            ***
***********************************************/
/*
本程序簡單的示范了如何使用ATMEGA16的USART
	USART的設置
	波特率的計算
	發送采用查詢方式
	接收采用中斷方式

除非有特殊格式要求,否則不建議使用 printf函數庫,該函數會耗用3~6KB程序空間
這里的應用比較簡單,所以自己編寫了put_c/put_s函數。

出于簡化程序考慮,各種數據沒有對外輸出,學習時建議使用JTAG ICE硬件仿真器
*/

#include <avr/io.h>
#include <avr/delay.h>
#include <avr/signal.h>
#include <avr/interrupt.h>


/*
注: 內部函數_delay_ms() 最高延時  262.144mS@1MHz
    為了使 _delay_ms()函數的延時正確,須在makefile中設定F_CPU為實際的系統時鐘頻
    本范例為7.3728MHz外部石英晶體振蕩器 即 F_CPU=7372800
    因為7.3728MHz能生成多種標準的通訊波特率。
    
    如果使用其他系統時鐘頻率,注意 波特率誤差不要超過 +/-1%.
    做USART通訊時,除非你掌握了校準技術,否則請不要使用內部/外部RC振蕩器
*/


//管腳定義
#define PIN_RXD			2 	//PD2   RXD
#define PIN_TXD			3 	//PD3   TXD

//#define LED0			0 	//PB0
#define LED1			1 	//PB1
#define LED2			2 	//PB2

//常量定義
#define BAUDRATE        9600	//波特率
//#define F_CPU			7372800  //這個已經在makefile里面定義了


//宏定義
#define LED0_ON()		PORTB|= (1<<LED1)|(1<<LED2)  //輸出高電平,燈亮
#define LED0_OFF()		PORTB&=~((1<<LED1)|(1<<LED2))	//輸出低電平,燈滅
#define LED1_ON()		PORTB|= (1<<LED1)
#define LED1_OFF()		PORTB&=~(1<<LED1)
#define LED2_ON()		PORTB|= (1<<LED2)
#define LED2_OFF()		PORTB&=~(1<<LED2)
//51系列的高電平輸出能力很弱,低電平也僅能點亮LED.所以常見輸出低電平才燈亮的接法。
//AVR芯片的高低驅動能力都很強,甚至能推動8字數碼管的公共極,怎么接都沒問題。



//全局變量
//如果變量會在中斷服務程序中被修改,須加volatile限定
volatile unsigned char FLAG;				//按鍵標志
volatile unsigned char PC_COMMAND;		//PC發出的當前命令
volatile unsigned char RX_BUFFER[16];	//存放接收數據的數組
volatile unsigned char RX_index;			//存放接收數據的個數

//仿真時在watch窗口,監控這些變量。

void put_c(unsigned char c) //發送采用查詢方式
{
	while( !(UCSRA & (1<<UDRE)) );
	UDR=c;
}

void put_s(unsigned char *ptr)
{
	while (*ptr)
	{
		put_c(*ptr++);
	}
	put_c(0x0D);
	put_c(0x0A);  //結尾發送回車換行
}


SIGNAL(SIG_USART_RECV) //串口接收中斷服務程序
{
	PC_COMMAND=UDR;
	switch(PC_COMMAND)
	{
		case '0':	//0x30 ASCII '0'
			LED0_ON();
			//put_s("用戶輸入0#指令");
			break;
		case '1':
			LED1_ON();
			//put_s("用戶輸入1#指令");
			break;
		case '2':
			LED2_ON();
			FLAG=!FLAG;
			//put_s("用戶輸入2#指令");
			break;
		default:
			LED0_OFF();
			//put_s("用戶輸入的指令無效!");
			break;
	}
	/*
	  注意,使用put_s函數發送數據需要一定的時間,如果輸入數據的速度過高將會導致數據丟失
	  所以,一般建議中斷服務程序的處理時間盡量的短,只做采集數據和設標志位,命令的處理交由主程序來完成
	  這里只是示范簡單的命令處理
	*/
	
	RX_BUFFER[RX_index]=PC_COMMAND;		//保存數據到數組里面
	RX_index++;
	if (RX_index>=16) RX_index=0;		//防止數組溢出
		
}

void init_USART(void)//USART 初始化
{

    //USART 9600 8, n,1  PC上位機軟件(超級終端等)也要設成同樣的設置才能通訊
    UCSRC = (1<<URSEL) | 0x06;
    //異步,8位數據,無奇偶校驗,一個停止位,無倍速
    /*
    UBRRH與UCSRC共用I/O 地址。因此訪問該地址時需注意以下問題。
    寫訪問
    當在該地址執行寫訪問時, USART 寄存器選擇位(URSEL)控制被寫入的寄存器。
    若URSEL為0,對UBRRH值更新;若URSEL為1,對UCSRC設置更新
    
    讀訪問
    對UBRRH 或UCSRC 寄存器的讀訪問則較為復雜。但在大多數應用中,基本不需要讀這些寄存器
    
    
    沒有UBRR這個16位寄存器,因為UBRRL(0x09)/UBRRH(0x20)的地址不連續,而且UBRRH跟UCSRC共用地址
    */
    
    //U2X=0時的公式計算
    UBRRL= (F_CPU/BAUDRATE/16-1)%256;
    UBRRH= (F_CPU/BAUDRATE/16-1)/256;
    //U2X=1時的公式計算
    //UBRRL= (F_CPU/BAUDRATE/8-1)%256;
    //UBRRH= (F_CPU/BAUDRATE/8-1)/256;
    //也可根據數據手冊的[波特率設置的例子]查得
    //UBRRL = 0x2F; //set baud rate lo
    //UBRRH = 0x00; //set baud rate hi
    UCSRA = 0x00;
    UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
    //使能接收中斷,使能接收,使能發送
}

/*void pro_coammand(void) //多字節命令的處理程序
{
	unsigned char i;
	if (RX_index>=10) 
	{
    	UCSRB&= ~(1<<RXCIE);	//關斷USART接收中斷
		put_c(0x0D);
		put_c(0x0A);  //發送回車換行
		put_s("Hello! 你之前輸入的命令列表是:");
		for (i=0;i<RX_index;i++) put_c(RX_BUFFER[i]);
		put_c(0x0D);
		put_c(0x0A);
		put_c(0x0D);
		put_c(0x0A);  //發送回車換行
		RX_index=0;				//清零
    	UCSRB|= (1<<RXCIE);	//打開USART接收中斷
	}
}*/

int main(void)
{

    //上電默認DDRx=0x00,PORTx=0x00 輸入,無上拉電阻
    PORTA =0xFF;											//不用的管腳使能內部上拉電阻。
    PORTC =0xFF;
    DDRB  =  (1<<LED2)|(1<<LED1);				//輸出
    PORTB =~(1<<LED2)|(1<<LED1);				//低電平,燈滅
    DDRD  =(1<<PIN_TXD);								//TXD為輸出
    PORTD =0xFF;

    FLAG=0;
	init_USART();
	//put_s("你好!");
	//put_s("這是一個簡單的串口實驗程序");
	//put_s("你可以在電腦上的超級終端程按下[0][1][2]按鍵,模擬用戶板上的按鍵操作");
    sei();									//使能全局中斷
    while (1)
    {
        //while (FLAG==0) pro_coammand();
        //LED2_ON();							//如果FLAG不加volatile限定(即has_volatile=0),程序將永遠都運行不到這里。
       // while (FLAG!=0) pro_coammand();
        //LED2_OFF();
    }
}

/*
程序運行效果
     PC使用超級終端或SSCOM32串口調試程序,發送ASCII碼的簡單方法就是直接按下對應的按鍵
     
     例如  字符'0',即0x30 ,按下鍵盤上的[0]即可

     按下按鍵[0],LED0亮。
     按下按鍵[1],LED1亮。
     按下按鍵[2],LED0/1都熄滅, LED2是根據按鍵[2]的順序來亮滅,是個乒乓鍵
     
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品看片你懂得| 欧美亚洲国产bt| 精品国产123| 国产资源在线一区| 国产亚洲欧美在线| 不卡电影一区二区三区| 久久久精品tv| 99久久精品久久久久久清纯| 日韩一区有码在线| 欧美日韩一区二区三区不卡| 亚洲妇女屁股眼交7| 日韩一区二区影院| 国产一区啦啦啦在线观看| 精品欧美一区二区久久| 国产传媒欧美日韩成人| 综合久久给合久久狠狠狠97色| 99精品一区二区| 午夜久久电影网| 日韩精品一区二区三区视频播放| 国产一区91精品张津瑜| 亚洲狠狠丁香婷婷综合久久久| 欧美猛男gaygay网站| 激情深爱一区二区| 国产精品伦理在线| 欧美巨大另类极品videosbest| 蜜桃精品在线观看| 中文字幕av一区二区三区高| 欧美在线一区二区| 国内精品国产成人国产三级粉色 | 欧美一级午夜免费电影| 国产成人综合网站| 亚洲永久免费av| 久久免费电影网| 在线精品视频小说1| 久久精品国产亚洲5555| 日韩毛片精品高清免费| 精品三级在线看| 色婷婷久久99综合精品jk白丝| 美女网站一区二区| 亚洲日本欧美天堂| 精品999在线播放| 欧美四级电影在线观看| 国产成人午夜电影网| 丝瓜av网站精品一区二区| 国产精品素人一区二区| 69堂成人精品免费视频| av电影在线观看完整版一区二区| 美女脱光内衣内裤视频久久网站| 亚洲精品国产无套在线观| 26uuu成人网一区二区三区| 欧美日韩精品一区二区在线播放| 国产成人精品1024| 日本强好片久久久久久aaa| 国产精品嫩草99a| 欧美大片一区二区| 欧美三级中文字| 91免费视频网| 成人av在线播放网址| 久99久精品视频免费观看| 亚洲国产精品久久一线不卡| 亚洲乱码一区二区三区在线观看| 久久亚洲精品国产精品紫薇| 欧美一区永久视频免费观看| 欧美日韩综合一区| 一本色道久久加勒比精品 | 狠狠色丁香久久婷婷综| 五月婷婷色综合| 亚洲蜜桃精久久久久久久| 国产精品美女一区二区三区 | 在线欧美日韩国产| 夫妻av一区二区| 国产精品一区在线观看你懂的| 美女高潮久久久| 免费成人在线网站| 美女视频一区在线观看| 蜜桃视频在线观看一区| 日本 国产 欧美色综合| 免费在线观看视频一区| 另类小说图片综合网| 欧美aa在线视频| 久久国产尿小便嘘嘘尿| 免费成人深夜小野草| 蜜臀av性久久久久蜜臀aⅴ四虎 | 大胆亚洲人体视频| 成人免费高清视频| av在线综合网| 日本高清不卡在线观看| 欧美探花视频资源| 欧美一区二区啪啪| 亚洲精品在线网站| 欧美韩国日本一区| 亚洲女与黑人做爰| 午夜不卡在线视频| 热久久国产精品| 国产麻豆视频精品| 91色综合久久久久婷婷| 欧美三级日韩三级| 日韩免费高清av| 亚洲国产成人自拍| 一区二区三区在线看| 日韩电影在线一区二区三区| 久久福利资源站| 懂色av一区二区三区蜜臀| 色香色香欲天天天影视综合网| 欧美系列亚洲系列| 欧美一区二区三区四区视频| 久久精品欧美一区二区三区麻豆| 国产精品人妖ts系列视频| 亚洲精选在线视频| 日韩av一二三| 成人av网址在线| 欧美精品免费视频| 中文字幕av一区二区三区高| 亚洲一区免费观看| 国产综合成人久久大片91| av男人天堂一区| 日韩一级二级三级精品视频| 中文字幕精品三区| 五月天久久比比资源色| 国产不卡视频一区二区三区| 在线观看日韩一区| 久久精品男人的天堂| 亚洲综合在线五月| 国产乱码一区二区三区| 欧美日韩中文精品| 国产精品免费av| 久久精品国产99国产| 色偷偷久久一区二区三区| 欧美mv日韩mv| 亚洲成人免费av| 99在线视频精品| 日韩女优视频免费观看| 亚洲与欧洲av电影| 成人福利视频在线| 日韩欧美黄色影院| 亚洲国产精品嫩草影院| 成人免费观看男女羞羞视频| 精品人伦一区二区色婷婷| 国产精品视频看| 免费人成精品欧美精品| 91久久一区二区| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲福利视频一区| proumb性欧美在线观看| 欧美精品一区二区精品网| 亚洲成av人片一区二区梦乃| av电影在线不卡| 久久婷婷一区二区三区| 日本一不卡视频| 欧美三级韩国三级日本一级| 亚洲欧洲另类国产综合| 国产在线麻豆精品观看| 日韩亚洲电影在线| 天天综合色天天综合色h| 色94色欧美sute亚洲13| 亚洲欧洲精品成人久久奇米网| 国产精品一区二区在线看| 日韩精品一区二区三区在线播放 | 亚洲电影欧美电影有声小说| 91免费视频网| 国产精品免费视频网站| 国产ts人妖一区二区| 久久久久国产精品人| 国内偷窥港台综合视频在线播放| 欧美一级二级三级蜜桃| 久久国产剧场电影| 欧美一区二区三区视频在线观看| 亚洲午夜免费电影| 精品视频资源站| 亚洲国产精品久久一线不卡| 欧美日韩高清不卡| 亚洲国产成人91porn| 欧美精品一二三四| 日韩精品一二三四| 日韩一区二区在线观看视频 | 久久99精品视频| 久久亚洲影视婷婷| 国产精品一区二区三区99| 久久久精品国产99久久精品芒果 | 欧美日本一区二区三区| 亚洲国产精品久久人人爱| 欧美日韩一级二级| 性做久久久久久免费观看 | 亚洲国产精品久久艾草纯爱| 欧美日韩国产一区| 日本午夜一本久久久综合| 精品国产免费一区二区三区四区| 老司机精品视频在线| 国产亚洲福利社区一区| 91在线视频观看| 亚洲一区二区高清| 日韩一区二区三区视频在线| 极品美女销魂一区二区三区免费| 国产欧美一区二区三区鸳鸯浴| 成人av网址在线观看| 亚洲第一主播视频| 欧美精品一区二区三区蜜桃| 成人av网站免费| 视频一区免费在线观看| 国产午夜精品久久久久久久 |