⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000a90  e5810000          STR      r0,[r1,#0]
;;;421        rINTPND = BIT_TIMER0;
000a94  e3a00e40          MOV      r0,#0x400
000a98  e1c11000          BIC      r1,r1,r0
000a9c  e5810010          STR      r0,[r1,#0x10]
;;;422        rINTPND;                    //Prevent an double interrupt pending
000aa0  e1c10000          BIC      r0,r1,r0
000aa4  e5900010          LDR      r0,[r0,#0x10]
;;;423        variable0++;    
000aa8  e59f0240          LDR      r0,|L1.3312|
000aac  e5900000          LDR      r0,[r0,#0]  ; variable0
000ab0  e2800001          ADD      r0,r0,#1
000ab4  e59f1234          LDR      r1,|L1.3312|
000ab8  e5810000          STR      r0,[r1,#0]  ; variable0
;;;424    }
000abc  e8bd0003          LDMFD    sp!,{r0,r1}
000ac0  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  Test_TimerInt PROC
;;;332    void Test_TimerInt(void)
;;;333    {
000ac4  e92d400e          STMFD    sp!,{r1-r3,lr}
;;;334        variable0 = 0;variable1 = 0;variable2 = 0;variable3 = 0;variable4 = 0;
000ac8  e3a00000          MOV      r0,#0
000acc  e59f121c          LDR      r1,|L1.3312|
000ad0  e5810000          STR      r0,[r1,#0]  ; variable0
000ad4  e3a00000          MOV      r0,#0
000ad8  e59f120c          LDR      r1,|L1.3308|
000adc  e5810000          STR      r0,[r1,#0]  ; variable1
000ae0  e3a00000          MOV      r0,#0
000ae4  e59f11fc          LDR      r1,|L1.3304|
000ae8  e5810000          STR      r0,[r1,#0]  ; variable2
000aec  e3a00000          MOV      r0,#0
000af0  e59f11e8          LDR      r1,|L1.3296|
000af4  e5810000          STR      r0,[r1,#0]  ; variable3
000af8  e3a00000          MOV      r0,#0
000afc  e59f11e0          LDR      r1,|L1.3300|
000b00  e5810000          STR      r0,[r1,#0]  ; variable4
;;;335    
;;;336        // timer interrupt enable
;;;337        // timer 3/4 source select with sub register - ows
;;;338        //Uart_Printf("rINTSUBMSK (Before) = 0x%8x\n",rINTSUBMSK);
;;;339        rINTSUBMSK = ~( BIT_SUB_TIMER3 | BIT_SUB_TIMER4);
000b04  e3e00d60          MVN      r0,#0x1800
000b08  e59f11cc          LDR      r1,|L1.3292|
000b0c  e581001c          STR      r0,[r1,#0x1c]
;;;340    
;;;341        //Uart_Printf("rINTMSK (Before) = 0x%8x\n",rINTMSK);
;;;342        rINTMSK = ~( BIT_TIMER3_4| BIT_TIMER2 | BIT_TIMER1 | BIT_TIMER0);
000b10  e3e00df0          MVN      r0,#0x3c00
000b14  e0011000          AND      r1,r1,r0
000b18  e5810008          STR      r0,[r1,#8]
;;;343        //Uart_Printf("rINTMSK (After)  = 0x%8x   <= Timer4,3,2,1 Bit[14:10]\n",rINTMSK);
;;;344    
;;;345        pISR_TIMER0 = (int)Timer0Done;
000b1c  e59f01d0          LDR      r0,|L1.3316|
000b20  e59f11d0          LDR      r1,|L1.3320|
000b24  e5810f48          STR      r0,[r1,#0xf48]
;;;346        pISR_TIMER1 = (int)Timer1Done;
000b28  e59f01cc          LDR      r0,|L1.3324|
000b2c  e5810f4c          STR      r0,[r1,#0xf4c]
;;;347        pISR_TIMER2 = (int)Timer2Done;
000b30  e59f01c8          LDR      r0,|L1.3328|
000b34  e5810f50          STR      r0,[r1,#0xf50]
;;;348        pISR_TIMER3_4= (int)Timer3_4Done;	
000b38  e59f01c4          LDR      r0,|L1.3332|
000b3c  e5810f54          STR      r0,[r1,#0xf54]
;;;349     //   pISR_TIMER3 = (int)Timer3Done;
;;;350     //   pISR_TIMER4 = (int)Timer4Done;
;;;351    
;;;352        Uart_Printf("\n[ Timer 0,1,2,3,4 Interrupt Test ]\n\n");
000b40  e28f0f70          ADR      r0,|L1.3336|
000b44  ebfffffe          BL       _printf
;;;353    
;;;354        rTCFG0 = rTCFG0 & ~(0xffffff) | 0x000f0f;         //Dead zone=0,Prescaler1=15(0x0f),Prescaler0=15(0x0f)
000b48  e3a00444          MOV      r0,#0x44000000
000b4c  e5900000          LDR      r0,[r0,#0]
000b50  e20004ff          AND      r0,r0,#0xff000000
000b54  e3800ef0          ORR      r0,r0,#0xf00
000b58  e380000f          ORR      r0,r0,#0xf
000b5c  e3a01444          MOV      r1,#0x44000000
000b60  e5810000          STR      r0,[r1,#0]
;;;355        rTCFG1  =rTCFG1 & ~(0xffffff) | 0x001233;         //All interrupt,Mux4=1/2,Mux3=1/4,Mux2=1/8,Mux1=1/16,Mux0=1/16
000b64  e3a00444          MOV      r0,#0x44000000
000b68  e5900004          LDR      r0,[r0,#4]
000b6c  e20004ff          AND      r0,r0,#0xff000000
000b70  e3800d48          ORR      r0,r0,#0x1200
000b74  e3800033          ORR      r0,r0,#0x33
000b78  e3a01444          MOV      r1,#0x44000000
000b7c  e5810004          STR      r0,[r1,#4]
;;;356    
;;;357         //Timer input clock frequency = PCLK/(prescaler value+1)/(divider value)
;;;358        rTCNTB0 = 0xffff;           //(1/(50MHz/16/16)) * 0xffff (65535) = 0.334s ( 2.994Hz)
000b80  e59f01a8          LDR      r0,|L1.3376|
000b84  e3a01444          MOV      r1,#0x44000000
000b88  e581000c          STR      r0,[r1,#0xc]
;;;359        rTCNTB1 = 0xffff;           //(1/(50MHz/16/16)) * 0xffff (65535) = 0.334s ( 2.994Hz)
000b8c  e3a01444          MOV      r1,#0x44000000
000b90  e5810018          STR      r0,[r1,#0x18]
;;;360        rTCNTB2 = 0xffff;           //(1/(50MHz/16/8 )) * 0xffff (65535) = 0.163s ( 6.135Hz)
000b94  e3a01444          MOV      r1,#0x44000000
000b98  e5810024          STR      r0,[r1,#0x24]
;;;361        rTCNTB3 = 0xffff;           //(1/(50MHz/16/4 )) * 0xffff (65535) = 0.078s (12.820Hz)
000b9c  e3a01444          MOV      r1,#0x44000000
000ba0  e5810030          STR      r0,[r1,#0x30]
;;;362        rTCNTB4 = 0xffff;           //(1/(50MHz/16/2 )) * 0xffff (65535) = 0.039s (25.641Hz)
000ba4  e3a01444          MOV      r1,#0x44000000
000ba8  e581003c          STR      r0,[r1,#0x3c]
;;;363        
;;;364         // [22:20] [19:16] [15:12] [11:8] [7:4] [3:0]
;;;365         //   110     1010   1010    1010   0000  0010
;;;366    //    rTCON   = 0x6aaa02; //Auto reload (T0=One-shot), Inverter off, Manual update, Dead zone disable, Stop
;;;367      
;;;368        rTCON   = rTCON & ~(0xffffff) | 0x6aaa0a;         //Auto reload, Inverter off, Manual update, Dead zone disable, Stop  
000bac  e3a00444          MOV      r0,#0x44000000
000bb0  e5900008          LDR      r0,[r0,#8]
000bb4  e20004ff          AND      r0,r0,#0xff000000
000bb8  e51f12ec          LDR      r1,|L1.2260|
000bbc  e1800001          ORR      r0,r0,r1
000bc0  e3a01444          MOV      r1,#0x44000000
000bc4  e5810008          STR      r0,[r1,#8]
;;;369        
;;;370         // [22:20] [19:16] [15:12] [11:8] [7:4] [3:0]
;;;371         //   101     1001   1001    1001   0000  0001      
;;;372        rTCON   = rTCON & ~(0xffffff) | 0x599901;         //Auto reload(T0=One-shot),Inverter off,No operation,Dead zone disable,Start
000bc8  e3a00444          MOV      r0,#0x44000000
000bcc  e5900008          LDR      r0,[r0,#8]
000bd0  e20004ff          AND      r0,r0,#0xff000000
000bd4  e59f1158          LDR      r1,|L1.3380|
000bd8  e1800001          ORR      r0,r0,r1
000bdc  e3a01444          MOV      r1,#0x44000000
000be0  e5810008          STR      r0,[r1,#8]
;;;373    
;;;374        //Uart_Printf("Probing PWM TOUT 0 : TP21\n");
;;;375        //Uart_Printf("Probing PWM TOUT 1 : TP20\n");
;;;376        //Uart_Printf("Probing PWM TOUT 2 : TP19\n");
;;;377        //Uart_Printf("Probing PWM TOUT 3 : TP18\n\n");
;;;378    
;;;379        if(PCLK==50000000)
;;;380        {
;;;381     //       Uart_Printf("PCLK 50MHz, Timer TOUT 0 : 0.334s ( 2.994Hz)\n");
;;;382     //       Uart_Printf("PCLK 50MHz, Timer TOUT 1 : 0.334s ( 2.994Hz)\n");
;;;383     //       Uart_Printf("PCLK 50MHz, Timer TOUT 2 : 0.163s ( 6.135Hz)\n");
;;;384    //        Uart_Printf("PCLK 50MHz, Timer TOUT 3 : 0.078s (12.820Hz)\n");    
;;;385    //        Uart_Printf("PCLK 50MHz, Timer TOUT 4 : 0.039s (25.641Hz)     <= No Pin Out\n\n");
;;;386        }
;;;387    
;;;388        while(variable0 == 0);     
000be4  e1a00000          NOP      
                  |L1.3048|
000be8  e59f0100          LDR      r0,|L1.3312|
000bec  e5900000          LDR      r0,[r0,#0]  ; variable0
000bf0  e3500000          CMP      r0,#0
000bf4  0afffffb          BEQ      |L1.3048|
;;;389        
;;;390        Delay(1);                   //To compensate timer error(<1 tick period)
000bf8  e3a00001          MOV      r0,#1
000bfc  ebfffffe          BL       Delay
;;;391        rTCON   = 0x0;              //One-shot, Inverter off, No operation, Dead zone disable, Stop 
000c00  e3a00000          MOV      r0,#0
000c04  e3a01444          MOV      r1,#0x44000000
000c08  e5810008          STR      r0,[r1,#8]
;;;392        
;;;393        if(variable4 == 8 && variable3==4 && variable2==2 && variable1==1 && variable0==1)
000c0c  e59f00d0          LDR      r0,|L1.3300|
000c10  e5900000          LDR      r0,[r0,#0]  ; variable4
000c14  e3500008          CMP      r0,#8
000c18  1a000012          BNE      |L1.3176|
000c1c  e59f00bc          LDR      r0,|L1.3296|
000c20  e5900000          LDR      r0,[r0,#0]  ; variable3
000c24  e3500004          CMP      r0,#4
000c28  1a00000e          BNE      |L1.3176|
000c2c  e59f00b4          LDR      r0,|L1.3304|
000c30  e5900000          LDR      r0,[r0,#0]  ; variable2
000c34  e3500002          CMP      r0,#2
000c38  1a00000a          BNE      |L1.3176|
000c3c  e59f00a8          LDR      r0,|L1.3308|
000c40  e5900000          LDR      r0,[r0,#0]  ; variable1
000c44  e3500001          CMP      r0,#1
000c48  1a000006          BNE      |L1.3176|
000c4c  e59f009c          LDR      r0,|L1.3312|
000c50  e5900000          LDR      r0,[r0,#0]  ; variable0
000c54  e3500001          CMP      r0,#1
000c58  1a000002          BNE      |L1.3176|
;;;394        {
;;;395            Uart_Printf("Timer 0,1,2,3,4Interrupt Test --> OK\n");
000c5c  e28f00d4          ADR      r0,|L1.3384|
000c60  ebfffffe          BL       _printf
000c64  ea000001          B        |L1.3184|
;;;396        }        
;;;397        else
;;;398        {
;;;399            Uart_Printf("Timer 0,1,2,3,4 Interrupt Test --> Fail............\n");
                  |L1.3176|
000c68  e28f00f0          ADR      r0,|L1.3424|
000c6c  ebfffffe          BL       _printf
;;;400        }    
;;;401        Uart_Printf("Timer0 - %d (=1),  Timer1 - %d (=1),  Timer2 - %d (=2),  Timer3 - %d (=4),Timer4 - %d (=8)  \n",
                  |L1.3184|
000c70  e59f006c          LDR      r0,|L1.3300|
000c74  e5903000          LDR      r3,[r0,#0]  ; variable4
000c78  e59f0060          LDR      r0,|L1.3296|
000c7c  e5902000          LDR      r2,[r0,#0]  ; variable3
000c80  e59f0060          LDR      r0,|L1.3304|
000c84  e88d000c          STMIA    sp,{r2,r3}
000c88  e5903000          LDR      r3,[r0,#0]  ; variable2
000c8c  e59f0058          LDR      r0,|L1.3308|
000c90  e5902000          LDR      r2,[r0,#0]  ; variable1
000c94  e59f0054          LDR      r0,|L1.3312|
000c98  e5901000          LDR      r1,[r0,#0]  ; variable0
000c9c  e59f00f4          LDR      r0,|L1.3480|
000ca0  ebfffffe          BL       _printf
;;;402            variable0,variable1,variable2,variable3,variable4);        
;;;403        Uart_Printf("Press any key to exit.....\n");      
000ca4  e28f00f0          ADR      r0,|L1.3484|
000ca8  ebfffffe          BL       _printf
;;;404        while(!Uart_Getch());       //Key board press check    
000cac  e1a00000          NOP      
                  |L1.3248|
000cb0  ebfffffe          BL       Uart_Getch
000cb4  e3500000          CMP      r0,#0
000cb8  0afffffc          BEQ      |L1.3248|
;;;405    
;;;406        // timer interrupt disable
;;;407        //Uart_Printf("rINTSUBMSK (Before) = 0x%8x\n",rINTSUBMSK);
;;;408        rINTSUBMSK = ( BIT_SUB_TIMER3 | BIT_SUB_TIMER4);
000cbc  e3a00d60          MOV      r0,#0x1800
000cc0  e59f1014          LDR      r1,|L1.3292|
000cc4  e581001c          STR      r0,[r1,#0x1c]
;;;409    	
;;;410        //Uart_Printf("rINTMSK (Before) = 0x%8x\n",rINTMSK);
;;;411        rINTMSK |= ( BIT_TIMER3_4| BIT_TIMER2 | BIT_TIMER1 | BIT_TIMER0);
000cc8  e1c10000          BIC      r0,r1,r0
000ccc  e5900008          LDR      r0,[r0,#8]
000cd0  e3800df0          ORR      r0,r0,#0x3c00
000cd4  e5810008          STR      r0,[r1,#8]
;;;412        //Uart_Printf("rINTMSK (After)  = 0x%8x\n",rINTMSK);    
;;;413    }
000cd8  e8bd800e          LDMFD    sp!,{r1-r3,pc}
                  |L1.3292|
000cdc  40200000          DCD      0x40200000
                  |L1.3296|
000ce0  00000010          DCD      ||.bss$2|| + 16
                  |L1.3300|
000ce4  00000014          DCD      ||.bss$2|| + 20
                  |L1.3304|
000ce8  0000000c          DCD      ||.bss$2|| + 12
                  |L1.3308|
000cec  00000008          DCD      ||.bss$2|| + 8
                  |L1.3312|
000cf0  00000004          DCD      ||.bss$2|| + 4
                  |L1.3316|
000cf4  00000000          DCD      Timer0Done
                  |L1.3320|
000cf8  13fff000          DCD      0x13fff000
                  |L1.3324|
000cfc  00000000          DCD      Timer1Done
                  |L1.3328|
000d00  00000000          DCD      Timer2Done
                  |L1.3332|
000d04  00000000          DCD      Timer3_4Done
                  |L1.3336|
000d08  54205b0a

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -