📄 timer.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\timer.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
Timer_Test PROC
;;;58 void Timer_Test(void)
;;;59 {
|L1.0|
000000 e92d4010 STMFD sp!,{r4,lr}
;;;60 int i;
;;;61
;;;62 while(1)
000004 e1a00000 NOP
|L1.8|
000008 e1a00000 NOP
;;;63 {
;;;64 Uart_Printf("\n\n============== Timer Function Test ==============\n");
00000c e28f00ac ADR r0,|L1.192|
000010 ebfffffe BL Uart_Printf
;;;65
;;;66 i=0;
000014 e3a04000 MOV r4,#0
;;;67 Uart_Printf("\n");
000018 e28f00d8 ADR r0,|L1.248|
00001c ebfffffe BL Uart_Printf
;;;68 while(1)
000020 e1a00000 NOP
|L1.36|
000024 e1a00000 NOP
;;;69 { //display menu
;;;70 Uart_Printf("%2d:%s",i,func_timer_test[i][1]);
000028 e59f00cc LDR r0,|L1.252|
00002c e0800184 ADD r0,r0,r4,LSL #3
000030 e1a01004 MOV r1,r4
000034 e5902004 LDR r2,[r0,#4]
000038 e28f00c0 ADR r0,|L1.256|
00003c ebfffffe BL Uart_Printf
;;;71 i++;
000040 e2844001 ADD r4,r4,#1
;;;72 if((int)(func_timer_test[i][0])==0)
000044 e59f00b0 LDR r0,|L1.252|
000048 e7900184 LDR r0,[r0,r4,LSL #3]
00004c e3500000 CMP r0,#0
000050 1a000002 BNE |L1.96|
;;;73 {
;;;74 Uart_Printf("\n");
000054 e28f009c ADR r0,|L1.248|
000058 ebfffffe BL Uart_Printf
;;;75 break;
00005c ea000004 B |L1.116|
;;;76 }
;;;77 if((i%2)==0)
|L1.96|
000060 e3140001 TST r4,#1
000064 1a000001 BNE |L1.112|
;;;78 Uart_Printf("\n");
000068 e28f0088 ADR r0,|L1.248|
00006c ebfffffe BL Uart_Printf
;;;79 }
|L1.112|
000070 eaffffeb B |L1.36|
;;;80
;;;81 Uart_Printf("\n=================================================\n");
|L1.116|
000074 e28f008c ADR r0,|L1.264|
000078 ebfffffe BL Uart_Printf
;;;82
;;;83 Uart_Printf("\nPress Enter key to exit : ");
00007c e28f00b8 ADR r0,|L1.316|
000080 ebfffffe BL Uart_Printf
;;;84 i = Uart_GetIntNum();
000084 ebfffffe BL Uart_GetIntNum
000088 e1a04000 MOV r4,r0
;;;85 if(i==-1) break; // return.
00008c e3740001 CMN r4,#1
000090 1a000000 BNE |L1.152|
000094 ea000008 B |L1.188|
;;;86 if(i>=0 && (i<((sizeof(func_timer_test)-1)/8)) ) // select and execute...
|L1.152|
000098 e3540000 CMP r4,#0
00009c ba000005 BLT |L1.184|
0000a0 e3540004 CMP r4,#4
0000a4 2a000003 BCS |L1.184|
;;;87 ( (void (*)(void)) (func_timer_test[i][0]) )();
0000a8 e59f104c LDR r1,|L1.252|
0000ac e7910184 LDR r0,[r1,r4,LSL #3]
0000b0 e1a0e00f MOV lr,pc
0000b4 e1a0f000 MOV pc,r0
;;;88 }
|L1.184|
0000b8 eaffffd2 B |L1.8|
;;;89
;;;90 }
|L1.188|
0000bc e8bd8010 LDMFD sp!,{r4,pc}
|L1.192|
0000c0 3d3d0a0a DCB "\n\n=="
0000c4 3d3d3d3d DCB "===="
0000c8 3d3d3d3d DCB "===="
0000cc 3d3d3d3d DCB "===="
0000d0 6d695420 DCB " Tim"
0000d4 46207265 DCB "er F"
0000d8 74636e75 DCB "unct"
0000dc 206e6f69 DCB "ion "
0000e0 74736554 DCB "Test"
0000e4 3d3d3d20 DCB " ==="
0000e8 3d3d3d3d DCB "===="
0000ec 3d3d3d3d DCB "===="
0000f0 0a3d3d3d DCB "===\n"
0000f4 00000000 DCB "\0\0\0\0"
|L1.248|
0000f8 0000000a DCB "\n\0\0\0"
|L1.252|
0000fc 00000000 DCD func_timer_test
|L1.256|
000100 3a643225 DCB "%2d:"
000104 00007325 DCB "%s\0\0"
|L1.264|
000108 3d3d3d0a DCB "\n==="
00010c 3d3d3d3d DCB "===="
000110 3d3d3d3d DCB "===="
000114 3d3d3d3d DCB "===="
000118 3d3d3d3d DCB "===="
00011c 3d3d3d3d DCB "===="
000120 3d3d3d3d DCB "===="
000124 3d3d3d3d DCB "===="
000128 3d3d3d3d DCB "===="
00012c 3d3d3d3d DCB "===="
000130 3d3d3d3d DCB "===="
000134 3d3d3d3d DCB "===="
000138 000a3d3d DCB "==\n\0"
|L1.316|
00013c 6572500a DCB "\nPre"
000140 45207373 DCB "ss E"
000144 7265746e DCB "nter"
000148 79656b20 DCB " key"
00014c 206f7420 DCB " to "
000150 74697865 DCB "exit"
000154 00203a20 DCB " : \0"
ENDP
Test_TimerNormal PROC
;;;95 void Test_TimerNormal(void)
;;;96 {
000158 e92d4ff8 STMFD sp!,{r3-r11,lr}
;;;97 int save_B,save_G,save_H,save_PB,save_PG,save_PH,save_MI;
;;;98 char key, toggle;
;;;99
;;;100 /* Save Current Register related to PWM Port */
;;;101 //Save Current GPB, G, H Configure Registers
;;;102 save_B = rGPBCON;
00015c e3a00456 MOV r0,#0x56000000
000160 e5900010 LDR r0,[r0,#0x10]
000164 e1a05000 MOV r5,r0
;;;103 save_G = rGPGCON;
000168 e3a00456 MOV r0,#0x56000000
00016c e5900060 LDR r0,[r0,#0x60]
000170 e1a06000 MOV r6,r0
;;;104 save_H = rGPHCON;
000174 e3a00456 MOV r0,#0x56000000
000178 e5900070 LDR r0,[r0,#0x70]
00017c e1a07000 MOV r7,r0
;;;105 //Save Pull-Up Disable Register
;;;106 save_PB = rGPBUP;
000180 e3a00456 MOV r0,#0x56000000
000184 e5900018 LDR r0,[r0,#0x18]
000188 e1a08000 MOV r8,r0
;;;107 save_PG = rGPGUP;
00018c e3a00456 MOV r0,#0x56000000
000190 e5900068 LDR r0,[r0,#0x68]
000194 e1a09000 MOV r9,r0
;;;108 save_PH = rGPHUP;
000198 e3a00456 MOV r0,#0x56000000
00019c e5900078 LDR r0,[r0,#0x78]
0001a0 e1a0a000 MOV r10,r0
;;;109 //Save Miscellaneous Control Register
;;;110 save_MI = rMISCCR;
0001a4 e3a00456 MOV r0,#0x56000000
0001a8 e5900080 LDR r0,[r0,#0x80]
0001ac e1a0b000 MOV r11,r0
;;;111
;;;112 /* Setting Port related to PWM */
;;;113 // PortB
;;;114 rGPBUP = rGPBUP & ~(0x1f) | 0x1f; //GPB[4:0] Pull Up
0001b0 e3a00456 MOV r0,#0x56000000
0001b4 e5900018 LDR r0,[r0,#0x18]
0001b8 e380001f ORR r0,r0,#0x1f
0001bc e3a01456 MOV r1,#0x56000000
0001c0 e5810018 STR r0,[r1,#0x18]
;;;115 rGPBCON = rGPBCON & ~(0x3ff) | 0x2 | 0x2 << 2 | 0x2 << 4 | 0x2 << 6 | 0x2 << 8; //TCKL0, TOUT[3:0]
0001c4 e3a00456 MOV r0,#0x56000000
0001c8 e5900010 LDR r0,[r0,#0x10]
0001cc e1a00520 MOV r0,r0,LSR #10
0001d0 e1a00500 MOV r0,r0,LSL #10
0001d4 e3800f80 ORR r0,r0,#0x200
0001d8 e38000aa ORR r0,r0,#0xaa
0001dc e3a01456 MOV r1,#0x56000000
0001e0 e5810010 STR r0,[r1,#0x10]
;;;116 // PortG
;;;117 rGPGUP = rGPGUP & ~(0x800) | 0x800; //GPG11 Pull Up
0001e4 e3a00456 MOV r0,#0x56000000
0001e8 e5900068 LDR r0,[r0,#0x68]
0001ec e3800e80 ORR r0,r0,#0x800
0001f0 e3a01456 MOV r1,#0x56000000
0001f4 e5810068 STR r0,[r1,#0x68]
;;;118 rGPGCON = rGPGCON & ~(0xc00000) | 0xc00000; //TCLK1
0001f8 e3a00456 MOV r0,#0x56000000
0001fc e5900060 LDR r0,[r0,#0x60]
000200 e38008c0 ORR r0,r0,#0xc00000
000204 e3a01456 MOV r1,#0x56000000
000208 e5810060 STR r0,[r1,#0x60]
;;;119 // PortH
;;;120 rGPHUP = rGPHUP & ~(0x200) | 0x200; //GPH9 Pull Up
00020c e3a00456 MOV r0,#0x56000000
000210 e5900078 LDR r0,[r0,#0x78]
000214 e3800f80 ORR r0,r0,#0x200
000218 e3a01456 MOV r1,#0x56000000
00021c e5810078 STR r0,[r1,#0x78]
;;;121 rGPHCON = rGPHCON & ~(0x3<<18) | (0x2<<18); //CLKOUT0
000220 e3a00456 MOV r0,#0x56000000
000224 e5900070 LDR r0,[r0,#0x70]
000228 e3c00ac0 BIC r0,r0,#0xc0000
00022c e3800a80 ORR r0,r0,#0x80000
000230 e3a01456 MOV r1,#0x56000000
000234 e5810070 STR r0,[r1,#0x70]
;;;122 // Miscellaneous Control Register
;;;123 rMISCCR = rMISCCR & ~(0xf0) | 0x40; //Select PCLK with CLKOUT0
000238 e3a00456 MOV r0,#0x56000000
00023c e5900080 LDR r0,[r0,#0x80]
000240 e3c000f0 BIC r0,r0,#0xf0
000244 e3800040 ORR r0,r0,#0x40
000248 e3a01456 MOV r1,#0x56000000
00024c e5810080 STR r0,[r1,#0x80]
;;;124
;;;125 Uart_Printf("[Select Timer Test Setting]\n");
000250 e28f0fe0 ADR r0,|L1.1496|
000254 ebfffffe BL Uart_Printf
;;;126 Uart_Printf("a. Prescaler 1, 0: 0, Dead zone Disable, MUX 4~0: 1/2, (H/L)duty 50 \nb. Prescaler 1, 0: 8, Dead zone Enable, MUX 4~0: 1/16, (H/L)duty 50 \nc. (H/L)duty 0, TCNT =< TCMP, Inverter On\nd. TCLK0, TCLK1 Input Divider Test\n");
000258 e59f0398 LDR r0,|L1.1528|
00025c ebfffffe BL Uart_Printf
;;;127 Uart_Printf("Select [a ~ d]: \n");
000260 e28f0fe5 ADR r0,|L1.1532|
000264 ebfffffe BL Uart_Printf
;;;128
;;;129 key = Uart_Getch();
000268 ebfffffe BL Uart_Getch
00026c e1a04000 MOV r4,r0
;;;130 Uart_Printf("%c\n\n",key);
000270 e1a01004 MOV r1,r4
000274 e28f0fe5 ADR r0,|L1.1552|
000278 ebfffffe BL Uart_Printf
;;;131
;;;132 /* Timer Configuration Reg.0, 1(TCFG0, TCFG1) Setting */
;;;133 switch(key)
00027c e3540061 CMP r4,#0x61
000280 0a000006 BEQ |L1.672|
000284 e3540062 CMP r4,#0x62
000288 0a00000f BEQ |L1.716|
00028c e3540063 CMP r4,#0x63
000290 0a00001e BEQ |L1.784|
000294 e3540064 CMP r4,#0x64
000298 1a000038 BNE |L1.896|
00029c ea000028 B |L1.836|
;;;134 {
;;;135 case 'a':
;;;136
;;;137 rTCFG0 = rTCFG0 & ~(0xffffff) | 0x00000; //Dead zone=0, Prescaler1=0, Prescaler0=0
|L1.672|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -