完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以下是我的双机通信程序#include
#include #include #include #include typedef unsigned char u8; typedef unsigned int u16; ***it k1=P1^1; ***it k2=P1^2; ***it k3=P1^3; ***it k4=P1^4; ***it RT=P3^7; #define txd P3^1; u8 a; u8 du; u8 du2; u8 flag; u8 jian; u16 he; void man2(); void main(); void send(); void anjian(); u8 code d[]={0xFF,0x01,0x01,0x00,0xaa,0x01}; //串口初始化// void int1() { TMOD=0x20; TH1=0xfd; TL1=TH1; SCON=0x50; PCON=0x00; TR1=1; delays_100ms(); EA=1; ES=0; } void man1() { int1(); while(1) { a=1; RT=1; if(k1==0) //按键判断 { delays_100ms(); //去抖 if(k1==0) { a=0; //按键标志 jian=0x01; //按键地址 } else a=1; } if(k2==0) { delays_100ms(); if(k2==0) { a=0; jian=0x02; } else a=1; } if(k3==0) { delays_100ms(); if(k3==0) { a=0; jian=0x03; } else a=1; } if(k4==0) { delays_100ms(); if(k4==0) { a=0; jian=0x04; } else a=1; } //发送数据 if(a==0 && (k1==0||k2==0||k2==0||k3==0||k4==0)) { ti=1; SBUF=d[0]; //同步字节 while(!TI); TI=0; he=0x00; delays_500ms(); SBUF=d[1]; //地址 delays_100ms(); he=he+d[1]; while(!TI); TI=0; delays_500ms(); SBUF=jian; //按键 delays_100ms(); he=he+jian; while(!TI); TI=0; delays_500ms(); SBUF=d[3]; //工作模式 delays_100ms(); he=he+d[3]; while(!TI); TI=0; delays_500ms(); SBUF=d[4]; //读 写 delays_100ms(); he=he+d[4]; while(!TI); TI=0; delays_500ms(); SBUF=d[5]; //数据1 delays_100ms(); he=he+d[5]; while(!TI); TI=0; delays_500ms(); SBUF=he; //校验和 while(!TI); TI=0; } delays_100ms(); RT=~txd; delays_100ms(); if(RI) { man2(); } } } /* main.2 */ void int2() { TMOD=0x20; TH1=0xfd; TL1=TH1; SCON=0x50; PCON=0x00; delays_100ms(); TR1=1; EA=1; ES=1; } void ser() interrupt 4 using 1 //中断接收 { if(RI) { flag=flag+1; RI=0; du2=SBUF; RT=1; delays_10ms(); P2=du2; delays_5ms(); RT=0; } else TI=0; } void man2() { int2(); delays_100ms(); RT=0; delays_100ms(); while(flag<6); flag=1; if(P1==0xff) { man1(); } } void main(void) { if(P1!=0xff) { man2(); } else man1(); } 两个单片机接收和发送都可以,只不过在接收和发送切换时的一帧数据会少接收一位。 弄了很久都没搞定。 |
|
相关推荐
2 个讨论
|
|
中断里面没有处理一下啊
|
|
|
|
|
|
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
180 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
587 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
549 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
548 浏览 0 评论
1051 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11763 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 19:16 , Processed in 0.693525 second(s), Total 51, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号