//这道串口问题最重要的就是给SBUF赋值,我们利用数组和switch进行赋值,通过判断语句来进行分类讨论,最后算出结果后在传回SBUF中,达到应得的目的//
单片机源程序如下:
- #include<reg52.h>
- typedef unsigned char uchar;
- uchar j=0,a[3],flag=0,x=0,y,z;
- char i=0;float m=0;
- void init()
- { TMOD=0x20;
- TH1=0xfd;
- TL1=0xfd;
- SCON=0x50;
- TR1=1;
- EA=1;
- ES=1;}
- void main()
- { init();
- while(1)
- {
- if(flag==1)
- {
- ES=0;
- switch(a[1])
- {
- case'+':i=a[0]-'0'+a[2]-'0';break; case'-':i=a[0]-'0'-(a[2]-'0');break; } if(i<0)
- {
- SBUF='-';
- while(!TI);
- TI=0;
- SBUF=-i+'0';
- while(!TI);
- TI=0;
- }
- if(i>10)
- {
- y=i/10;
- z=i%10;
- SBUF=y+'0';
- while(!TI);
- TI=0;
- SBUF=z+'0';
- while(!TI);
- TI=0;
- }
- if(i>=0&&i<10 )
- {
- SBUF=i+'0';
- while(!TI);
- TI=0;
- }
- ES=1;
- flag=0;
- }
- }
- }
- void receive() interrupt 4
- { a[x++]=SBUF; RI=0;
- if(x==3)
- {x=0; flag=1; }
- }
复制代码
|