📄 2410lib.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 902] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\obj\2410lib.o --depend=.\obj\2410lib.d --device=DARMSS9 --apcs=interwork -I..\common\inc -IC:\Keil\ARM\INC\Samsung --omf_browse=.\obj\2410lib.crf ..\common\src\2410lib.c]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
port_init PROC
;;;56 //Binary : *0 1 1 1, 1 1 1 1, 1 1 1 1
;;;57 rGPACON = 0x5ef7ff;
000000 e59f03a0 LDR r0,|L1.936|
000004 e3a01456 MOV r1,#0x56000000
000008 e5810000 STR r0,[r1,#0]
;;;58
;;;59 //===* PORT B GROUP
;;;60 //Ports : GPB10 GPB9 GPB8 GPB7 GPB6 GPB5 GPB4 GPB3 GPB2 GPB1 GPB0
;;;61 //Signal : GPB10 GPB9 GPB8 GPB7 GPB6 DIS_OFF L3CLOCK L3DATA L3MODE PWM2 PWM1
;;;62 //Setting: Output Output Output Output Output Output Output Output Output TOUT1 TOUT0
;;;63 //Binary : 01, 01 *01, *01 *01, 01 01, 01 01, 10 10
;;;64 rGPBCON = 0x155559;
00000c e59f0398 LDR r0,|L1.940|
000010 e5810010 STR r0,[r1,#0x10]
;;;65 rGPBUP = 0x7ff; // The pull up function is disabled GPB[10:0]
000014 e59f0394 LDR r0,|L1.944|
000018 e5810018 STR r0,[r1,#0x18]
;;;66
;;;67 //=== PORT C GROUP
;;;68 //Ports : GPC15 GPC14 GPC13 GPC12 GPC11 GPC10 GPC9 GPC8 GPC7 GPC6 GPC5 GPC4 GPC3 GPC2 GPC1 GPC0
;;;69 //Signal : VD7 VD6 VD5 VD4 VD3 VD2 VD1 VD0 Output Output Output OUT VFRAME VLINE VCLK LEND
;;;70 //Binary : 10 10, 10 10, 10 10, 10 10, *01 *01, *01 01, 10 10, 10 10
;;;71 rGPCCON = 0xaaaa55aa;
00001c e59f0390 LDR r0,|L1.948|
000020 e5810020 STR r0,[r1,#0x20]
;;;72 rGPCUP = 0xffff; // The pull up function is disabled GPC[15:0]
000024 e0200460 EOR r0,r0,r0,ROR #8
000028 e5810028 STR r0,[r1,#0x28]
;;;73
;;;74 //=== PORT D GROUP
;;;75 //Ports : GPD15 GPD14 GPD13 GPD12 GPD11 GPD10 GPD9 GPD8 GPD7 GPD6 GPD5 GPD4 GPD3 GPD2 GPD1 GPD0
;;;76 //Signal : VD23 VD22 VD21 VD20 VD19 VD18 VD17 VD16 VD15 VD14 VD13 VD12 VD11 VD10 VD9 VD8
;;;77 //Binary : 10 10, 10 10, 10 10, 10 10, 10 10, 10 10, 10 10, 10 10
;;;78 rGPDCON = 0xaaaaaaaa;
00002c e59f0384 LDR r0,|L1.952|
000030 e5810030 STR r0,[r1,#0x30]
;;;79 rGPDUP = 0xffff; // The pull up function is disabled GPD[15:0]
000034 e59f0380 LDR r0,|L1.956|
000038 e5810038 STR r0,[r1,#0x38]
;;;80
;;;81 //=== PORT E GROUP
;;;82 //Ports : GPE15 GPE14 GPE13 GPE12 GPE11 GPE10 GPE9 GPE8 GPE7 GPE6 GPE5 GPE4
;;;83 //Signal : IICSDA IICSCL SPICLK SPIMOSI SPIMISO SDDATA3 SDDATA2 SDDATA1 SDDATA0 SDCMD SDCLK I2SSDO
;;;84 //Binary : 10 10, 10 10, 10 10, 10 10, 10 10, 10 10,
;;;85 //----------------------------------------------------------------------------------------
;;;86 //Ports : GPE3 GPE2 GPE1 GPE0
;;;87 //Signal : I2SSDI CDCLK I2SSCLK I2SLRCK
;;;88 //Binary : 10 10, 10 10
;;;89 rGPECON = 0xa6aaaaaa;
00003c e59f037c LDR r0,|L1.960|
000040 e5810040 STR r0,[r1,#0x40]
;;;90 rGPEUP = 0xffff; // The pull up function is disabled GPE[15:0]
000044 e59f0370 LDR r0,|L1.956|
000048 e5810048 STR r0,[r1,#0x48]
;;;91 rGPEDAT = 0x2000;
00004c e3a00a02 MOV r0,#0x2000
000050 e5810044 STR r0,[r1,#0x44]
;;;92 //=== PORT F GROUP
;;;93 //Ports : GPF7 GPF6 GPF5 GPF4 GPF3 GPF2 GPF1 GPF0
;;;94 //Signal : LED_4 LED_3 LED_2 LED_1 PS2_INT CPLD_INT1 KEY_INT BUT_INT1
;;;95 //Setting: Output Output Output Output EINT3 EINT2 EINT1 EINT0
;;;96 //Binary : 01 01, 01 01, 10 10, 10 10
;;;97 rGPFCON = 0x55aa;
000054 e59f0368 LDR r0,|L1.964|
000058 e5810050 STR r0,[r1,#0x50]
;;;98 rGPFUP = 0xff; // The pull up function is disabled GPF[7:0]
00005c e3a000ff MOV r0,#0xff
000060 e5810058 STR r0,[r1,#0x58]
;;;99
;;;100 //=== PORT G GROUP
;;;101 //Ports : GPG15 GPG14 GPG13 GPG12 GPG11 GPG10 GPG9 GPG8 GPG7 GPG6
;;;102 //Signal : nYPON YMON nXPON XMON GPG11 SD_CD CPLD_INT3 CPLD_INT2 SPICLK1 SPIMOSI
;;;103 //Setting: nYPON YMON nXPON XMON Output Iutput EINT17 EINT17 SPICLK1 SPIMOSI1
;;;104 //Binary : 11 11, 11 11, 01 00, 10 10, 11 11
;;;105 //---------------------------------------------------------------------------------------
;;;106 //Ports : GPG5 GPG4 GPG3 GPG2 GPG1 GPG0
;;;107 //Signal : SPIMISO1 LCD_PWREN BUT_INT2 nSS0 NET_INT GPG0
;;;108 //Setting: SPIMISO1 LCD_PWRDN EINT11 nSS0 EINT9 Output
;;;109 //Binary : 11 11, 10 11, 10 *01
;;;110 rGPGCON = 0xff4af7b9;
000064 e59f035c LDR r0,|L1.968|
000068 e5810060 STR r0,[r1,#0x60]
;;;111 rGPGUP = 0xffff; // The pull up function is disabled GPG[15:0]
00006c e59f0348 LDR r0,|L1.956|
000070 e5810068 STR r0,[r1,#0x68]
;;;112
;;;113 //rGPGCON = (rGPGCON & 0xfffffcff) | (1<<8); // GPG4 [9:8] 11 -> LCD_PWREN Enable
;;;114 // Eable LCD
;;;115 // rGPGDAT = (rGPGDAT & 0xffef) | (1<<4);
;;;116 // close LCD
;;;117 rGPGDAT = rGPGDAT & 0xffcf;
000074 e3a00456 MOV r0,#0x56000000
000078 e5900064 LDR r0,[r0,#0x64]
00007c e59f1348 LDR r1,|L1.972|
000080 e0000001 AND r0,r0,r1
000084 e3a01456 MOV r1,#0x56000000
000088 e5810064 STR r0,[r1,#0x64]
;;;118
;;;119 //=== PORT H GROUP
;;;120 //Ports : GPH10 GPH9 GPH8 GPH7 GPH6 GPH5 GPH4 GPH3 GPH2 GPH1 GPH0
;;;121 //Signal : GPH10 CLKOUT0 SD_WP CTS1 RTS1 RXD1 TXD1 RXD0 TXD0 nRTS0 nCTS0
;;;122 //Setting: Output CLKOUT0 GPH8 nCTS1 nRTS1 RXD1 TXD1 RXD0 TXD0 nRTS0 nCTS0
;;;123 //Binary : 10, 10 10, 11 11, 10 10, 10 10, 10 10
;;;124 rGPHCON = 0x2aaaaa;
00008c e59f033c LDR r0,|L1.976|
000090 e5810070 STR r0,[r1,#0x70]
;;;125 rGPHUP = 0x7ff; // The pull up function is disabled GPH[10:0]
000094 e59f0314 LDR r0,|L1.944|
000098 e5810078 STR r0,[r1,#0x78]
;;;126
;;;127 }
00009c e12fff1e BX lr
ENDP
uart_change_baud PROC
;;;138 void uart_change_baud(int nChannel, int nBaud)
;;;139 {
0000a0 e92d4030 PUSH {r4,r5,lr}
0000a4 e24dd01c SUB sp,sp,#0x1c
0000a8 e1a04000 MOV r4,r0
0000ac e1a05001 MOV r5,r1
;;;140 if (nChannel == UART0)
0000b0 e3540000 CMP r4,#0
0000b4 1a000013 BNE |L1.264|
;;;141 rUBRDIV0=( (int)(PCLK/16./nBaud + 0.5) -1 );
0000b8 e1a00005 MOV r0,r5
0000bc ebfffffe BL __aeabi_i2d
0000c0 e58d0010 STR r0,[sp,#0x10]
0000c4 e58d1014 STR r1,[sp,#0x14]
0000c8 e1a03001 MOV r3,r1
0000cc e1a02000 MOV r2,r0
0000d0 e28f0fbf ADR r0,|L1.980|
0000d4 e8900003 LDM r0,{r0,r1}
0000d8 ebfffffe BL __aeabi_ddiv
0000dc e58d0008 STR r0,[sp,#8]
0000e0 e58d100c STR r1,[sp,#0xc]
0000e4 e28f0e2f ADR r0,|L1.988|
0000e8 e890000c LDM r0,{r2,r3}
0000ec e59d0008 LDR r0,[sp,#8]
0000f0 ebfffffe BL __aeabi_dadd
0000f4 e88d0003 STM sp,{r0,r1}
0000f8 ebfffffe BL __aeabi_d2iz
0000fc e2400001 SUB r0,r0,#1
000100 e3a01205 MOV r1,#0x50000000
000104 e5810028 STR r0,[r1,#0x28]
|L1.264|
;;;142
;;;143 if (nChannel == UART1)
000108 e3540001 CMP r4,#1
00010c 1a00000e BNE |L1.332|
;;;144 rUBRDIV1=( (int)(PCLK/16./nBaud) -1 );
000110 e1a00005 MOV r0,r5
000114 ebfffffe BL __aeabi_i2d
000118 e58d0010 STR r0,[sp,#0x10]
00011c e58d1014 STR r1,[sp,#0x14]
000120 e1a03001 MOV r3,r1
000124 e1a02000 MOV r2,r0
000128 e28f0fa9 ADR r0,|L1.980|
00012c e8900003 LDM r0,{r0,r1}
000130 ebfffffe BL __aeabi_ddiv
000134 e58d0008 STR r0,[sp,#8]
000138 e58d100c STR r1,[sp,#0xc]
00013c ebfffffe BL __aeabi_d2iz
000140 e2400001 SUB r0,r0,#1
000144 e59f1298 LDR r1,|L1.996|
000148 e5810028 STR r0,[r1,#0x28]
|L1.332|
;;;145
;;;146 if (nChannel == UART2)
00014c e35400bb CMP r4,#0xbb
000150 1a00000e BNE |L1.400|
;;;147 rUBRDIV2=( (int)(PCLK/16./nBaud) -1 );
000154 e1a00005 MOV r0,r5
000158 ebfffffe BL __aeabi_i2d
00015c e58d0010 STR r0,[sp,#0x10]
000160 e58d1014 STR r1,[sp,#0x14]
000164 e1a03001 MOV r3,r1
000168 e1a02000 MOV r2,r0
00016c e28f0e26 ADR r0,|L1.980|
000170 e8900003 LDM r0,{r0,r1}
000174 ebfffffe BL __aeabi_ddiv
000178 e58d0008 STR r0,[sp,#8]
00017c e58d100c STR r1,[sp,#0xc]
000180 ebfffffe BL __aeabi_d2iz
000184 e2400001 SUB r0,r0,#1
000188 e59f1258 LDR r1,|L1.1000|
00018c e5810028 STR r0,[r1,#0x28]
|L1.400|
;;;148 }
000190 e28dd01c ADD sp,sp,#0x1c
000194 e8bd4030 POP {r4,r5,lr}
000198 e12fff1e BX lr
ENDP
delay PROC
;;;582 void delay(int nTime)
;;;583 {
00019c e92d4070 PUSH {r4-r6,lr}
0001a0 e1a04000 MOV r4,r0
;;;584 // time=0: adjust the Delay function by WatchDog timer.
;;;585 // time>0: the number of loop time
;;;586 // resolution of time is 100us.
;;;587 int i,adjust=0;
0001a4 e3a06000 MOV r6,#0
;;;588 if(nTime==0)
0001a8 e3540000 CMP r4,#0
0001ac 1a00000c BNE |L1.484|
;;;589 {
;;;590 nTime = 200;
0001b0 e3a040c8 MOV r4,#0xc8
;;;591 adjust = 1;
0001b4 e3a06001 MOV r6,#1
;;;592 delayLoopCount = 400;
0001b8 e3a00e19 MOV r0,#0x190
0001bc e59f1228 LDR r1,|L1.1004|
0001c0 e5810000 STR r0,[r1,#0] ; delayLoopCount
;;;593 //PCLK/1M,Watch-dog disable,1/64,interrupt disable,reset disable
;;;594 rWTCON = ((PCLK/1000000-1)<<8)|(2<<3);
0001c4 e2800dbe ADD r0,r0,#0x2f80
0001c8 e3a01453 MOV r1,#0x53000000
0001cc e5810000 STR r0,[r1,#0]
;;;595 rWTDAT = 0xffff; //for first update
0001d0 e0660806 RSB r0,r6,r6,LSL #16
0001d4 e5810004 STR r0,[r1,#4]
;;;596 rWTCNT = 0xffff; //resolution=64us @any PCLK
0001d8 e5810008 STR r0,[r1,#8]
;;;597 rWTCON = ((PCLK/1000000-1)<<8)|(2<<3)|(1<<5); //Watch-dog timer start
0001dc e59f020c LDR r0,|L1.1008|
0001e0 e5810000 STR r0,[r1,#0]
|L1.484|
;;;598 }
;;;599 for(;nTime>0;nTime--)
0001e4 ea000007 B |L1.520|
|L1.488|
;;;600 for(i=0;i<delayLoopCount;i++);
0001e8 e3a05000 MOV r5,#0
0001ec ea000000 B |L1.500|
|L1.496|
0001f0 e2855001 ADD r5,r5,#1
|L1.500|
0001f4 e59f01f0 LDR r0,|L1.1004|
0001f8 e5900000 LDR r0,[r0,#0] ; delayLoopCount
0001fc e1550000 CMP r5,r0
000200 bafffffa BLT |L1.496|
000204 e2444001 SUB r4,r4,#1
|L1.520|
000208 e3540000 CMP r4,#0
00020c cafffff5 BGT |L1.488|
;;;601 if(adjust==1)
000210 e3560001 CMP r6,#1
000214 1a00000b BNE |L1.584|
;;;602 {
;;;603 rWTCON = ((PCLK/1000000-1)<<8)|(2<<3); //Watch-dog timer stop
000218 e59f01d4 LDR r0,|L1.1012|
00021c e3a01453 MOV r1,#0x53000000
000220 e5810000 STR r0,[r1,#0]
;;;604 i = 0xffff - rWTCNT; //1count->64us, 200*400 cycle runtime = 64*i us
000224 e3a00453 MOV r0,#0x53000000
000228 e5900008 LDR r0,[r0,#8]
00022c e59f1188 LDR r1,|L1.956|
000230 e0415000 SUB r5,r1,r0
;;;605 delayLoopCount = 8000000/(i*64); //200*400:64*i=1*x:100 -> x=80000*100/(64*i)
000234 e1a01305 LSL r1,r5,#6
000238 e59f01b8 LDR r0,|L1.1016|
00023c ebfffffe BL __aeabi_idivmod
000240 e59f11a4 LDR r1,|L1.1004|
000244 e5810000 STR r0,[r1,#0] ; delayLoopCount
|L1.584|
;;;606 }
;;;607 }
000248 e8bd4070 POP {r4-r6,lr}
00024c e12fff1e BX lr
ENDP
uart_init PROC
;;;160 void uart_init(int nMainClk, int nBaud, int nChannel)
;;;161 {
000250 e92d40f0 PUSH {r4-r7,lr}
000254 e24dd02c SUB sp,sp,#0x2c
000258 e1a04000 MOV r4,r0
00025c e1a05001 MOV r5,r1
000260 e1a06002 MOV r6,r2
;;;162 int i;
;;;163
;;;164 if(nMainClk == 0)
000264 e3540000 CMP r4,#0
000268 1a000000 BNE |L1.624|
;;;165 nMainClk = PCLK;
00026c e59f4188 LDR r4,|L1.1020|
|L1.624|
;;;166
;;;167 switch (nChannel)
000270 e3560000 CMP r6,#0
000274 0a000004 BEQ |L1.652|
000278 e3560001 CMP r6,#1
00027c 0a000028 BEQ |L1.804|
000280 e35600bb CMP r6,#0xbb
000284 1a000080 BNE |L1.1164|
000288 ea00005f B |L1.1036|
|L1.652|
;;;168 {
;;;169 case UART0:
00028c e1a00000 MOV r0,r0
;;;170 rUFCON0 = 0x0; //UART channel 0 FIFO control register, FIFO disable
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -