stc52单片机 串口通信失败。请大神指点一二。
时间:10-02
整理:3721RD
点击:
本人想要在串口方式1下,实现下位机对上位机命令的读取和反馈。不过不知道咋回事,信息无法反馈到上位机。请大佬指点一二。
- #include <reg52.h>
- #include <stdio.h>
- #include <string.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit dula=P2^6;
- sbit wela=P2^7;
- uchar a,b[20]="0",i,j,flag1;
- void init();
- void delay(uint);
- void main()
- {
- init();
- while(1)
- {
- while(b[i]!='\0');
- delay(20);
- flag1=2;
- while(b[j]!='\0')
- {
- SBUF=b[j];
- while(TI==0);
- TI=0;
- j++;
- }
- while(1);
- }
- ;
- }
- void init()
- {
- dula=0;
- wela=0;
- TMOD=0x20;
- TH1=0xfd;
- TL1=0xfd;
- REN=1;
- SM0=0;
- SM1=1;
- //SCON=50;
- EA=1;
- ES=1;
- TR1=1;
- a=0,i=0,j=0,flag1=0;
- }
- void ser() interrupt 4
- {
- if(flag1==0)
- {
- RI=0;
- a=SBUF;
- if(a!='\0')
- {
- b[i]=a;
- i++;
- }
- else
- b[i]='\0';
- }
- }
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
那么多while,不死掉?
死在shile1
串口中断里判断flag1=0,主程序却让flag1=2,第二个while(1)不需要
亲,串口接受 中断函数不对,建议你找一段标准的用,不要自己杜撰呦