这个程序的功能是,通过上位机发送数字给单片机,然后再由单片机把这个数字返回给上位机。
初始化
void SCON_init()
{
SCON = 0x50; //0101 0000
TMOD = 0x20; //0010 0000
TH1 = 256 - 3;
TL1 = 256 - 3;
ES = 1;
EA = 1;
TR1 = 1;
}
上一篇有介绍:
1、串行口寄存器SCON用于控制串行口的工作方式
2、波特率发生器由定时器T1构成
中断服务程序
void zhongduan4() interrupt 4
{
if(RI == 1)
{
recdat = SBUF;
RI = 0;
flag = 1;
}
if(TI == 1)
{
TI = 0;
SBUF = recdat;
while(!TI); //等待数据全部发送完成
TI = 0;
}
}
1、第一个TI = 0 是将TI恢复初始状态,这样将数据发送到SBUF时,TI能够正常置位
2、第二个TI = 0 时清除中断产生的标志位
主程序
void main()
{
SCON_init();
while(1)
{
if(flag == 1)
{
TI = 1;
flag =0;
}
}
}
TI = 1 目的是强行进入中断,在中断里面实现数据的发送,这样就不会那么杂乱