目前需要用到51单片机串口控制单片机,但是我程序接受发送都没有问题,不知道哪里有问题,希望大佬帮助解决一下非常感谢,下面是程序,
- #include <REGX51.H>
- unsigned char i,j;
- unsigned char temp;
- sbit led1=P2^0;
- sbit led2=P2^1;
- sbit led3=P2^2;
- sbit led4=P2^3;
- void xie(char k);
- void dis();
- void UsartInit()
- {
- SCON=0X50; //设置为工作方式1
- TMOD=0X20; //设置计数器工作方式2
- TH1=0XF9;
- TL1=0XF9;
- PCON=0x80;
- ES=1; //打开接收中断
- EA=1; //打开总中断
- TR1=1; //打开计数器
- }
- void main()
- {
- UsartInit();
- xie('a');
- led1=0;
- while(1)
- {
-
- }
- }
- void Usart() interrupt 4
- {
- if(RI)
- {
- RI=0;
- temp=SBUF;
- SBUF=temp;
- P0=temp;
- dis();
- }
- if(TI)
- {
- TI=0;
- }
- }
- void xie(char k)
- {
- SBUF=k;
- while(TI==0);
- TI=0;
- }
- void dis()
- {
- switch(temp)
- {
- case 0x01:led1=~led1;break;
- case 0x02:led2=~led2;break;
- case 0x03:led3=~led3;break;
- case 0x04:led4=~led4;break;
- default:break;
- }
- }
复制代码
波特率是9600
再一次感谢帮助解答我疑问的各位,本人因为不熟悉51单片机串口,所以在写串口程序的时候直接将SBUF的数据送给一个变量然后拿这个变量去判断,最后发现其实单片机是一位一位发送的,最后使用 变量&0x0f 解决问题,感谢大家的帮助
|