?? main.lst
字號:
1 ;==========================================================
2 ;
3 ; 模塊: FM發射模塊控制代碼
4 ;
5 ; 版本: 1.01
6 ;
7 ; 日期: 2007-7-28
8 ;
9 ; 作者: 施探宇
10 ;
11 ; 說明: Zi2020 應用圖
12 ;
13 ; +-----+
14 ; (106.7)P5.0 ===| |=== P5.1(PREV KEY)(POWER KEY)
15 ; (107.1)P6.7 ===| |=== P5.2(NEXT KEY)
16 ; (107.5)P6.6 ===| |=== P5.3(CE,Zi2020 高打開)
17 ; Vdd ===| |=== Vss
18 ; (107.9)P6.5 ===| |=== P6.0(音頻檢測)
19 ; FM LED)P6.4 ===| |=== P6.1(SDA,Zi2020)
20 ; (NC)P6.3 ===| |=== P6.2(SCL,Zi2020)
21 ; +-----+
22 ;
23 ;==========================================================
24 include "reg.inc"
1 C ;=====================================================
2 C ; 寄存器
3 C ;=====================================================
4 0000 C R0 equ 0X00
5 0001 C R1 equ 0x01
6 0001 C TIME_COUNT equ 0x01
7 0002 C PC equ 0x02
8 0003 C FLAG equ 0x03
9 0004 C R4 equ 0x04
10 0005 C P5 equ 0x05
11 0006 C P6 equ 0x06
12 000F C INT_STATU equ 0x0f
13 C ;----------------------------------------------------------
14 C ;AUX REG
15 C
16 0001 C INTCON equ 0x01
17 0005 C P5CON equ 0x05
18 0006 C P6CON equ 0x06
19 000B C IOCB equ 0x0B
20 000B C IO_DOWN equ 0x0B
21 000C C IOCC equ 0x0C
22 000D C IOCD equ 0x0D
23 000D C IO_UP equ 0x0D
24 000E C WTDCON equ 0x0E
25 000F C INT_MAST equ 0x0F
26 C
27 C
28 C
29 C ;---------------------------------------------------------
30 0000 C C equ 0x00
31 0001 C DC equ 0x01
32 0002 C Z equ 0x02
33 C
34 0007 C WTD_BIT equ 0x07
35 0006 C P60_BIT equ 0x06
36 C
37 C ;中斷標志位
38 0000 C TC_FLAG_BIT equ 0x00
39 0001 C P6_FLAG_BIT equ 0x01
40 0002 C EX_FLAG_BIT equ 0x02
41 C
42 C
43 C ;---------------------------------------------------------
44 C ; 自定義的變量
45 0010 C A_buff equ 0x10 ;A寄存器備份
46 C
47 0011 C IO_buff equ 0x11 ;A寄存器備份
48 0012 C I2cDevId equ 0x12 ;I2c器件
49 0013 C I2cAddr equ 0x13 ;I2c地址
50 0014 C I2cData equ 0x14 ;I2c數據
51 0015 C Count equ 0x15
52 0016 C Rd5800_addr equ 0x16
53 0016 C Rd5800_Reg_02H equ Rd5800_addr
54 0017 C Rd5800_Reg_02L equ Rd5800_addr+1
55 0018 C Rd5800_Channel equ Rd5800_addr+2
56 0019 C Rd5800_Reg_03L equ Rd5800_addr+3
57 C ;*************************************************************************************
58 C
59 0000 C FM_MUTE equ 0x00
60 C
61 0020 C FM_STATUS equ 0x20
62 C
63 0021 C RSSI_BAK equ 0x21
64 C
65 001A C RSSI equ 0x1a
66 001B C channel_cnt equ 0x1b
67 C
68 C
69 001C C time_delay1 equ 0x1c
70 001D C time_delay equ 0x1d
71 001E C pop_statu equ 0x1e
72 001F C pop_a equ 0x1f
73 C
25
26 ;===========================================================
27 ; Start()
28 ;===========================================================
29 ORG 0x00
30 00000 1500 jmp Start
31
32 ORG 0x01
33 00001 0013 reti
34 ORG 0x08
35 00008 084F bc INT_STATU,@P6_FLAG_BIT
36 00009 088F bc INT_STATU,@EX_FLAG_BIT
37 0000A 0013 reti
38
39
40
41
42
43
44 ;===============================================
45 ; Function:TblFmModeHi(A)
46 0000B TblFmDefault_bal:
47 0000B 03C2 ADD PC, A
48 0000C 1CD8 RETL @FM_Default_02H
49 0000D 1C81 RETL @FM_Default_02L
50 0000E 1C63 RETL @FM_Default_03H
51 0000F 1C00 RETL @FM_Default_03L
52 00010 1C44 RETL @FM_Default_04H
53 00011 1C00 RETL @FM_Default_04L
54 00012 1C10 RETL @FM_Default_05H
55 00013 1CFF RETL @FM_Default_05L
56 00014 1C00 RETL @FM_Default_06H
57 00015 1C00 RETL @FM_Default_06L
58 00016 1C00 RETL @FM_Default_07H
59 00017 1CCD RETL @FM_Default_07L
60 00018 1C00 RETL @FM_Default_08H
61 00019 1C96 RETL @FM_Default_08L
62 0001A 1C00 RETL @FM_Default_09H
63 0001B 1C20 RETL @FM_Default_09L
64
65
66
67 0001C 1C41 RETL @FM_Default_10H
68 0001D 1C63 RETL @FM_Default_10L
69 0001E 1C08 RETL @FM_Default_11H
70 0001F 1C06 RETL @FM_Default_11L
71 00020 1C58 RETL @FM_Default_12H
72 00021 1C00 RETL @FM_Default_12L
73 00022 1C58 RETL @FM_Default_13H
74 00023 1C00 RETL @FM_Default_13L
75 00024 1C58 RETL @FM_Default_14H
76 00025 1C00 RETL @FM_Default_14L
77 00026 1C58 RETL @FM_Default_15H
78 00027 1C00 RETL @FM_Default_15L
79 00028 1C4C RETL @FM_Default_16H
80 00029 1C17 RETL @FM_Default_16L
81 0002A 1C20 RETL @FM_Default_17H
82 0002B 1CA2 RETL @FM_Default_17L
83 0002C 1C00 RETL @FM_Default_18H
84 0002D 1C00 RETL @FM_Default_18L
85 0002E 1C00 RETL @FM_Default_19H
86 0002F 1C0F RETL @FM_Default_19L
87
88 00030 1C06 RETL @FM_Default_20H
89 00031 1CDE RETL @FM_Default_20L
90 00032 1CEC RETL @FM_Default_21H
91 00033 1CC0 RETL @FM_Default_21L
92 00034 1C02 RETL @FM_Default_22H
93 00035 1C00 RETL @FM_Default_22L
94 00036 1C53 RETL @FM_Default_23H
95 00037 1C83 RETL @FM_Default_23L
96 00038 1C95 RETL @FM_Default_24H
97 00039 1CA4 RETL @FM_Default_24L
98 0003A 1CE8 RETL @FM_Default_25H
99 0003B 1C48 RETL @FM_Default_25L
100 0003C 1C05 RETL @FM_Default_26H
101 0003D 1C00 RETL @FM_Default_26L
102 0003E 1C00 RETL @FM_Default_27H
103 0003F 1CA4 RETL @FM_Default_27L
104 00040 1C88 RETL @FM_Default_28H
105 00041 1C9B RETL @FM_Default_28L
106 00042 1C0D RETL @FM_Default_29H
107 00043 1C84 RETL @FM_Default_29L
108
109 00044 1C4F RETL @FM_Default_30H
110 00045 1C04 RETL @FM_Default_30L
111 00046 1C88 RETL @FM_Default_31H
112 00047 1C32 RETL @FM_Default_31L
113 00048 1C7F RETL @FM_Default_32H
114 00049 1C71 RETL @FM_Default_32L
115 0004A 1C06 RETL @FM_Default_33H
116 0004B 1C60 RETL @FM_Default_33L
117 0004C 1C40 RETL @FM_Default_34H
118 0004D 1C10 RETL @FM_Default_34L
119 0004E 1C60 RETL @FM_Default_35H
120 0004F 1C02 RETL @FM_Default_35L
121 00050 1C18 RETL @FM_Default_36H
122 00051 1C08 RETL @FM_Default_36L
123 00052 1C64 RETL @FM_Default_37H
124 00053 1C58 RETL @FM_Default_37L
125 00054 1C78 RETL @FM_Default_38H
126 00055 1C7F RETL @FM_Default_38L
127 00056 1C01 RETL @FM_Default_39H
128 00057 1C00 RETL @FM_Default_39L
129
130
131 00058 1CC0 RETL @FM_Default_40H
132 00059 1C40 RETL @FM_Default_40L
133 0005A 1CC0 RETL @FM_Default_41H
134 0005B 1C20 RETL @FM_Default_41L
135 0005C 1C00 RETL @FM_Default_42H
136 0005D 1C24 RETL @FM_Default_42L
137 0005E 1C04 RETL @FM_Default_43H
138 0005F 1C00 RETL @FM_Default_43L
139 00060 1C00 RETL @FM_Default_44H
140 00061 1C20 RETL @FM_Default_44L
141
142 ;------------------------------
143 ; 程序開始
144 ;------------------------------
145 ORG 0x100
146 00100 Start:
147 00100 0011 DISI ;禁止中斷
148 00101 118B call Init_Con_reg ;初始化控制寄存器
149 00102 1170 call CleanRam ;清除寄存器
150 00103 117B call Init_Ioport ;初始化輸入輸出口
151 ;ENI ;開中斷
152
153 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
154 ;初始化5800
155 00104 11B8 call delay_500ms
156 00105 11FA call I2cStop
157 00106 11BF call delay_50ms
158 00107 18D8 mov a,@0xd8
159 00108 0056 mov Rd5800_Reg_02H,a
160 00109 1881 mov a,@0x81
161 0010A 0057 mov Rd5800_Reg_02L,a
162 0010B 11F0 call I2cStart
163 ; Device Id : (A = I2cDevId)
164 0010C 1820 mov A,@0x20
165 0010D 1231 call I2cSendByte
166 0010E 1205 call I2cGetAck
167 0010F 0E10 jbs A_buff,ACK
168 00110 151B jmp FmTuneDonem
169
170
171 00111 0416 mov a,Rd5800_Reg_02H
172 00112 1231 call I2cSendByte
173 00113 1205 call I2cGetAck
174 00114 0E10 jbs A_buff,ACK
175 00115 151B jmp FmTuneDonem
176
177 00116 0417 mov a,Rd5800_Reg_02L
178 00117 1231 call I2cSendByte
179 00118 1205 call I2cGetAck
180 00119 0E10 jbs A_buff,ACK
181 0011A 151B jmp FmTuneDonem
182
183 0011B FmTuneDonem:
184
185 0011B 11FA call I2cStop
186 0011C 0410 mov A,A_buff
187 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
188
189 0011D 11B8 call delay_500ms
190 0011E 11BF call delay_50ms
191 0011F 12A5 call R5800_Init_I2c
192 00120 11B8 call delay_500ms
193 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
194 00121 18D0 mov a,@0xd0
195 00122 0056 mov Rd5800_Reg_02H,a
196 00123 1802 mov a,@0x02
197 00124 0058 mov Rd5800_Channel,a ;設置初初始頻率為87.7---87.5 step 100k
198 00125 1800 mov a,@0x00
199 00126 0059 mov Rd5800_Reg_03L,a
200 00127 11BF call delay_50ms
201 00128 1288 call FmTune
202 00129 0000 nop
203
204 ;===========================================================
205 ; main()
206 ;===========================================================
207 0012A main:
208 ;判斷FM信號強度
209 ;jmp Judgment_Rssi ;判斷信號的強度大小,而決定是否靜音
210 0012A Judgment_Rssi_end:
211
212 0012A 154C jmp Judgment_Sleep ;判斷是否需要進入睡眠
213 0012B Judgment_Sleep_End:
214
215
216 0012B 152A jmp main
217
218
219 ;===========================================================
220 ; main end
221 ;===========================================================
222
223
224
225 0012C Judgment_Rssi:
226 ;等待一秒判斷信號強度
227 0012C 11B8 call delay_500ms
228 0012D 11B8 call delay_500ms
229
230 0012E 1272 call I2cRead
231 0012F 041A mov a,RSSI
232 00130 1A3F and a,@0x3f
233 00131 1D0C sub a,@Rssi_MidPoint ;如果信號 強度小于0x10就靜音
234 00132 0E03 jbs FLAG,@C
235 00133 153B jmp fm_unmute
236 00134 fm_mute_:
237 00134 0C20 jbc FM_STATUS,@FM_MUTE
238 00135 1542 jmp Judgment_Rssi_muting
239
240 00136 0A20 bs FM_STATUS,@FM_MUTE ;置收音狀態為靜音
241 00137 0996 bc Rd5800_Reg_02H,@DMUTE ;靜音
242 00138 1288 call FmTune
243 00139 11BF call delay_50ms
244 0013A 154B jmp Judgment_Rssi_ret
245 0013B fm_unmute:
246 0013B 0E20 jbs FM_STATUS,@FM_MUTE
247 0013C 154B jmp Judgment_Rssi_ret
248 0013D 0820 bc FM_STATUS,@FM_MUTE ;置收音狀態為開起音量
249 0013E 0B96 bs Rd5800_Reg_02H,@DMUTE ;開音量
250 0013F 1288 call FmTune
251 00140 11BF call delay_50ms
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -