完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #define uchar unsigned char #define uint unsigned int uchar num[32],k=0,count; void UART_init() { TMOD = 0x20; //T1¹¤×÷ģʽ2 8λ×Ô¶¯ÖØ×° TH1 = 0xfd; TL1 = 0xfd; //±ÈÌØÂÊ9600 TR1 = 1; SM0 = 0; SM1 = 1; //´®¿Ú¹¤×÷·½Ê½1 10λÒì²½ REN = 1; //´®¿ÚÔÊÐí½ÓÊÕ EA = 1; ES = 1; } uchar Task() //¼ì²âÆðʼÐźÅÅжϹ¤×÷ģʽ { bit bi; char i=0,j; for(;i<32;i++){ if(num[i]==0xa5) j=i; switch(num[j+1]){ case 0x01: if(num[j+2]==0x08) {bi=1; k=0x01;} break; case 0x02: if(num[j+2]==0x0a) {bi=1; k=0x02;} break; case 0x03: if(num[j+2]==0x06) {bi=1; k=0x03;} break; default: bi=0; break;} if(bi==1) return j+3; } return 0; } bit Exam(uchar add) //ÇóºÍУÑ飬УÑéͨ¹ý·µ»Ø1 { uchar he,i=0; switch(k){ case 0x01: {for(;i<8;i++) he+=num[add]; if(he==num[add+8]) return 1; else return 0;} case 0x02: {for(;i<10;i++) he+=num[add]; if(he==num[add+10]) return 1; else return 0;} case 0x03: {for(;i<6;i++) he+=num[add]; if(he==num[add+6]) return 1; else return 0;} default: return 0; } } void main() { UART_init(); //´®¿Ú³õʼ»¯ while(1); } void UART() interrupt 4 { RI=0; num[count++]=SBUF; if(Exam(Task)) P1=0x0f; else P1=0xf0; } 我想在起始信号a5下查询到数据,分三种工作模式,不同工作模式接收不同字节数据,各位大神帮忙看看有什么问题,一直达不到预期 |
|
相关推荐
3个回答
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
787 浏览 0 评论
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
1476 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1216 浏览 0 评论
900 浏览 0 评论
963 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11866 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 06:41 , Processed in 0.606952 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号