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

📄 led+key.asm

📁 2407asm文件夹包括第8~13章的汇编语言代码及使用说明。有如下子文件夹: &#61548 第8章数字输入输出模块(led); &#61548 第8章数字输入输出模块(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 + -