单片机按键控制LED汇编程序

单片机按键控制LED汇编程序,第1张

一键多功能按键识别技术 1.实验任务 开关K1接在P3.2管脚上,在AT89S51单片机的P0.0端口接有1个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在亮,当一次按下开关K1的时候,灯灭,再按一次,灯亮,如此轮流下去。 2.系统板上硬件连线 把“单片机系统”区域中的P3.2端口连接到“独立式键盘”区域中的K1端口上;把P0.0连到L1上 3.程序设计方法 (1. 设计思想由来 在我们生活中,我们很容易通过这个叫张三,那个叫李四,另外一个是王五;那是因为每个人有不同的名子,我们就很快认出,同样,对于要通过一个按键来识别每种不同的功能,我们给每个不同的功能模块用不同的ID号标识,这样,每按下一次按键,ID的值是不相同的,所以单片机就很容易识别不同功能的身份了。 (2. 设计方法 从上面的要求我们可以看出,L1到亮灭受开关K1来控制,我们给L1亮灭定义出不同的ID号,当L1在亮时,ID=0;当L1在灭时,ID=1;分别给出不同的ID号我们就能够完成上面的任务了 4.汇编程序: ID EQU 30H K1 BIT P3.2 L1 BIT P0.0 ORG 0000H CLR P1.7 MOV ID,#00H START: JB K1,REL ;K1没闭合转 LCALL DELAY10MS ;K1闭合,延时消抖动 JB K1,REL :再判断 INC ID MOV A,ID CJNE A,#02,REL MOV ID,#00H REL: JNB K1,$ ;等待开关d起 MOV A,ID CJNE A,#00H,IS0 ;判断相应ID CLR L1 :ID=0,灯亮 LCALL DELAY光 延时 SJMP START IS0: CJNE A,#01H,STARTSETB L1 LCALL DELAY SJMP START DELAY10MS: MOV R6,#20 延时10MS子程序 LOOP1: MOV R7,#248 DJNZ R7,$ DJNZ R6,LOOP1 RET DELAY: MOV R5,#20 延时20MS子程序 LOOP2: LCALL DELAY10MS DJNZ R5,LOOP2 RET END

请采纳答案,支持我一下。

循环点亮LED灯,也就是流水灯效果的控制,可以用定时器来控制,这样做相对代码量较少而时间比较精确,外部中断0接以按键,可以控制动态效果的启停。程序如下:

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP EXT0外部中断0,控制流水灯启停

ORG 000BH

LJMP T0ISR定时0控制流水灯循环点亮

ORG 0030H

MAIN:

MOV TMOD,#01H设置定时器0工作模式

MOV TH0,#HIGH(65536-60000)60毫秒定时

MOV TL0,#LOW(65536-60000)

SETB ET0

SETB EA

MOV A,#0FEHLED等初始化

MOV P0,A

SJMP $

EXT0:

CPL TR0

RETI

T0ISR:

CLR TR0

MOV TH0,#HIGH(65536-60000)

MOV TL0,#LOW(65536-60000)

SETB ET0

RL A

MOV P0,A循环点亮LED灯

RETI

END

单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4

程序:

ORG 00H

START: MOV A,P1

ANL A,#0F0H

RR A

RR A

RR A

RR A

ORl A,#0F0H

MOV P1,A

SJMP START

可以检测单个按键,也可以同时检测多个按键

过程:开始——读P1口数据到A——A中的数据右移4次——A中的内容和F0H相或——A中的数据送到P1口——回到开始


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11758962.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存