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

📄 uart.lst

📁 该代码完成了在8051控制下MT8965完成g.711编解码的功能。
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.00i UART                                                                   10/22/2004 10:43:05 PAGE 1   


C51 COMPILER 6.00i, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN UART.OBJ
COMPILER INVOKED BY: G:\mc89c51\keilc51\Bin\C51.EXE UART.C DB OE LARGE ROM(LARGE) 

stmt level    source

   1          //#include <reg52.h>
   2          #include <intrins.h>
   3          //#include <stdio.h>
   4          //#include <string.h>
   5          #include <absacc.h>
   6          #include "intr_init.h"
   7          #include "type.h"
   8          #include "Port_reg.h"
   9          #include "General.h"
  10          #include "uart16554.h"
  11          
  12          
  13          data uint8 ext0cnt=0, extcnt;
  14          data uint16 g711data=0x6000;
  15          
  16          data uint8 UART_IIR;
  17          data uint8 led0_tmr_cnt, Led0Tmr=150;
  18          
  19          xdata Cmd_Basebuf tx0, rx0; 		//com2
  20          xdata Cmd_Basebuf tx1; 			//com1
  21          xdata Cmd_Basebuf rx2; 			//com3
  22          xdata Cmd_Basebuf tx3,rx3; 		//com4
  23          xdata Cmd_Basebuf tx4, rx4;		//com5(W78E516 SERIAL)
  24          
  25          code uint8 serial1[]="serial 1 tx ok!\n\r";
  26          code uint8 serial2[]="serial 2 tx ok!\n\r";
  27          code uint8 serial3[]="serial 3 tx ok!\n\r";
  28          code uint8 serial4[]="serial 4 tx ok!\n\r";
  29          code uint8 serial5[]="serial 5 tx ok!\n\r";
  30          code uint8 no_connect_ser4[]="Codec serial 4 no connect!\n\r";
  31          
  32          void test_xram(void)
  33          {
  34   1      	uint16 i;
  35   1      	
  36   1      	for(i=0x7f00; i<0x8000; i++){
  37   2      		XBYTE[i] = 0x55;			
  38   2      	}
  39   1      	
  40   1      	for(i=0x7f00; i<0x8000; i++){
  41   2      		if(XBYTE[i] != 0x55){
  42   3      			Led0Tmr = 50;
  43   3      			return;
  44   3      		}	
  45   2      	}
  46   1      	
  47   1      	Led0Tmr = 80;		
  48   1      }	
  49          
  50          
  51          void cmd_buf_init(void)
  52          {
  53   1      	tx0.iBase = TX0_BASE;
  54   1      	tx0.iLen = CMD_BUFFER_LEN;
  55   1      	tx0.iPut = 0;
C51 COMPILER V6.00i UART                                                                   10/22/2004 10:43:05 PAGE 2   

  56   1      	tx0.iGet = 0;
  57   1      
  58   1      	rx0.iBase = RX0_BASE;
  59   1      	rx0.iLen = CMD_BUFFER_LEN;
  60   1      	rx0.iPut = 0;
  61   1      	rx0.iGet = 0;
  62   1      
  63   1      	tx1.iBase = TX1_BASE;
  64   1      	tx1.iLen = CMD_BUFFER_LEN;
  65   1      	tx1.iPut = 0;
  66   1      	tx1.iGet = 0;
  67   1      
  68   1      	rx2.iBase = RX2_BASE;
  69   1      	rx2.iLen = CMD_BUFFER_LEN;
  70   1      	rx2.iPut = 0;
  71   1      	rx2.iGet = 0;
  72   1      	
  73   1      	tx3.iBase = TX3_BASE;
  74   1      	tx3.iLen = CMD_BUFFER_LEN;
  75   1      	tx3.iPut = 0;
  76   1      	tx3.iGet = 0;
  77   1      
  78   1      	rx3.iBase = RX3_BASE;
  79   1      	rx3.iLen = CMD_BUFFER_LEN;
  80   1      	rx3.iPut = 0;
  81   1      	rx3.iGet = 0;
  82   1      	
  83   1      	tx4.iBase = TX4_BASE;
  84   1      	tx4.iLen = CMD_BUFFER_LEN;
  85   1      	tx4.iPut = 0;
  86   1      	tx4.iGet = 0;
  87   1      
  88   1      	rx4.iBase = RX4_BASE;
  89   1      	rx4.iLen = CMD_BUFFER_LEN;
  90   1      	rx4.iPut = 0;
  91   1      	rx4.iGet = 0;		
  92   1      }
  93          
  94          void put_byte_data(Cmd_Basebuf *tx, uint8 senddata)
  95          {
  96   1      	XBYTE[tx->iBase + tx->iPut] = senddata;
  97   1      		if(++tx->iPut >= tx->iLen){
  98   2      			tx->iPut = 0;
  99   2      		}
 100   1      }
 101          
 102          void put_buf_data(Cmd_Basebuf *tx, uint8 *buf, uint8 len)
 103          {
 104   1      	uint8 i;
 105   1      	
 106   1      	for(i=0; i<len; i++){
 107   2      		XBYTE[tx->iBase + tx->iPut] = buf[i];
 108   2      		if(++tx->iPut >= tx->iLen){
 109   3      			tx->iPut = 0;
 110   3      		}
 111   2      	}	
 112   1      }
 113          
 114          
 115          void printf_com_ok(void)
 116          {	
 117   1      	put_buf_data((Cmd_Basebuf*)&tx1, serial1, sizeof(serial1));
C51 COMPILER V6.00i UART                                                                   10/22/2004 10:43:05 PAGE 3   

 118   1      	put_buf_data((Cmd_Basebuf*)&tx0, serial2, sizeof(serial2));	
 119   1      	//put_buf_data((Cmd_Basebuf*)&tx2, serial3, sizeof(serial3));
 120   1      	put_buf_data((Cmd_Basebuf*)&tx3, serial4, sizeof(serial4));	
 121   1      	put_buf_data((Cmd_Basebuf*)&tx4, serial5, sizeof(serial5));	
 122   1      }
 123          
 124          // DEFAULT BAUDRATE IS 9600 AT CRYSTAL IS 1.8432MHZ.
 125          void   UART_INIT(uint16 uart_addr, uint8 baud)
 126          {				
 127   1      	//FIFO mode, receive 1 bytes will innterrupt		
 128   1      	LOC_BYTE(uart_addr + UARTFCR_OFFSET) = TRIGGER_LEVEL1 | RESETTRAFIFO | RESETRECFIFO | FIFOEN;	
 129   1      	LOC_BYTE(uart_addr + UARTLCR_OFFSET) = LCRDLAB | DATA8;   //LCR7=1 to Access Divisor Latches
 130   1      	LOC_BYTE(uart_addr + UARTDLL_OFFSET) = baud;                      
 131   1      	LOC_BYTE(uart_addr + UARTDLM_OFFSET) = 0;						
 132   1      	LOC_BYTE(uart_addr + UARTLCR_OFFSET) &= 0x7f;		  //LCR7=0 to Access Receiver Buffer	
 133   1      	LOC_BYTE(uart_addr + UARTIER_OFFSET) = ERBI; // ETBEI | ERLSI | EDSSI;		
 134   1      	LOC_BYTE(uart_addr + UARTMCR_OFFSET) = EXTINTENABLE;	  //ENABLE EXTINT					
 135   1      }
 136          
 137          void TL16554Init(void)
 138          {
 139   1      	UART_INIT(UART1BASE, RATE9600);
 140   1      	UART_INIT(UART2BASE, RATE9600);
 141   1      	UART_INIT(UART3BASE, RATE9600);
 142   1      	UART_INIT(UART4BASE, RATE9600);
 143   1      }
 144          
 145          /*
 146          void send_char_com(uint8 ch)  
 147          {
 148              SBUF=ch;
 149              while(TI==0);
 150              TI=0;
 151          }
 152          */
 153          
 154          void Serial(void )    interrupt 4
 155          {	 
 156   1      	if(TI){
 157   2      		TI = 0;
 158   2      		//SBUF = 0x55;
 159   2      	}
 160   1      	
 161   1      	if(RI){        
 162   2      		RI = 0;
 163   2              XBYTE[rx4.iBase + rx4.iPut] =  SBUF;	 
 164   2         	  	if(++rx4.iPut == rx4.iLen ){
 165   3      			rx4.iPut = 0;
 166   3      		}
 167   2      	}	
 168   1      } // end of Serial()
 169          
 170          
 171          void Timer0(void) interrupt 1	//2.0ms
 172          {
 173   1      	//int i;
 174   1      	
 175   1      	TR0=0;
 176   1      	TH0= TMR_HI;
 177   1      	TL0= TMR_LO;
 178   1      	TR0=1;
 179   1      
C51 COMPILER V6.00i UART                                                                   10/22/2004 10:43:05 PAGE 4   

 180   1      	if(++led0_tmr_cnt >= Led0Tmr){		//RUN LED
 181   2      		led0_tmr_cnt = 0;		
 182   2      		P1_2 = ~P1_2;		
 183   2      	}

⌨️ 快捷键说明

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