📄 fm_transmitter.lst
字号:
0001 .include macro.asm (F:\proj\tenx\ref\Fm src\MACRO.ASM)
0001+
00002+ ld_pa .macro arg1
00003+ lds mtemp,arg1
00004+ opa mtemp
00005+ .endm
0006+
00007+ ld_pb .macro arg1
00008+ lds mtemp,arg1
00009+ opb mtemp
00010+ .endm
0011+
00012+ ld_pc .macro arg1
00013+ lds mtemp,arg1
00014+ opc mtemp
00015+ .endm
0016+
00017+ ld_pd .macro arg1
00018+ lds mtemp,arg1
00019+ opd mtemp
00020+ .endm
0021+
00022+ tog_pa .macro arg1
00023+ lds mtemp,1<<arg1
00024+ ipa mtemp1
00025+ eor mtemp
00026+ sta mtemp
00027+ opa mtemp
00028+ .endm
0029+
00030+ tog_pb .macro arg1
00031+ lds mtemp,1<<arg1
00032+ ipb mtemp1
00033+ eor mtemp
00034+ sta mtemp
00035+ opb mtemp
00036+ .endm
0037+
00002 .chip TM87P08
00003 .data
4 0000 data0 equ 00h
5 0001 data1 equ 01h
6 0002 data2 equ 02h
7 0003 data3 equ 03h
0008
9 0005 radio_num0 equ 05h ;radio count register
10 0006 radio_num1 equ 06h
0011
12 0008 disp0 equ 08h ; display register
13 0009 disp1 equ 09h
14 000A disp2 equ 0ah
15 000B disp3 equ 0bh
0016
17 000C force_zero equ 0ch
18 000D force_one equ 0dh
0019
20 000E reg_cf equ 0eh
21 000F reg_acc equ 0fh ;ac register
0022
23 0011 up_down_flag equ 11h ; "1"=> down count "0"=> up count
24 0012 add_sub_flag equ 12h ; FM => +- 1
25 0013 add_sub_num equ 13h
0026
27 0014 global_buf0 equ 14h ; global buffer register
28 0015 global_buf1 equ 15h
29 0016 global_buf2 equ 16h
30 0017 global_buf3 equ 17h
31 0018 global_buf4 equ 18h
32 0019 global_buf5 equ 19h
33 001A global_buf6 equ 1ah
34 001B global_buf7 equ 1bh
0035
36 001C radio_signal equ 1ch
37 001D first_flag equ 1dh ; "1"=> radio first data flag
38 001E final_flag equ 1eh ; "1"=> radio final data flag
39 001F key_signal equ 1fh
40 0020 power_signal equ 20h ; "1"=> open radio "0"=> close radio
0041
42 0021 i2c_addr0 equ 21h
43 0022 i2c_addr1 equ 22h
44 0023 i2c_data0 equ 23h
45 0024 i2c_data1 equ 24h
46 0025 i2c_data2 equ 25h
47 0026 i2c_data3 equ 26h
48 0027 i2c_sbopcode equ 27h ;110=>read mode; 101=> write mode
49 0028 i2c_buff0 equ 28h
50 0029 i2c_buff1 equ 29h
51 002A bat_flag equ 2ah
52 002B delay_buff0 equ 2bh
53 002C delay_buff1 equ 2ch
54 002D halt_release equ 2dh
55 002E led_flag equ 2eh
0056
57 0076 mtemp equ 76h
58 0077 mtemp1 equ 77h
0059
60 0000 pb0 equ 0
0061
0062
00063 .endd
0064
00065 .code
66 0000 **** NEW ADDR **** org 00h
104 00067 0000 D030 jmp start
0068
00069 ;********************************************
00070 ; interrupt area *
00071 ;********************************************
72 001C **** NEW ADDR **** org 1ch
110 00073 001C EB7F plc 17fh
111 00074 001D E908 sie* 08h
112 00075 001E D241 jmp predivider_int
0076
0077
78 0030 **** NEW ADDR **** org 30h
00079 start:
117 00080 0030 58F0 lds 70h,01h
118 00081 0031 07F0 lcp 1fh,00h
0082
120 00083 0032 5870 lds 70h,00h
121 00084 0033 0A70 opa 70h
122 00085 0034 F58F spa 0fh
123 00086 0035 0C70 opb 70h
124 00087 0036 F5B7 spb 17h
125 00088 0037 0D70 opc 70h
126 00089 0038 F5D8 spc 18h
127 00090 0039 0E70 opd 70h
128 00091 003A F5EF spd 0fh
0092
130 00093 003B C300 call clear_lcd
131 00094 003C C282 call i2c_write_enable
132 00095 003D C0CC call code_initial
133 00096 003E C22F call read_i2c_radio_num
00097 ;call power_on_off
135 00098 003F EB7F plc 17fh
136 00099 0040 E908 sie* 08h
00100 ;*******************************************
00101 ; key scan ioc1,ioc2,ioc3
00102 ;*******************************************
00103 keyscan:
00104 tog_pb pb0
;****************************************
;*** CALL MACRO : tog_pb ***
;****************************************
145 00104 0041 58F6 lds mtemp,1<<pb0 ; lds mtemp,1<<arg1
146 00104 0042 4477 ipb mtemp1
147 00104 0043 2C76 eor mtemp
148 00104 0044 6876 sta mtemp
149 00104 0045 0C76 opb mtemp
00104 .endm
151 00105 0046 582D lds halt_release,00h
152 00106 0047 EB7F plc 17fh
153 00107 0048 F510 sca 10h
154 00108 0049 FF00 halt
0109
156 00110 004A F500 sca 00h
157 00111 004B F500 sca 00h
0112
159 00113 004C 4770 ipc 70h
160 00114 004D 9056 jb2 key_release
0115
162 00116 004E 5D2E lds led_flag,0ah
163 00117 004F 5CF0 lds 70h,09h
164 00118 0050 07F0 lcp 1fh,00h
165 00119 0051 58AD lds halt_release,01h
166 00120 0052 4770 ipc 70h
167 00121 0053 805B jb0 up_key
168 00122 0054 885E jb1 dn_key
169 00123 0055 D041 jmp keyscan
0124
00125 key_release:
172 00126 0056 582E lds led_flag,00h
173 00127 0057 58F0 lds 70h,01h
174 00128 0058 07F0 lcp 1fh,00h
175 00129 0059 C061 call power_on_off
176 00130 005A D041 jmp keyscan
00131 up_key:
178 00132 005B 5811 lds up_down_flag,00h
179 00133 005C C081 call up_dn_keys
180 00134 005D D041 jmp keyscan
00135 dn_key:
182 00136 005E 5891 lds up_down_flag,01h
183 00137 005F C081 call up_dn_keys
184 00138 0060 D041 jmp keyscan
0139
00140 power_on_off:
187 00141 0061 E900 sie* 00h
188 00142 0062 0A0C opa force_zero
189 00143 0063 0C0C opb force_zero
190 00144 0064 0D0C opc force_zero
191 00145 0065 C300 call clear_lcd
0146
00147 power_on_off0:
194 00148 0066 4770 ipc 70h
195 00149 0067 9066 jb2 power_on_off0
0150
197 00151 0068 EB7F plc 17fh
198 00152 0069 F510 sca 10h
199 00153 006A ED10 sre 10h
200 00154 006B FF80 stop
0155
202 00156 006C F500 sca 00h
203 00157 006D F500 sca 00h
204 00158 006E 4770 ipc 70h
205 00159 006F 9071 jb2 power_on_off1
206 00160 0070 D066 jmp power_on_off0
00161 power_on_off1:
208 00162 0071 5C70 lds 70h,08h
209 00163 0072 0A70 opa 70h
0164
211 00165 0073 C1B3 call count_radio_data
212 00166 0074 C1E4 call count_radio_disp
213 00167 0075 5812 lds add_sub_flag,00h
214 00168 0076 C093 call radio_protocol
215 00169 0077 C174 call disp_add_sub
216 00170 0078 C307 call radio_display
217 00171 0079 5D2E lds led_flag,0ah
218 00172 007A 5CF0 lds 70h,09h
219 00173 007B 07F0 lcp 1fh,00h
220 00174 007C EB7F plc 17fh
221 00175 007D E908 sie* 08h
0176
00177 power_on_off2:
224 00178 007E 4770 ipc 70h
225 00179 007F 907E jb2 power_on_off2
226 00180 0080 F400 rts
00181 ;*******************************************
00182 up_dn_keys:
229 00183 0081 5B14 lds global_buf0,06h
00184 up_dn_keys0:
231 00185 0082 C334 call delay_100ms
232 00186 0083 4114 dec* global_buf0
233 00187 0084 B08D jz up_dn_keys2
234 00188 0085 4770 ipc 70h
235 00189 0086 A082 jnz up_dn_keys0
0190
237 00191 0087 6C11 lda up_down_flag ;singal scan
238 00192 0088 B08B jz up_dn_keys1
239 00193 0089 C13D call radio_dn_single
240 00194 008A F400 rts
00195 up_dn_keys1:
242 00196 008B C119 call radio_up_single
243 00197 008C F400 rts
0198
00199 up_dn_keys2:
246 00200 008D 6C11 lda up_down_flag ;auto scan
247 00201 008E B091 jz up_dn_keys3
248 00202 008F C147 call radio_dn_sequ
249 00203 0090 D092 jmp up_dn_keys_end
00204 up_dn_keys3:
251 00205 0091 C123 call radio_up_sequ
00206 up_dn_keys_end:
253 00207 0092 F400 rts
00208 ;*******************************************
00209 ; radio protocol subroutine
00210 ;*******************************************
00211 radio_protocol:
258 00212 0093 6C0C lda force_zero
259 00213 0094 1C0C mvl force_zero
260 00214 0095 1D0C mvh force_zero
261 00215 0096 1E0C mvu force_zero ;for tm87p08 mcu
262 00216 0097 6C80 lda @hl
263 00217 0098 6816 sta global_buf2
0218
265 00219 0099 F58F spa 0fh
266 00220 009A 5C1C lds radio_signal,08h
267 00221 009B 0A1C opa radio_signal
0222
269 00223 009C 5814 lds global_buf0,00h
270 00224 009D 5A17 lds global_buf3,04h
00225 radio_protocol0:
272 00226 009E 6C16 lda global_buf2
273 00227 009F 80A4 jb0 radio_protocol1
274 00228 00A0 5E1C lds radio_signal,0ch
275 00229 00A1 0A1C opa radio_signal
276 00230 00A2 5F1C lds radio_signal,0eh
277 00231 00A3 D0A8 jmp radio_protocol2
00232 radio_protocol1:
279 00233 00A4 5E9C lds radio_signal,0dh
280 00234 00A5 0A1C opa radio_signal
281 00235 00A6 5F9C lds radio_signal,0fh
282 00236 00A7 0000 nop
00237 radio_protocol2:
284 00238 00A8 4117 dec* global_buf3
285 00239 00A9 B0B2 jz radio_protocol3
286 00240 00AA 0000 nop
287 00241 00AB 0000 nop
288 00242 00AC 0000 nop
289 00243 00AD 0A1C opa radio_signal
290 00244 00AE 5016 sr0 global_buf2
291 00245 00AF 0000 nop
292 00246 00B0 0000 nop
293 00247 00B1 D09E jmp radio_protocol0
00248 radio_protocol3:
295 00249 00B2 5A17 lds global_buf3,04h
296 00250 00B3 4014 inc* global_buf0
297 00251 00B4 90BA jb2 radio_protocol4
298 00252 00B5 0A1C opa radio_signal
299 00253 00B6 1C14 mvl global_buf0
300 00254 00B7 6C80 lda @hl
301 00255 00B8 6816 sta global_buf2
302 00256 00B9 D09E jmp radio_protocol0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -