完善资料让更多小伙伴认识你,还能领取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会被清零一次。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2024年上海海思MCU开发者体验官招募,手机/MatePad大奖等你拿!
955 浏览 0 评论
【xG24 Matter开发套件试用体验】蓝牙控制板载LED
829 浏览 0 评论
978 浏览 0 评论
电赛:mspm0l1306的开发板可以烧录程序,但是程序运行不了,怎么解决这个问题?
1038 浏览 1 评论
【xG24 Matter开发套件试用体验】Silicon Labs 基于 EFR32MG24 Explorer Kit 开发板 开箱试用体验
823 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10519 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-6 12:19 , Processed in 1.293962 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191