完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 ape50 于 2015-4-7 21:48 编辑
P2为独立键盘,P0接流水灯,为什么主函数下多了P2 = 0xf0;就不能工作(按下键盘后立即熄灭),而去掉P2 = 0xf0;反而正常工作呢???请大虾帮忙分析下,谢谢。这个问题想了好久还是没想通,特此来求教。 # include # include ***it sw1 = P2^4; ***it sw2 = P2^5; unsigned int n=0, val=0; void delay(unsigned int i) { unsigned int j; for(j=0; j } int main () { P0 = 0xfe; P2 = 0xf0; TMOD = 0x01; TH0 = ( 65536-50000)/256; TL0 = ( 65536-50000)%256; TR0 = 1; ET0 = 1; EA = 1; while(1) { switch(val) { case 1: for(n=0; n<8; n++){P0 = _crol_(P0, 1);delay(10000);} break; case 2: for(n=0; n<8; n++){P0 = _crol_(P0, 1);delay(30000);} break; } } } void T() interrupt 1 { if(sw1 == 0) val = 1; if(sw2 == 0) val = 2; } |
|
相关推荐
10个回答
|
|
不是复制的,自己写的。 还有unsigned int j; for(j=0; j j已经赋值了。 |
|
|
|
|
|
|
|
与你的按键有关吧,if(sw1==0)if(sw2==0) 为何又要给P2 0xf0;
|
|
|
|
因为我本来想这样的: void T() interrupt 1 { if((P2&0xf0) != 0xf0) { if(sw1 == 0) { val = 1; } if (sw2 == 0) { val = 2; } } } 按下键就熄灭。还有我把P2=0xf0的高四位拉高来检测键盘,理论上没错啊。低四位是扫描用的。 |
|
|
|
本帖最后由 luowuque 于 2015-4-6 18:29 编辑
你的按键应该是每个都有接地;若是扫描键盘,检测完P2!=0XF0后,应该有个把低4位逐个为0来判断哪个键按下的函数 |
|
|
|
|
|
|
|
我刚试了,可以啊,都可以正常运行和闪亮额、、、
|
|
|
|
就我的单片机而言,
P2=0xf0;对程序没有影响。 因为单片机刚上电时,端口都为高点平,即P2口为:1111 1111 。 而:P2=0xf0->1111 0000,P2口的高四位没有改变,直到人为按下才会改变,执行。 (Ps:我的P2口高四位为独立键盘、、板子为Tx-1C) |
|
|
|
|
|
|
|
软件是好的,是硬件的问题,谢谢。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
902 浏览 0 评论
588 浏览 0 评论
嵌入式学习-搭建自己的ubuntu系统之ubuntu网络设置
718 浏览 0 评论
龙芯中科胡伟武:3B6600 八核桌面 CPU 性能将达到英特尔中高端酷睿 12~13 代水平
780 浏览 0 评论
树莓派Pico 2发布,搭载RP2350双核RISC-V和Arm Cortex-M33微控制器!
740 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10740 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-18 19:02 , Processed in 0.723863 second(s), Total 87, Slave 71 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号