完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#define uchar unsigned char #define uint unsigned int void send(uchar a) { SBUF=a; ES=1; while(!ti); TI=0; ES=0; } void delay(uchar z) { uchar x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void init() { TMOD=0x20; TH1=0xFD; TL1=0xFD; // PCON=0; TR1=1; SM0=0; SM1=1; EA=1; ES=0; TI=0; } void keyscan() { uchar temp,num; P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xee:num=0; break; case 0xde:num=1; break; case 0xbe:num=2; break; case 0x7e:num=3; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } send(num); } } P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xed:num=4; break; case 0xdd:num=5; break; case 0xbd:num=6; break; case 0x7d:num=7; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } send(num); } } P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xeb:num=8; break; case 0xdb:num=9; break; case 0xbb:num=10; break; case 0x7b:num=11; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } send(num); } } P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(100); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xe7:num=12; break; case 0xd7:num=13; break; case 0xb7:num=14; break; case 0x77:num=15; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } send(num); } } //return num; } void main() { init(); while(1) { keyscan(); } } 实验板上做键盘检测,发送0-15,在发送4、5、6、7时,串口助手一直收“00”而不是4、5、6、7,我的理解是不是因为P3^1口本身是做为发送端口,在检测4、5、6、7时,已经被定义为0而造成的,不知道对不对,如果是那样,可P3^1被定义为1时,为什么不发送“FF”,还有就是在把波特率改为4800或者2400时,串口助手一直接受数据,可我还没有去按下按键,又是为什么?请老师指点,已经闹了2天了,找不到原因啊!!谢谢!! |
|
相关推荐
7个回答
|
|
|
|
|
|
谢谢您啊,呵呵,搞定了,确实是因为IO口与RXD,TXD冲突了,谢谢您啊
|
|
|
|
|
|
|
|
你的程序怎么都没有注释呀
|
|
|
|
本帖最后由 diangongshi 于 2012-1-9 13:41 编辑
不客气,共同学习有什么问题大家一块来讨论{:soso_e181:} |
|
|
|
学习啦!
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十五章 摄像头实验
846 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
820 浏览 0 评论
910 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
1693 浏览 0 评论
1307 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12066 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 09:47 , Processed in 0.836752 second(s), Total 86, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号