欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機串口與PC機通信

作者:huqin   來源:本站原創   點擊數:  更新時間:2009年05月24日   【字體:
采用模式1(8位),定時器1采用模式2產生波特率,11.0592MHz晶體,9600波特率,PC機上運行的串口助手向單片機發送16進制數據,然后單片機將接收到的數據(16進制)返回串口助手。單片機用P2口連接的LED燈和P1和P0口連接的數碼管顯示接收到的數據。源程序如下:
//此程序首發:51hei單片機學習網http://www.raoushi.com
#include "reg_c51.h"
unsigned char uart_data;
unsigned char   code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
                          0x08,0x03,0x46,0x21,0x06,0x0e};  //十六進制-7段譯碼表
unsigned char ng, ns, temp;  //ng是接收到數據的低4位,ns是高四位,temp是暫存接收數據的變量
void main (void)
{SCON = 0x50;           //8位串行口模式1,允許接收,REN=1  
TMOD = TMOD | 0x20 ;   //定時器1,在模式2
TH1  = 0xFD;           //波特率為9600,晶體頻率為 11.059MHz
TL1  = 0xFD;           //波特率為9600,晶體頻率為11.059MHz
ES = 1;                      //使能串行口中斷
EA = 1;                      //使能全局中斷
TR1 = 1;                   //啟動定時器
while(1);                  //無限循環
}  
void serial_IT(void) interrupt 4        //串口中斷服務程序
{if (RI == 1)                       //如果是接收中斷,則執行如下語句
{
RI = 0;                           //清除接收中斷標志
uart_data = SBUF;                  //接收數據
SBUF = uart_data                   //將接收的數據發送
temp=uart_data;                    //暫存接收到的數據
P2=~ temp;                        //將接收的數據求反后送P2口,用LED燈顯示
ng=temp & 0x0f;                    //取低4位,ng是接收到數據的低4位
ns=temp>>4;                       //將高4位右移4位
ns &=0x0f;                        //取低4位。ns是接收到數據的高4位
P0=table[ng];                      //將低4位送P0口,用數碼管顯示低4位
P1=table[ns];                      //將高4位送P1口,用數碼管顯示高4位
}

else TI = 0;                        //清除發送標志
}
關閉窗口

相關文章