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

📄 uart.lst

📁 基于51平台的串口一扩五芯片GM8125的测试程序
💻 LST
字号:
C51 COMPILER V7.50   UART                                                                  03/09/2005 10:13:44 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: E:\学习工具\Keil51\C51\BIN\C51.EXE uart.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************************
   2          * 文件:uart.c
   3          * 功能:UART0和UART1基本操作程序库
   4          * 作者:宋智宁
   5          * 日期:2005.3.8
   6          * 备注:支持P89C669,中断服务程序由用户来修改
   7          *********************************************************************************/
   8          #include "config.h"
   9          
  10          /******************************************************************************
  11          * 名称:Uart_Init()
  12          * 功能:UART初始化子程序
  13          * 入口参数:bit uart_no --选择串口(0或1)
  14          *           unsigned char mode--串口模式
  15          *                       unsigned int bd_rate--常用波特率
  16          * 出口参数:无
  17          * 使用全局变量:无
  18          * 说明:(1) CPU:P89C669
  19          *               (2) 晶振频率:11.0592 MHz
  20          *               (3) 机器周期:0.54 us
  21          *               (4) UART0: 用TIMER1 ; UART1: 用BRG      
  22          *               (5) 注意串口工作方式和中断的开启
  23          ******************************************************************************/
  24          void Uart_Init(bit uart_no, unsigned char mode, unsigned int bd_rate)
  25          {
  26   1       unsigned int timerval;
  27   1      
  28   1       EA = 0; //初始化时关总中断
  29   1      
  30   1       if(!uart_no) //uart0
  31   1       {
  32   2      //----Timer1-Init-----------------------------
  33   2        TMOD = (TMOD&0x0f)+0x20; //TIMER1,MODE2
  34   2      
  35   2        timerval = 0x00 - 57600/bd_rate; //BD_RATE = (fosc/(6*N))/32;
  36   2        TR1 = 0; 
  37   2        TH1 = (unsigned char)timerval;
  38   2        TL1 = (unsigned char)timerval;  
  39   2        TR1 = 1;  
  40   2      //----Uart0-Init-----------------------------
  41   2        PCON &= 0xBF;  //SMOD0 = 0;  
  42   2        if(mode<=3)
  43   2        {    
  44   3          S0CON = (mode<<6) | 0x10;  //SERIAL0 MODE=mode ; REN=1; SM2=0
*** ERROR C202 IN LINE 44 OF UART.C: 'S0CON': undefined identifier
  45   3        }
  46   2      
  47   2        #if SERIAL_INT_EN==1
                  ES0 = 1;  
                #else
  50   2          ES0 = 0;
*** ERROR C202 IN LINE 50 OF UART.C: 'ES0': undefined identifier
  51   2        #endif
  52   2       }
  53   1       else  //uart1
C51 COMPILER V7.50   UART                                                                  03/09/2005 10:13:44 PAGE 2   

  54   1       {
  55   2      //----BRG-Init-------------------------------   
  56   2        timerval = (57600/bd_rate)*32*6 - 16;   //bd_rate = fosc/(brate+16);
  57   2        BRGCON &= 0xFE; //BRGEN = 0;
*** ERROR C202 IN LINE 57 OF UART.C: 'BRGCON': undefined identifier
  58   2        BRGR1 = (unsigned char)(timerval>>8);
*** ERROR C202 IN LINE 58 OF UART.C: 'BRGR1': undefined identifier
  59   2        BRGR0 = (unsigned char)timerval; 
*** ERROR C202 IN LINE 59 OF UART.C: 'BRGR0': undefined identifier
  60   2        BRGCON |= 0x01; //BRGEN = 1;
*** ERROR C202 IN LINE 60 OF UART.C: 'BRGCON': undefined identifier
  61   2      //----Uart1-Init-----------------------------  
  62   2        PCON &= 0x7F;  // SMOD1 = 0;
  63   2         if(mode<=3)
  64   2        {    
  65   3          S1CON = (mode<<6) | 0x10;  //SERIAL1 MODE=mode ; REN=1; SM2=0
*** ERROR C202 IN LINE 65 OF UART.C: 'S1CON': undefined identifier
  66   3        }
  67   2         
  68   2        #if SERIAL_INT_EN==1
                  ES1 = 1;  
                #else
  71   2          ES1 = 0;
*** ERROR C202 IN LINE 71 OF UART.C: 'ES1': undefined identifier
  72   2        #endif
  73   2       } 
  74   1       EA = 1; //开总中断 (注意串行中断的ISR)
  75   1      }
  76          
  77          /******************************************************************************
  78          * 名称:Uart_Send_Byte()
  79          * 功能:Uart发送 N Byte子程序
  80          * 入口参数:bit uart_no --选择串口(0或1)
  81          *           unsigned char buf[] --发送数据指针
  82          *                       unsigned char num --发送字节数
  83          * 出口参数:无
  84          * 使用全局变量:无
  85          ******************************************************************************/
  86          void Uart_Send_Byte(bit uart_no, unsigned char buf[], unsigned char num)
  87          {
  88   1        unsigned char i; 
  89   1      
  90   1        if(!uart_no)  //uart0
  91   1        {
  92   2          #if SERIAL_INT_EN==1
                    ES0 = 0; //关中断
                      #endif
  95   2              for(i=0; i<num; i++)
  96   2          { 
  97   3            S0BUF = buf[i];    //Uart
*** ERROR C202 IN LINE 97 OF UART.C: 'S0BUF': undefined identifier
  98   3            while(!TI_0);  //wait for send
*** ERROR C202 IN LINE 98 OF UART.C: 'TI_0': undefined identifier
  99   3            TI_0 = 0;
*** ERROR C202 IN LINE 99 OF UART.C: 'TI_0': undefined identifier
 100   3              }
 101   2              #if SERIAL_INT_EN==1
                    ES0 = 1; //开中断
                      #endif
 104   2        }
 105   1        else    //uart1
 106   1        {
C51 COMPILER V7.50   UART                                                                  03/09/2005 10:13:44 PAGE 3   

 107   2          #if SERIAL_INT_EN==1
                    ES1 = 0; //关中断
                      #endif
 110   2          for(i=0; i<num; i++)
 111   2          { 
 112   3            S1BUF = buf[i];    //Uart
*** ERROR C202 IN LINE 112 OF UART.C: 'S1BUF': undefined identifier
 113   3            while(!TI_1);  //wait for send
*** ERROR C202 IN LINE 113 OF UART.C: 'TI_1': undefined identifier
 114   3            TI_1 = 0;
*** ERROR C202 IN LINE 114 OF UART.C: 'TI_1': undefined identifier
 115   3              }
 116   2          #if SERIAL_INT_EN==1
                    ES1 = 1; //开中断
                      #endif
 119   2        }
 120   1      
 121   1      }
 122          /******************************************************************************
 123          * 名称:Uart_Send_Str()
 124          * 功能:Uart顺序发送字符串子程序
 125          * 入口参数:bit uart_no --选择串口(0或1)
 126          *           unsigned char *str_dat ----字符串指针
 127          * 出口参数:无
 128          * 使用全局变量:无
 129          ******************************************************************************/
 130          void Uart_Send_Str(bit uart_no, unsigned char *str_p)
 131          {
 132   1        if(!uart_no)  //uart0
 133   1        {         
 134   2          #if SERIAL_INT_EN==1
                    ES0 = 0; //关中断
                      #endif 
 137   2          while((*str_p)!=0)
 138   2          {
 139   3            S0BUF = (*str_p++);        //uart0
*** ERROR C202 IN LINE 139 OF UART.C: 'S0BUF': undefined identifier
 140   3            while(!TI_0);  //wait for send
*** ERROR C202 IN LINE 140 OF UART.C: 'TI_0': undefined identifier
 141   3            TI_0 = 0;
*** ERROR C202 IN LINE 141 OF UART.C: 'TI_0': undefined identifier
 142   3          }
 143   2              #if SERIAL_INT_EN==1
                    ES0 = 1; //开中断
                      #endif
 146   2        }
 147   1        else    //uart1
 148   1        {
 149   2          #if SERIAL_INT_EN==1
                    ES1 = 0; //关中断
                      #endif
 152   2          while((*str_p)!=0)
 153   2          {
 154   3            S1BUF = (*str_p++);        //uart1
*** ERROR C202 IN LINE 154 OF UART.C: 'S1BUF': undefined identifier
 155   3            while(!TI_1);  //wait for send
*** ERROR C202 IN LINE 155 OF UART.C: 'TI_1': undefined identifier
 156   3            TI_1 = 0;
*** ERROR C202 IN LINE 156 OF UART.C: 'TI_1': undefined identifier
 157   3          }    
 158   2              #if SERIAL_INT_EN==1
                    ES1 = 1; //开中断
C51 COMPILER V7.50   UART                                                                  03/09/2005 10:13:44 PAGE 4   

                      #endif 
 161   2        }
 162   1      }
 163          /******************************************************************************
 164          * 名称:Uart_Rev_Byte()
 165          * 功能:Uart等待接收 N Byte中断子程序
 166          * 入口参数:bit uart_no --选择串口(0或1)
 167          *           unsigned char buf[] --接收缓冲区
 168          *                       unsigned char num --接收字节数
 169          * 出口参数:无
 170          * 使用全局变量:无
 171          ******************************************************************************/
 172          void Uart_Rev_Byte(bit uart_no, unsigned char buf[], unsigned char num)
 173          {
 174   1        unsigned char i;
 175   1          
 176   1        if(!uart_no)  //uart0
 177   1        {
 178   2          #if SERIAL_INT_EN==1
                    ES0 = 0; //关中断
                      #endif 
 181   2              for(i=0; i<num; i++)
 182   2          { 
 183   3            while(!RI_0);  //uart0
*** ERROR C202 IN LINE 183 OF UART.C: 'RI_0': undefined identifier
 184   3            buf[i] = S0BUF;   //receive data
*** ERROR C202 IN LINE 184 OF UART.C: 'S0BUF': undefined identifier
 185   3            RI_0 = 0;
*** ERROR C202 IN LINE 185 OF UART.C: 'RI_0': undefined identifier
 186   3          }
 187   2              #if SERIAL_INT_EN==1
                    ES0 = 1; //开中断
                      #endif 
 190   2        }
 191   1        else    //uart1
 192   1        {
 193   2          #if SERIAL_INT_EN==1
                    ES1 = 0; //关中断
                      #endif 
 196   2              for(i=0; i<num; i++)
 197   2          { 
 198   3            while(!RI_1);  //uart1
*** ERROR C202 IN LINE 198 OF UART.C: 'RI_1': undefined identifier
 199   3            buf[i] = S1BUF;   //receive data
*** ERROR C202 IN LINE 199 OF UART.C: 'S1BUF': undefined identifier
 200   3            RI_1 = 0; 
*** ERROR C202 IN LINE 200 OF UART.C: 'RI_1': undefined identifier
 201   3              }
 202   2              #if SERIAL_INT_EN==1
                    ES1 = 1; //开中断
                      #endif 
 205   2        }
 206   1      }
 207          
 208          
 209          #if SERIAL_INT_EN==1
              
              /******************************************************************************
              * 名称:ISR_Uart0_Rev()
              * 功能:Uart0接收数据中断服务程序
              * 入口参数:无
              * 出口参数:无
C51 COMPILER V7.50   UART                                                                  03/09/2005 10:13:44 PAGE 5   

              * 使用全局变量:unsigned char buf[]--接收缓冲区
              * 说明:本函数由用户根据需要修改
              ******************************************************************************/
              void ISR_Uart0_Rev(void) interrupt 4
              {
                //GM8125_Byte_Rev(); //GM8125数据接收子程序(供中断服务程序调用)
              }
              
              /******************************************************************************
              * 名称:ISR_Uart1_Rev()
              * 功能:Uart1接收数据中断服务程序
              * 入口参数:无
              * 出口参数:无
              * 使用全局变量:unsigned char buf[]--接收缓冲区
              * 说明:本函数由用户根据需要修改
              ******************************************************************************/
              void ISR_Uart1_Rev(void) interrupt 10
              {
                if(TI_1) //发送中断
                {
                  TI_1 = 0;
                      return; 
                }
                if(RI_1) //接收中断
                {
                  RI_1 = 0;
                  GM8125_Byte_Rev(S1BUF); //GM8125数据接收处理子程序(供中断服务程序调用)
                }
              }
              
              #endif

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

⌨️ 快捷键说明

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