?? sleep.lst
字號(hào):
< TW_DigitTime:
00005308 14 71 10 00 < .DW P_Seg20,B_Com4,P_Seg20,B_Com5,P_Seg20,B_Com6
14 71 20 00
14 71 40 00
0000530E 15 71 10 00 < .DW P_Seg21,B_Com4,P_Seg21,B_Com5,P_Seg21,B_Com6,P_Seg21,B_Com7,0
15 71 20 00
15 71 40 00
15 71 80 00
00 00
00005317 16 71 10 00 < .DW P_Seg22,B_Com4,P_Seg22,B_Com5,P_Seg22,B_Com6
16 71 20 00
16 71 40 00
0000531D 17 71 10 00 < .DW P_Seg23,B_Com4,P_Seg23,B_Com5,P_Seg23,B_Com6,P_Seg23,B_Com7,0
17 71 20 00
17 71 40 00
17 71 80 00
00 00
00005326 18 71 10 00 < .DW P_Seg24,B_Com4,P_Seg24,B_Com5,P_Seg24,B_Com6
18 71 20 00
18 71 40 00
0000532C 19 71 10 00 < .DW P_Seg25,B_Com4,P_Seg25,B_Com5,P_Seg25,B_Com6,P_Seg25,B_Com7,0
19 71 20 00
19 71 40 00
19 71 80 00
00 00
00005335 1A 71 10 00 < .DW P_Seg26,B_Com4,P_Seg26,B_Com5,P_Seg26,B_Com6
1A 71 20 00
1A 71 40 00
0000533B 1B 71 10 00 < .DW P_Seg27,B_Com4,P_Seg27,B_Com5,P_Seg27,B_Com6,P_Seg27,B_Com7,0
1B 71 20 00
1B 71 40 00
1B 71 80 00
00 00
<
< TW_MonthDay:
00005344 0E 71 80 00 < .DW P_Seg14,B_Com7,P_Seg19,B_Com5,0
13 71 20 00
00 00
<
<
<
< //-----------------------------------------------------------------------
< //-----------------------------------------------------------------------
.const CW_StackBottom =0x05ff
.public _FIQ
.public _IRQ0
.public _IRQ1
.public _IRQ2
.public _IRQ3
.public _IRQ4
.public _IRQ5
.public _IRQ6
.public _IRQ7
.public _BREAK
.public _main
//---------------------------------------------------------
0000000D .RAM
0000000D 00 00 RW_WakeUpBuf: .dw 0
0000000E 00 00 RW_SleepTime: .dw 0
//---------------------------------------------------------
00005349 .Code
_main:
00005349 40 F1 int off //Disable FIQ and IRQ
0000534A 09 93 AA 55 r1 = 0x55aa //Reset watchdog
0000534C 19 D3 16 70 [P_WatchdogClr] = r1
0000534E 08 91 FF 05 sp = CW_StackBottom //Initial stack pointer
00005350 42 92 r1 = B_NormalCpuClock
00005351 19 D3 15 70 [P_SystemClock] = r1 //Give proper CPU clock
00005353 09 93 1D 80 r1 = B_2Hz+B_128Hz+B_512Hz+B_Enable32768
00005355 19 D3 18 70 [P_TimeBaseSet] = r1 //Initial timebase
00005357 40 92 r1 = 0x0000
00005358 19 D3 12 70 [P_WakeUp] = r1 //Disable all wake up sourcese
0000535A 11 93 13 70 r1 = [P_WakeUpClr]
0000535C 19 D3 13 70 [P_WakeUpClr] = r1 //Clear all wake up event flags
0000535E 09 C3 FF 03 test r1,0x03ff
00005360 13 5E jz ?L_PowerOnInit
00005361 19 D3 0D 00 [RW_WakeUpBuf] = r1 //Store wake up flag
00005363 09 C3 80 00 test r1,0x0080 //Check if 2Hz timer wake up
00005365 05 5E jz ?L_TwoHzWakeCheckOk //No
00005366 00 EE nop
00005367 00 EE nop
00005368 00 EE nop
00005369 40 F0 EA 53 Call F_IRQ7Service //Yes, call 2Hz timer service routine
?L_TwoHzWakeCheckOk:
0000536B 11 93 0D 00 r1 = [RW_WakeUpBuf]
0000536D 42 C2 test r1,B_IoaInt //Check if IOA wake up
0000536E 03 5E jz ?L_NotIOAWakeUp //No
0000536F 70 92 r1 = 0x0030 //Yes, set automatic sleep time limit
00005370 19 D3 0E 00 [RW_SleepTime] = r1 //for key scan
?L_NotIOAWakeUp:
00005372 0F 9F 9C 53 goto ?L_InitInt
?L_PowerOnInit:
00005374 40 92 r1 = 0x0000
00005375 19 D3 02 70 [P_IOA_Dir] = r1 //Set IOA0~IOA7 as input ports
00005377 5F 92 r1 = 0x001f
00005378 19 D3 07 70 [P_IOB_Dir] = r1 //Set IOB0~IOB5 as Output ports
0000537A 09 93 00 1F r1 = 0x1f00
0000537C 19 D3 03 70 [P_IOA_PullR] = r1 //Enable Pull-high Resistor of IOA0~IOA4
0000537E 40 92 r1 = 0x0000 //Clear RAM
0000537F 01 95 r2 = r1
?L_ClrRamLoop:
00005380 D2 D2 [r2++] =r1
00005381 0A 45 00 04 cmp r2,0x400
00005383 44 0E jb ?L_ClrRamLoop
00005384 0A 95 00 71 r2 = 0x7100 //Clear LCD display RAM
?L_ClrLcdLoop:
00005386 D2 D2 [r2++] = r1
00005387 0A 45 1C 71 cmp r2,0x711c
00005389 44 0E jb ?L_ClrLcdLoop
0000538A 09 93 CF 00 r1 = 0x00cf
0000538C 19 D3 20 70 [P_LcdCtrl]=r1 //Enable LCD display
0000538E 09 93 04 11 r1 = 0x1104
00005390 19 D3 0B 00 [RW_Date] = r1 //Initialize date
00005392 09 93 17 09 r1 = 0x0917
00005394 19 D3 0C 00 [RW_Time] = r1 //Initialize time
00005396 40 F0 90 51 call F_ShowMonthDay //Show date and time on LCD
00005398 40 F0 AC 51 call F_ShowDate
0000539A 40 F0 9A 51 call F_ShowTime
?L_InitInt:
0000539C 09 93 A0 00 r1 = B_2HzInt+B_512HzInt
0000539E 19 D3 10 70 [P_Int] = r1
000053A0 43 F1 INT FIQ,IRQ
//---------------------------------------------------------
L_MainLoop:
000053A1 09 93 AA 55 R1 = 0x55aa
000053A3 19 D3 16 70 [P_WatchdogClr] = R1
000053A5 40 F0 78 50 call F_KeyScan
000053A7 09 93 AA 55 R1 = 0x55aa
000053A9 19 D3 16 70 [P_WatchdogClr] = R1
000053AB 40 F0 C7 53 call F_KeyDeal
000053AD 11 93 0E 00 r1 = [RW_SleepTime]
000053AF 4F 4E jnz L_MainLoop
//---------------------------------------------------------
F_GotoSleep:
000053B0 40 F1 int off
000053B1 09 93 FF 03 r1 = 0x03ff //Clear all interrupt event flags
000053B3 19 D3 11 70 [P_IntClr] = r1
000053B5 40 92 r1 = 0x0000 //Disable all interrupt resourcese
000053B6 19 D3 10 70 [P_Int] = r1
000053B8 09 93 82 00 r1 = 0x0082 //Enable 2Hz wakeup and IOA wake up
000053BA 19 D3 12 70 [P_WakeUp] = r1
000053BC 5F 92 r1 = 0x001F
000053BD 19 D3 14 70 [P_IoaWakeUp] = r1 //Eanble IOA0~IOA4 wake up
000053BF 40 92 r1 = 0x0000
000053C0 19 D3 05 70 [P_IOB_Data] = r1 //IOB0~IOB4 output low voltage
000053C2 11 93 04 70 r1 = [P_IOA_Latch] //Latch the current pad status of
//IOA0~IOA7 for key-change wakeup function
000053C4 47 92 r1 = 0x0007
000053C5 19 D3 15 70 [P_SystemClock] = r1 //Enter sleep mode
//--------------------------------------------------------------
//Key Deal Routine
//--------------------------------------------------------------
F_KeyDeal:
000053C7 12 95 06 00 R2 = [RPtr_KeyQueueBuf]
000053C9 0A C5 00 0F test r2,0x0f00 //Check if have key in key buffer
000053CB 02 4E jnz ?L_KeyValueNotNull
000053CC 0F 9F E9 53 goto ?L_KeyDealOver //No, key deal over
?L_KeyValueNotNull:
000053CE 4F B4 r2&= 0x000f //Yes, get key index in buffer
000053CF 62 97 R3 = R2 lsr 1 //Get key value
000053D0 0B 07 07 00 R3+= SW_KeyQueueBuf
000053D2 C3 92 R1 = [R3]
000053D3 41 C4 test R2,0x0001
000053D4 02 5E jz ?L_KeyValueOk
000053D5 79 93 R1 = R1 lsr 4
000053D6 79 93 R1 = R1 lsr 4
?L_KeyValueOk:
000053D7 09 B3 FF 00 R1&= 0x00ff
000053D9 12 95 06 00 R2 = [RPtr_KeyQueueBuf] //Key buffer point shift
000053DB 41 04 R2+= 0x0001 //to next key value
000053DC 0A 25 00 01 R2-= 0x0100
000053DE 0A B5 F7 FF R2&= 0xfff7
000053E0 1A D5 06 00 [RPtr_KeyQueueBuf] = R2
//--------------------------------------------------------------
000053E2 4D 42 cmp r1,0x000d //Check if numeric key
000053E3 05 9E ja ?L_KeyDealOver //No, not deal with it
000053E4 0D 9B BD 52 bp = Digit13 //Yes, show it on LCD
000053E6 01 95 r2 = r1
000053E7 40 F0 D2 51 call F_ShowDigit
?L_KeyDealOver:
000053E9 90 9A retf
//--------------------------------------------------------------
F_IRQ7Service:
000053EA 11 93 18 71 r1 = [P_ColonSeg] //Flash colon on LCD
000053EC 09 83 80 00 r1^= B_ColonCom
000053EE 19 D3 18 71 [P_ColonSeg] = r1
000053F0 90 9A retf
//--------------------------------------------------------------
//--------------------------------------------------------------
//Interrupt Routine
00005009 .TEXT
_FIQ:
00005009 A8 DA push r1,r5 to [sp]
0000500A 09 93 00 02 r1= B_Ioc1Int
0000500C 19 D3 11 70 [P_IntClr] = r1
0000500E A8 90 pop r1,r5 from [sp]
0000500F 98 9A reti
//----------------------------------------------------------
_IRQ0:
00005010 A8 DA push r1,r5 to [sp]
00005011 09 93 01 01 r1= B_Ioc0Int+B_RiInt
00005013 19 D3 11 70 [P_IntClr] = r1
00005015 A8 90 pop r1,r5 from [sp]
00005016 98 9A reti
//----------------------------------------------------------
_IRQ1:
00005017 A8 DA push r1,r5 to [sp]
00005018 42 92 r1 = B_IoaInt
00005019 19 D3 11 70 [P_IntClr] = r1
0000501B A8 90 pop r1,r5 from [sp]
0000501C 98 9A reti
//----------------------------------------------------------
_IRQ2:
0000501D A8 DA push r1,r5 to [sp]
0000501E 44 92 r1= B_TmrAInt
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -