SUBF的两次使用

题目

以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 } 

posted on 2013-08-03 07:46  yelcoved  阅读(1766)  评论(0)    收藏  举报