⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1key6.asm

📁 《爱上单片机》配书光盘(书本的制作作品所要的程序)
💻 ASM
字号:
;
;;
;;; 
;;;一键多能开关程序
;;;杜洋 2005年7月30日0:57
;;;  
;;;电路结构:P1口接8个LED(低电平使能)
;;;P3.3口接键盘(占用中断)
;;;
;;;程序功能:
;;;可以用单键实现6种功能,
;;;所有按键功能占用时间小于1秒.
;;;1秒内单击一次,1号灯亮
;;;1秒内双击,2号灯亮
;;;1秒内三次按键,3号灯亮
;;;1秒内长按,4号灯亮
;;;1秒内单击加长按,5号灯亮
;;;1秒内二次单击加长按,6号灯亮
;;;程序正常工作时,8号灯闪烁(2HZ)
;;;
;;
;

;----------------------------------------程序入口
ORG 0000H;主程序入口
LJMP START
ORG 0013H;中断程序入口
LJMP INTT1

ORG 0030H
;----------------------------------------引脚定义
LED1 EQU P1.0;1秒内单击一次,1号灯亮
LED2 EQU P1.1;1秒内双击,2号灯亮
LED3 EQU P1.2;1秒内三次按键,3号灯亮
LED4 EQU P1.3;1秒内长按,4号灯亮
LED5 EQU P1.4;1秒内单击加长按,5号灯亮
LED6 EQU P1.5;1秒内二次单击加长按,6号灯亮
WLED EQU P1.7;程序正常工作闪烁指示灯
RAM1 EQU 20H ;按键功能寄存器
K1 EQU P3.3 ;按键(中断)

;-----------------------------------------初始化程序
START:

CLR P3.7 ;选通WS 系列实验板的LED 流水灯的电源控制端

SETB K1
CLR A
MOV R0,A
SETB IT1
SETB EX1
SETB EA

;--------------------------------------主程序循环
LOOP:;
CPL WLED;工作指示灯闪亮(表示程序正常)
CALL DL05S
JMP LOOP

;--------------------------------------按键中断程序
INTT1:
CLR EA
PUSH PSW
PUSH ACC

CALL DL20MS;入键去抖
JB K1,INT1_OVER

MOV R5,#40;一次按键处理的总时间长度(800毫秒)

I1:;1秒内长按,4号灯亮
CALL DL20MS
JB K1,I2
DJNZ R5,I1
MOV R0,#4
CPL LED4
JMP INT1_WORK

I2:;1秒内单击一次,1号灯亮
CALL DL20MS
JNB K1,I3
DJNZ R5,I2
MOV R0,#1
CPL LED1
JMP INT1_WORK

I3:;1秒内单击加长按,5号灯亮
CALL DL20MS
JB K1,I4
DJNZ R5,I3
MOV R0,#5
CPL LED5
JMP INT1_WORK

I4:;1秒内双击,2号灯亮
CALL DL20MS
JNB K1,I5
DJNZ R5,I4
MOV R0,#2
CPL LED2
JMP INT1_WORK

I5:;1秒内二次单击加长按,6号灯亮
CALL DL20MS
JB K1,I6
DJNZ R5,I5
MOV R0,#6
CPL LED6
JMP INT1_WORK

I6:;1秒内三次按键,3号灯亮
MOV R0,#3
CPL LED3


INT1_WORK:;按键寄存器处理,备其它程序查用。
MOV 20H,R0
MOV R0,#0
MOV R5,#80

INT1_OVER:;按键程序退出去抖动。
CALL DL20MS
JB K1,I00
DJNZ R5,INT1_OVER

I00:;退出中断
POP ACC 
POP PSW
SETB EA
RETI

;---------------------------------延时子程序
DELAY:

DL20MS:      ;
MOV R6,#255
DL20MS_1:MOV R7,#255
DJNZ R7,$
DJNZ R6,DL20MS_1
RET
 
DL100MS:    ;
MOV R4,#5
DL100MS_1:CALL DL20MS
DJNZ R4,DL100MS_1
RET

DL05S:      ;
MOV R4,#25
DL05S_1:CALL DL20MS
DJNZ R4,DL05S_1
RET
;--------------------------------程序结束
END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -