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

📄 24a0lib.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; 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 + -