/#include
#define unchar unsigned char unsigned int i , j ; //波特率为9600。此时单片机上面晶振选用11.0592MHZ //试验方法:将程序烧进单片机。打开串口调试工具,选相应串口号。 //例如在软件里面以16进制发送fe,第一个灯亮。发送a红灯都亮。
void delay(void) { unchar i,j; for(i=0;i<255;i++) for(j=0;j<255;j++) ; }
//unchar code Tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92a,所有,0x82,0xf8,0x80,0x90};
void main()
{ EA=1; //开总中断。
ES=1; //串行口允许中断
SM0=0; //设置串行口工作方式为方式1。
SM0=0,SM1=0为工作方式0.依次类推 SM1=1; REN=1;
//串行口接收允许。
REN=0时,禁止接收。
TMOD=0x20; //定时器1工作方式2.
TH1=0xfd; //相应波特率设初值计算方法。
初值X=(256-11059200/(12*32*9600))
TL1=0xfd; //9600为你要设置的波特率。11059200为晶振频率。X的值最后要换算成16进制
TR1=1; P2=0x7f; //定时器T1开始工作,TR1=0,T1停止工作
while(1) { //用查询法来实现 while(!RI); //RI=1时表示一帧数据接收完毕,并已经装入接收SBUF中,要求CPU取走数据。
P0=SBUF; delay();
RI=0; //CPU取走数据后。RI必须用软件来清零才能接收下一帧数据。 } }
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |