📄 timer.txt
字号:
000814 73657250 DCB "Pres"
000818 6e612073 DCB "s an"
00081c 656b2079 DCB "y ke"
000820 000a2e79 DCB "y.\n\0"
ENDP
Timer4Done PROC
;;;426 void __irq Timer4Done(void)
;;;427 {
000824 e92d0003 STMFD sp!,{r0,r1}
;;;428 rSRCPND = BIT_TIMER4; //Clear pending bit
000828 e3a00c40 MOV r0,#0x4000
00082c e3a0144a MOV r1,#0x4a000000
000830 e5810000 STR r0,[r1,#0]
;;;429 rINTPND = BIT_TIMER4;
000834 e3a00c40 MOV r0,#0x4000
000838 e3a0144a MOV r1,#0x4a000000
00083c e5810010 STR r0,[r1,#0x10]
;;;430 rINTPND;
000840 e3a0044a MOV r0,#0x4a000000
000844 e5900010 LDR r0,[r0,#0x10]
;;;431 variable4++;
000848 e59f045c LDR r0,|L1.3244|
00084c e5900000 LDR r0,[r0,#0] ; variable4
000850 e2800001 ADD r0,r0,#1
000854 e59f1450 LDR r1,|L1.3244|
000858 e5810000 STR r0,[r1,#0] ; variable4
;;;432 }
00085c e8bd0003 LDMFD sp!,{r0,r1}
000860 e25ef004 SUBS pc,lr,#4
ENDP
Timer3Done PROC
;;;418 void __irq Timer3Done(void)
;;;419 {
000864 e92d0003 STMFD sp!,{r0,r1}
;;;420 rSRCPND = BIT_TIMER3; //Clear pending bit
000868 e3a00d80 MOV r0,#0x2000
00086c e3a0144a MOV r1,#0x4a000000
000870 e5810000 STR r0,[r1,#0]
;;;421 rINTPND = BIT_TIMER3;
000874 e3a00d80 MOV r0,#0x2000
000878 e3a0144a MOV r1,#0x4a000000
00087c e5810010 STR r0,[r1,#0x10]
;;;422 rINTPND;
000880 e3a0044a MOV r0,#0x4a000000
000884 e5900010 LDR r0,[r0,#0x10]
;;;423 variable3++;
000888 e59f0420 LDR r0,|L1.3248|
00088c e5900000 LDR r0,[r0,#0] ; variable3
000890 e2800001 ADD r0,r0,#1
000894 e59f1414 LDR r1,|L1.3248|
000898 e5810000 STR r0,[r1,#0] ; variable3
;;;424 }
00089c e8bd0003 LDMFD sp!,{r0,r1}
0008a0 e25ef004 SUBS pc,lr,#4
ENDP
Timer2Done PROC
;;;410 void __irq Timer2Done(void)
;;;411 {
0008a4 e92d0003 STMFD sp!,{r0,r1}
;;;412 rSRCPND = BIT_TIMER2; //Clear pending bit
0008a8 e3a00d40 MOV r0,#0x1000
0008ac e3a0144a MOV r1,#0x4a000000
0008b0 e5810000 STR r0,[r1,#0]
;;;413 rINTPND = BIT_TIMER2;
0008b4 e3a00d40 MOV r0,#0x1000
0008b8 e3a0144a MOV r1,#0x4a000000
0008bc e5810010 STR r0,[r1,#0x10]
;;;414 rINTPND;
0008c0 e3a0044a MOV r0,#0x4a000000
0008c4 e5900010 LDR r0,[r0,#0x10]
;;;415 variable2++;
0008c8 e59f03e4 LDR r0,|L1.3252|
0008cc e5900000 LDR r0,[r0,#0] ; variable2
0008d0 e2800001 ADD r0,r0,#1
0008d4 e59f13d8 LDR r1,|L1.3252|
0008d8 e5810000 STR r0,[r1,#0] ; variable2
;;;416 }
0008dc e8bd0003 LDMFD sp!,{r0,r1}
0008e0 e25ef004 SUBS pc,lr,#4
ENDP
Timer1Done PROC
;;;402 void __irq Timer1Done(void)
;;;403 {
0008e4 e92d0003 STMFD sp!,{r0,r1}
;;;404 rSRCPND = BIT_TIMER1; //Clear pending bit
0008e8 e3a00e80 MOV r0,#0x800
0008ec e3a0144a MOV r1,#0x4a000000
0008f0 e5810000 STR r0,[r1,#0]
;;;405 rINTPND = BIT_TIMER1;
0008f4 e3a00e80 MOV r0,#0x800
0008f8 e3a0144a MOV r1,#0x4a000000
0008fc e5810010 STR r0,[r1,#0x10]
;;;406 rINTPND;
000900 e3a0044a MOV r0,#0x4a000000
000904 e5900010 LDR r0,[r0,#0x10]
;;;407 variable1++;
000908 e59f03a8 LDR r0,|L1.3256|
00090c e5900000 LDR r0,[r0,#0] ; variable1
000910 e2800001 ADD r0,r0,#1
000914 e59f139c LDR r1,|L1.3256|
000918 e5810000 STR r0,[r1,#0] ; variable1
;;;408 }
00091c e8bd0003 LDMFD sp!,{r0,r1}
000920 e25ef004 SUBS pc,lr,#4
ENDP
Timer0Done PROC
;;;394 void __irq Timer0Done(void)
;;;395 {
000924 e92d0003 STMFD sp!,{r0,r1}
;;;396 rSRCPND = BIT_TIMER0; //Clear pending bit
000928 e3a00e40 MOV r0,#0x400
00092c e3a0144a MOV r1,#0x4a000000
000930 e5810000 STR r0,[r1,#0]
;;;397 rINTPND = BIT_TIMER0;
000934 e3a00e40 MOV r0,#0x400
000938 e3a0144a MOV r1,#0x4a000000
00093c e5810010 STR r0,[r1,#0x10]
;;;398 rINTPND; //Prevent an double interrupt pending
000940 e3a0044a MOV r0,#0x4a000000
000944 e5900010 LDR r0,[r0,#0x10]
;;;399 variable0++;
000948 e59f036c LDR r0,|L1.3260|
00094c e5900000 LDR r0,[r0,#0] ; variable0
000950 e2800001 ADD r0,r0,#1
000954 e59f1360 LDR r1,|L1.3260|
000958 e5810000 STR r0,[r1,#0] ; variable0
;;;400 }
00095c e8bd0003 LDMFD sp!,{r0,r1}
000960 e25ef004 SUBS pc,lr,#4
ENDP
Test_TimerInt PROC
;;;299 void Test_TimerInt(void)
;;;300 {
000964 e92d400e STMFD sp!,{r1-r3,lr}
;;;301 variable0 = 0;variable1 = 0;variable2 = 0;variable3 = 0;variable4 = 0;
000968 e3a00000 MOV r0,#0
00096c e59f1348 LDR r1,|L1.3260|
000970 e5810000 STR r0,[r1,#0] ; variable0
000974 e3a00000 MOV r0,#0
000978 e59f1338 LDR r1,|L1.3256|
00097c e5810000 STR r0,[r1,#0] ; variable1
000980 e3a00000 MOV r0,#0
000984 e59f1328 LDR r1,|L1.3252|
000988 e5810000 STR r0,[r1,#0] ; variable2
00098c e3a00000 MOV r0,#0
000990 e59f1318 LDR r1,|L1.3248|
000994 e5810000 STR r0,[r1,#0] ; variable3
000998 e3a00000 MOV r0,#0
00099c e59f1308 LDR r1,|L1.3244|
0009a0 e5810000 STR r0,[r1,#0] ; variable4
;;;302
;;;303 /* Timer0,1,2,3,4 Interrupt service is available */
;;;304 rINTMSK = ~(BIT_TIMER4 | BIT_TIMER3 | BIT_TIMER2 | BIT_TIMER1 | BIT_TIMER0);
0009a4 e3e00c7c MVN r0,#0x7c00
0009a8 e3a0144a MOV r1,#0x4a000000
0009ac e5810008 STR r0,[r1,#8]
;;;305 // Uart_Printf("rINTMSK (After) = 0x%8x <= Timer4,3,2,1 Bit[14:10]\n",rINTMSK);
;;;306
;;;307 /* Timer0,1,2,3,4 Interrupt Service Routine Entry Point Determine */
;;;308 pISR_TIMER0 = (int)Timer0Done;
0009b0 e59f0308 LDR r0,|L1.3264|
0009b4 e59f1308 LDR r1,|L1.3268|
0009b8 e5810f48 STR r0,[r1,#0xf48]
;;;309 pISR_TIMER1 = (int)Timer1Done;
0009bc e59f0304 LDR r0,|L1.3272|
0009c0 e5810f4c STR r0,[r1,#0xf4c]
;;;310 pISR_TIMER2 = (int)Timer2Done;
0009c4 e59f0300 LDR r0,|L1.3276|
0009c8 e5810f50 STR r0,[r1,#0xf50]
;;;311 pISR_TIMER3 = (int)Timer3Done;
0009cc e59f02fc LDR r0,|L1.3280|
0009d0 e5810f54 STR r0,[r1,#0xf54]
;;;312 pISR_TIMER4 = (int)Timer4Done;
0009d4 e59f02f8 LDR r0,|L1.3284|
0009d8 e5810f58 STR r0,[r1,#0xf58]
;;;313
;;;314 Uart_Printf("\n[Timer 0,1,2,3,4 Interrupt Test]\n\n");
0009dc e28f0fbd ADR r0,|L1.3288|
0009e0 ebfffffe BL Uart_Printf
;;;315
;;;316 rTCFG0 = rTCFG0 & ~(0xffffff) | 0xff | 0xff<<8; //Dead zone=0,Prescaler1=255(0x0f),Prescaler0=255(0x0f)
0009e4 e3a00451 MOV r0,#0x51000000
0009e8 e5900000 LDR r0,[r0,#0]
0009ec e20004ff AND r0,r0,#0xff000000
0009f0 e3800cff ORR r0,r0,#0xff00
0009f4 e38000ff ORR r0,r0,#0xff
0009f8 e3a01451 MOV r1,#0x51000000
0009fc e5810000 STR r0,[r1,#0]
;;;317 rTCFG1 =rTCFG1 & ~(0xffffff) | 0x001233; //All interrupt,Mux4=1/2,Mux3=1/4,Mux2=1/8,Mux1=1/16,Mux0=1/16
000a00 e3a00451 MOV r0,#0x51000000
000a04 e5900004 LDR r0,[r0,#4]
000a08 e20004ff AND r0,r0,#0xff000000
000a0c e3800d48 ORR r0,r0,#0x1200
000a10 e3800033 ORR r0,r0,#0x33
000a14 e3a01451 MOV r1,#0x51000000
000a18 e5810004 STR r0,[r1,#4]
;;;318
;;;319 rTCNTB0 = 30000;
000a1c e59f02d8 LDR r0,|L1.3324|
000a20 e3a01451 MOV r1,#0x51000000
000a24 e581000c STR r0,[r1,#0xc]
;;;320 rTCNTB1 = 30000;
000a28 e3a01451 MOV r1,#0x51000000
000a2c e5810018 STR r0,[r1,#0x18]
;;;321 rTCNTB2 = 30000;
000a30 e3a01451 MOV r1,#0x51000000
000a34 e5810024 STR r0,[r1,#0x24]
;;;322 rTCNTB3 = 30000;
000a38 e3a01451 MOV r1,#0x51000000
000a3c e5810030 STR r0,[r1,#0x30]
;;;323 rTCNTB4 = 30000;
000a40 e3a01451 MOV r1,#0x51000000
000a44 e581003c STR r0,[r1,#0x3c]
;;;324
;;;325 rTCMPB0 = 15000;
000a48 e1a000c0 MOV r0,r0,ASR #1
000a4c e3a01451 MOV r1,#0x51000000
000a50 e5810010 STR r0,[r1,#0x10]
;;;326 rTCMPB1 = 15000;
000a54 e3a01451 MOV r1,#0x51000000
000a58 e581001c STR r0,[r1,#0x1c]
;;;327 rTCMPB2 = 15000;
000a5c e3a01451 MOV r1,#0x51000000
000a60 e5810028 STR r0,[r1,#0x28]
;;;328 rTCMPB3 = 15000;
000a64 e3a01451 MOV r1,#0x51000000
000a68 e5810034 STR r0,[r1,#0x34]
;;;329
;;;330 rTCON = rTCON & ~(0xffffff) | 0x1<<1 | 0x1<<9 | 0x1<<13 | 0x1<<17 | 0x1<<21 ; //Manual update
000a6c e3a00451 MOV r0,#0x51000000
000a70 e5900008 LDR r0,[r0,#8]
000a74 e20004ff AND r0,r0,#0xff000000
000a78 e51f13f0 LDR r1,|L1.1680|
000a7c e1800001 ORR r0,r0,r1
000a80 e3a01451 MOV r1,#0x51000000
000a84 e5810008 STR r0,[r1,#8]
;;;331
;;;332
;;;333 rTCON = rTCON & ~(0xffffff) | 0x1 | 0x1<<3 ; //Timer 0 Start, Auto-reload
000a88 e3a00451 MOV r0,#0x51000000
000a8c e5900008 LDR r0,[r0,#8]
000a90 e20004ff AND r0,r0,#0xff000000
000a94 e3800009 ORR r0,r0,#9
000a98 e3a01451 MOV r1,#0x51000000
000a9c e5810008 STR r0,[r1,#8]
;;;334 rTCON = rTCON | 0x1<<8 | 0x1<<11 ; //Timer 1 Start, Auto-reload
000aa0 e3a00451 MOV r0,#0x51000000
000aa4 e5900008 LDR r0,[r0,#8]
000aa8 e3800e90 ORR r0,r0,#0x900
000aac e3a01451 MOV r1,#0x51000000
000ab0 e5810008 STR r0,[r1,#8]
;;;335 rTCON = rTCON | 0x1<<12 | 0x1<<15 ; //Timer 2 Start, Auto-reload
000ab4 e3a00451 MOV r0,#0x51000000
000ab8 e5900008 LDR r0,[r0,#8]
000abc e3800c90 ORR r0,r0,#0x9000
000ac0 e3a01451 MOV r1,#0x51000000
000ac4 e5810008 STR r0,[r1,#8]
;;;336 rTCON = rTCON | 0x1<<16 | 0x1<<19 ; //Timer 3 Start, Auto-reload
000ac8 e3a00451 MOV r0,#0x51000000
000acc e5900008 LDR r0,[r0,#8]
000ad0 e3800a90 ORR r0,r0,#0x90000
000ad4 e3a01451 MOV r1,#0x51000000
000ad8 e5810008 STR r0,[r1,#8]
;;;337 rTCON = rTCON | 0x1<<20 | 0x1<<22 ; //Timer 4 Start, Auto-reload
000adc e3a00451 MOV r0,#0x51000000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -