色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)學(xué)習(xí)筆記(六)_串口中斷通信+定時(shí)器2串口中斷

          51單片機(jī)學(xué)習(xí)筆記(六)_串口中斷通信+定時(shí)器2串口中斷

          作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          51單片機(jī)默認(rèn)使用定時(shí)器1作為串口通信的波特率發(fā)生器、定時(shí)器1中斷通信,串口與定時(shí)器1沖突,在遇到定時(shí)器不夠用的時(shí)候可以用定時(shí)器2

          本文引用地址:http://cafeforensic.com/article/201611/318623.htm
          #include void DelayMs(unsigned int i);void SerialInit();void SendByte(unsigned char sbyte);void SendString(unsigned char *pstr);void main(void){SerialInit();while(1);	  //注:必需要無限循環(huán)}/*//單片機(jī)時(shí)鐘周期:11.0592MHz   以時(shí)鐘1作為波特率發(fā)生器void SerialInit(){TMOD=0x20;   //設(shè)置T1工作方式為方式2TH1=0xfd; //給定時(shí)器高位裝初值TL1=0xfd; //給定時(shí)器低位裝初值TR1=1;  //開定時(shí)器//以上是設(shè)置波特率SM0=0;  //設(shè)置串口通訊方式為方式1SM1=1;  REN=1;  //串口是否接收數(shù)據(jù)的開關(guān)EA=1; //總中斷打開,采用查詢法時(shí)不用打開中斷ES=1; //串口中斷開關(guān),采用查詢法時(shí)不用打開中斷}*///單片機(jī)時(shí)鐘周期:11.0592MHz	   以時(shí)鐘T2作為波特率發(fā)生器void SerialInit(){PCON &= 0x7F;      //波特率不倍速 SMOD=0SCON = 0x50;       //方式1,8位數(shù)據(jù),可變波特率,接收允許T2CON  = 0x34;   RCAP2H = 0xFF;    RCAP2L = 0xDC;  TH2    = 0xFF;  TL2    = 0xDC;EA=1; //總中斷打開,采用查詢法時(shí)不用打開中斷 ES = 1;          //串口中斷開關(guān),采用查詢法時(shí)不用打開中斷}//串口中斷函數(shù):void SerialPortInte(void) interrupt 4 //采用串口中斷法收發(fā)數(shù)據(jù){unsigned char rbyte;if(RI){     //RI=1,判定為串口接收到了數(shù)據(jù),RI要清零,RI=0;rbyte=SBUF; if(rbyte==0x0A){ 	  SendString("換行");}else if(rbyte==0x0D){SendString("回車");}else{SendByte(rbyte); }}}//串口發(fā)送一個(gè)字節(jié):void SendByte(unsigned char sbyte){ SBUF=sbyte; //發(fā)送數(shù)據(jù)while(!TI); //等待發(fā)送完成TI=0; //清零發(fā)送標(biāo)志位}//串口發(fā)送一個(gè)字符串:void SendString(unsigned char *pstr) //定義指針{while(*pstr!=