📄 organ.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 + -