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

📄 uart.lst

📁 该代码完成了在8051控制下MT8965完成g.711编解码的功能。
💻 LST
📖 第 1 页 / 共 2 页
字号:
 184   1      		
 185   1      	if(tx0.iPut != tx0.iGet) {				//发送到MCU com2
 186   2      		LOC_BYTE(UART2BASE) = XBYTE[tx0.iBase + tx0.iGet];	
 187   2      		if(++tx0.iGet == tx0.iLen){
 188   3      			tx0.iGet = 0;
 189   3      		}
 190   2      	}
 191   1      	
 192   1      	if(tx1.iPut != tx1.iGet) {				//发送到镜头 com1
 193   2      		LOC_BYTE(UART1BASE) = XBYTE[tx1.iBase + tx1.iGet];	
 194   2      		if(++tx1.iGet == tx1.iLen){
 195   3      			tx1.iGet = 0;
 196   3      		}
 197   2      	}
 198   1      	
 199   1      	if(tx3.iPut != tx3.iGet) {				//发送到编解码 com4
 200   2      		LOC_BYTE(UART4BASE) = XBYTE[tx3.iBase + tx3.iGet];	
 201   2      		if(++tx3.iGet == tx3.iLen){
 202   3      			tx3.iGet = 0;
 203   3      		}
 204   2      	}
 205   1      		
 206   1      	if(tx4.iPut != tx4.iGet) {				//W78E516B serial(not use)
 207   2      		SBUF = XBYTE[tx4.iBase + tx4.iGet];	
 208   2      		if(++tx4.iGet == tx4.iLen){
 209   3      			tx4.iGet = 0;
 210   3      		}
 211   2      	}
 212   1      /*
 213   1      	//TL16554已经改为中断接收	
 214   1      	UART_IIR  =  LOC_BYTE(UART2BASE+UARTIIR_OFFSET);	
 215   1      	if ((UART_IIR & 0x04)) {					//从MCU接收
 216   1      		XBYTE[rx0.iBase + rx0.iPut] =  LOC_BYTE(UART2BASE);	   
 217   1         	  	if(++rx0.iPut == rx0.iLen ){
 218   1      			rx0.iPut = 0;
 219   1      		}
 220   1      	}
 221   1      	
 222   1      	UART_IIR  =  LOC_BYTE(UART3BASE+UARTIIR_OFFSET);	
 223   1      	if ((UART_IIR & 0x04)) {					//从遥控器接收
 224   1      		XBYTE[rx2.iBase + rx2.iPut] =  LOC_BYTE(UART3BASE);	   
 225   1         	  	if(++rx2.iPut == rx2.iLen ){
 226   1      			rx2.iPut = 0;
 227   1      		}
 228   1      		telecontrol_tmr_cnt = 0;
 229   1      	}	
 230   1      */		     
 231   1      }// end of Timer0()
 232          
 233          void External0(void) interrupt 0
 234          {
 235   1      	/*if(g711data< 0x7000) {
 236   1      	  XBYTE[g711data+ext0cnt] = LOC_BYTE(G711_ADDR);
 237   1      	  XBYTE[g711data+ext0cnt] = LOC_BYTE(G711_ADDR);
 238   1      	  XBYTE[g711data+ext0cnt++] = LOC_BYTE(0x9f01);
 239   1      	}  
 240   1      	 if(ext0cnt==255)
 241   1      	   g711data += 0x100;
C51 COMPILER V6.00i UART                                                                   10/22/2004 10:43:05 PAGE 5   

 242   1      	  _nop_();
 243   1      	*/
 244   1      	ext0cnt= LOC_BYTE(G711_ADDR);
 245   1      	ext0cnt= LOC_BYTE(0x9f01);
 246   1      	LOC_BYTE(G711_ADDR)= ext0cnt;
 247   1      }
 248          
 249          void External1(void) interrupt 2
 250          {
 251   1      	uint8 ReadIntID,LSRtmp,i;
 252   1      		
 253   1      	//UART1(NULL)
 254   1      	if((LOC_BYTE(CPLDINTR_ADDR) & 0x01) ){		
 255   2      		ReadIntID = LOC_BYTE(UART1BASE+UARTIIR_OFFSET);			
 256   2          		switch ((ReadIntID & 0x0f) ) {
 257   3          	      		case 0x06: //LSR
 258   3          	      			LSRtmp = LOC_BYTE(UART1BASE+UARTLSR_OFFSET);	
 259   3          	      			break;
 260   3          	     		case 0x04: //RBR
 261   3          	     			i =  LOC_BYTE(UART1BASE);	//TRIGGER LEVEL = 1 CHARACTOR     	  			
 262   3          	                	break;
 263   3          	      		case 0x0c: //time_out
 264   3          	      			i = LOC_BYTE(UART1BASE);
 265   3                              	break;
 266   3                   		case 0x02: //THRE 
 267   3                   			i = LOC_BYTE(UART1BASE+UARTIIR_OFFSET);             			
 268   3                   			//LOC_BYTE(UART1BASE) = 0x55;	//Can send 1-16 charactor once.             			
 269   3                                     	break;
 270   3                              default: break;
 271   3                    	}
 272   2      	}
 273   1      	
 274   1      	//UART2(连接MCU)
 275   1      	if((LOC_BYTE(CPLDINTR_ADDR) & 0x02) ){		
 276   2      		ReadIntID = LOC_BYTE(UART2BASE+UARTIIR_OFFSET);			
 277   2          		switch ((ReadIntID & 0x0f) ) {
 278   3          	      		case 0x06: //LSR
 279   3          	      			LSRtmp = LOC_BYTE(UART2BASE+UARTLSR_OFFSET);	
 280   3          	      			break;
 281   3          	     		case 0x04: //RBR
 282   3          	     			XBYTE[rx0.iBase + rx0.iPut] =  LOC_BYTE(UART2BASE);	//TRIGGER LEVEL = 1 CHARACTOR  
 283   3         	  					if(++rx0.iPut == rx0.iLen ){
 284   4      							rx0.iPut = 0;
 285   4      						}
 286   3          	                	break;
 287   3          	      		case 0x0c: //time_out
 288   3          	      			i = LOC_BYTE(UART2BASE);
 289   3                              	break;
 290   3                   		case 0x02: //THRE 
 291   3                   			i = LOC_BYTE(UART2BASE+UARTIIR_OFFSET);             			
 292   3                   			//LOC_BYTE(UART2BASE) = 0x55;	//Can send 1-16 charactor once.             			
 293   3                                     	break;
 294   3                              default: break;
 295   3                    	}
 296   2      	}
 297   1      	
 298   1      	//UART3(连接遥控器)
 299   1      	if((LOC_BYTE(CPLDINTR_ADDR) & 0x04) ){		
 300   2      		ReadIntID = LOC_BYTE(UART3BASE+UARTIIR_OFFSET);			
 301   2          		switch ((ReadIntID & 0x0f) ) {
 302   3          	      		case 0x06: //LSR
 303   3          	      			LSRtmp = LOC_BYTE(UART3BASE+UARTLSR_OFFSET);	
C51 COMPILER V6.00i UART                                                                   10/22/2004 10:43:05 PAGE 6   

 304   3          	      			break;
 305   3          	     		case 0x04: //RBR						
 306   3      						XBYTE[rx2.iBase + rx2.iPut] =  LOC_BYTE(UART3BASE);	//TRIGGER LEVEL = 1 CHARACTOR  
 307   3         	  					if(++rx2.iPut >= rx2.iLen ){
 308   4      							rx2.iPut = 0;
 309   4      						}																						
 310   3            					break;
 311   3          	      		case 0x0c: //time_out
 312   3          	      			i = LOC_BYTE(UART3BASE);
 313   3                              break;
 314   3                   		case 0x02: //THRE 
 315   3                   			i = LOC_BYTE(UART3BASE+UARTIIR_OFFSET);             			
 316   3                   			//LOC_BYTE(UART3BASE) = 0x55;	//Can send 1-16 charactor once.             			
 317   3                              break;
 318   3                              default: break;
 319   3                    	}
 320   2      	}
 321   1      	
 322   1      	//UART4(Codec)
 323   1      	if((LOC_BYTE(CPLDINTR_ADDR) & 0x08) ){		
 324   2      		ReadIntID = LOC_BYTE(UART4BASE+UARTIIR_OFFSET);			
 325   2          		switch ((ReadIntID & 0x0f) ) {
 326   3          	      		case 0x06: //LSR
 327   3          	      			LSRtmp = LOC_BYTE(UART4BASE+UARTLSR_OFFSET);	
 328   3          	      			break;
 329   3          	     		case 0x04: //RBR  
 330   3        	     				i = LOC_BYTE(UART4BASE);							
 331   3          	                break;
 332   3          	      		case 0x0c: //time_out
 333   3          	      			i = LOC_BYTE(UART4BASE);
 334   3                              	break;
 335   3                   		case 0x02: //THRE 
 336   3                   			i = LOC_BYTE(UART4BASE+UARTIIR_OFFSET);             			
 337   3                   			//LOC_BYTE(UART4BASE) = 0x55;	//Can send 1-16 charactor once.             			
 338   3                                     	break;
 339   3                              default: break;
 340   3                    	}
 341   2      	}
 342   1      } // end of External1()
 343          
 344          #if 0
              uint8  SetBaudRate(uint16 uart_addr, uint8 Rate )
              {	
              	uint8 tmp;
              	
              	LOC_BYTE(uart_addr + UARTMCR_OFFSET) = EXTINTDIS;	  //DISABLE EXTINT
              	tmp = LOC_BYTE(uart_addr + UARTLCR_OFFSET);
              	LOC_BYTE(uart_addr + UARTLCR_OFFSET) = tmp | LCRDLAB;     //LCRDLAB=1 Access DLL and DLM. 
              	LOC_BYTE(uart_addr + UARTDLL_OFFSET) = RATE9600;                      
              	LOC_BYTE(uart_addr + UARTDLM_OFFSET) = 0;
              	LOC_BYTE(uart_addr + UARTLCR_OFFSET) &= 0x7f;		  //LCR7=0 to Access Receiver Buffer	
              	LOC_BYTE(uart_addr + UARTMCR_OFFSET) = EXTINTENABLE;	  //ENABLE EXTINT	
              }
              #endif
 358          
 359          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1576    ----
   CONSTANT SIZE    =    119    ----
   XDATA SIZE       =     64      13
C51 COMPILER V6.00i UART                                                                   10/22/2004 10:43:05 PAGE 7   

   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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