工控网首页
>

应用设计

>

单片机与电脑串口通信控制

单片机与电脑串口通信控制

2016/4/1 17:23:49

/****** 单片机接收电脑串口发出的指令并执行相应动作。同时,也接收无线遥控发出的信号,并执行动作**************/ #include #define uchar unsigned char #define uint unsigned int uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管编码,预留     uchar code ACT[4]={0xfe,0xfd,0xfb,0xf7};//数码管显示相关,预留 /*************************************************************/ uchar code as[]=" shoudao zhiling :"; uchar a=0x30,b; sbit D1=P2^3; sbit D2=P2^4; //**************************************************** void init(void) { TMOD=0x20; TH1=0xfd; TL1=0xfd; SCON=0x50; TR1=1; ES=1; EA=1; } //************************ void delay(uint k) { uint data i,j; for(i=0;i<k;i  ) { for(j=0;j<121;j++){;} } } //************************************** void main(void) { uchar i,temp; P2=0xff; delay(3000);/******因为单片机上电后IO脚成高电平状态,所以延时一下,下面把需要的引脚清0******、 P1=0x00; D1=0;//要控制的引脚,清0.防止上电动作后不能复原 D2=0; init(); while(1) { if(P1!=0x00) //无线遥控接收脚状态扫描 {delay(10); if(P1!=0x00) temp=P1; } switch(temp )//遥控接收处理 { case 0x01:D1=1;break; case 0x02:D1=0;break; case 0x04:D2=1;break; case 0x08:D2=0;break; default:break; } switch(b)//串口接收数据处理

{ case 0x31:D1=1;break; case 0x32:D1=0;break; case 0x33:D2=1;break; case 0x34:D2=0;break; case 0x35:D1=0;D2=0;break; default:break; } delay(1); if(RI) { RI=0;i=0; while(as[i]!=''){SBUF=as[i];while(!TI);TI=0;i++;} //串口发送数据 SBUF=b;while(!TI);TI=0; //回应串口指令内容 EA=1; } } } //***************************************** void serial_serve(void) interrupt 4 //串口中断 { a=SBUF; b=a; EA=0; }

 

投诉建议

提交

查看更多评论
其他资讯

查看更多

助力企业恢复“战斗状态”:MyMRO我的万物集·固安捷升级开工场景方案

车规MOSFET技术确保功率开关管的可靠性和强电流处理能力

未来十年, 化工企业应如何提高资源效率及减少运营中的碳足迹?

2023年制造业“开门红”,抢滩大湾区市场锁定DMP工博会

2023钢铁展洽会4月全新起航 将在日照触发更多商机