|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本实施实现串口中止实施,经由过程中止和较劲争论机进行通信 *
起首接管联机旗子暗记,然后接管较劲争论机的相关节制旗子暗记 *
本实施中,采用发送不合的字符给较劲争论机来模拟领受到的不合的较劲争论机节制敕令 *
经由过程扩展,可以实现不合的功能 *
* *
*
* *
********************************************************************************/
#include
#define uchar unsigned char
uchar time,b_break,b_break_3;
uchar buf;
void waitsend()
{
while(!TI)
{
};
TI = 0;
}
//串行中止法度
void int_s(void) interrupt 4 {
ES = 0; //封闭串行中止
RI = 0; //没落串行接管标记位
buf = SBUF; //除夜串口缓冲区取得数据
P1 = buf; //数据送往p1口显示出来
if(buf == 255) SBUF = 255; //发送联络旗子暗记
else{
switch(buf)
{
case 1: SBUF = 'M',waitsend();break; //假如接管到1,发送字符'M'给较劲争论机
case 2: SBUF = 'C',waitsend();break; //假如接管到2,发送字符'C'给较劲争论机
case 3: SBUF = 'S',waitsend();break; //假如接管到3,发送字符'S'给较劲争论机
case 4: SBUF = '5',waitsend();break; //假如接管到4,发送字符'5'给较劲争论机
case 5: SBUF = '1',waitsend();break; //假如接管到5,发送字符'1'给较劲争论机
default: SBUF = 'n',waitsend();break; //假如接管到其它数据,发送n给较劲争论机
}
}
ES = 1; //准许串口中止
}
void main(void) {
P0 = 0;
P2 = 255; //封闭数码管显示
EA=1;
SCON=0x50 CON=0X80;
TMOD=0x20;ES = 1;
TL1=TH1=0xf3;TR1=1; //串口工作在模1,波特率4800@12Mhz)
while(1);
//无限轮回守候串行中止
} |
|