




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主机程序:/*主机主要处理 :主从 1.给从机发送命令 2.给从机发送数据3.命令从机向主机发送数据从主 由中断程序处理 根据从机发送过来的请求类型 0.请求主机发送命令(包括主到从的1,2命令) 1.请求主机接收数据 2,3保留*/#include#include #define uchar unsigned char#define uint unsigned int#define slav1_addr 0x01#define slav2_addr 0x02#define COMEND 0#define REC_DATE 1/主机向从机发送多数据命令高四位为1111,所以其他命令高四位不能为1111#define cmd_X 0x12#define cmd_rec_data 0x11sbit signal=P32;uchar temp_addr,num,rec,style,re_addr;uchar buf20;uchar rec_data10;void delay(unsigned int i)while(i-);void init_uart(void)TMOD=0x20; /定时器方式2-8位reload模式TH1=0xfd;TL1=0xfd;PCON=0; /波特率不加倍SCON=0xf0; /方式三TB8=1; /发送地址时第九位为1SM2=1; /接收到第九位为1时才能接收数据TR1=1; /要在设置scon后开定时ES=1; /开中断EA=1;/发送命令void uart_send_cmd(uchar addr,uchar cmd)/uchar *date)while(signal=0); /检查总线是否被占signal=0;/占用总线EA=0;/关中断 dodoSBUF=addr; /发送从机地址while(TI!=1);TI=0;while(RI!=1); /一直等待从机响应 /while循环里可加入出错处理temp_addr=SBUF;RI=0;while(temp_addr!=addr);/一直等到从机回应的地址相同/while循环里可加入出错处理TB8=0;/发送数据第9位为0/SM2=0; / 接收到第九位为1时才置位RI/每次一个数据SBUF=cmd;while(TI!=1);TI=0;TB8=1;/SM2=1;RI=0;TI=0;/不处理期间发生的中断EA=1;signal=1; /释放总线/主机向从机发送多数据/自动计算发送数据长度void uart_send_data(uchar addr,uchar *date)uchar n;while(signal=0); /检查总线是否被占signal=0;/占用总线EA=0; /关中断 dodoSBUF=addr; /发送从机地址while(TI!=1);TI=0;while(RI!=1); /一直等待从机响应 /while循环里可加入出错处理temp_addr=SBUF;RI=0;while(temp_addr!=addr);/一直等到从机回应的地址相同/while循环里可加入出错处理TB8=0; /发送数据第9位为1SM2=0; / 接收到第九位为1时才置位RInum=strlen(date); SBUF=(0xf0|num); /向从机发送接收多数据命令 /高四位为标志位 低四位为数据长度while(TI!=1);TI=0;delay(200); /等待从机能稳定(从机产生接收中断需要时间)for(n=0;nnum;n+) /发送多个数据SBUF=daten;while(TI!=1);TI=0;delay(2); /放慢发送速度使从机能稳定接收TB8=1;SM2=1;RI=0;TI=0; /不处理期间发生的中断EA=1;signal=1;/主机请求从机发送数据过来void cmd_rec(uchar addr )uchar numb,n;while(signal=0); /检查总线是否被占signal=0;/占用总线EA=0;/关中断 dodoSBUF=addr; /发送从机地址while(TI!=1);TI=0;while(RI!=1); /一直等待从机响应 /while循环里可加入出错处理temp_addr=SBUF;RI=0;while(temp_addr!=addr);/一直等到从机回应的地址相同/while循环里可加入出错处理TB8=0;/发送数据第9位为1SM2=0; / 接收到第九位为1时才置位RI/每次一个数据SBUF=cmd_rec_data; /发送命令while(TI!=1);TI=0;while(RI!=1); /接收要受到数据的个数RI=0;numb=SBUF;for(n=0;n6);/取出数据类型位 命令请求 or 数据请求re_addr= (rec&0x3f);/取出地址位 if(style=COMEND) /从机向主机发送命令请求 uart_send_cmd(re_addr,cmd_X);/or uart_send_data(re_addr,buf); else if(style=REC_DATE) /从机向主机发送数据请求 cmd_rec(re_addr ); 从机程序#include#include #define uchar unsigned char#define uint unsigned int#define slav1_addr 0x01#define cmd_rec_data 0x11sbit signal=P32;uchar date10;uchar send_buf10;uchar n,cmd_res_mul_data_flag,temp;uchar temp_addr=0,data_flag=0,sbuf_code=0;void delay(unsigned int i)while(-i);void cmd_to_mast(uchar cmd_mast)while(signal=0); /检查总线是否被占signal=0;/占用总线void init_uart(void)TMOD=0x20; /定时器方式2-8位reload模式TH1=0xfd;TL1=0xfd;PCON=0; /波特率不加倍SCON=0xf0;SM2=1; TB8=1;TR1=1;ES=1;EA=1;void dill_cmd_rec_data(uchar *date)uchar n,num;SM2=0; TB8=0;EA=0;num=strlen(date);SBUF=num;while(TI!=1);TI=0;/发送数据的个数delay(20); /等待主机接收到for(n=0;nnum;n+) /发送多个数据SBUF=daten;while(TI!=1);TI=0;delay(2); /放慢发送速度使主机能稳定接收SM2=1; TB8=1;EA=1;void main(void)init_uart();signal=1;send_buf0=1;send_buf1=4;send_buf2=2;send_buf3=5;while(1)P1=sbuf_code;P2=date3;if(sbuf_code=cmd_rec_data)/向主机发送数据 dill_cmd_rec_data(send_buf);sbuf_code=0;/记得命令清零void uart_isr() interrupt 4if(RI=1)RI=0;temp_addr=SBUF;if(data_flag=1) /必须在前面判断,发送的数据可能与地址相同 /sbuf_code=temp_addr;if(temp_addr&0xf0)=0xf0) /收到接收多数据命令 /高四位为标志位 低四位为数据长度temp=(sbuf_code&0x0f);for(n=0;ntemp;n+)while(RI!=1);RI=0;daten=SBUF;data_flag=0;/多数据通信时可通过判断通信结束位来置零data_flagSM2=1; TB8=1; else /接收到的是普通命令sbuf_code=temp_addr;data_flag=0; /多数据通信时可通过判断通信结束位来置零data_flagSM2=1;else if(temp_addr=slav1_addr)EA=0; /关中断REN=0; /停止接收防止主机的多次从发造
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 血液病患者护理
- 肺叶切除后患者的护理
- 造口护理教师版
- 护理美学在临床实践中的应用
- 护士个人半年工作总结:危重病人护理最近进展
- 护理纠纷的预防和处理条例
- 2025汽车抵押合同书范本
- 2025个人消费贷款合同
- 广东省清远市清新区2023-2024学年高二上学期第二次月考英语试题含参考答案
- 髋关节置换术康复护理
- 维护秩序靠规则(课件) 2025-2026学年八年级道德与法治上册(统编版2024)
- (2025秋新版)苏教版科学三年级上册全册教案
- 施工项目管理手册范本
- 文明礼仪主题班会课件(共23张)
- 新安天玉混炼胶产品
- (改-2013-9-13)托里县阿克巴斯套饰面石材花岗岩矿详查报告
- JIS G3507-1-2021 冷镦用碳素钢.第1部分:线材
- 道路交通安全培训PPT课件
- 村民自治中存在问题的分析报告
- 三年级作文指导暑假趣事(课堂PPT)
- 汽车发动机构造课件
评论
0/150
提交评论