高手们,我有几点不明白,先看一个简单的程序:
#include<reg52.h>
void main()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM1=1;
SM0=0;
EA=1;
ES=1;
while(1)
{
if(flag=1)
{
........
}
}
........
}
void ser() inturrupt 4
{
RI=0;
a=SUBF;
flag=1;
}
有几点不明白,应该是越学越湖涂了,第一什么时候进那个中断服务函数,是定时器给的初值上计数产生溢出时进入吗?还是RI或TI=1时进入中断,如果是RI或TI=1进入,那我就不明白那个定时器溢出有什么作用了,难道是只是为了设 定传送速度吗?第二,当进入中断第一条语句是RI=0;说明接收到了数才将RI=0;,什么时候接收的数呢?上面主函数中是发送数的,所以没写,a=SUBF;接收数据,单片机接收到的这个数是谁发给它的,电脑吗?那SUBF的内容是什么?有点糊涂,望高手指点指点,详细点更好,万分感谢。
通讯协议我还真不知道,我主要是想搞明白刚接的数内容是什么呢,
你所说的事先约定是什么意思,怎么个约定法呢?
追答双方通信,必定要先商量好,什么字节数,代表什么意思。
约定之后,上位机、下位机,就可以由两个人来分别编写程序。
按照约定,收发,按照约定,进行各种处理
通信时,可能有干扰,收到的,可以是约定之外的数据。
这时,接收方,看不懂了,就可以不理它,也可以向对方发信,请求重新发送。
就像日常对话,你和你的同学、同事,也可以约定一些《暗语》,就是这个意思。