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

📄 ex9-8.asm

📁 《单片机原理实用教程——基于Proteus虚拟仿真》一书的配套光盘
💻 ASM
字号:

	ORG 0000H
START:	LJMP MAIN
	ORG 0013H
        LJMP PKEYI
	ORG 0030H
MAIN:	MOV SP,#60H			;主程序
	MOV 70H,#00			;设置显示缓冲区初值
	MOV 71H,#01
	MOV 72H,#02
 	MOV 73H,#03
	MOV 74H,#04
	MOV 75H,#05
	MOV 76H,#06
	MOV 77H,#07
	LCALL INI79			;调8279初始化子程序
LOOP:	LCALL RDIR			;调8279显示更新子程序
	SJMP LOOP

;8279初始化子程序
INI79:	MOV   DPTR,#7FFFH               ;8279命令口地址
	MOV   A,#0D1H			;清0命令
	MOVX  @DPTR,A
WNDU: 	MOVX  A,@DPTR                   ;等待8279清0结束
	JB    ACC.7,WNDU
	MOV   A,#00                     ;设置8279为编码扫描方式,两键互锁
	MOVX  @DPTR,A
	MOV   A,#34H                    ;设置8279扫描频率 
	MOVX  @DPTR,A
	MOV   IE,#84H                   ;允许8279中断
	RET

;8279显示更新子程序
RDIR:	MOV   DPTR,#7FFFH               ;8279命令口地址             	
	MOV   A,#90H			;写显示RAM命令
	MOVX  @DPTR,A
	MOV   R0,#70H                 	;显示缓冲器首地址→R0
	MOV   R7,#8
	MOV   DPTR,#7EFFH
RDLO: 	MOV   A,@R0                  	;取显示数据
	ADD   A,#5                  	;加偏移量
	MOVC  A,@A+PC                	;查表转换为段码数据
	MOVX  @DPTR,A
	INC   R0
	DJNZ  R7,RDLO
	RET
SEG:  	DB 3fH,06H,5BH,4FH            	;段码表
	DB 66H,6DH,7DH,07H
	DB 7FH,6FH,77H,7CH
	DB 39H,5EH,79H,71H
	DB 00H

;8279按键输入中断服务程序
PKEYI:	PUSH  PSW
	PUSH  DPL
	PUSH  DPH
	PUSH  ACC
	PUSH  B
	SETB  PSW.3			;选工作寄存器1区                   
	MOV   DPTR,#7FFFH           	;8279命令口地址
	MOVX  A,@DPTR			;读FIFO状态字
	ANL   A,#0FH
	JZ    PKYR                   	;判FIFO中是否有数据?
	MOV   A,#40H                	;读FIFO命令
	MOVX  @DPTR,A
	MOV   DPTR,#7EFFH		;8279数据口地址
	MOVX  A,@DPTR               	;读数据
	MOV   R2,A
	ANL   A,#38H			;计算键值               
	RR    A
	RR    A
	RR    A
	MOV   B,#04H
	MUL   AB
	XCH   A,R2
	ANL   A,#7
	ADD   A,R2
	MOV 70H,A
	MOV 71H,#16
	MOV 72H,#16
 	MOV 73H,#16
	MOV 74H,#16
	MOV 75H,#16    
PKYR:	POP   B
	POP   ACC
	POP   DPH
	POP   DPL
	POP   PSW
	RETI

END

⌨️ 快捷键说明

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