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

📄 rtc.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 4 页
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]

; commandline [-errors .\err\rtc.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
                          CODE32

                          AREA ||.text||, CODE, READONLY

                  Rtc_Test PROC
;;;30     void Rtc_Test(void)
;;;31     {
                  |L1.0|
000000  e92d4010          STMFD    sp!,{r4,lr}
;;;32     	int i;
;;;33     	
;;;34     	Uart_Printf("\n======  RTC Test program start ======\n");
000004  e28f00b4          ADR      r0,|L1.192|
000008  ebfffffe          BL       Uart_Printf
;;;35     		
;;;36     	while(1)
00000c  e1a00000          NOP      
                  |L1.16|
000010  e1a00000          NOP      
;;;37     	{
;;;38     		i=0;
000014  e3a04000          MOV      r4,#0
;;;39     		Uart_Printf("\n\n");
000018  e28f00c8          ADR      r0,|L1.232|
00001c  ebfffffe          BL       Uart_Printf
;;;40     		while(1)
000020  e1a00000          NOP      
                  |L1.36|
000024  e1a00000          NOP      
;;;41     		{   //display menu
;;;42     			Uart_Printf("%2d:%s",i,func_rtc_test[i][1]);
000028  e59f00bc          LDR      r0,|L1.236|
00002c  e0800184          ADD      r0,r0,r4,LSL #3
000030  e1a01004          MOV      r1,r4
000034  e5902004          LDR      r2,[r0,#4]
000038  e28f00b0          ADR      r0,|L1.240|
00003c  ebfffffe          BL       Uart_Printf
;;;43     			i++;
000040  e2844001          ADD      r4,r4,#1
;;;44     			if((int)(func_rtc_test[i][0])==0)
000044  e59f00a0          LDR      r0,|L1.236|
000048  e7900184          LDR      r0,[r0,r4,LSL #3]
00004c  e3500000          CMP      r0,#0
000050  1a000002          BNE      |L1.96|
;;;45     			{
;;;46     				Uart_Printf("\n");
000054  e28f009c          ADR      r0,|L1.248|
000058  ebfffffe          BL       Uart_Printf
;;;47     				break;
00005c  ea000004          B        |L1.116|
;;;48     			}
;;;49     			if((i%4)==0)
                  |L1.96|
000060  e3140003          TST      r4,#3
000064  1a000001          BNE      |L1.112|
;;;50     			Uart_Printf("\n");
000068  e28f0088          ADR      r0,|L1.248|
00006c  ebfffffe          BL       Uart_Printf
;;;51     		}
                  |L1.112|
000070  eaffffeb          B        |L1.36|
;;;52     
;;;53     		Uart_Printf("\nPress Enter key to exit : ");
                  |L1.116|
000074  e28f0080          ADR      r0,|L1.252|
000078  ebfffffe          BL       Uart_Printf
;;;54     		i = Uart_GetIntNum();
00007c  ebfffffe          BL       Uart_GetIntNum
000080  e1a04000          MOV      r4,r0
;;;55     		if(i==-1) break;		// return.
000084  e3740001          CMN      r4,#1
000088  1a000000          BNE      |L1.144|
00008c  ea000008          B        |L1.180|
;;;56     		if(i>=0 && (i<((sizeof(func_rtc_test)-1)/8)) )	// select and execute...
                  |L1.144|
000090  e3540000          CMP      r4,#0
000094  ba000005          BLT      |L1.176|
000098  e3540003          CMP      r4,#3
00009c  2a000003          BCS      |L1.176|
;;;57     			( (void (*)(void)) (func_rtc_test[i][0]) )();
0000a0  e59f1044          LDR      r1,|L1.236|
0000a4  e7910184          LDR      r0,[r1,r4,LSL #3]
0000a8  e1a0e00f          MOV      lr,pc
0000ac  e1a0f000          MOV      pc,r0
;;;58     	}
                  |L1.176|
0000b0  eaffffd6          B        |L1.16|
;;;59     	
;;;60     	Uart_Printf("\n====== RTC Test program end ======\n");
                  |L1.180|
0000b4  e28f005c          ADR      r0,|L1.280|
0000b8  ebfffffe          BL       Uart_Printf
;;;61     }
0000bc  e8bd8010          LDMFD    sp!,{r4,pc}
                  |L1.192|
0000c0  3d3d3d0a          DCB      "\n==="
0000c4  203d3d3d          DCB      "=== "
0000c8  43545220          DCB      " RTC"
0000cc  73655420          DCB      " Tes"
0000d0  72702074          DCB      "t pr"
0000d4  6172676f          DCB      "ogra"
0000d8  7473206d          DCB      "m st"
0000dc  20747261          DCB      "art "
0000e0  3d3d3d3d          DCB      "===="
0000e4  000a3d3d          DCB      "==\n\0"
                  |L1.232|
0000e8  00000a0a          DCB      "\n\n\0\0"
                  |L1.236|
0000ec  00000000          DCD      func_rtc_test
                  |L1.240|
0000f0  3a643225          DCB      "%2d:"
0000f4  00007325          DCB      "%s\0\0"
                  |L1.248|
0000f8  0000000a          DCB      "\n\0\0\0"
                  |L1.252|
0000fc  6572500a          DCB      "\nPre"
000100  45207373          DCB      "ss E"
000104  7265746e          DCB      "nter"
000108  79656b20          DCB      " key"
00010c  206f7420          DCB      " to "
000110  74697865          DCB      "exit"
000114  00203a20          DCB      " : \0"
                  |L1.280|
000118  3d3d3d0a          DCB      "\n==="
00011c  203d3d3d          DCB      "=== "
000120  20435452          DCB      "RTC "
000124  74736554          DCB      "Test"
000128  6f727020          DCB      " pro"
00012c  6d617267          DCB      "gram"
000130  646e6520          DCB      " end"
000134  3d3d3d20          DCB      " ==="
000138  0a3d3d3d          DCB      "===\n"
00013c  00000000          DCB      "\0\0\0\0"
                          ENDP

                  Rtc_Init PROC
;;;156    void Rtc_Init(void)
;;;157    {
000140  e3a00457          MOV      r0,#0x57000000
;;;158        rRTCCON  = rRTCCON  & ~(0xf)  | 0x1;            //No reset, Merge BCD counters, 1/32768, RTC Control enable
000144  e5d00040          LDRB     r0,[r0,#0x40]
000148  e3c0000f          BIC      r0,r0,#0xf
00014c  e3800001          ORR      r0,r0,#1
000150  e3a01457          MOV      r1,#0x57000000
000154  e5c10040          STRB     r0,[r1,#0x40]
;;;159        
;;;160        rBCDYEAR = rBCDYEAR & ~(0xff) | TESTYEAR;
000158  e3a00457          MOV      r0,#0x57000000
00015c  e5d00088          LDRB     r0,[r0,#0x88]
000160  e3c000ff          BIC      r0,r0,#0xff
000164  e3800001          ORR      r0,r0,#1
000168  e3a01457          MOV      r1,#0x57000000
00016c  e5c10088          STRB     r0,[r1,#0x88]
;;;161        rBCDMON  = rBCDMON  & ~(0x1f) | TESTMONTH;
000170  e3a00457          MOV      r0,#0x57000000
000174  e5d00084          LDRB     r0,[r0,#0x84]
000178  e3c0001f          BIC      r0,r0,#0x1f
00017c  e3800012          ORR      r0,r0,#0x12
000180  e3a01457          MOV      r1,#0x57000000
000184  e5c10084          STRB     r0,[r1,#0x84]
;;;162        rBCDDATE = rBCDDATE & ~(0x3f) | TESTDATE;         
000188  e3a00457          MOV      r0,#0x57000000
00018c  e5d0007c          LDRB     r0,[r0,#0x7c]
000190  e3c0003f          BIC      r0,r0,#0x3f
000194  e3800031          ORR      r0,r0,#0x31
000198  e3a01457          MOV      r1,#0x57000000
00019c  e5c1007c          STRB     r0,[r1,#0x7c]
;;;163        rBCDDAY  = rBCDDAY  & ~(0x7)  | TESTDAY;       //SUN:1 MON:2 TUE:3 WED:4 THU:5 FRI:6 SAT:7
0001a0  e3a00457          MOV      r0,#0x57000000
0001a4  e5d00080          LDRB     r0,[r0,#0x80]
0001a8  e3c00007          BIC      r0,r0,#7
0001ac  e3800002          ORR      r0,r0,#2
0001b0  e3a01457          MOV      r1,#0x57000000
0001b4  e5c10080          STRB     r0,[r1,#0x80]
;;;164        rBCDHOUR = rBCDHOUR & ~(0x3f) | TESTHOUR;
0001b8  e3a00457          MOV      r0,#0x57000000
0001bc  e5d00078          LDRB     r0,[r0,#0x78]
0001c0  e3c0003f          BIC      r0,r0,#0x3f
0001c4  e3800023          ORR      r0,r0,#0x23
0001c8  e3a01457          MOV      r1,#0x57000000
0001cc  e5c10078          STRB     r0,[r1,#0x78]
;;;165        rBCDMIN  = rBCDMIN  & ~(0x7f) | TESTMIN;
0001d0  e3a00457          MOV      r0,#0x57000000
0001d4  e5d00074          LDRB     r0,[r0,#0x74]
0001d8  e3c0007f          BIC      r0,r0,#0x7f
0001dc  e3800059          ORR      r0,r0,#0x59
0001e0  e3a01457          MOV      r1,#0x57000000
0001e4  e5c10074          STRB     r0,[r1,#0x74]
;;;166        rBCDSEC  = rBCDSEC  & ~(0x7f) | TESTSEC;
0001e8  e3a00457          MOV      r0,#0x57000000
0001ec  e5d00070          LDRB     r0,[r0,#0x70]
0001f0  e3c0007f          BIC      r0,r0,#0x7f
0001f4  e3800059          ORR      r0,r0,#0x59
0001f8  e3a01457          MOV      r1,#0x57000000
0001fc  e5c10070          STRB     r0,[r1,#0x70]
;;;167        
;;;168        rRTCCON  = 0x0;             //No reset, Merge BCD counters, 1/32768, RTC Control disable    
000200  e3a00000          MOV      r0,#0
000204  e3a01457          MOV      r1,#0x57000000
000208  e5c10040          STRB     r0,[r1,#0x40]
;;;169    }
00020c  e1a0f00e          MOV      pc,lr
                          ENDP

                  Rtc_TimeSet PROC
;;;172    void Rtc_TimeSet(void)
;;;173    {
000210  e92d4ff0          STMFD    sp!,{r4-r11,lr}
000214  e24dd014          SUB      sp,sp,#0x14
;;;174        int syear,smonth,sdate,shour,smin,ssec;
;;;175        int sday;
;;;176    
;;;177        Uart_Printf("[ RTC Time Setting ]\n");
000218  e28f0f89          ADR      r0,|L1.1092|
00021c  ebfffffe          BL       Uart_Printf
;;;178        Rtc_Init();         //RTC Initialize
000220  ebfffffe          BL       Rtc_Init
;;;179        Uart_Printf("RTC Time Initialized ...\n");
000224  e28f0f8c          ADR      r0,|L1.1116|
000228  ebfffffe          BL       Uart_Printf
;;;180        
;;;181        Uart_Printf("Year (Two digit the latest)[0~99] : ");
00022c  e28f0f91          ADR      r0,|L1.1144|
000230  ebfffffe          BL       Uart_Printf
;;;182        syear = Uart_GetIntNum();
000234  ebfffffe          BL       Uart_GetIntNum
000238  e1a04000          MOV      r4,r0
;;;183        
;;;184        Uart_Printf("Month                      [1~12] : ");
00023c  e28f0f97          ADR      r0,|L1.1184|
000240  ebfffffe          BL       Uart_Printf
;;;185        smonth = Uart_GetIntNum();
000244  ebfffffe          BL       Uart_GetIntNum
000248  e1a05000          MOV      r5,r0
;;;186        
;;;187        Uart_Printf("Date                       [1~31] : ");
00024c  e28f0f9d          ADR      r0,|L1.1224|
000250  ebfffffe          BL       Uart_Printf
;;;188        sdate = Uart_GetIntNum();
000254  ebfffffe          BL       Uart_GetIntNum
000258  e1a06000          MOV      r6,r0
;;;189              
;;;190        Uart_Printf("\n1:Sunday  2:Monday  3:Thesday  4:Wednesday  5:Thursday  6:Friday  7:Saturday\n");
00025c  e59f028c          LDR      r0,|L1.1264|
000260  ebfffffe          BL       Uart_Printf
;;;191        Uart_Printf("Day of the week                   : ");
000264  e28f0fa2          ADR      r0,|L1.1268|
000268  ebfffffe          BL       Uart_Printf
;;;192        sday = Uart_GetIntNum();
00026c  ebfffffe          BL       Uart_GetIntNum
000270  e1a0a000          MOV      r10,r0
;;;193        
;;;194        Uart_Printf("Hour                       [0~23] : ");
000274  e28f0fa8          ADR      r0,|L1.1308|
000278  ebfffffe          BL       Uart_Printf
;;;195        shour = Uart_GetIntNum();
00027c  ebfffffe          BL       Uart_GetIntNum
000280  e1a07000          MOV      r7,r0
;;;196        
;;;197        Uart_Printf("Minute                     [0~59] : ");
000284  e28f0fae          ADR      r0,|L1.1348|
000288  ebfffffe          BL       Uart_Printf
;;;198        smin = Uart_GetIntNum();
00028c  ebfffffe          BL       Uart_GetIntNum
000290  e1a08000          MOV      r8,r0
;;;199        
;;;200        Uart_Printf("Second                     [0~59] : ");
000294  e28f0fb4          ADR      r0,|L1.1388|
000298  ebfffffe          BL       Uart_Printf
;;;201        ssec = Uart_GetIntNum();

⌨️ 快捷键说明

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