📄 rtc_test.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\rtc_test.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
RTCSubMessage PROC
;;;58 void RTCSubMessage(void)
;;;59 {
|L1.0|
000000 e92d4010 STMFD sp!,{r4,lr}
;;;60 int i;
;;;61
;;;62
;;;63 i=0;
000004 e3a04000 MOV r4,#0
;;;64 Uart_Printf("\n\n");
000008 e28f0058 ADR r0,|L1.104|
00000c ebfffffe BL _printf
;;;65 while(1)
000010 e1a00000 NOP
|L1.20|
000014 e1a00000 NOP
;;;66 { //display menu
;;;67 Uart_Printf("%2d:%s",i,rtc_func[i][1]);
000018 e59f004c LDR r0,|L1.108|
00001c e0800184 ADD r0,r0,r4,LSL #3
000020 e1a01004 MOV r1,r4
000024 e5902004 LDR r2,[r0,#4]
000028 e28f0040 ADR r0,|L1.112|
00002c ebfffffe BL _printf
;;;68 i++;
000030 e2844001 ADD r4,r4,#1
;;;69 if((int)(rtc_func[i][0])==0)
000034 e59f0030 LDR r0,|L1.108|
000038 e7900184 LDR r0,[r0,r4,LSL #3]
00003c e3500000 CMP r0,#0
000040 1a000002 BNE |L1.80|
;;;70 {
;;;71 Uart_Printf("\n");
000044 e28f002c ADR r0,|L1.120|
000048 ebfffffe BL _printf
;;;72 break;
00004c ea000004 B |L1.100|
;;;73 }
;;;74 if((i%4)==0) Uart_Printf("\n");
|L1.80|
000050 e3140003 TST r4,#3
000054 1a000001 BNE |L1.96|
000058 e28f0018 ADR r0,|L1.120|
00005c ebfffffe BL _printf
;;;75 }
|L1.96|
000060 eaffffeb B |L1.20|
;;;76 }
|L1.100|
000064 e8bd8010 LDMFD sp!,{r4,pc}
|L1.104|
000068 00000a0a DCB "\n\n\0\0"
|L1.108|
00006c 00000000 DCD rtc_func
|L1.112|
000070 3a643225 DCB "%2d:"
000074 00007325 DCB "%s\0\0"
|L1.120|
000078 0000000a DCB "\n\0\0\0"
ENDP
Ch10_RTC PROC
;;;38 void Ch10_RTC(void)
;;;39 {
00007c e92d4010 STMFD sp!,{r4,lr}
;;;40 int i;
;;;41
;;;42 Uart_Printf("Menu of RTC function\n");
000080 e28f004c ADR r0,|L1.212|
000084 ebfffffe BL _printf
;;;43 // Wait until memory stick is inserted.
;;;44
;;;45 while(1) {
000088 e1a00000 NOP
|L1.140|
00008c e1a00000 NOP
;;;46 RTCSubMessage();
000090 ebfffffe BL RTCSubMessage
;;;47 Uart_Printf("\nSelect(-1 to exit): ");
000094 e28f0050 ADR r0,|L1.236|
000098 ebfffffe BL _printf
;;;48 i = Uart_GetIntNum();
00009c ebfffffe BL Uart_GetIntNum
0000a0 e1a04000 MOV r4,r0
;;;49 //Uart_Printf("IN:%d.\n\n", i);
;;;50 if(i==-1) break;
0000a4 e3740001 CMN r4,#1
0000a8 1a000000 BNE |L1.176|
0000ac ea000007 B |L1.208|
;;;51
;;;52 if(i>=0 && (i<(sizeof(rtc_func)/4)) )
|L1.176|
0000b0 e3540000 CMP r4,#0
0000b4 ba000004 BLT |L1.204|
0000b8 e354000a CMP r4,#0xa
0000bc 2a000002 BCS |L1.204|
;;;53 ( (void (*)(void)) (rtc_func[i][0]) )(); // execute selected function.
0000c0 e51f105c LDR r1,|L1.108|
0000c4 e7910184 LDR r0,[r1,r4,LSL #3]
0000c8 e12fff30 BLX r0
;;;54 }
|L1.204|
0000cc eaffffee B |L1.140|
;;;55
;;;56 }
|L1.208|
0000d0 e8bd8010 LDMFD sp!,{r4,pc}
|L1.212|
0000d4 756e654d DCB "Menu"
0000d8 20666f20 DCB " of "
0000dc 20435452 DCB "RTC "
0000e0 636e7566 DCB "func"
0000e4 6e6f6974 DCB "tion"
0000e8 0000000a DCB "\n\0\0\0"
|L1.236|
0000ec 6c65530a DCB "\nSel"
0000f0 28746365 DCB "ect("
0000f4 7420312d DCB "-1 t"
0000f8 7865206f DCB "o ex"
0000fc 3a297469 DCB "it):"
000100 00000020 DCB " \0\0\0"
ENDP
Rtc_Init PROC
;;;255 void Rtc_Init(void)
;;;256 {
000104 e59f01f0 LDR r0,|L1.764|
;;;257 rRTCCON = rRTCCON & ~(0xf) | 0x1; //No reset, Merge BCD counters, 1/32768, RTC Control enable
000108 e5d00040 LDRB r0,[r0,#0x40]
00010c e3c0000f BIC r0,r0,#0xf
000110 e3800001 ORR r0,r0,#1
000114 e59f11e0 LDR r1,|L1.764|
000118 e5c10040 STRB r0,[r1,#0x40]
;;;258
;;;259 rBCDYEAR = rBCDYEAR & ~(0xff) | TESTYEAR;
00011c e1a00001 MOV r0,r1
000120 e5d00088 LDRB r0,[r0,#0x88]
000124 e3c000ff BIC r0,r0,#0xff
000128 e3800001 ORR r0,r0,#1
00012c e5c10088 STRB r0,[r1,#0x88]
;;;260 rBCDMON = rBCDMON & ~(0x1f) | TESTMONTH;
000130 e1a00001 MOV r0,r1
000134 e5d00084 LDRB r0,[r0,#0x84]
000138 e3c0001f BIC r0,r0,#0x1f
00013c e3800012 ORR r0,r0,#0x12
000140 e5c10084 STRB r0,[r1,#0x84]
;;;261 rBCDDATE = rBCDDATE & ~(0x3f) | TESTDATE;
000144 e1a00001 MOV r0,r1
000148 e5d0007c LDRB r0,[r0,#0x7c]
00014c e3c0003f BIC r0,r0,#0x3f
000150 e3800031 ORR r0,r0,#0x31
000154 e5c1007c STRB r0,[r1,#0x7c]
;;;262 rBCDDAY = rBCDDAY & ~(0x7) | TESTDAY; //SUN:1 MON:2 TUE:3 WED:4 THU:5 FRI:6 SAT:7
000158 e1a00001 MOV r0,r1
00015c e5d00080 LDRB r0,[r0,#0x80]
000160 e3c00007 BIC r0,r0,#7
000164 e3800002 ORR r0,r0,#2
000168 e5c10080 STRB r0,[r1,#0x80]
;;;263 rBCDHOUR = rBCDHOUR & ~(0x3f) | TESTHOUR;
00016c e1a00001 MOV r0,r1
000170 e5d00078 LDRB r0,[r0,#0x78]
000174 e3c0003f BIC r0,r0,#0x3f
000178 e3800023 ORR r0,r0,#0x23
00017c e5c10078 STRB r0,[r1,#0x78]
;;;264 rBCDMIN = rBCDMIN & ~(0x7f) | TESTMIN;
000180 e1a00001 MOV r0,r1
000184 e5d00074 LDRB r0,[r0,#0x74]
000188 e3c0007f BIC r0,r0,#0x7f
00018c e3800059 ORR r0,r0,#0x59
000190 e5c10074 STRB r0,[r1,#0x74]
;;;265 rBCDSEC = rBCDSEC & ~(0x7f) | TESTSEC;
000194 e1a00001 MOV r0,r1
000198 e5d00070 LDRB r0,[r0,#0x70]
00019c e3c0007f BIC r0,r0,#0x7f
0001a0 e3800059 ORR r0,r0,#0x59
0001a4 e5c10070 STRB r0,[r1,#0x70]
;;;266
;;;267 rRTCCON = 0x0; //No reset, Merge BCD counters, 1/32768, RTC Control disable
0001a8 e3a00000 MOV r0,#0
0001ac e1c11000 BIC r1,r1,r0
0001b0 e5c10040 STRB r0,[r1,#0x40]
;;;268 }
0001b4 e12fff1e BX lr
ENDP
Rtc_TimeSet PROC
;;;271 void Rtc_TimeSet(void)
;;;272 {
0001b8 e92d47f0 STMFD sp!,{r4-r10,lr}
;;;273 int syear,smonth,sdate,shour,smin,ssec;
;;;274 int sday;
;;;275
;;;276 Uart_Printf("[ RTC Time Setting ]\n");
0001bc e28f0f4f ADR r0,|L1.768|
0001c0 ebfffffe BL _printf
;;;277 Rtc_Init(); //RTC Initialize
0001c4 ebfffffe BL Rtc_Init
;;;278 Uart_Printf("RTC Time Initialized ...\n");
0001c8 e28f0f52 ADR r0,|L1.792|
0001cc ebfffffe BL _printf
;;;279
;;;280 Uart_Printf("Year (Two digit the latest)[0x??] : ");
0001d0 e28f0f57 ADR r0,|L1.820|
0001d4 ebfffffe BL _printf
;;;281 syear = Uart_GetIntNum();
0001d8 ebfffffe BL Uart_GetIntNum
0001dc e1a05000 MOV r5,r0
;;;282
;;;283 Uart_Printf("Month [0x??] : ");
0001e0 e28f0f5d ADR r0,|L1.860|
0001e4 ebfffffe BL _printf
;;;284 smonth = Uart_GetIntNum();
0001e8 ebfffffe BL Uart_GetIntNum
0001ec e1a06000 MOV r6,r0
;;;285
;;;286 Uart_Printf("\n1:Sunday 2:Monday 3:Thesday 4:Wednesday 5:Thursday 6:Friday 7:Saturday\n");
0001f0 e59f018c LDR r0,|L1.900|
0001f4 ebfffffe BL _printf
;;;287 Uart_Printf("Day of the week : ");
0001f8 e28f0f62 ADR r0,|L1.904|
0001fc ebfffffe BL _printf
;;;288 sday = Uart_GetIntNum();
000200 ebfffffe BL Uart_GetIntNum
000204 e1a0a000 MOV r10,r0
;;;289
;;;290 Uart_Printf("Date [0x??] : ");
000208 e28f0f68 ADR r0,|L1.944|
00020c ebfffffe BL _printf
;;;291 sdate = Uart_GetIntNum();
000210 ebfffffe BL Uart_GetIntNum
000214 e1a07000 MOV r7,r0
;;;292
;;;293
;;;294 Uart_Printf("Hour [0x??] : ");
000218 e28f0f6d ADR r0,|L1.980|
00021c ebfffffe BL _printf
;;;295 shour = Uart_GetIntNum();
000220 ebfffffe BL Uart_GetIntNum
000224 e1a08000 MOV r8,r0
;;;296
;;;297 Uart_Printf("Minute [0x??] : ");
000228 e28f0f73 ADR r0,|L1.1020|
00022c ebfffffe BL _printf
;;;298 smin = Uart_GetIntNum();
000230 ebfffffe BL Uart_GetIntNum
000234 e1a09000 MOV r9,r0
;;;299
;;;300 Uart_Printf("Second [0x??] : ");
000238 e28f0f79 ADR r0,|L1.1060|
00023c ebfffffe BL _printf
;;;301 ssec = Uart_GetIntNum();
000240 ebfffffe BL Uart_GetIntNum
000244 e1a04000 MOV r4,r0
;;;302
;;;303 rRTCCON = rRTCCON & ~(0xf) | 0x1; //No reset, Merge BCD counters, 1/32768, RTC Control enable
000248 e59f00ac LDR r0,|L1.764|
00024c e5d00040 LDRB r0,[r0,#0x40]
000250 e3c0000f BIC r0,r0,#0xf
000254 e3800001 ORR r0,r0,#1
000258 e59f109c LDR r1,|L1.764|
00025c e5c10040 STRB r0,[r1,#0x40]
;;;304
;;;305 rBCDYEAR = rBCDYEAR & ~(0xff) | syear;
000260 e1a00001 MOV r0,r1
000264 e5d00088 LDRB r0,[r0,#0x88]
000268 e3c000ff BIC r0,r0,#0xff
00026c e1800005 ORR r0,r0,r5
000270 e5c10088 STRB r0,[r1,#0x88]
;;;306 rBCDMON = rBCDMON & ~(0x1f) | smonth;
000274 e1a00001 MOV r0,r1
000278 e5d00084 LDRB r0,[r0,#0x84]
00027c e3c0001f BIC r0,r0,#0x1f
000280 e1800006 ORR r0,r0,r6
000284 e5c10084 STRB r0,[r1,#0x84]
;;;307 rBCDDAY = rBCDDAY & ~(0x7) | sday; //SUN:1 MON:2 TUE:3 WED:4 THU:5 FRI:6 SAT:7
000288 e1a00001 MOV r0,r1
00028c e5d00080 LDRB r0,[r0,#0x80]
000290 e3c00007 BIC r0,r0,#7
000294 e180000a ORR r0,r0,r10
000298 e5c10080 STRB r0,[r1,#0x80]
;;;308 rBCDDATE = rBCDDATE & ~(0x3f) | sdate;
00029c e1a00001 MOV r0,r1
0002a0 e5d0007c LDRB r0,[r0,#0x7c]
0002a4 e3c0003f BIC r0,r0,#0x3f
0002a8 e1800007 ORR r0,r0,r7
0002ac e5c1007c STRB r0,[r1,#0x7c]
;;;309 rBCDHOUR = rBCDHOUR & ~(0x3f) | shour;
0002b0 e1a00001 MOV r0,r1
0002b4 e5d00078 LDRB r0,[r0,#0x78]
0002b8 e3c0003f BIC r0,r0,#0x3f
0002bc e1800008 ORR r0,r0,r8
0002c0 e5c10078 STRB r0,[r1,#0x78]
;;;310 rBCDMIN = rBCDMIN & ~(0x7f) | smin;
0002c4 e1a00001 MOV r0,r1
0002c8 e5d00074 LDRB r0,[r0,#0x74]
0002cc e3c0007f BIC r0,r0,#0x7f
0002d0 e1800009 ORR r0,r0,r9
0002d4 e5c10074 STRB r0,[r1,#0x74]
;;;311 rBCDSEC = rBCDSEC & ~(0x7f) | ssec;
0002d8 e1a00001 MOV r0,r1
0002dc e5d00070 LDRB r0,[r0,#0x70]
0002e0 e3c0007f BIC r0,r0,#0x7f
0002e4 e1800004 ORR r0,r0,r4
0002e8 e5c10070 STRB r0,[r1,#0x70]
;;;312
;;;313 rRTCCON = 0x0; //No reset, Merge BCD counters, 1/32768, RTC Control disable
0002ec e3a00000 MOV r0,#0
0002f0 e1c11000 BIC r1,r1,r0
0002f4 e5c10040 STRB r0,[r1,#0x40]
;;;314 }
0002f8 e8bd87f0 LDMFD sp!,{r4-r10,pc}
|L1.764|
0002fc 44200000 DCD 0x44200000
|L1.768|
000300 5452205b DCB "[ RT"
000304 69542043 DCB "C Ti"
000308 5320656d DCB "me S"
00030c 69747465 DCB "etti"
000310 5d20676e DCB "ng ]"
000314 0000000a DCB "\n\0\0\0"
|L1.792|
000318 20435452 DCB "RTC "
00031c 656d6954 DCB "Time"
000320 696e4920 DCB " Ini"
000324 6c616974 DCB "tial"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -