完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
unsigned char flag; int zhibi_js[8], com_dat; //从串口接收的数据 unsigned char a; /*************************** 串口初始化 ***************************/ void uart_inint() { REN=1; SM0=0; SM1=1; TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; EA=1; ES=1; } /*************************** 判断 ***************************/ void panduan () { if((zhibi_js[2]=0xEF)&&(zhibi_js[3]=0x01)) //如果数组第2位和第3位是EF 01时 a=1; //判断a值为1 if((zhibi_js[2]=0xEF)&&(zhibi_js[3]=0x02)) //如果数组第2位和第3位是EF 02时 a=5; //判断a值为5 if((zhibi_js[2]=0xEF)&&(zhibi_js[3]=0x03)) //如果数组第2位和第3位是EF 03时 a=10; //判断a值为10 if((zhibi_js[2]=0xEF)&&(zhibi_js[3]=0x04)) //如果数组第2位和第3位是EF 03时 a=20; //判断a值为20 if((zhibi_js[2]=0xEF)&&(zhibi_js[3]=0x05)) //如果数组第2位和第3位是EF 03时 a=50; //判断a值为50 else a=0; //否则a为0 } /********************************** 接收中断 **********************************/ void Com_Int(void) interrupt 4 { EA = 0; if(RI == 1) { zhibi_js[com_dat] = SBUF; //串口接收数组 RI = 0; com_dat++; if(com_dat == 8) flag=1,com_dat = 0; //当数组个数是8个时com_dat清零,防止溢出 } EA = 1; } void main() { uart_inint(); while(1) { if(flag==1) //如果收到数组 { ES=0; flag=0; panduan(); //判断a的值 SBUF=a; //串口发送a的值 while(!ti); TI=0; ES=1; } } } 编译的时候0错误0警告 可是为什么我用串口助手不管发送什么数组单片机发回来a的值都是32,问下我这程序错在哪!谢谢了 |
|
相关推荐
2个回答
|
|
你串口助手那里选择发送十六进制类型。你这种情况是显示类型为阿诗玛
|
|
|
|
if(com_dat == 8) flag=1,com_dat = 0;这个语句有问题吧,有一个道号也能编译通过么?假如是分号,那么这两条语句就要加{}括在一起,不然每接一个数据com_dat会被清零一次。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
460 浏览 0 评论
【敏矽微ME32G070开发板免费体验】+ADC测试与LED点亮
418 浏览 0 评论
飞凌嵌入式-ELFBOARD ELF 2的硬件知识分享--核心板
352 浏览 0 评论
【敏矽微ME32G070开发板免费体验】\\+Lora通信终端产品开发项目
514 浏览 0 评论
1576 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11970 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 21:49 , Processed in 0.551643 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号