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

📄 rtc_test.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 4 页
字号:
;;;146    void RndRst_Rtc(void)
;;;147    {
0006b0  e92d4ff0          STMFD    sp!,{r4-r11,lr}
0006b4  e24dd014          SUB      sp,sp,#0x14
;;;148        	int year;
;;;149        	int month,date,weekday,hour,min,sec,tmp;
;;;150    
;;;151        // modified by ows
;;;152        	rGPCON_L=rGPCON_L&~(3<<0)|(2<<0);      //GP0=EINT0
0006b8  e51f0048          LDR      r0,|L1.1656|
0006bc  e5900008          LDR      r0,[r0,#8]
0006c0  e3c00003          BIC      r0,r0,#3
0006c4  e3800002          ORR      r0,r0,#2
0006c8  e51f1058          LDR      r1,|L1.1656|
0006cc  e5810008          STR      r0,[r1,#8]
;;;153        	rEXTINTC0=rEXTINTC0&~(7<<0)|(2<<0);  //EINT0=falling edge triggered
0006d0  e1a00001          MOV      r0,r1
0006d4  e5900018          LDR      r0,[r0,#0x18]
0006d8  e3c00007          BIC      r0,r0,#7
0006dc  e3800002          ORR      r0,r0,#2
0006e0  e5810018          STR      r0,[r1,#0x18]
;;;154    
;;;155        	if(isInit==0)
0006e4  e51f012c          LDR      r0,|L1.1472|
0006e8  e5900000          LDR      r0,[r0,#0]  ; isInit
0006ec  e3500000          CMP      r0,#0
0006f0  1a000003          BNE      |L1.1796|
;;;156        	{
;;;157            	Rtc_Init();
0006f4  ebfffffe          BL       Rtc_Init
;;;158            	isInit = 1;
0006f8  e3a00001          MOV      r0,#1
0006fc  e51f1144          LDR      r1,|L1.1472|
000700  e5810000          STR      r0,[r1,#0]  ; isInit
;;;159        	}
;;;160    
;;;161        	rRTCCON = 0x01;    //No reset, Merge BCD counters, 1/32768, RTC Control enable
                  |L1.1796|
000704  e3a00001          MOV      r0,#1
000708  e51f1414          LDR      r1,|L1.764|
00070c  e5c10040          STRB     r0,[r1,#0x40]
;;;162        	Uart_Printf("Press any key to exit.\n\n");
000710  e28f00e4          ADR      r0,|L1.2044|
000714  ebfffffe          BL       _printf
;;;163        	Uart_Printf("Press EINT0 key to test round reset.\n");
000718  e28f00f8          ADR      r0,|L1.2072|
00071c  ebfffffe          BL       _printf
;;;164    
;;;165        	// modified by ows
;;;166        	rINTMSK=rINTMSK&~(BIT_EINT0_2);
000720  e59f0118          LDR      r0,|L1.2112|
000724  e5900008          LDR      r0,[r0,#8]
000728  e3c00001          BIC      r0,r0,#1
00072c  e59f110c          LDR      r1,|L1.2112|
000730  e5810008          STR      r0,[r1,#8]
;;;167        	rEINTMASK=rEINTMASK&~(BIT_EINTPEND_EINT0);
000734  e2810646          ADD      r0,r1,#0x4600000
000738  e5900034          LDR      r0,[r0,#0x34]
00073c  e3c00001          BIC      r0,r0,#1
000740  e2811646          ADD      r1,r1,#0x4600000
000744  e5810034          STR      r0,[r1,#0x34]
;;;168    
;;;169        	pISR_EINT0_2 = (unsigned int)EINT0_int;
000748  e59f00f4          LDR      r0,|L1.2116|
00074c  e59f10f4          LDR      r1,|L1.2120|
000750  e5810f20          STR      r0,[r1,#0xf20]
;;;170        
;;;171        	while(!Uart_GetKey())
000754  e1a00000          NOP      
                  |L1.1880|
000758  ebfffffe          BL       Uart_GetKey
00075c  e3500000          CMP      r0,#0
000760  1a000020          BNE      |L1.2024|
;;;172        	{
;;;173            	while(1)
000764  e1a00000          NOP      
                  |L1.1896|
000768  e1a00000          NOP      
;;;174            	{
;;;175                		if(rBCDYEAR == 0x99) 
00076c  e51f0478          LDR      r0,|L1.764|
000770  e5d00088          LDRB     r0,[r0,#0x88]
000774  e3500099          CMP      r0,#0x99
000778  1a000001          BNE      |L1.1924|
;;;176                    	year = 0x1999;
00077c  e51f51b0          LDR      r5,|L1.1492|
000780  ea000002          B        |L1.1936|
;;;177               	 	else 
;;;178                    	year    = 0x2000 + rBCDYEAR;
                  |L1.1924|
000784  e51f0490          LDR      r0,|L1.764|
000788  e5d00088          LDRB     r0,[r0,#0x88]
00078c  e2805d80          ADD      r5,r0,#0x2000
;;;179                	  	month   = rBCDMON;
                  |L1.1936|
000790  e51f049c          LDR      r0,|L1.764|
000794  e5d08084          LDRB     r8,[r0,#0x84]
;;;180                    	weekday = rBCDDAY;
000798  e5d06080          LDRB     r6,[r0,#0x80]
;;;181                    	date    = rBCDDATE;
00079c  e5d0907c          LDRB     r9,[r0,#0x7c]
;;;182                    	hour    = rBCDHOUR;
0007a0  e5d0a078          LDRB     r10,[r0,#0x78]
;;;183                    	min     = rBCDMIN;
0007a4  e5d0b074          LDRB     r11,[r0,#0x74]
;;;184                    	sec     = rBCDSEC;
0007a8  e5d04070          LDRB     r4,[r0,#0x70]
;;;185                
;;;186                		if(sec!=tmp)
0007ac  e1540007          CMP      r4,r7
0007b0  0a000001          BEQ      |L1.1980|
;;;187                		{
;;;188                    	tmp = sec;
0007b4  e1a07004          MOV      r7,r4
;;;189                    	break;
0007b8  ea000000          B        |L1.1984|
;;;190                		}
;;;191            	}      
                  |L1.1980|
0007bc  eaffffe9          B        |L1.1896|
;;;192            	Uart_Printf("%2x : %2x : %2x  %10s,  %2x/%2x/%4x\n",hour,min,sec,day[weekday],month,date,year);
                  |L1.1984|
0007c0  e51f01f0          LDR      r0,|L1.1496|
0007c4  e7900106          LDR      r0,[r0,r6,LSL #2]
0007c8  e1a03004          MOV      r3,r4
0007cc  e1a0200b          MOV      r2,r11
0007d0  e1a0100a          MOV      r1,r10
0007d4  e88d0301          STMIA    sp,{r0,r8,r9}
0007d8  e24f0f81          ADR      r0,|L1.1500|
0007dc  e58d500c          STR      r5,[sp,#0xc]
0007e0  ebfffffe          BL       _printf
;;;193        	}
0007e4  eaffffdb          B        |L1.1880|
;;;194        	rRTCCON = 0x0;   //No reset, Merge BCD counters, 1/32768, RTC Control disable
                  |L1.2024|
0007e8  e3a00000          MOV      r0,#0
0007ec  e51f14f8          LDR      r1,|L1.764|
0007f0  e5c10040          STRB     r0,[r1,#0x40]
;;;195    }
0007f4  e28dd014          ADD      sp,sp,#0x14
0007f8  e8bd8ff0          LDMFD    sp!,{r4-r11,pc}
                  |L1.2044|
0007fc  73657250          DCB      "Pres"
000800  6e612073          DCB      "s an"
000804  656b2079          DCB      "y ke"
000808  6f742079          DCB      "y to"
00080c  69786520          DCB      " exi"
000810  0a0a2e74          DCB      "t.\n\n"
000814  00000000          DCB      "\0\0\0\0"
                  |L1.2072|
000818  73657250          DCB      "Pres"
00081c  49452073          DCB      "s EI"
000820  2030544e          DCB      "NT0 "
000824  2079656b          DCB      "key "
000828  74206f74          DCB      "to t"
00082c  20747365          DCB      "est "
000830  6e756f72          DCB      "roun"
000834  65722064          DCB      "d re"
000838  2e746573          DCB      "set."
00083c  0000000a          DCB      "\n\0\0\0"
                  |L1.2112|
000840  40200000          DCD      0x40200000
                  |L1.2116|
000844  00000000          DCD      EINT0_int
                  |L1.2120|
000848  13fff000          DCD      0x13fff000
                          ENDP

                  Rtc_Int PROC
;;;365    void __irq Rtc_Int(void)
;;;366    {
00084c  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;367    	ClearPending(BIT_RTC);
000850  e3a00440          MOV      r0,#0x40000000
000854  e18014c0          ORR      r1,r0,r0,ASR #9
000858  e5810000          STR      r0,[r1,#0]
00085c  e18004c0          ORR      r0,r0,r0,ASR #9
000860  e5900010          LDR      r0,[r0,#0x10]
000864  e5810010          STR      r0,[r1,#0x10]
000868  e1a00001          MOV      r0,r1
00086c  e5900010          LDR      r0,[r0,#0x10]
;;;368    
;;;369    
;;;370        	Uart_Printf("RTC Alarm Interrupt O.K.\n");
000870  e28f0014          ADR      r0,|L1.2188|
000874  ebfffffe          BL       _printf
;;;371        	isRtcInt = 1;  
000878  e3a00001          MOV      r0,#1
00087c  e59f1024          LDR      r1,|L1.2216|
000880  e5810000          STR      r0,[r1,#0]  ; isRtcInt
;;;372    }
000884  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
000888  e25ef004          SUBS     pc,lr,#4
                  |L1.2188|
00088c  20435452          DCB      "RTC "
000890  72616c41          DCB      "Alar"
000894  6e49206d          DCB      "m In"
000898  72726574          DCB      "terr"
00089c  20747075          DCB      "upt "
0008a0  2e4b2e4f          DCB      "O.K."
0008a4  0000000a          DCB      "\n\0\0\0"
                  |L1.2216|
0008a8  00000000          DCD      ||.bss$2||
                          ENDP

                  Test_Rtc_Alarm PROC
;;;200    void Test_Rtc_Alarm(void)  
;;;201    {
0008ac  e92d40f8          STMFD    sp!,{r3-r7,lr}
;;;202    	int save_GPCON_U, save_GPCON_M,save_GPDAT, save_rGPUP;
;;;203        	Uart_Printf("[ RTC Alarm Test for S3C24A0 ]\n");
0008b0  e28f0f53          ADR      r0,|L1.2564|
0008b4  ebfffffe          BL       _printf
;;;204        	Uart_Printf("%2x[sec] : %2x[min] \n",rBCDSEC,rBCDMIN);
0008b8  e51f05c4          LDR      r0,|L1.764|
0008bc  e5d00074          LDRB     r0,[r0,#0x74]
0008c0  e1a02000          MOV      r2,r0
0008c4  e51f05d0          LDR      r0,|L1.764|
0008c8  e5d00070          LDRB     r0,[r0,#0x70]
0008cc  e1a01000          MOV      r1,r0
0008d0  e28f0f53          ADR      r0,|L1.2596|
0008d4  ebfffffe          BL       _printf
;;;205        	Uart_Printf("[ alarmed after 5second! \n");
0008d8  e28f0f57          ADR      r0,|L1.2620|
0008dc  ebfffffe          BL       _printf
;;;206    
;;;207        	Rtc_Init();
0008e0  ebfffffe          BL       Rtc_Init
;;;208    
;;;209    
;;;210        	save_GPCON_M= rGPCON_M;
0008e4  e51f0274          LDR      r0,|L1.1656|
0008e8  e5900004          LDR      r0,[r0,#4]
0008ec  e1a05000          MOV      r5,r0
;;;211        	save_GPCON_U= rGPCON_U;	
0008f0  e51f0280          LDR      r0,|L1.1656|
0008f4  e5900000          LDR      r0,[r0,#0]
0008f8  e1a04000          MOV      r4,r0
;;;212        	save_GPDAT= rGPDAT;
0008fc  e51f028c          LDR      r0,|L1.1656|
000900  e590000c          LDR      r0,[r0,#0xc]
000904  e1a06000          MOV      r6,r0
;;;213        	save_rGPUP= rGPPU;    
000908  e51f0298          LDR      r0,|L1.1656|
00090c  e5900010          LDR      r0,[r0,#0x10]
000910  e1a07000          MOV      r7,r0
;;;214    
;;;215    		
;;;216    
;;;217    #if GPCONM_AVAIL
;;;218    	rGPCON_M |= (3<<6);   // check GPIO14 (SMC_INT in circuit)
000914  e51f02a4          LDR      r0,|L1.1656|
000918  e5900004          LDR      r0,[r0,#4]
00091c  e38000c0          ORR      r0,r0,#0xc0
000920  e51f12b0          LDR      r1,|L1.1656|
000924  e5810004          STR      r0,[r1,#4]
;;;219    #else
;;;220    	rGPCON_U |= (3<<18); // check GPIO28 (XuCTSn1 in circuit)
;;;221    #endif
;;;222    
;;;223    
;;;224        	rRTCCON  = 0x01;                    //No reset, Merge BCD counters, 1/32768, RTC Control enable
000928  e3a00001          MOV      r0,#1
00092c  e2411860          SUB      r1,r1,#0x600000
000930  e5c10040          STRB     r0,[r1,#0x40]
;;;225        	rALMYEAR = TESTYEAR2 ;
000934  e3a00002          MOV      r0,#2
000938  e1c11000          BIC      r1,r1,r0
00093c  e5c10068          STRB     r0,[r1,#0x68]
;;;226        	rALMMON  = TESTMONTH2;
000940  e3a00001          MOV      r0,#1
000944  e1c11000          BIC      r1,r1,r0
000948  e5c10064          STRB     r0,[r1,#0x64]
;;;227        	rALMDATE= TESTDATE2  ;
00094c  e3a00001          MOV      r0,#1
000950  e1c11000          BIC      r1,r1,r0
000954  e5c10060          STRB     r0,[r1,#0x60]
;;;228        	rALMHOUR = TESTHOUR2 ;
000958  e3a00000          MOV      r0,#0
00095c  e1c11000          BIC      r1,r1,r0
000960  e5c1005c          STRB     r0,[r1,#0x5c]
;;;229        	rALMMIN  = TESTMIN2  ;
000964  e3a00000          MOV      r0,#0
000968  e1c11000          BIC      r1,r1,r0
00096c  e5c10058          STRB     r0,[r1,#0x58]
;;;230        	rALMSEC  = TESTSEC2 + 5; 
000970  e3a00005          MOV      r0,#5
000974  e1c11000          BIC      r1,r1,r0
000978  e5c10054          STRB     r0,[r1,#0x54]
;;;231    	
;;;232        	isRtcInt = 0;
00097c  e3a00000          MOV      r0,#0
000980  e51f10e0          LDR      r1,|L1.2216|
000984  e5810000          STR      r0,[r1,#0]  ; isRtcInt
;;;233        	pISR_RTC = (unsigned int)Rtc_Int;
000988  e59f00c8          LDR      r0,|L1.2648|
00098c  e51f114c          LDR      r1,|L1.2120|
000990  e5810f98          STR      r0,[r1,#0xf98]
;;;234        	rRTCALM  = 0x7f;                    //Global,Year,Month,Day,Hour,Minute,Second alarm enable
000994  e3a0007f          MOV      r0,#0x7f
000998  e51f16a4          LDR      r1,|L1.764|
00099c  e5c10050          STRB     r0,[r1,#0x50]
;;;235        	rRTCCON  = 0x0;                     //No reset, Merge BCD counters, 1/32768, RTC Control disable
0009a0  e3a00000          MOV      r0,#0
0009a4  e1c11000          BIC      r1,r1,r0
0009a8  e5c10040          STRB     r0,[r1,#0x40]
;;;236        	rINTMSK  = ~(BIT_RTC);
0009ac  e3e00440          MVN      r0,#0x40000000
0009b0  e0011240          AND      r1,r1,r0,ASR #4
0009b4  e5810008          STR      r0,[r1,#8]
;;;237    
;;;238        	while(isRtcInt==0);
0009b8  e1a00000          NOP      
                  |L1.2492|
0009bc  e51f011c          LDR      r0,|L1.2216|
0009c0  e5900000          LDR      r0,[r0,#0]  ; isRtcInt
0009c4  e3500000          CMP      r0,#0
0009c8  0afffffb          BEQ      |L1.2492|
;;;239        
;;;240        	rINTMSK = BIT_ALLMSK;
0009cc  e3e00000          MVN      r0,#0
0009d0  e51f1198          LDR      r1,|L1.2112|
0009d4  e5810008          STR      r0,[r1,#8]
;;;241    
;;;242        	Uart_Printf("[ RTC Alarm Test OK ]\n");
0009d8  e28f007c          ADR      r0,|L1.2652|
0009dc  ebfffffe          BL       _printf
;;;243    	
;;;244    
;;;245         rGPCON_U  = save_GPCON_U;
0009e0  e51f0370          LDR      r0,|L1.1656|
0009e4  e5804000          STR      r4,[r0,#0]
;;;246         rGPCON_M = save_GPCON_M;	

⌨️ 快捷键说明

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