完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
设置的键盘扫描中断程序,为什么P3口并不能按要求输出数据?新学单片机,求大神帮忙。
#include #define uchar unsigned char #define unit unsigned int ***it key1=P1^0; ***it key2=P1^1; ***it key3=P1^2; ***it key4=P1^3; uchar tab[]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar lul[]={ 0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00}; uchar cab[]={ 0xfe,0xfb,0xef,0xbf}; uchar zid[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar f; void delay(unsigned int ms) { unsigned int i; unsigned char j; for(i=0;i { for(j=0;j<200;j++); for(j=0;j<102;j++); } } void lunliu() { uchar i; for(i=0;i<8;i++) { P0=lul; delay(500); } for(i=0;i<8;i++) { P2=lul; delay(500); } P0=0xff; P2=0xff; delay(500); } void zhudian() { uchar i; for(i=0;i<8;i++) { P0=tab; delay(500); } P0=0xff; for(i=0;i<8;i++) { P2=tab; delay(500); } P2=0xff; } void jiange() { uchar i; for(i=0;i<4;i++) { P0=cab; delay(500); } P0=0xff; for(i=0;i<4;i++) { P2=cab; delay(500); } P2=0xff; } void shanshuo() { P0=0X00; P2=0X00; delay(500); P0=~P0; P2=~P2; delay(500); } void main() { TMOD=0x02; EA=1; ET0=1; TR0=1; TH0=256-100; TL0=256-100; uchar i; f=1; if(f==1) { for(i=0;i<10;i++) { P3=zid; delay(1000); } } if(f==2) { for(i=0;i<10;i++) { P3=zid; delay(1000); } } } void intersev(void)interrupt 1 using 1 { TRO=0; uchar i; if(key1==0) { delay(50); if(key1==0) { ID=1; } } if(key2==0) { delay(50); if(key2==0) { ID=2; } } if(key3==0) { delay(50); if(key3==0) { ID=3; } } if(key4==0) { delay(50); if(key4==0) { ID=4; } } TR0=1; } |
|
相关推荐
8个回答
|
|
仿真的时候P3接的数码管,然而并不能显示数字·········
|
|
|
|
仿真电路图发上来看看,注意仿真软件中数码管共阳,共阴的选择。
|
|
|
|
你的函数里都有一个变量i,(uchar i;)都不赋初始值,后面怎么判断啊?
|
|
|
|
云汉达人
你这个程序要是跑得起来那就神奇了……错误的地方很多,编译都不能通过吧?我很好奇,编译都不能过你是怎么下载程序到单片机里面去的? 首先我讲下我发现的错误的地方吧: 主函数里的uchar i 你这个定义放在这里你编译不报错?那么我想请问你用的是什么编译器?难道不是KEIL?反正我用KEIL编译是绝对通不过的,应该放在MAIN函数的第一行才对!另外中断函数里也是同样的错误! 另外如上图所示,在中断函数里面开关中断??我是真没看懂……我不知道你为什么要把按键的扫描程序放在定时器中断里面去做,真心没看懂,还有定时器中断里面还加了按键防抖的延时函数,建议你如果要实现隔一定时间扫描一次按键的话,可以个变量,在定时器里面做++,把按键扫描的程序单独写一个函数: 以上纯属个人愚见,有说错之处还请高手指正! |
|
|
|
|
|
|
|
同学,如果你真想在这一行混的话,建议你好好学一些代码规范,你的代码被老师或者领导看到会被气死的,这样的代码完全没有实用价值,代码规范应该从一开始就培养。。。
个人建议。。 |
|
|
|
楼上说的uchar i,在函数的开头宏定义已经定义过了,就是#define uchar unsigned char,开始已经说得很明确了。
|
|
|
|
个人认为@奔跑的蜗牛,说的比较对,主要是你的f输入的问题。
|
|
|
|
只有小组成员才能发言,加入小组>>
479 浏览 0 评论
1021 浏览 1 评论
2407 浏览 5 评论
2728 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2546 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
578浏览 9评论
583浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
689浏览 6评论
557浏览 5评论
597浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-27 06:44 , Processed in 1.174961 second(s), Total 92, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号