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

📄 organ.asm

📁 holtek的按键模块, asm编程
💻 ASM
字号:
;第十三章中断及定时/计数器应用
;PA0~PA7 设置为输入同时用电阻接电源使其电位为High 当按键按下时其电位为Low
;此一设计只是为了程序编写容易PB0 设置为输出来驱动喇叭在作High/Low 转换时形
;成声音脉波使喇叭发出声音如图12.1 所示

#include ht48c50-1.inc
#include macro.inc
;----------------------------------------------------------
data .section 'data' 			;== 数据节区==
	R8 	db ?			;
	R9 	db ? 			;
	r10	db ?
	temp	db ?
;----------------------------------------------------------
code .section at 0 'code' 		;== 程序节区==
	org 	00h 			;
	jmp 	start 			;
	org 	04h 			;外部中断入口地址
	reti 				;
	org 	08h 			;定时计数器0 中断入口地址
	reti 				;
	org 	0ch 			;定时计数器1 中断入口地址
	reti 				;
start: 					;程序一开始执行时先
	clr 	intc 			;设定暂存器启始值
	clr 	tmr0 			;以确保程序可以正确执行
	clr 	tmr0c 			;
	clr 	tmr1H 			;
	clr 	tmr1L 			;
	clr 	tmr1c
	 			;
	set 	pac 			;I/O Port 设定为输入模式
	set 	pbc 			;
	set 	pcc 			;
	set 	pdc 			;
main:
	set 	pac 			;(1) ;设定port A 为输入口
	clr 	pbc 			;设定port B 为输出口
	clr 	pb 			;
	clr		pcc
	clr		pc
	clr		pdc
	clr		pd
keyloop: 				;(2) ;
	mov 	a,pa 			;测试是否按下输入键
	cpl 	acc 			;
	sz 	acc 			;
	call 	whichkey 		;若是则找出按下那一个输入键
	jmp 	keyloop 		;若否则重测是否按下输入键

whichkey proc 				;(3) ;找出按下的输入键
;	mov 	temp,a 			;保留Acc 值
	xorm	a,pb


keynext:

	set	pd
	mov	a,0
	mov	tblp,a

	clr	bpd0
	tabrdl	acc
	cpl		acc
	xorm	a,pc
	call	Delay
	inc	tblp
	clr	pc
	set	pd

	clr	bpd1
	tabrdl	acc
	cpl		acc
	xorm	a,pc
	call	Delay
	inc	tblp
	clr	pc
	set	pd

	clr	bpd2
	tabrdl	acc
	cpl		acc
	xorm	a,pc
	call	Delay
	inc	tblp
	clr	pc
	set	pd

	clr	bpd3
	tabrdl	acc
	cpl		acc
	xorm	a,pc
	call	Delay
	inc	tblp
	clr	pc
	set	pd

	clr	bpd4
	tabrdl	acc
	cpl		acc
	xorm	a,pc
	call	Delay
	inc	tblp
	clr	pc
	set	pd

	clr	bpd5
	tabrdl	acc
	cpl		acc
	xorm	a,pc
	call	Delay
	inc	tblp
	clr	pc
	set	pd

	clr	bpd6
	tabrdl	acc
	cpl		acc
	xorm	a,pc
	call	Delay
	inc	tblp
	clr	pc
	set	pd

	clr	bpd7
	tabrdl	acc
	cpl		acc
	xorm	a,pc
	call	Delay
	inc	tblp
	clr	pc
	set	pd

	mov 	a,pa 			;读取Port A
	cpl 	acc 			;
	sz 	acc 			;输入键是否按着的?
	jmp 	keynext 		;是再检查
	clr 	pb 			;
	clr		pc
	clr		pd
	ret 				;
whichkey endp 				;

Delay:
;	mov	A,1
Delay10ms:
;	mov	R10,A
Delay10:
;	store	20,R8
DeLay1ms:
	store	149,R9		       ;149*3*4/3.579545=499.5us
	clr	WDT
Delay05:
	djnz	R9,Delay05
;	djnz	R8,Delay1ms
;	djnz	R10,Delay10
	ret

	org 0f00h 			;字表
	dc 18h,24h,24h,42h,7eh,42h,42h,00h	;
	dw 00111100b
	dw 00100010b
	dw 00100010b
	dw 00111100b
	dw 00100010b
	dw 00100010b
	dw 00111100b
	dw 00000000b
	end

⌨️ 快捷键说明

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