标题: 使用两个按键控制共阳极数码管计时的暂停和继续(汇编语言+普中单片机) [打印本页]
作者: 布鲁克林章鱼哥 时间: 2024-11-14 22:06
标题: 使用两个按键控制共阳极数码管计时的暂停和继续(汇编语言+普中单片机)
实在是不知道怎么加两个中断用来开始和暂停目前只会写以下两种0到9共阳极数码管循环
程序一(自动循环)
ORG 0000H
LJMP START
ORG 0040H
START: MOV DPTR,#NUMTAB ;读数据表入口地址
MOV R0,#00H ;R0地址初始化
LOPDSP: MOV A,R0
MOVC A,@A+DPTR ;读数字对应编码
MOV P0,A
ACALL DELAY
INC R0 ;数字加1
CJNE R0,#0AH,LOPDSP ;大于9,再从0显示
JMP START
DELAY: MOV R6,#0FFH
LP1: MOV R7,#0FFH
LP: DJNZ R7,LP
DJNZ R6,LP1
RET
NUMTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
程序二(按键按一下加一,使用一个中断子程序)
; 使用P0接静态数码管
; 使用P1接LED灯(本程序中未使用)
; 使用P3.2接独立按键K1,外部中断0和P3.2引脚绑定
; 按键无消抖
;-------------------------------------
ORG 0000H ; ORG为程序段说明伪指令,它向汇编程序说明该程序段的起始地址,所以可以当中断向量地址用
LJMP L_Main ; 跳转到L_Main标号处
ORG 0013H ; 0003H为外部中断0向量地址
LJMP I_INT1 ; 跳转到I_INT1标号处
ORG 0030H
L_Main:
; 初始化中断
SETB EA ; 总中断允许控制位设置为1
SETB EX1 ; 外部中断0允许位设置为1
SETB PX1 ; 外部中断0优先级设置为1
SETB IT1 ; 外部中断0设置为下降沿触发方式
MOV DPTR,#T_table ; T_table所在地址赋值给DPTR
MOV R0,#000H ; 立即数赋值给R0,给R0赋初值,在中断中用到
MOV P0,#0C0H ; 设置数码管显示的初始值(熄灭)
; 主循环
L_MainLoop:
SJMP L_MainLoop ; 无限循环
;---------------------------------------
I_INT1:
PUSH ACC ; ACC地址单元中的数据压栈
PUSH PSW ; 程序状态字寄存器压栈
MOV A,R0 ; 将R0的值移动到累加器A
MOVC A,@A+DPTR ; 根据A的值和DPTR的值,从数据表中取数到A
MOV P0,A ; 将累加器A的值移动到P0口,更新数码管显示
INC R0 ; R0寄存器值加1
CJNE R0,#10,L_Next ; 如果R0不等于10就跳转到L_Next
MOV R0,#000H ; 如果R0等于10,则重置为0
L_Next:
POP PSW ; 程序状态字寄存器出栈
POP ACC ; ACC地址单元中的数据出栈
RETI ; 中断返回
;---------------------------------------
T_table:
DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H,0F8H, 80H, 90H
END
想用普中开发板P3.2,P3.3连K1,K2两个按钮控制开始和暂停,求教各位大佬,谢谢
作者: 188610329 时间: 2024-11-15 08:45
P33 暂停
P32 继续
CSEG 0000H
LJMP START
CSEG 0003H //P32, INT0
CLR IE1
RETI
MAIN_SEG segment code
RSEG MAIN_SEG
START: SETB IT0 //下降沿
SETB IT1 //下降沿
SETB EX0 //开INT0中断
SETB EA //开总中断
Main_Loop:
MOV DPTR,#NUMTAB ;读数据表入口地址
MOV R0,#00H ;R0地址初始化
LOPDSP: MOV A,R0
MOVC A,@A+DPTR ;读数字对应编码
MOV P0,A
ACALL DELAY
JB IE1,$ //暂停
INC R0 ;数字加1
CJNE R0,#0AH,LOPDSP ;大于9,再从0显示
JMP Main_Loop
DELAY: MOV R6,#0FFH
LP1: MOV R7,#0FFH
LP: DJNZ R7,LP
DJNZ R6,LP1
RET
NUMTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
作者: lkc8210 时间: 2024-11-15 09:39
普中板子的数码管不是共阴的吗?
取模应该是3FH, 06H, 5BH...
作者: 布鲁克林章鱼哥 时间: 2024-11-15 13:07
板子上共阳共阴都有,我用的是共阳的那个一位静态数码管
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |