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

📄 rtc.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 4 页
字号:
000624  e3500000          CMP      r0,#0
000628  1a000004          BNE      |L1.1600|
;;;85         {
;;;86             Rtc_Init();
00062c  ebfffffe          BL       Rtc_Init
;;;87             isInit = 2;
000630  e3a00002          MOV      r0,#2
000634  e59f1120          LDR      r1,|L1.1884|
000638  e5810000          STR      r0,[r1,#0]  ; isInit
00063c  ea000007          B        |L1.1632|
;;;88         }
;;;89         
;;;90         else if(isInit == 1)
                  |L1.1600|
000640  e59f0114          LDR      r0,|L1.1884|
000644  e5900000          LDR      r0,[r0,#0]  ; isInit
000648  e3500001          CMP      r0,#1
00064c  1a000003          BNE      |L1.1632|
;;;91         {
;;;92             Rtc_TimeSet();
000650  ebfffffe          BL       Rtc_TimeSet
;;;93             isInit = 2;        
000654  e3a00002          MOV      r0,#2
000658  e59f10fc          LDR      r1,|L1.1884|
00065c  e5810000          STR      r0,[r1,#0]  ; isInit
;;;94         }
;;;95     
;;;96         rRTCCON = 0x01;    //No reset, Merge BCD counters, 1/32768, RTC Control enable
                  |L1.1632|
000660  e3a00001          MOV      r0,#1
000664  e3a01457          MOV      r1,#0x57000000
000668  e5c10040          STRB     r0,[r1,#0x40]
;;;97     //  Uart_Printf("This test should be excuted once RTC test(Alarm) for RTC initialization\n");
;;;98         Uart_Printf("Press any key to exit.\n\n");
00066c  e28f00ec          ADR      r0,|L1.1888|
000670  ebfffffe          BL       Uart_Printf
;;;99         while(!Uart_GetKey())
000674  e1a00000          NOP      
                  |L1.1656|
000678  ebfffffe          BL       Uart_GetKey
00067c  e3500000          CMP      r0,#0
000680  1a000025          BNE      |L1.1820|
;;;100        {    
;;;101            while(1)
000684  e1a00000          NOP      
                  |L1.1672|
000688  e1a00000          NOP      
;;;102            {
;;;103    				if(rBCDYEAR == 0x99) 
00068c  e3a00457          MOV      r0,#0x57000000
000690  e5d00088          LDRB     r0,[r0,#0x88]
000694  e3500099          CMP      r0,#0x99
000698  1a000001          BNE      |L1.1700|
;;;104    						year = 0x1999;
00069c  e59f50d8          LDR      r5,|L1.1916|
0006a0  ea000002          B        |L1.1712|
;;;105    				else 
;;;106    						year		= 0x2000 + rBCDYEAR;
                  |L1.1700|
0006a4  e3a00457          MOV      r0,#0x57000000
0006a8  e5d00088          LDRB     r0,[r0,#0x88]
0006ac  e2805d80          ADD      r5,r0,#0x2000
;;;107    				month 	= rBCDMON;
                  |L1.1712|
0006b0  e3a00457          MOV      r0,#0x57000000
0006b4  e5d08084          LDRB     r8,[r0,#0x84]
;;;108    				weekday = rBCDDAY;
0006b8  e3a00457          MOV      r0,#0x57000000
0006bc  e5d07080          LDRB     r7,[r0,#0x80]
;;;109    				date		= rBCDDATE;
0006c0  e3a00457          MOV      r0,#0x57000000
0006c4  e5d0907c          LDRB     r9,[r0,#0x7c]
;;;110    				hour		= rBCDHOUR;
0006c8  e3a00457          MOV      r0,#0x57000000
0006cc  e5d0a078          LDRB     r10,[r0,#0x78]
;;;111    				min 		= rBCDMIN;
0006d0  e3a00457          MOV      r0,#0x57000000
0006d4  e5d0b074          LDRB     r11,[r0,#0x74]
;;;112    				sec 		= rBCDSEC;
0006d8  e3a00457          MOV      r0,#0x57000000
0006dc  e5d04070          LDRB     r4,[r0,#0x70]
;;;113    				
;;;114    				if(sec!=tmp)
0006e0  e1540006          CMP      r4,r6
0006e4  0a000001          BEQ      |L1.1776|
;;;115    				{
;;;116    						tmp = sec;
0006e8  e1a06004          MOV      r6,r4
;;;117    						break;
0006ec  ea000000          B        |L1.1780|
;;;118    				}
;;;119    		} 		 
                  |L1.1776|
0006f0  eaffffe4          B        |L1.1672|
;;;120    		Uart_Printf("%2x : %2x : %2x	%10s,  %2x/%2x/%4x\n",hour,min,sec,day[weekday],month,date,year);
                  |L1.1780|
0006f4  e51f0168          LDR      r0,|L1.1428|
0006f8  e7900107          LDR      r0,[r0,r7,LSL #2]
0006fc  e1a03004          MOV      r3,r4
000700  e1a0200b          MOV      r2,r11
000704  e1a0100a          MOV      r1,r10
000708  e88d0301          STMIA    sp,{r0,r8,r9}
00070c  e24f0f56          ADR      r0,|L1.1468|
000710  e58d500c          STR      r5,[sp,#0xc]
000714  ebfffffe          BL       Uart_Printf
;;;121    //        Uart_Printf("%2x : %2x : %2x  %9s,  %2x/%2x/%4x     rBCDDATE = %x, weekday= %x\n",hour,min,sec,day[weekday],month,date,year,rBCDDATE,weekday);        
;;;122        }
000718  eaffffd6          B        |L1.1656|
;;;123        rRTCCON = 0x0; //No reset, Merge BCD counters, 1/32768, RTC Control disable(for power consumption)
                  |L1.1820|
00071c  e3a00000          MOV      r0,#0
000720  e3a01457          MOV      r1,#0x57000000
000724  e5c10040          STRB     r0,[r1,#0x40]
;;;124    }
000728  e28dd014          ADD      sp,sp,#0x14
00072c  e8bd8ff0          LDMFD    sp!,{r4-r11,pc}
                  |L1.1840|
000730  6944205b          DCB      "[ Di"
000734  616c7073          DCB      "spla"
000738  54522079          DCB      "y RT"
00073c  65542043          DCB      "C Te"
000740  5d207473          DCB      "st ]"
000744  0000000a          DCB      "\n\0\0\0"
                  |L1.1864|
000748  000000bc          DCD      ||.constdata$1|| + 188
                  |L1.1868|
00074c  656c6553          DCB      "Sele"
000750  203a2074          DCB      "t : "
000754  00000000          DCB      "\0\0\0\0"
                  |L1.1880|
000758  00000a0a          DCB      "\n\n\0\0"
                  |L1.1884|
00075c  00000000          DCD      isInit
                  |L1.1888|
000760  73657250          DCB      "Pres"
000764  6e612073          DCB      "s an"
000768  656b2079          DCB      "y ke"
00076c  6f742079          DCB      "y to"
000770  69786520          DCB      " exi"
000774  0a0a2e74          DCB      "t.\n\n"
000778  00000000          DCB      "\0\0\0\0"
                  |L1.1916|
00077c  00001999          DCD      0x00001999
                          ENDP

                  Rtc_Int PROC
;;;251    void __irq Rtc_Int(void)
;;;252    {
000780  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;253        rSRCPND = BIT_RTC;   
000784  e3a00440          MOV      r0,#0x40000000
000788  e3a0144a          MOV      r1,#0x4a000000
00078c  e5810000          STR      r0,[r1,#0]
;;;254        rINTPND = BIT_RTC;
000790  e3a00440          MOV      r0,#0x40000000
000794  e3a0144a          MOV      r1,#0x4a000000
000798  e5810010          STR      r0,[r1,#0x10]
;;;255        rINTPND;
00079c  e3a0044a          MOV      r0,#0x4a000000
0007a0  e5900010          LDR      r0,[r0,#0x10]
;;;256    
;;;257        Uart_Printf("RTC Alarm Interrupt O.K.\n");
0007a4  e28f0014          ADR      r0,|L1.1984|
0007a8  ebfffffe          BL       Uart_Printf
;;;258        isRtcInt = 1;  
0007ac  e3a00001          MOV      r0,#1
0007b0  e59f1024          LDR      r1,|L1.2012|
0007b4  e5810000          STR      r0,[r1,#0]  ; isRtcInt
;;;259    }
0007b8  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
0007bc  e25ef004          SUBS     pc,lr,#4
                  |L1.1984|
0007c0  20435452          DCB      "RTC "
0007c4  72616c41          DCB      "Alar"
0007c8  6e49206d          DCB      "m In"
0007cc  72726574          DCB      "terr"
0007d0  20747075          DCB      "upt "
0007d4  2e4b2e4f          DCB      "O.K."
                  |L1.2008|
0007d8  0000000a          DCB      "\n\0\0\0"
                  |L1.2012|
0007dc  00000000          DCD      ||.bss$2||
                          ENDP

                  Test_Rtc_Alarm PROC
;;;128    void Test_Rtc_Alarm(void)  
;;;129    {
0007e0  e92d4008          STMFD    sp!,{r3,lr}
;;;130        Uart_Printf("[ RTC Alarm Test for S3C2442 ]\n");
0007e4  e28f00c0          ADR      r0,|L1.2220|
0007e8  ebfffffe          BL       Uart_Printf
;;;131    
;;;132        Rtc_Init();
0007ec  ebfffffe          BL       Rtc_Init
;;;133    
;;;134        rRTCCON  = 0x01;                    //No reset, Merge BCD counters, 1/32768, RTC Control enable
0007f0  e3a00001          MOV      r0,#1
0007f4  e3a01457          MOV      r1,#0x57000000
0007f8  e5c10040          STRB     r0,[r1,#0x40]
;;;135        rALMYEAR = TESTYEAR2 ;
0007fc  e3a00002          MOV      r0,#2
000800  e3a01457          MOV      r1,#0x57000000
000804  e5c10068          STRB     r0,[r1,#0x68]
;;;136        rALMMON  = TESTMONTH2;
000808  e3a00001          MOV      r0,#1
00080c  e3a01457          MOV      r1,#0x57000000
000810  e5c10064          STRB     r0,[r1,#0x64]
;;;137        rALMDATE = TESTDATE2  ;
000814  e3a00001          MOV      r0,#1
000818  e3a01457          MOV      r1,#0x57000000
00081c  e5c10060          STRB     r0,[r1,#0x60]
;;;138        rALMHOUR = TESTHOUR2 ;
000820  e3a00000          MOV      r0,#0
000824  e3a01457          MOV      r1,#0x57000000
000828  e5c1005c          STRB     r0,[r1,#0x5c]
;;;139        rALMMIN  = TESTMIN2  ;
00082c  e3a00000          MOV      r0,#0
000830  e3a01457          MOV      r1,#0x57000000
000834  e5c10058          STRB     r0,[r1,#0x58]
;;;140        rALMSEC  = TESTSEC2 + 9; 
000838  e3a00009          MOV      r0,#9
00083c  e3a01457          MOV      r1,#0x57000000
000840  e5c10054          STRB     r0,[r1,#0x54]
;;;141    	Uart_Printf("After 9 sec, alarm interrupt will occur.. \n");
000844  e28f0080          ADR      r0,|L1.2252|
000848  ebfffffe          BL       Uart_Printf
;;;142    	
;;;143        isRtcInt = 0;
00084c  e3a00000          MOV      r0,#0
000850  e51f107c          LDR      r1,|L1.2012|
000854  e5810000          STR      r0,[r1,#0]  ; isRtcInt
;;;144        pISR_RTC = (unsigned int)Rtc_Int;
000858  e59f0098          LDR      r0,|L1.2296|
00085c  e59f1098          LDR      r1,|L1.2300|
000860  e5810f98          STR      r0,[r1,#0xf98]
;;;145        rRTCALM  = 0x7f;                    //Global,Year,Month,Day,Hour,Minute,Second alarm enable
000864  e3a0007f          MOV      r0,#0x7f
000868  e3a01457          MOV      r1,#0x57000000
00086c  e5c10050          STRB     r0,[r1,#0x50]
;;;146        rRTCCON  = 0x0;                     //No reset, Merge BCD counters, 1/32768, RTC Control disable
000870  e3a00000          MOV      r0,#0
000874  e3a01457          MOV      r1,#0x57000000
000878  e5c10040          STRB     r0,[r1,#0x40]
;;;147        rINTMSK  = ~(BIT_RTC);
00087c  e3e00440          MVN      r0,#0x40000000
000880  e3a0144a          MOV      r1,#0x4a000000
000884  e5810008          STR      r0,[r1,#8]
;;;148    
;;;149        while(isRtcInt==0);
000888  e1a00000          NOP      
                  |L1.2188|
00088c  e51f00b8          LDR      r0,|L1.2012|
000890  e5900000          LDR      r0,[r0,#0]  ; isRtcInt
000894  e3500000          CMP      r0,#0
000898  0afffffb          BEQ      |L1.2188|
;;;150        
;;;151        rINTMSK = BIT_ALLMSK;
00089c  e3e00000          MVN      r0,#0
0008a0  e3a0144a          MOV      r1,#0x4a000000
0008a4  e5810008          STR      r0,[r1,#8]
;;;152    //  rRTCCON = 0x0;  //RTC  Control disable(for power consumption), 1/32768, Normal(merge), No reset
;;;153    }
0008a8  e8bd8008          LDMFD    sp!,{r3,pc}
                  |L1.2220|
0008ac  5452205b          DCB      "[ RT"
0008b0  6c412043          DCB      "C Al"
0008b4  206d7261          DCB      "arm "
0008b8  74736554          DCB      "Test"
0008bc  726f6620          DCB      " for"
0008c0  43335320          DCB      " S3C"
0008c4  32343432          DCB      "2442"
0008c8  000a5d20          DCB      " ]\n\0"
                  |L1.2252|

⌨️ 快捷键说明

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