【032】直控按键多个键值处理2007-05-02 19:01:00
【评论】
【打印】
【字体:大 中 小】
本文链接:http://blog.pfan.cn/wentao/25478.html
key_v equ 30h
key_t equ 31h
org 0000h
ajmp start
start: mov p1,#0xff
mov p0,#0xff
mov key_v,#0xff
key:
mov a,p1
mov key_t,a
xrl a,key_v
jz key
lcall d_10ms
mov a,p1
mov key_t,a
xrl a,key_v
jz key
mov key_v,key_t
lcall key_to
ajmp key
key_to:
mov a,key_v
cjne a,#0xef,next
cpl p0.0
ret
next: cjne a,#0xdf,over
cpl p0.1
over: ret
d_10ms: mov r5,#20
temp1: mov r6,#255
djnz r6,$
djnz r5,temp1
ret
end
#include <reg51.h>
#define uchar unsigned char
sbit P00 = P0^0;
sbit P01 = P0^1;
void key_to(uchar key_s);
void delay_ms(uchar ms);
void main()
{
uchar data key_v = 0xff;
uchar data key_t = 0x00;
P1 = 0xff;
P0 = 0xff;
while(1)
{
key_t = P1;
if(key_t != key_v)
{
delay_ms(10);
key_t = P1;
if(key_t != key_v)
{
key_v = key_t;
key_to(key_v);
}
}
}
}
void key_to(uchar key_v)
{
if(key_v == 0xef)
P00 = !P00;
else
{
if(key_v == 0xdf)
P01 = !P01;
}
}
void delay_ms(uchar ms)
{
uchar i;
while(ms--)
for(i = 0; i < 124; i++);
}
阅读(4698) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论