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

📄 uart.txt

📁 工厂环境污染控制数据采集器
💻 TXT
📖 第 1 页 / 共 4 页
字号:
;;;329      {
;;;330    	/* Character Time-out indicator */
;;;331    	UART3Status |= 0x100;		/* Bit 9 as the CTI error */
;;;332      }
;;;333      else if ( IIRValue == IIR_THRE )	/* THRE, transmit holding register empty */
;;;334      {
;;;335    	/* THRE interrupt */
;;;336    	LSRValue = U3LSR;		/* Check status in the LSR to see if
;;;337    							valid data in U0THR or not */
;;;338    	if ( LSRValue & LSR_THRE )
;;;339    	{
;;;340    	  UART3TxEmpty = 1;
;;;341    	}
;;;342    	else
;;;343    	{
;;;344    	  UART3TxEmpty = 0;
;;;345    	}
;;;346      }
;;;347        
;;;348     // IDISABLE;
;;;349      VICVectAddr = 0;		/* Acknowledge Interrupt */
;;;350    
;;;351    
;;;352    }
0004bc  e8bd500f          POP      {r0-r3,r12,lr}
0004c0  e25ef004          SUBS     pc,lr,#4
                  |L1.1220|
0004c4  e3110001          TST      r1,#1                 ;306
0004c8  0a00003d          BEQ      |L1.1476|
0004cc  e59f3488          LDR      r3,|L1.2396|
0004d0  e5933000          LDR      r3,[r3,#0]            ;310
0004d4  e59fc4c8          LDR      r12,|L1.2468|
0004d8  e59fe4c8          LDR      lr,|L1.2472|
0004dc  e59ee000          LDR      lr,[lr,#0]            ;310  ; UART3Count
0004e0  e7cc300e          STRB     r3,[r12,lr]           ;310
0004e4  e59f34bc          LDR      r3,|L1.2472|
0004e8  e5933000          LDR      r3,[r3,#0]            ;311  ; UART3Count
0004ec  e2833001          ADD      r3,r3,#1              ;311
0004f0  e59fc4b0          LDR      r12,|L1.2472|
0004f4  e58c3000          STR      r3,[r12,#0]           ;311  ; UART3Count
0004f8  e28c3000          ADD      r3,r12,#0             ;312
0004fc  e5933000          LDR      r3,[r3,#0]            ;312  ; UART3Count
000500  e3530040          CMP      r3,#0x40              ;312
000504  1a00002e          BNE      |L1.1476|
000508  e3a03000          MOV      r3,#0                 ;314
00050c  e59fc494          LDR      r12,|L1.2472|
000510  e58c3000          STR      r3,[r12,#0]           ;314  ; UART3Count
000514  ea00002a          B        |L1.1476|
                  |L1.1304|
000518  e3500002          CMP      r0,#2                 ;318
00051c  1a000012          BNE      |L1.1388|
000520  e59f3474          LDR      r3,|L1.2460|
000524  e5933000          LDR      r3,[r3,#0]            ;321
000528  e59fc474          LDR      r12,|L1.2468|
00052c  e59fe474          LDR      lr,|L1.2472|
000530  e59ee000          LDR      lr,[lr,#0]            ;321  ; UART3Count
000534  e7cc300e          STRB     r3,[r12,lr]           ;321
000538  e59f3468          LDR      r3,|L1.2472|
00053c  e5933000          LDR      r3,[r3,#0]            ;322  ; UART3Count
000540  e2833001          ADD      r3,r3,#1              ;322
000544  e59fc45c          LDR      r12,|L1.2472|
000548  e58c3000          STR      r3,[r12,#0]           ;322  ; UART3Count
00054c  e28c3000          ADD      r3,r12,#0             ;323
000550  e5933000          LDR      r3,[r3,#0]            ;323  ; UART3Count
000554  e3530040          CMP      r3,#0x40              ;323
000558  1a000019          BNE      |L1.1476|
00055c  e3a03000          MOV      r3,#0                 ;325
000560  e59fc440          LDR      r12,|L1.2472|
000564  e58c3000          STR      r3,[r12,#0]           ;325  ; UART3Count
000568  ea000015          B        |L1.1476|
                  |L1.1388|
00056c  e3500006          CMP      r0,#6                 ;328
000570  1a000005          BNE      |L1.1420|
000574  e59f3424          LDR      r3,|L1.2464|
000578  e5933000          LDR      r3,[r3,#0]            ;331  ; UART3Status
00057c  e3833c01          ORR      r3,r3,#0x100          ;331
000580  e59fc418          LDR      r12,|L1.2464|
000584  e58c3000          STR      r3,[r12,#0]           ;331  ; UART3Status
000588  ea00000d          B        |L1.1476|
                  |L1.1420|
00058c  e3500001          CMP      r0,#1                 ;333
000590  1a00000b          BNE      |L1.1476|
000594  e59f3400          LDR      r3,|L1.2460|
000598  e5933014          LDR      r3,[r3,#0x14]         ;336
00059c  e20310ff          AND      r1,r3,#0xff           ;336
0005a0  e3110020          TST      r1,#0x20              ;338
0005a4  0a000003          BEQ      |L1.1464|
0005a8  e3a03001          MOV      r3,#1                 ;340
0005ac  e59fc3f8          LDR      r12,|L1.2476|
0005b0  e5cc3000          STRB     r3,[r12,#0]           ;340  ; UART3TxEmpty
0005b4  ea000002          B        |L1.1476|
                  |L1.1464|
0005b8  e3a03000          MOV      r3,#0                 ;344
0005bc  e59fc3e8          LDR      r12,|L1.2476|
0005c0  e5cc3000          STRB     r3,[r12,#0]           ;344  ; UART3TxEmpty
                  |L1.1476|
0005c4  e3a03000          MOV      r3,#0                 ;349
0005c8  e5033100          STR      r3,[r3,#-0x100]       ;349
0005cc  eaffffba          B        |L1.1212|
;;;353    
                          ENDP

                  UARTInit PROC
;;;371    DWORD UARTInit( DWORD PortNum, DWORD baudrate )
;;;372    {
0005d0  e92d4070          PUSH     {r4-r6,lr}
0005d4  e1a04000          MOV      r4,r0
0005d8  e1a06001          MOV      r6,r1
;;;373      DWORD Fdiv;
;;;374    
;;;375      if ( PortNum == 0 )
0005dc  e3540000          CMP      r4,#0
0005e0  1a000020          BNE      |L1.1640|
;;;376      {
;;;377    	PINSEL0 = 0x00000050;       /* RxD0 and TxD0 */
0005e4  e3a00050          MOV      r0,#0x50
0005e8  e59f13c0          LDR      r1,|L1.2480|
0005ec  e5810000          STR      r0,[r1,#0]
;;;378    
;;;379        U0LCR = 0x83;		/* 8 bits, no Parity, 1 Stop bit */
0005f0  e3a00083          MOV      r0,#0x83
0005f4  e1c11500          BIC      r1,r1,r0,LSL #10
0005f8  e581000c          STR      r0,[r1,#0xc]
;;;380        Fdiv = ( Fpclk / 16 ) / baudrate ;	/*baud rate */
0005fc  e1a01006          MOV      r1,r6
000600  e59f03ac          LDR      r0,|L1.2484|
000604  ebfffffe          BL       __aeabi_uidivmod
000608  e1a05000          MOV      r5,r0
;;;381        U0DLM = Fdiv / 256;							
00060c  e1a00425          LSR      r0,r5,#8
000610  e59f1344          LDR      r1,|L1.2396|
000614  e5810004          STR      r0,[r1,#4]
;;;382        U0DLL = Fdiv % 256;
000618  e20500ff          AND      r0,r5,#0xff
00061c  e5810000          STR      r0,[r1,#0]
;;;383    	U0LCR = 0x03;		/* DLAB = 0 */
000620  e3a00003          MOV      r0,#3
000624  e581000c          STR      r0,[r1,#0xc]
;;;384        U0FCR = 0x07;		/* Enable and reset TX and RX FIFO. */
000628  e3a00007          MOV      r0,#7
00062c  e5810008          STR      r0,[r1,#8]
;;;385    
;;;386        if ( install_irq( UART0_INT, (void *)UART0Handler, HIGHEST_PRIORITY ) == FALSE )
000630  e3a02001          MOV      r2,#1
000634  e59f137c          LDR      r1,|L1.2488|
000638  e3a00006          MOV      r0,#6
00063c  ebfffffe          BL       install_irq
000640  e3500000          CMP      r0,#0
000644  1a000002          BNE      |L1.1620|
;;;387        {
;;;388    	  return (FALSE);
000648  e3a00000          MOV      r0,#0
                  |L1.1612|
00064c  e8bd4070          POP      {r4-r6,lr}
;;;389        }
;;;390       
;;;391        U0IER = IER_RBR | IER_THRE | IER_RLS;	/* Enable UART0 interrupt */
;;;392        return (TRUE);
;;;393      }
;;;394      else if ( PortNum == 1 )
;;;395      {
;;;396    #if EA_BOARD_LPC24XX
;;;397    	PINSEL7 |= 0x0000000F;	/* P3.16 TXD1, P3.17 RXD1 */
;;;398    #else						/* Default is Keil MCB2300 board */							
;;;399    	PINSEL0 |= 0x40000000;	/* Enable TxD1 P0.15 */
;;;400    	PINSEL1 |= 0x00000001;	/* Enable RxD1 P0.16 */
;;;401    #endif
;;;402        U1LCR = 0x83;		/* 8 bits, no Parity, 1 Stop bit */
;;;403        Fdiv = ( Fpclk / 16 ) / baudrate ;	/*baud rate */
;;;404        U1DLM = Fdiv / 256;							
;;;405        U1DLL = Fdiv % 256;
;;;406    	U1LCR = 0x03;		/* DLAB = 0 */
;;;407        U1FCR = 0x07;		/* Enable and reset TX and RX FIFO. */
;;;408    
;;;409        if ( install_irq( UART1_INT, (void *)UART1Handler, HIGHEST_PRIORITY ) == FALSE )
;;;410        {
;;;411    	  return (FALSE);
;;;412        }
;;;413       
;;;414        U1IER = IER_RBR | IER_THRE | IER_RLS;	/* Enable UART0 interrupt */
;;;415        return (TRUE);
;;;416      }
;;;417      else if(PortNum == 2)
;;;418      {
;;;419      
;;;420    
;;;421    	PINSEL0 |= 0X00500000;
;;;422    	
;;;423    	
;;;424    
;;;425        U2LCR = 0x83;		/* 8 bits, no Parity, 1 Stop bit */
;;;426        Fdiv = ( Fpclk / 16 ) / baudrate ;	/*baud rate */
;;;427        U2DLM = Fdiv / 256;							
;;;428        U2DLL = Fdiv % 256;
;;;429    	U2LCR = 0x03;		/* DLAB = 0 */
;;;430        U2FCR = 0x07;		/* Enable and reset TX and RX FIFO. */
;;;431    
;;;432        if ( install_irq( UART2_INT, (void *)UART2Handler, HIGHEST_PRIORITY ) == FALSE )
;;;433        {
;;;434    	  return (FALSE);
;;;435        }
;;;436       
;;;437        U2IER = IER_RBR | IER_THRE | IER_RLS;	/* Enable UART0 interrupt */
;;;438        return (TRUE);
;;;439      
;;;440      }
;;;441      else if(PortNum==3)
;;;442      {
;;;443      
;;;444    	PINSEL0 |= 0X0000000A;
;;;445    
;;;446    	
;;;447    
;;;448        U3LCR = 0x83;		/* 8 bits, no Parity, 1 Stop bit */
;;;449        Fdiv = ( Fpclk / 16 ) / baudrate ;	/*baud rate */
;;;450        U3DLM = Fdiv / 256;							
;;;451        U3DLL = Fdiv % 256;
;;;452    	U3LCR = 0x03;		/* DLAB = 0 */
;;;453        U3FCR = 0x07;		/* Enable and reset TX and RX FIFO. */
;;;454    
;;;455        if ( install_irq( UART3_INT, (void *)UART3Handler, HIGHEST_PRIORITY ) == FALSE )
;;;456        {
;;;457    	  return (FALSE);
;;;458        }
;;;459       
;;;460        U3IER = IER_RBR | IER_THRE | IER_RLS;	/* Enable UART0 interrupt */
;;;461        return (TRUE);  
;;;462      
;;;463      
;;;464      }
;;;465      
;;;466      
;;;467      return( FALSE ); 
;;;468    }
000650  e12fff1e          BX       lr
                  |L1.1620|
000654  e3a00007          MOV      r0,#7                 ;391
000658  e59f12fc          LDR      r1,|L1.2396|
00065c  e5810004          STR      r0,[r1,#4]            ;391
000660  e3a00001          MOV      r0,#1                 ;392
000664  eafffff8          B        |L1.1612|
                  |L1.1640|
000668  e3540001          CMP      r4,#1                 ;394
00066c  1a000024          BNE      |L1.1796|
000670  e59f0338          LDR      r0,|L1.2480|
000674  e5900000          LDR      r0,[r0,#0]            ;399
000678  e3800101          ORR      r0,r0,#0x40000000     ;399
00067c  e59f132c          LDR      r1,|L1.2480|
000680  e5810000          STR      r0,[r1,#0]            ;399
000684  e1a00001          MOV      r0,r1                 ;400
000688  e5900004          LDR      r0,[r0,#4]            ;400
00068c  e3800001          ORR      r0,r0,#1              ;400
000690  e5810004          STR      r0,[r1,#4]            ;400
000694  e3a00083          MOV      r0,#0x83              ;402
000698  e2411907          SUB      r1,r1,#0x1c000        ;402
00069c  e581000c          STR      r0,[r1,#0xc]          ;402
0006a0  e1a01006          MOV      r1,r6                 ;403
0006a4  e59f0308          LDR      r0,|L1.2484|
0006a8  ebfffffe          BL       __aeabi_uidivmod
0006ac  e1a05000          MOV      r5,r0                 ;403
0006b0  e1a00425          LSR      r0,r5,#8              ;404
0006b4  e59f12b8          LDR      r1,|L1.2420|
0006b8  e5810004          STR      r0,[r1,#4]            ;404
0006bc  e20500ff          AND      r0,r5,#0xff           ;405
0006c0  e5810000          STR      r0,[r1,#0]            ;405
0006c4  e3a00003          MOV      r0,#3                 ;406
0006c8  e581000c          STR      r0,[r1,#0xc]          ;406
0006cc  e3a00007          MOV      r0,#7                 ;407
0006d0  e5810008          STR      r0,[r1,#8]            ;407
0006d4  e3a02001          MOV      r2,#1                 ;409
0006d8  e59f12dc          LDR      r1,|L1.2492|
0006dc  ebfffffe          BL       install_irq
0006e0  e3500000          CMP      r0,#0                 ;409
0006e4  1a000001          BNE      |L1.1776|
0006e8  e3a00000          MOV      r0,#0                 ;411
0006ec  eaffffd6          B        |L1.1612|
                  |L1.1776|
0006f0  e3a00007          MOV      r0,#7                 ;414
0006f4  e59f1278          LDR      r1,|L1.2420|
0006f8  e5810004          STR      r0,[r1,#4]            ;414
0006fc  e3a00001          MOV      r0,#1                 ;415
000700  eaffffd1          B        |L1.1612|
                  |L1.1796|
000704  e3540002          CMP      r4,#2                 ;417
000708  1a000021          BNE      |L1.1940|
00070c  e59f029c          LDR      r0,|L1.2480|
000710  e5900000          LDR      r0,[r0,#0]            ;421
000714  e3800605          ORR      r0,r0,#0x500000       ;421
000718  e59f1290          LDR      r1,|L1.2480|
00071c  e5810000          STR      r0,[r1,#0]            ;421
000720  e3a00083          MOV      r0,#0x83              ;425
000724  e2811913          ADD      r1,r1,#0x4c000        ;425
000728  e581000c          STR      r0,[r1,#0xc]          ;425
00072c  e1a01006          MOV      r1,r6                 ;426
000730  e59f027c          LDR      r0,|L1.2484|
000734  ebfffffe          BL       __aeabi_uidivmod
000738  e1a05000          MOV      r5,r0                 ;426
00073c  e1a00425          LSR      r0,r5,#8              ;427
000740  e59f1240          LDR      r1,|L1.2440|
000744  e5810004          STR      r0,[r1,#4]            ;427
000748  e20500ff          AND      r0,r5,#0xff           ;428
00074c  e5810000          STR      r0,[r1,#0]            ;428
000750  e3a00003          MOV      r0,#3                 ;429

⌨️ 快捷键说明

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