历史上的今天
今天是:2026年01月11日(星期日)
2023年01月11日 | 汇编写51单片机之按键检测
2023-01-11 来源:zhihu
二话不说,先上代码:
ORG 00H
LOOP: JB P3.4,LOOP
LCALL DELAY
JB P3.4,LOOP
LOOP1:JB P3.4,LOOP
JB P1.0,TC1
SETB P1.0
JMP LOOP
TC1: CLR P1.0
JMP LOOP
DELAY: MOV R7,#50
D1: MOV R6,#50
D2: DJNZ R6,D2
DJNZ R7,D1
RET
END
我就不说什么数码管的静态显示,动态显示了,会点LED了,数码管就是比较复杂的点LED。所以现在来说检测io口的状态。我的按键是P3.4,平常位高电平,按下即为低电平。实现:按键按一下灯的状态就变为相反状态
ORG 00H
LOOP: JB P3.4,LOOP ; JB指令:如果P3.4这个口为高电平,就是1,则跳到loop去执行,这个loop段的作用就是不断地去检测io口的状态,如果一直为1,则一直在检测,当它为0,就是按下的时候,就继续执行下面的程序,这里有个延时,主要是为了避免按键抖动带来的影响。我就不去说这个按键抖动了。
LCALL DELAY
JB P3.4,LOOP
LOOP1:JB P3.4,LOOP ;延时消抖后再来判断一下,其实没有这句话也可以
JB P1.0,TC1 ;判断P1.0这个口是不是等于1,如果是,则跳到TC1这里,把P1.0清零
SETB P1.0 ;如果P1.0不是1,则继续执行这一步,把它设为1,
JMP LOOP ;回到按键检测当中
TC1: CLR P1.0 ;把P1.0清零
JMP LOOP ;回到按键检测
DELAY: MOV R7,#50 ;延时函数
D1: MOV R6,#50
D2: DJNZ R6,D2
DJNZ R7,D1
RET
END
上一篇:汇编写51单片机之循环点亮LED
史海拾趣
|
选一个黑匣子,具备这样的功能:4v电平来时,迅速提高电压到0.6V,然后放电到0.5V,然后给4V电平,迅速提高电压到0.6V,然后放电到0.5V。让电压在0.5到0.6之间摆动。达到数字电平转模拟电平的目的。 黑匣子必须具备的优点:提电压迅速,降电压缓慢 ...… 查看全部问答> |
|
原程序将flash0块和2块开始的地方写入了两个名为bios1.c和bios2.c的C数组文件,开机时有进度条和logo。我现在想改开机logo中的两个字母,请问怎么办? flash0块的bios1.c是不是启动程序bootrom.bin转换成C数组文件烧进flash的!… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 13:33 编辑 TI 的2407 看网上的帖子..说要把const的数组放到flash中..必须在cmd设定 .const : load= PROG PAGE 0, run = SARAM ...… 查看全部问答> |
|
module ff(rw,oer,ce,lclk,busyr,lint_r,led,lblast,lserr,lads,lholda,lhold,la,lreseto,lwait,lready,lwr,lint,cs); input lads; //address strobe form 9054 input lhold; //bu ...… 查看全部问答> |
|
即使你不是一个机器人,我们依旧可以通过一些策略增大你赢得“石头剪子布”(RPS)的概率。 猜拳并非仅仅靠你的运气,根据下面的信息图“如何赢得每一场猜拳比赛”我们不难找到答案。 猜拳世界锦标赛的历届冠军 2009 TIM CONRAD 美国 2008 MONI ...… 查看全部问答> |




