📄 wdt842.lst
字号:
00FE =1 174 WCOL BIT 0FEH ;SPICON.6 - SPI WRITE COLLISION ERROR FLAG
00FF =1 175 ISPI BIT 0FFH ;SPICON.7 - SPI INTERRUPT BIT
=1 176
=1 177 ;kei842.dat end================================================kei842.dat end
=1 178 ;
179 ;
---- 180 CSEG at 0000h
0000 02008E 181 rstorg: ljmp amain
182 ;
183 ;Function Start======================================================Function Start
184 ;==========Compiler Specifics:
185 ;
186 ;WdtInt==========Watchdog interrupt entry.
187 ;C Function prototype: interrupt void WdtInt(void);
A51 MACRO ASSEMBLER WDT842 17/10/03 17:46:03 PAGE 4
188 ;Description of Function: On interrupt it calls user watchdog handler.
189 ;User interface: User watchdog handler must be at WdtUInt.
190 ;Robustness: No known problems.
191 ;Side effects: Uses 2 stack levels.
192 ;
---- 193 CSEG at 0005bh ;WDT interrupt vector.
005B 12005F 194 WdtInt: lcall WdtUint ;Jump to user watchdog interrupt handler.
005E 32 195 reti
196 ;
197 ;WdtUint==========Watchdog user handler.
198 ;C Function prototype: char WdtUint(void);
199 ;Description of Function: User defined.
200 ;User interface: User defined.
201 ;Robustness: User defined.
202 ;Side effects: User defined.
203 ;
005F 204 WdtUint:;insert watchdog handler here.
005F B2B3 205 cpl P3.3 ;To show interrupt occured.
206 ;setb WDS
0061 22 207 ret
208 ;
209 ;Function End==========================================================Function End
210 ;Assembler main program.===========================================================
211 ;
212 ; org 00140h
213 ;
0062 1201B4 214 WdWas: lcall flick ;Flicker for 4s to indicate
0065 1201B4 215 lcall flick ; watchdog reset restart.
0068 E5A5 216 mov a,HOUR ;If HOUR=5
006A B4050C 217 cjne a,#5,WdFrc
006D 1201B4 218 WdEnd: lcall flick ; we are done.
0070 7FC8 219 mov ip1l,#200 ;200ms delay should do nothing.
0072 7E00 220 mov ip1h,#0
0074 120000 F 221 lcall _PllDly
0077 80F4 222 sjmp WdEnd
0079 75A505 223 WdFrc: mov HOUR,#5 ;Else set HOUR as marker immune to reset.
007C C2B4 224 clr P3.4
007E 7FB8 225 mov ip1l,#0b8h ;3s delay should do nothing.
0080 7E0B 226 mov ip1h,#00bh
0082 120000 F 227 lcall _PllDly
0085 7F82 228 mov cp1l,#082h ;Force reset.
0087 120000 F 229 lcall _WdtCfg
008A 00 230 nop
008B 0201A0 231 ljmp WdErr ;If no reset occured then error stop.
232 ;
008E C2B3 233 amain: clr P3.3 ;Mark start.
0090 7FB8 234 mov ip1l,#0b8h ;3s delay should do nothing.
0092 7E0B 235 mov ip1h,#00bh
0094 120000 F 236 lcall _PllDly
0097 C2B4 237 clr P3.4 ;Signal 3s delay over.
0099 20C2C6 238 jb WDS,WdWas ;If reset by watchdog, go to WdWas.
009C 75A500 239 mov HOUR,#0 ;else mark for first boot.
009F 75A400 240 mov MIN,#0
00A2 75A101 241 mov TIMECON,#1 ;Start timer else HOUR is lost by resets.
00A5 7F6A 242 mov cp1l,#06ah ;Start watchdog for 1s interrupt.
00A7 120000 F 243 lcall _WdtCfg
00AA 7F58 244 mov ip1l,#058h ;Repeat 5 times: wait 600ms
00AC 7E02 245 mov ip1h,#002h
00AE 120000 F 246 lcall _PllDly
00B1 D2B4 247 setb P3.4 ; flash 100ms
00B3 7F64 248 mov ip1l,#100
00B5 7E00 249 mov ip1h,#00
00B7 120000 F 250 lcall _PllDly
00BA C2B4 251 clr P3.4
00BC 120000 F 252 lcall _WdtKk ; kick watchdog before interrupt.
00BF 7F58 253 mov ip1l,#058h
A51 MACRO ASSEMBLER WDT842 17/10/03 17:46:03 PAGE 5
00C1 7E02 254 mov ip1h,#002h
00C3 120000 F 255 lcall _PllDly
00C6 D2B4 256 setb P3.4
00C8 7F64 257 mov ip1l,#100
00CA 7E00 258 mov ip1h,#00
00CC 120000 F 259 lcall _PllDly
00CF C2B4 260 clr P3.4
00D1 120000 F 261 lcall _WdtKk
00D4 7F58 262 mov ip1l,#058h
00D6 7E02 263 mov ip1h,#002h
00D8 120000 F 264 lcall _PllDly
00DB D2B4 265 setb P3.4
00DD 7F64 266 mov ip1l,#100
00DF 7E00 267 mov ip1h,#00
00E1 120000 F 268 lcall _PllDly
00E4 C2B4 269 clr P3.4
00E6 120000 F 270 lcall _WdtKk
00E9 7F58 271 mov ip1l,#058h
00EB 7E02 272 mov ip1h,#002h
00ED 120000 F 273 lcall _PllDly
00F0 D2B4 274 setb P3.4
00F2 7F64 275 mov ip1l,#100
00F4 7E00 276 mov ip1h,#00
00F6 120000 F 277 lcall _PllDly
00F9 C2B4 278 clr P3.4
00FB 120000 F 279 lcall _WdtKk
00FE 7F58 280 mov ip1l,#058h
0100 7E02 281 mov ip1h,#002h
0102 120000 F 282 lcall _PllDly
0105 D2B4 283 setb P3.4
0107 7F64 284 mov ip1l,#100
0109 7E00 285 mov ip1h,#00
010B 120000 F 286 lcall _PllDly
010E C2B4 287 clr P3.4
0110 120000 F 288 lcall _WdtKk
0113 7F4C 289 mov ip1l,#04ch ;If in 1.1s
0115 7E04 290 mov ip1h,#004h
0117 120000 F 291 lcall _PllDly
292 ; lcall WdtRd ; no interrupt occured
011A AFC0 293 mov cp1l,WDCON
011C EF 294 mov a,cp1l
011D BF6A02 295 cjne cp1l,#06ah,WdEr1 ; then error stop.
296 ; cjne cp1l,#06eh,WdEr1 ; then error stop.
0120 8003 297 sjmp WdFl1
0122 0201A0 298 WdEr1: ljmp WdErr
0125 1201B4 299 WdFl1: lcall flick ;else flicker.
0128 7F62 300 mov cp1l,#062h ;Start watchdog for 1s reset.
012A 120000 F 301 lcall _WdtCfg
012D 7F58 302 mov ip1l,#058h ;Repeat 5 times: wait 600ms
012F 7E00 303 mov ip1h,#00h
0131 120000 F 304 lcall _PllDly
0134 D2B4 305 setb P3.4 ; flash 100ms
0136 7F64 306 mov ip1l,#100
0138 7E00 307 mov ip1h,#00
013A 120000 F 308 lcall _PllDly
013D C2B4 309 clr P3.4
013F 120000 F 310 lcall _WdtKk ; kick watchdog before interrupt.
0142 7F58 311 mov ip1l,#058h
0144 7E02 312 mov ip1h,#002h
0146 120000 F 313 lcall _PllDly
0149 D2B4 314 setb P3.4
014B 7F64 315 mov ip1l,#100
014D 7E00 316 mov ip1h,#00
014F 120000 F 317 lcall _PllDly
0152 C2B4 318 clr P3.4
0154 120000 F 319 lcall _WdtKk
A51 MACRO ASSEMBLER WDT842 17/10/03 17:46:03 PAGE 6
0157 7F58 320 mov ip1l,#058h
0159 7E02 321 mov ip1h,#002h
015B 120000 F 322 lcall _PllDly
015E D2B4 323 setb P3.4
0160 7F64 324 mov ip1l,#100
0162 7E00 325 mov ip1h,#00
0164 120000 F 326 lcall _PllDly
0167 C2B4 327 clr P3.4
0169 120000 F 328 lcall _WdtKk
016C 7F58 329 mov ip1l,#058h
016E 7E02 330 mov ip1h,#002h
0170 120000 F 331 lcall _PllDly
0173 D2B4 332 setb P3.4
0175 7F64 333 mov ip1l,#100
0177 7E00 334 mov ip1h,#00
0179 120000 F 335 lcall _PllDly
017C C2B4 336 clr P3.4
017E 120000 F 337 lcall _WdtKk
0181 7F58 338 mov ip1l,#058h
0183 7E02 339 mov ip1h,#002h
0185 120000 F 340 lcall _PllDly
0188 D2B4 341 setb P3.4
018A 7F64 342 mov ip1l,#100
018C 7E00 343 mov ip1h,#00
018E 120000 F 344 lcall _PllDly
0191 C2B4 345 clr P3.4
0193 120000 F 346 lcall _WdtKk
0196 7F4C 347 mov ip1l,#04ch ;If in 1.1s
0198 7E04 348 mov ip1h,#004h
019A 120000 F 349 lcall _PllDly
019D 0201A0 350 ljmp WdErr ; no reset occured then error stop.
351 ;
01A0 D2B4 352 WdErr: setb P3.4 ;Signal error
01A2 7F1E 353 mov ip1l,#30 ; 100ms delay.
01A4 7E00 354 mov ip1h,#0
01A6 120000 F 355 lcall _PllDly
01A9 C2B4 356 clr P3.4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -