📄 organ.lst
字号:
File: ORGAN.ASM Holtek Cross-Assembler Version 2.86 Page 1
1 0000 ;第十三章中断及定时/计数器应用
2 0000 ;PA0~PA7 设置为输入同时用电阻接电源使其电位为High 当按键按下时其电位为Low
3 0000 ;此一设计只是为了程序编写容易PB0 设置为输出来驱动喇叭在作High/Low 转换时形
4 0000 ;成声音脉波使喇叭发出声音如图12.1 所示
5 0000
6 0000 #include ht48c50-1.inc
7 0000 #include macro.inc
8 0000 ;----------------------------------------------------------
9 0000 data .section 'data' ;== 数据节区==
10 0000 00 R8 db ? ;
11 0001 00 R9 db ? ;
12 0002 00 r10 db ?
13 0003 00 temp db ?
14 0004 ;----------------------------------------------------------
15 0000 code .section at 0 'code' ;== 程序节区==
16 0000 org 00h ;
17 0000 280D jmp start ;
18 0001 org 04h ;外部中断入口地址
19 0004 0004 reti ;
20 0005 org 08h ;定时计数器0 中断入口地址
21 0008 0004 reti ;
22 0009 org 0ch ;定时计数器1 中断入口地址
23 000C 0004 reti ;
24 000D start: ;程序一开始执行时先
25 000D 1F0B clr intc ;设定暂存器启始值
26 000E 1F0D clr tmr0 ;以确保程序可以正确执行
27 000F 1F0E clr tmr0c ;
28 0010 1F0F clr tmr1H ;
29 0011 1F10 clr tmr1L ;
30 0012 1F11 clr tmr1c
31 0013 ;
32 0013 1F93 set pac ;I/O Port 设定为输入模式
33 0014 1F95 set pbc ;
34 0015 1F97 set pcc ;
35 0016 1F99 set pdc ;
36 0017 main:
37 0017 1F93 set pac ;(1) ;设定port A 为输入口
38 0018 1F15 clr pbc ;设定port B 为输出口
39 0019 1F14 clr pb ;
40 001A 1F17 clr pcc
41 001B 1F16 clr pc
42 001C 1F19 clr pdc
43 001D 1F18 clr pd
44 001E keyloop: ;(2) ;
45 001E 0712 mov a,pa ;测试是否按下输入键
46 001F 0185 cpl acc ;
47 0020 1085 sz acc ;
48 0021 2023 call whichkey ;若是则找出按下那一个输入键
49 0022 281E jmp keyloop ;若否则重测是否按下输入键
50 0023
51 0023 whichkey proc ;(3) ;找出按下的输入键
52 0023 ; mov temp,a ;保留Acc 值
53 0023 0494 xorm a,pb
54 0024
55 0024
File: ORGAN.ASM Holtek Cross-Assembler Version 2.86 Page 2
56 0024 keynext:
57 0024
58 0024 1F98 set pd
59 0025 0F00 mov a,0
60 0026 0087 mov tblp,a
61 0027
62 0027 3418 clr bpd0
63 0028 1D85 tabrdl acc
64 0029 0185 cpl acc
65 002A 0496 xorm a,pc
66 002B 206F call Delay
67 002C 1487 inc tblp
68 002D 1F16 clr pc
69 002E 1F98 set pd
70 002F
71 002F 3498 clr bpd1
72 0030 1D85 tabrdl acc
73 0031 0185 cpl acc
74 0032 0496 xorm a,pc
75 0033 206F call Delay
76 0034 1487 inc tblp
77 0035 1F16 clr pc
78 0036 1F98 set pd
79 0037
80 0037 3518 clr bpd2
81 0038 1D85 tabrdl acc
82 0039 0185 cpl acc
83 003A 0496 xorm a,pc
84 003B 206F call Delay
85 003C 1487 inc tblp
86 003D 1F16 clr pc
87 003E 1F98 set pd
88 003F
89 003F 3598 clr bpd3
90 0040 1D85 tabrdl acc
91 0041 0185 cpl acc
92 0042 0496 xorm a,pc
93 0043 206F call Delay
94 0044 1487 inc tblp
95 0045 1F16 clr pc
96 0046 1F98 set pd
97 0047
98 0047 3618 clr bpd4
99 0048 1D85 tabrdl acc
100 0049 0185 cpl acc
101 004A 0496 xorm a,pc
102 004B 206F call Delay
103 004C 1487 inc tblp
104 004D 1F16 clr pc
105 004E 1F98 set pd
106 004F
107 004F 3698 clr bpd5
108 0050 1D85 tabrdl acc
109 0051 0185 cpl acc
110 0052 0496 xorm a,pc
111 0053 206F call Delay
112 0054 1487 inc tblp
113 0055 1F16 clr pc
114 0056 1F98 set pd
115 0057
File: ORGAN.ASM Holtek Cross-Assembler Version 2.86 Page 3
116 0057 3718 clr bpd6
117 0058 1D85 tabrdl acc
118 0059 0185 cpl acc
119 005A 0496 xorm a,pc
120 005B 206F call Delay
121 005C 1487 inc tblp
122 005D 1F16 clr pc
123 005E 1F98 set pd
124 005F
125 005F 3798 clr bpd7
126 0060 1D85 tabrdl acc
127 0061 0185 cpl acc
128 0062 0496 xorm a,pc
129 0063 206F call Delay
130 0064 1487 inc tblp
131 0065 1F16 clr pc
132 0066 1F98 set pd
133 0067
134 0067 0712 mov a,pa ;读取Port A
135 0068 0185 cpl acc ;
136 0069 1085 sz acc ;输入键是否按着的?
137 006A 2824 jmp keynext ;是再检查
138 006B 1F14 clr pb ;
139 006C 1F16 clr pc
140 006D 1F18 clr pd
141 006E 0003 ret ;
142 006F whichkey endp ;
143 006F
144 006F Delay:
145 006F ; mov A,1
146 006F Delay10ms:
147 006F ; mov R10,A
148 006F Delay10:
149 006F ; store 20,R8
150 006F DeLay1ms:
151 006F store 149,R9 ;149*3*4/3.579545=499.5us
152 0071 0001 clr WDT
153 0072 Delay05:
154 0072 djnz R9,Delay05
155 0074 ; djnz R8,Delay1ms
156 0074 ; djnz R10,Delay10
157 0074 0003 ret
158 0075
159 0075 org 0f00h ;字表
160 0F00 0018 0024 dc 18h,24h,24h,42h,7eh,42h,42h,00h ;
0024 0042 007E 0042 0042 0000
161 0F08 003C dw 00111100b
162 0F09 0022 dw 00100010b
163 0F0A 0022 dw 00100010b
164 0F0B 003C dw 00111100b
165 0F0C 0022 dw 00100010b
166 0F0D 0022 dw 00100010b
167 0F0E 003C dw 00111100b
168 0F0F 0000 dw 00000000b
169 0F10 end
0 Errors
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -