题目
以2400bps从计算机发送任一字节数据,当单片机收到该数据后,在此数据前加上一序号然后连同此数据一起发送至计算机,当序号超过255时归零。
分析
题目不难,只需要提醒一点就是关于两面加序号,就是,多次使用SUBF,只要使用就可以吧值赋给SUBF,然后TI清0,每次使用SUBF,就需要清一次,其他就没了,
代码
1 # include <reg52.h> 2 # define uchar unsigned char 3 # define uint unsigned int 4 uchar flag,i; 5 uchar a; 6 void inti(); 7 void main() 8 { 9 i = 0; 10 inti(); 11 while( 1) 12 { 13 if(flag == 1) 14 { 15 flag = 0; 16 ES = 0; 17 i++; 18 if(i == 255) 19 i = 0; 20 SBUF = i; 21 while(!TI); 22 TI = 0; 23 SBUF = a; // 只有一个字节一个数,因为自己的数据类型 24 while(!TI); 25 TI = 0; 26 ES = 1; 27 } 28 } 29 } 30 void inti() 31 { 32 TMOD = 0x20; 33 TH1 = 0xf4; 34 TL1 = 0xf4; 35 SM0 = 0; 36 SM1 = 1; 37 REN = 1; 38 EA = 1; 39 ES = 1; 40 TR1 = 1; 41 } 42 void se() interrupt 4 43 { 44 RI = 0; 45 flag = 1; 46 a = SBUF;47 }
转载于:https://www.cnblogs.com/yelcoved/p/3234145.html
相关资源:数据结构—成绩单生成器