📄 main.lst
字号:
127
128
129
130 ;*********************************************
131 003F time_Int_ret:
132 ;------------------------------
133 ; 恢复保存状态
134 ;------------------------------
135 003F 042E mov a,pop_statu
136 0040 0043 mov FLAG,a
137 0041 042F mov a,pop_a
138 0042 080F bc INT_STATU,@TC_FLAG_BIT
139 0043 0013 reti
140
141
142
143
144
145 ;==============================================================================================
146 ;脚位变化中断
147 ;==============================================================================================
148 0044 Exent_Int1:
149 ;------------------------------
150 ; 保存状态寄存器
151 ;------------------------------
152 0044 006F mov pop_a,a
153 0045 0403 mov a,FLAG
154 0046 006E mov pop_statu,a
155 ;*********************************************
156
157
158
159
160
161
162
163
164 ;*********************************************
165 0047 Exent_Int1_ret:
166 ;------------------------------
167 ; 恢复保存状态
168 ;------------------------------
169 0047 042E mov a,pop_statu
170 0048 0043 mov FLAG,a
171 0049 042F mov a,pop_a
172 004A 084F bc INT_STATU,@P6_FLAG_BIT
173 004B 0013 reti
174
175
176
177
178
179
180
181 ;==============================================================================================
182 ;外部中断
183 ;==============================================================================================
184 004C Exent_Int0:
185 ;------------------------------
186 ; 保存状态寄存器
187 ;------------------------------
188 004C 006F mov pop_a,a
189 004D 0403 mov a,FLAG
190 004E 006E mov pop_statu,a
191 ;*********************************************
192
193 004F 00D8 clr Time_Delay
194 0050 00D9 clr Time_Delay1
195
196 0051 0C11 jbc Status_1,@STATE_9M_BIT ;判断是否是接收起始码9毫秒状态
197 0052 1457 jmp state_first
198 0053 0C51 jbc Status_1,@STATE_2M_BIT ;
199 0054 146A jmp state_third
200 0055 0A11 bs Status_1,@STATE_9M_BIT ;设置状态为接收9毫秒
201 0056 1480 jmp ex_int_ret
202 0057 state_first:
203 0057 0412 mov a,Time_Int_Count
204 0058 1D91 sub a,@IR_TIME_9000US+IR_TIME_4500US+10*IR_TIME_MARGIN
205 0059 0E03 jbs FLAG,@C
206 005A 147E jmp error_return
207
208 005B 0412 mov a,Time_Int_Count
209 005C 1D66 sub a,@IR_TIME_9000US+IR_TIME_2250US-10*IR_TIME_MARGIN
210 005D 0C03 jbc FLAG,@C
211 005E 147E jmp error_return
212
213 005F 0412 mov a,Time_Int_Count
214 0060 1D7D sub a,@IR_TIME_9000US+IR_TIME_4500US-10*IR_TIME_MARGIN
215 0061 0E03 jbs FLAG,@C
216 0062 1465 jmp SET_SECN_2MS
217 0063 055A inc Ir_Repeat_Times
218 0064 147E jmp error_return
219 0065 SET_SECN_2MS:
220 0065 0A51 bs Status_1,@STATE_2M_BIT
221 0066 0811 bc Status_1,@STATE_9M_BIT
222 0067 1820 mov a,@0x20 ;接收码值长度
223 0068 0053 mov Remote_Bit_Count,a
224 0069 1480 jmp ex_int_ret
225 006A state_third:
226
227 006A 0412 mov a,Time_Int_Count
228 006B 1D19 sub a,@IR_TIME_2250US+3*IR_TIME_MARGIN ;允许误差300us
229 006C 0E03 jbs FLAG,@C
230 006D 147E jmp error_return
231
232 006E 0412 mov a,Time_Int_Count
233 006F 1D08 sub a,@IR_TIME_1125US-3*IR_TIME_MARGIN ;允许误差300us
234 0070 0C03 jbc FLAG,@C
235 0071 147E jmp error_return
236
237 0072 0412 mov a,Time_Int_Count
238 ;与当中值(1125+2250)/2=1.6ms判断是1或0
239 0073 1D10 sub a,@(IR_TIME_2250US+IR_TIME_1125US)/2
240 0074 0654 rrc Remote_Cmd_Code1
241 0075 0655 rrc Remote_Cmd_Code0
242 0076 0656 rrc Remote_Sys_Code1
243 0077 0657 rrc Remote_Sys_Code0
244
245 0078 01D3 dec Remote_Bit_Count
246 0079 0E83 jbs FLAG,@Z
247 007A 1480 jmp ex_int_ret
248 007B set_ok:
249 ;遥控码接收完毕
250 007B 00DA clr Ir_Repeat_Times
251 007C 0B11 bs Status_1,@IR_KEY_OK_BIT
252 007D 0B51 bs Status_1,@IR_KEY_DOWN_UP_BIT
253 007E error_return:
254 ;初始化接收状态
255 007E 0851 bc Status_1,@STATE_2M_BIT
256 007F 0A11 bs Status_1,@STATE_9M_BIT
257
258 0080 ex_int_ret:
259 0080 00D2 clr Time_Int_Count
260
261
262
263 ;*********************************************
264 0081 Exent_Int0_ret:
265 0081 088F bc INT_STATU,@EX_FLAG_BIT
266 ;------------------------------
267 ; 恢复保存状态
268 ;------------------------------
269 0082 042E mov a,pop_statu
270 0083 0043 mov FLAG,a
271 0084 042F mov a,pop_a
272 0085 0013 reti
273 ;------------------------------
274 ;外部中断结束
275 ;------------------------------
276
277
278
279
280
281 ;===============================================
282 ; Includes Other Functions.
283 ;===============================================
284
285 include "init_sys.asm"
1 C ;===============================================
2 C ; Function:CleanRam()
3 C ;===============================================
4 0086 C CleanRam:
5 0086 1810 C mov A,@0x10
6 0087 0044 C mov R4,A
7 0088 C Loop:
8 C ; clr R0 ==> [R4]=0
9 0088 00C0 C clr R0
10 0089 0544 C inc R4
11 008A 0404 C mov A,R4
12 008B 0883 C bc FLAG,@Z
13 008C 1BC0 C xor A,@0xc0
14 008D 1D30 C sub A,@0x30
15 008E 0E83 C jbs FLAG,@Z
16 008F 1488 C jmp Loop
17 0090 0012 C ret
18 C
19 C
20 C ;===============================================
21 C ; Function:Init_Ioport()设置端口状态
22 C ;===============================================
23 0091 C Init_Ioport:
24 C
25 0091 00C5 C clr P5
26 0092 00C6 C clr P6
27 0093 0080 C clra
28 0094 0005 C iow P5CON
29 0095 1801 C mov a,@0x01
30 0096 0006 C iow P6CON
31 C
32 0097 0012 C ret
33 C
34 C
35 C
36 C
37 C
38 C
39 C
40 C ;===============================================
41 C ; Function:Init_Con_reg()初始化控制寄存器
42 C ;===============================================
43 0098 C Init_Con_reg:
44 C ;禁止看门狗
45 C ;wdtc
46 0098 1801 C mov a,@0000001B ;f/4
47 0099 0002 C contw
48 009A 18E6 C mov a,@230d
49 009B 0041 C mov TIME_COUNT,a
50 C ;----------------------------------------------
51 C ;计数中断使能
52 C ;bc INT_STATU,@TC_FLAG_BIT
53 009C 0A0F C bs INT_STATU,@TC_FLAG_BIT
54 009D 001F C ior INT_MAST
55 009E 0050 C mov A_buff,a
56 C ;bc A_buff,@TC_FLAG_BIT
57 009F 0A10 C bs A_buff,@TC_FLAG_BIT
58 00A0 0410 C mov a,A_buff
59 00A1 000F C iow INT_MAST
60 C ;----------------------------------------------
61 C ;外部中断使能
62 C ;bc INT_STATU,@EX_FLAG_BIT
63 00A2 0A8F C bs INT_STATU,@EX_FLAG_BIT
64 00A3 001F C ior INT_MAST
65 00A4 0050 C mov A_buff,a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -