📄 led+key.asm
字号:
KEYXS .usect ".data0",1 ;LED显示的数据
KEYDATA .usect ".data0",1 ;前次LED显示的数据
DP_USER .set 5
.include "F2407REGS.H" ;引用头部文件
.def _c_int0
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;(2)主程序
.text
_c_int0
CALL SYSINIT ;调系统初始化程序
LDP #DP_USER ;指向0280h~0300h区
SPLK #0000H,KEYXS ;给要显示的数据赋初值
B LED ;使LED全部熄灭
LOOP: CALL KEY ;调键盘程序,即扫描键盘
LED: LDP #DP_PF2 ;选页
LACL PADATDIR ;将PADATDIR装载到ACC的低16位
OR #00038H ;LEDCLK=0
SACL PADATDIR ;开74HC273片选信号
LDP #DP_USER
LACL KEYXS
OR #0FF00H ;IOPB口为输出方式
LDP #DP_PF2
SACL PBDATDIR ;送要显示的数据到IOPB口
LACL PADATDIR
OR #0ff10H ;LEDCLK=1
AND #0ff10H
SACL PADATDIR ;关74HC273片选信号
CALL KEYDELAY
WAIT: RPT #7 ;延时
NOP
B LOOP ;跳转,循环查键
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;(3)系统初始化程序
SYSINIT:
SETC INTM
CLRC SXM
SETC OVM
CLRC CNF ;B0 被配置为数据存储空间
LDP #0E0H
SPLK #81FEH,SCSR1 ;CLKIN=6 M,CLKOUT=24 M
SPLK #0E8H,WDCR ;Disable WDT
LDP #0
SPLK #0000H,IMR ;不使能中断
SPLK #0FFFFH,IFR ;清全部中断标志
RET
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;(4)键盘初始化程序
KEYINIT:
LDP #DP_PF2
LACL MCRA
AND #000c7H ;IOPA3,IOPA4,IOPA5,IOPB端口配置为一般的I/O功能
SACL MCRA
LACL PBDATDIR
AND #0000H ;IOPB端口设置为输入方式
SACL PBDATDIR
LACL PADATDIR
OR #0FF10H ;IOPA3,IOPA4,IOPA5 设置为输出方式,且KEYC=1
AND #0FF10H
SACL PADATDIR
RET
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;(5)键盘程序
KEY:
CALL READKEY ;调读键程序
LACL KEYXS
BCND KEY,EQ ;没有键按下跳转到KEY,循环查键
CALL KEYDELAY ;延时消抖动
CALL READKEY ;再一次读键值
LACL KEYXS
BCND KEY,EQ ;没有键按下跳转到KEY,循环查键
B LED ;有键按下,跳转到LED,进行显示
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;(6)读键子程序
READKEY:
CALL KEYINIT ;调键盘初始化程序
LDP #DP_PF2
LACL PBDATDIR ;取出键值PBDATDIR.0~PBDATDIR.3
OR #0FF00H ;屏蔽高8位
CMPL ;取反
LDP #DP_USER
SACL KEYXS ;存放键值
RET ;返回
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;(7)用软件延时30mS消抖动
KEYDELAY:
LACC #6000
KEYD1: SUB #1
RPT #80
NOP
BCND KEYD1,NEQ
RET
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;(10)假中断程序
PHANTOM
KICK_DOG ;复位看门狗
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -