以上我写的一个想要实现在串口助手中发送任意字符(1和非1)来实现返回两句话的程序,但是发现怎么改都不行,感觉就是中断程序中的if语句都没有用上一样,所以想问问各位,是我程序有问题还是我对串口通讯的理解有问题。
谢谢解惑
- #include <reg52.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
- uchar flag,rd;
- uchar code tab0[]="I get "; //6
- uchar code tab1[]="sorry,I can't understand you.."; //30
- void usartInit()
- {
- SCON=0X50;
- TMOD=0X20;
- PCON=0X80;
- TH1=0XF3;
- TL1=0XF3;
- ES=1;
- EA=1;
- TR1=1;
- }
- void main()
- {
- uchar i,p;
- usartInit();
- while(1)
- {
- if(flag==1)
- {
- for(i=0;i<6;i++)
- {
- SBUF=tab0[i];
- while(!TI);
- TI=0;
- }
- SBUF=rd;
- while(!TI);
- TI=0;
- RI=1;
- flag=0;
- }
- if(flag==2)
- {
- for(p=0;p<30;p++)
- {
- SBUF=tab1[p];
- while(!TI);
- TI=0;
- }
- while(!TI);
- TI=0;
- RI=1;
- flag=0;
- return;
- }
- }
- }
- void usart() interrupt 4
- {
- rd=SBUF;
- if(rd==1)
- {
- flag=1;
- RI=0;
- }
- if(rd!=1)
- {
- flag=2;
- RI=0;
- }
- }
复制代码
|