📄 24a0lib.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 842]
; commandline [-errors .\err\24a0lib.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
Delay PROC
;;;27 void Delay(int time)
;;;28 {
|L1.0|
000000 e92d4070 STMFD sp!,{r4-r6,lr}
000004 e1a05000 MOV r5,r0
;;;29 // time=0: adjust the Delay function by WatchDog timer.
;;;30 // time>0: the number of loop time
;;;31 // resolution of time is 100us.
;;;32 int i,adjust=0;
000008 e3a06000 MOV r6,#0
;;;33 if(time==0) {
00000c e3550000 CMP r5,#0
000010 1a00000f BNE |L1.84|
;;;34 time = 200;
000014 e3a050c8 MOV r5,#0xc8
;;;35 adjust = 1;
000018 e3a06001 MOV r6,#1
;;;36 delayLoopCount = 400;
00001c e3a00f64 MOV r0,#0x190
000020 e59f1264 LDR r1,|L1.652|
000024 e5810000 STR r0,[r1,#0] ; delayLoopCount
;;;37 //PCLK/1M,Watch-dog disable,1/64,interrupt disable,reset disable
;;;38 rWTCON = ((PCLK/1000000-1)<<8)|(2<<3);
000028 e2800dc2 ADD r0,r0,#0x3080
00002c e59f125c LDR r1,|L1.656|
000030 e5810000 STR r0,[r1,#0]
;;;39 rWTDAT = 0xffff; //for first update
000034 e0660806 RSB r0,r6,r6,LSL #16
000038 e1c11000 BIC r1,r1,r0
00003c e5810004 STR r0,[r1,#4]
;;;40 rWTCNT = 0xffff; //resolution=64us @any PCLK
000040 e1c11000 BIC r1,r1,r0
000044 e5810008 STR r0,[r1,#8]
;;;41 rWTCON = ((PCLK/1000000-1)<<8)|(2<<3)|(1<<5); //Watch-dog timer start
000048 e59f0244 LDR r0,|L1.660|
00004c e1c11000 BIC r1,r1,r0
000050 e5810000 STR r0,[r1,#0]
;;;42 }
;;;43 for(;time>0;time--)
|L1.84|
000054 e1a00000 NOP
|L1.88|
000058 e3550000 CMP r5,#0
00005c da00000a BLE |L1.140|
000060 ea000001 B |L1.108|
|L1.100|
000064 e2455001 SUB r5,r5,#1
000068 eafffffa B |L1.88|
;;;44 for(i=0;i<delayLoopCount;i++);
|L1.108|
00006c e3a04000 MOV r4,#0
|L1.112|
000070 e59f0214 LDR r0,|L1.652|
000074 e5900000 LDR r0,[r0,#0] ; delayLoopCount
000078 e1540000 CMP r4,r0
00007c aa000001 BGE |L1.136|
000080 e2844001 ADD r4,r4,#1
000084 eafffff9 B |L1.112|
|L1.136|
000088 eafffff5 B |L1.100|
;;;45 if(adjust==1) {
|L1.140|
00008c e3560001 CMP r6,#1
000090 1a00000b BNE |L1.196|
;;;46 rWTCON = ((PCLK/1000000-1)<<8)|(2<<3); //Watch-dog timer stop
000094 e59f01fc LDR r0,|L1.664|
000098 e59f11f0 LDR r1,|L1.656|
00009c e5810000 STR r0,[r1,#0]
;;;47 i = 0xffff - rWTCNT; // 1count->64us, 200*400 cycle runtime = 64*i us
0000a0 e1c10000 BIC r0,r1,r0
0000a4 e5900008 LDR r0,[r0,#8]
0000a8 e26040ff RSB r4,r0,#0xff
0000ac e2844cff ADD r4,r4,#0xff00
;;;48 delayLoopCount = 8000000/(i*64); //200*400:64*i=1*x:100 -> x=80000*100/(64*i)
0000b0 e1a00304 MOV r0,r4,LSL #6
0000b4 e59f11e0 LDR r1,|L1.668|
0000b8 ebfffffe BL __rt_sdiv
0000bc e59f11c8 LDR r1,|L1.652|
0000c0 e5810000 STR r0,[r1,#0] ; delayLoopCount
;;;49 }
;;;50 }
|L1.196|
0000c4 e8bd8070 LDMFD sp!,{r4-r6,pc}
ENDP
Port_Init PROC
;;;53 void Port_Init(void)
;;;54 {
0000c8 e59f01d0 LDR r0,|L1.672|
;;;55 //CAUTION:Follow the configuration order for setting the ports.
;;;56 // 1) setting value(GPDAT)
;;;57 // 2) setting control register (GPCON_U,GPCON_M, GPCON_L))
;;;58 // 3) configure pull-up resistor(GPUP)
;;;59
;;;60
;;;61 //rGPDAT = 0xffffffff;
;;;62
;;;63 //Ports :GP31 GP30 GP29 GP28 GP27 GP26 GP25
;;;64 //Signal :IrDA_RXD IrDA_TXD IrDA_SDVW XuCTSn1 XkpCOL4 XkpCOL3 XkpCOL2
;;;65 //Binary :11 11 11 10 11 11 11
;;;66 //Ports :GP24 GP23 GP22 GP21 GP20, GP19
;;;67 //Signal :XkpCOL1 XkpCOL0 XkpROW4 XkpROW3 XkpROW2 XkpROW1
;;;68 //Binary :11 11 11 11 11 11
;;;69 rGPCON_U = 0x3fbffff;
0000cc e59f11d0 LDR r1,|L1.676|
0000d0 e5810000 STR r0,[r1,#0]
;;;70
;;;71 //Ports :GP18 GP17 GP16 GP15 GP14 GP13
;;;72 //Signal :XkpROW0 Output(L3_MODE) Output(L3_CLOCK) Output(L3_DATA) EINT14(SMC) EINT13(ETHERNET)
;;;73 //Binary :11 01 01 01 10 10
;;;74 //Ports :GP12 GP11
;;;75 //Signal :EINT12(MODEM) EINT11(SD)
;;;76 //Binary :10 10
;;;77 rGPCON_M = 0xd5aa;
0000d4 e59f01cc LDR r0,|L1.680|
0000d8 e1c11000 BIC r1,r1,r0
0000dc e5810004 STR r0,[r1,#4]
;;;78
;;;79 //Ports :GP10 GP9 GP8 GP7 GP6 GP5 GP4
;;;80 //Signal :Reserved EINT9(Switch) Output(Keyboard) Output(Keyboard/LED) Output(LCD/LED) Output(LCD/LED) Output(LCD/LED)
;;;81 //Binary :10 10 01 01 01 01 01
;;;82 //Ports :GP3 GP2 GP1 GP0
;;;83 //Signal :Output(nDTR) Input(DSR) Output(SMC) Output(SD)
;;;84 //Binary :01 00 01 01
;;;85 rGPCON_L = 0x255545;
0000e0 e59f01c4 LDR r0,|L1.684|
0000e4 e1c11000 BIC r1,r1,r0
0000e8 e5810008 STR r0,[r1,#8]
;;;86
;;;87 //disable pull-up function
;;;88 rGPPU = 0xffffffff;
0000ec e3e00000 MVN r0,#0
0000f0 e0011000 AND r1,r1,r0
0000f4 e5810010 STR r0,[r1,#0x10]
;;;89
;;;90 //External interrupt will be falling edge triggered.
;;;91 rEXTINTC0= 0x222; //EINT2~0
0000f8 e59f01b0 LDR r0,|L1.688|
0000fc e1c11000 BIC r1,r1,r0
000100 e5810018 STR r0,[r1,#0x18]
;;;92 rEXTINTC1 = 0x22222222; //EINT10~3
000104 e59f01a8 LDR r0,|L1.692|
000108 e1c11000 BIC r1,r1,r0
00010c e581001c STR r0,[r1,#0x1c]
;;;93 rEXTINTC2 = 0x22222222; //EINT18~11, falling edge & disabling filter
000110 e1c11000 BIC r1,r1,r0
000114 e5810020 STR r0,[r1,#0x20]
;;;94
;;;95 //External port pull-up control
;;;96 //PERIPU[26] PERIPU[24] PERIPU[14] PERIPU[13] PERIPU[12] PERIPU[11] PERIPU[10]
;;;97 //XmsSDIO XsdDAT[3:0] XrADDR[25:18] XciCDATA[7:0] XmiADDR[10:0] XmiDATA[7:0] XspiCLK, XspiMOSI
;;;98 //PERIPU[9] PERIPU[8] PERIPU[4] PERIPU[3]
;;;99 //X2sLRCK,X2sCLK XspiMISO XrDATA[15:0] XpDATA[31:0]
;;;100 rPERIPU= 0x5007f14; //disabling pull-up function
000118 e59f0198 LDR r0,|L1.696|
00011c e1c11140 BIC r1,r1,r0,ASR #2
000120 e5810040 STR r0,[r1,#0x40]
;;;101
;;;102 }
000124 e12fff1e BX lr
ENDP
Uart_Init PROC
;;;108 void Uart_Init(int pclk,int baud)
;;;109 {
000128 e92d4070 STMFD sp!,{r4-r6,lr}
00012c e24dd028 SUB sp,sp,#0x28
000130 e1a04000 MOV r4,r0
000134 e1a06001 MOV r6,r1
;;;110 int i;
;;;111
;;;112 if(pclk == 0)
000138 e3540000 CMP r4,#0
00013c 1a000000 BNE |L1.324|
;;;113 pclk = PCLK;
000140 e59f4174 LDR r4,|L1.700|
;;;114 rUFCON0 = 0x0; //UART channel 0 FIFO control register, FIFO disable
|L1.324|
000144 e3a00000 MOV r0,#0
000148 e59f1170 LDR r1,|L1.704|
00014c e5810008 STR r0,[r1,#8]
;;;115 rUFCON1 = 0x0; //UART channel 1 FIFO control register, FIFO disable
000150 e3a00000 MOV r0,#0
000154 e2811c40 ADD r1,r1,#0x4000
000158 e5810008 STR r0,[r1,#8]
;;;116 rUMCON0 = 0x0; //UART chaneel 0 MODEM control register, AFC disable
00015c e3a00000 MOV r0,#0
000160 e2411c40 SUB r1,r1,#0x4000
000164 e581000c STR r0,[r1,#0xc]
;;;117 rUMCON1 = 0x0; //UART chaneel 1 MODEM control register, AFC disable
000168 e3a00000 MOV r0,#0
00016c e2811c40 ADD r1,r1,#0x4000
000170 e581000c STR r0,[r1,#0xc]
;;;118
;;;119 //UART0
;;;120 rULCON0 = 0x3; //Line control register : Normal,No parity,1 stop,8 bits
000174 e3a00003 MOV r0,#3
000178 e1c11680 BIC r1,r1,r0,LSL #13
00017c e5810000 STR r0,[r1,#0]
;;;121
;;;122 // [10] [9] [8] [7] [6] [5] [4] [3:2] [1:0]
;;;123 // Clock Sel Tx Int Rx Int Rx Time Out Rx err Loop-back Send break Transmit Mode Receive Mode
;;;124 // 0 1 0 0 1 0 0 01 01
;;;125 // PCLK Level Pulse Disable Generate Normal Normal Interrupt or Polling
;;;126 rUCON0 = 0x245; // Control register
000180 e59f013c LDR r0,|L1.708|
000184 e1c11000 BIC r1,r1,r0
000188 e5810004 STR r0,[r1,#4]
;;;127
;;;128 rUBRDIV0=( (int)(pclk/16./baud+0.5) -1 ); //Baud rate divisior register 0
00018c e1a00004 MOV r0,r4
000190 ebfffffe BL _dflt
000194 e88d0003 STMIA sp,{r0,r1}
000198 e28f0f4a ADR r0,|L1.712|
00019c e890000c LDMIA r0,{r2,r3}
0001a0 e59d0000 LDR r0,[sp,#0]
0001a4 ebfffffe BL _dmul
0001a8 e58d0010 STR r0,[sp,#0x10]
0001ac e58d1014 STR r1,[sp,#0x14]
0001b0 e1a00006 MOV r0,r6
0001b4 ebfffffe BL _dflt
0001b8 e58d0008 STR r0,[sp,#8]
0001bc e58d100c STR r1,[sp,#0xc]
0001c0 e59d2010 LDR r2,[sp,#0x10]
0001c4 e59d3014 LDR r3,[sp,#0x14]
0001c8 ebfffffe BL _drdiv
0001cc e58d0018 STR r0,[sp,#0x18]
0001d0 e58d101c STR r1,[sp,#0x1c]
0001d4 e28f00f4 ADR r0,|L1.720|
0001d8 e890000c LDMIA r0,{r2,r3}
0001dc e59d0018 LDR r0,[sp,#0x18]
0001e0 ebfffffe BL _dadd
0001e4 e58d0020 STR r0,[sp,#0x20]
0001e8 e58d1024 STR r1,[sp,#0x24]
0001ec ebfffffe BL _dfix
0001f0 e2400001 SUB r0,r0,#1
0001f4 e59f10c4 LDR r1,|L1.704|
0001f8 e5810028 STR r0,[r1,#0x28]
;;;129 //rUBRDIV0=( (int)(pclk/16./baud) -1 ); //Baud rate divisior register 0, in 5410
;;;130
;;;131 //UART1
;;;132 rULCON1 = 0x3;
0001fc e3a00003 MOV r0,#3
000200 e2811c40 ADD r1,r1,#0x4000
000204 e5810000 STR r0,[r1,#0]
;;;133 rUCON1 = 0x245;
000208 e59f00b4 LDR r0,|L1.708|
00020c e1c11000 BIC r1,r1,r0
000210 e5810004 STR r0,[r1,#4]
;;;134 rUBRDIV1=( (int)(pclk/16./baud) -1 );
000214 e1a00004 MOV r0,r4
000218 ebfffffe BL _dflt
00021c e58d0008 STR r0,[sp,#8]
000220 e58d100c STR r1,[sp,#0xc]
000224 e28f009c ADR r0,|L1.712|
000228 e890000c LDMIA r0,{r2,r3}
00022c e59d0008 LDR r0,[sp,#8]
000230 ebfffffe BL _dmul
000234 e58d0018 STR r0,[sp,#0x18]
000238 e58d101c STR r1,[sp,#0x1c]
00023c e1a00006 MOV r0,r6
000240 ebfffffe BL _dflt
000244 e58d0010 STR r0,[sp,#0x10]
000248 e58d1014 STR r1,[sp,#0x14]
00024c e59d2018 LDR r2,[sp,#0x18]
000250 e59d301c LDR r3,[sp,#0x1c]
000254 ebfffffe BL _drdiv
000258 e58d0020 STR r0,[sp,#0x20]
00025c e58d1024 STR r1,[sp,#0x24]
000260 ebfffffe BL _dfix
000264 e2400001 SUB r0,r0,#1
000268 e59f1068 LDR r1,|L1.728|
00026c e5810028 STR r0,[r1,#0x28]
;;;135
;;;136 for(i=0;i<100;i++);
000270 e3a05000 MOV r5,#0
|L1.628|
000274 e3550064 CMP r5,#0x64
000278 aa000001 BGE |L1.644|
00027c e2855001 ADD r5,r5,#1
000280 eafffffb B |L1.628|
;;;137 }
|L1.644|
000284 e28dd028 ADD sp,sp,#0x28
000288 e8bd8070 LDMFD sp!,{r4-r6,pc}
|L1.652|
00028c 00000004 DCD ||.data$0|| + 4
|L1.656|
000290 44100000 DCD 0x44100000
|L1.660|
000294 00003230 DCD 0x00003230
|L1.664|
000298 00003210 DCD 0x00003210
|L1.668|
00029c 007a1200 DCD 0x007a1200
|L1.672|
0002a0 03fbffff DCD 0x03fbffff
|L1.676|
0002a4 44800000 DCD 0x44800000
|L1.680|
0002a8 0000d5aa DCD 0x0000d5aa
|L1.684|
0002ac 00255545 DCD 0x00255545
|L1.688|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -