甲单片机:
#include #define uchar unsigned char #define uint unsigned int sbit start=P0^0;//发光二极管,用来检测数据是否在发送 unsigned char a=0xff,i=100,b,jieshou; void delay(unsigned int m) //延时程序 { unsigned int i,j; for(i=0; i } bit jiaoyan(uchar m)//奇校验 { int i; bit tmp; for(i=0;i<8;i++) { tmp=tmp^m&0x01; m>>=1; } tmp=~tmp; return tmp; } void main() { SCON=0xd0;//串口通信方式3 TMOD=0x20;//设置定时器1为工作方式2 TH1=0xfd; TL1=0xfd; TR1=1;//开计数器 EA=1; ES=1;//开串口中断 TI=0; RI=0; while(jieshou!=0x50) { TB8=jiaoyan(0x60); SBUF=0x60; delay(1100); start=0; delay(1100); start=1; } start=0; while(1); } void ser0() interrupt 4//串口中断 { uchar temp; ES=0; if(TI==1) { TI=0; } if(RI==1) { temp=SBUF; if(RB8==jiaoyan(temp)) { jieshou=temp; } // else // {jieshou=0xff;} RI=0; } ES=1; } 乙单片机: #include #define uchar unsigned char #define uint unsigned int sbit start=P0^0;//发光二极管,用来检测数据是否在发送 unsigned char a=0xff,i=100,b,jieshou,xh=1; void delay(unsigned int m) //延时程序 { unsigned int i,j; for(i=0; i } bit jiaoyan(uchar m)//奇校验 { int i; bit tmp; for(i=0;i<8;i++) { tmp=tmp^m&0x01; m>>=1; } tmp=~tmp; return tmp; } void main() { SCON=0xd0;//串口通信方式3 TMOD=0x20;//设置定时器1为工作方式2 TH1=0xfd; TL1=0xfd; TR1=1;//开计数器 EA=1; ES=1;//开串口中断 TI=0; RI=0; while(jieshou!=0x60); while(jieshou==0x60)(这个语句总是判断不到,当接收到甲的信号后,就直接跳到下一个语句停在while(1);处了,而不是进行循环发送,而我如果改成while(i--);就能进行循环,但要在发送几十次后才能成功让甲单片机收到信号) { TB8=jiaoyan(0x50); SBUF=0x50; start=0; delay(2200); start=1; delay(1100); } start=0; while(1); } void ser0() interrupt 4//串口中断 { uchar temp; ES=0; if(TI==1) { TI=0; } if(RI==1) { temp=SBUF; if(RB8==jiaoyan(temp)) { jieshou=temp; } // else // {jieshou=0xff;} RI=0; } ES=1; } PCB打样找华强 http://www.hqpcb.com 样板2天出货 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务