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

📄 uart.lst

📁 基于STC51通过GPS自主定位导航FAT文件系统程序
💻 LST
字号:
C51 COMPILER V7.20   UART                                                                  11/03/2007 17:08:45 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN .\output\uart.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE src\driver\uart.c LARGE ORDER INCDIR(.\src\include) DEBUG OBJECTEXTEND PRIN
                    -T(.\output\uart.lst) OBJECT(.\output\uart.obj)

line level    source

   1          //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&串口驱动&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
   2          //*文件名称:uart.c
   3          
   4          //*文件作用:串口驱动
   5          
   6          //*文件作者:翟  鹏
   7          
   8          //*创建日期:2004年5月
   9          //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  10          
  11          
  12          
  13          #include <include.h>
  14          
  15          
  16          
  17          uchar idata uart_fifo[UART_BUFF_SIZE];//接收FIFO
  18          uchar idata  uart_fifo_in=0;//写指针
  19          uchar idata  uart_fifo_out=0;//读指针
  20          
  21          
  22          
  23          //********************************************************************************************************
             -***************
  24          //函数作用:SP2349中断服务程序
  25          //参数说明:无
  26          //注意事项:注意中断号码和优先级设置
  27          //返回说明:无
  28          //********************************************************************************************************
             -***************
  29          static void uart_isr(void) interrupt IRQ_UART //using USE_UART
  30          {
  31   1              if(RI)
  32   1              {
  33   2                      uart_fifo[uart_fifo_in++]=SBUF;//接收串口一个字符
  34   2                      if(uart_fifo_in>=UART_BUFF_SIZE)uart_fifo_in=0;//如果接收缓冲区满       
  35   2                      RI=0;//清除中断标志
  36   2              }
  37   1      }
  38          
  39          //********************************************************************************************************
             -***************
  40          //*函数作用:uart初始化---串口波特率设置 停止位设置
  41          //*参数说明:
  42          //*注意事项:
  43          //*返回说明:无
  44          //********************************************************************************************************
             -***************
  45          void uart_init(ulong baud)
  46          {               
  47   1              ES=0;//关中断
  48   1              PS=0;//串口中断--低优先级
  49   1              SCON=0x58;//串口1方式1 8位数据位 1位停止位
  50   1      
C51 COMPILER V7.20   UART                                                                  11/03/2007 17:08:45 PAGE 2   

  51   1              ET1=0;//关闭timer1中断
  52   1              PT1=0;//timer1中断--低优先级
  53   1              TR1=0;//关闭timer1
  54   1              TMOD|=0x20;//timer1方式2---波特率发生器
  55   1      
  56   1              //波特率倍增
  57   1              #ifdef DOUBLE_BAUDRATE
  58   1              PCON=0x80;//设置波特率倍增寄存器
  59   1              baud>>=1;//波特率倍增
  60   1              #endif
  61   1              TH1=256-((ulong)F_OSC)/32/CLOCK_COUNT/baud;//timer1设置计数初值---TH1=256-F_OSC/32/CLOCK_COUNT/baud
  62   1              TL1=256-((ulong)F_OSC)/32/CLOCK_COUNT/baud;//timer1装载初始化值---TL1=256-F_OSC/32/CLOCK_COUNT/baud
  63   1              TR1=1;//开启timer1
  64   1              
  65   1              uart_flush();
  66   1              
  67   1              ES=1;//开中断
  68   1      }
  69          
  70          //********************************************************************************************************
             -***************
  71          //函数作用:清除串口缓存的数据
  72          //参数说明:无
  73          //注意事项:
  74          //返回说明:无
  75          //********************************************************************************************************
             -***************
  76          void uart_flush(void)
  77          {
  78   1              uart_fifo_in=uart_fifo_out=0;
  79   1      }
  80          
  81          //********************************************************************************************************
             -***************
  82          //函数作用:查询串口 如果有数据读取一个字节
  83          //参数说明:ch---读取字符存放地址
  84          //注意事项:
  85          //返回说明:如果有数据返回1
  86          //********************************************************************************************************
             -***************
  87          uchar uart_read_char(uchar *ch)
  88          {
  89   1              if(uart_fifo_out==uart_fifo_in)return 0;
  90   1              *ch=uart_fifo[uart_fifo_out];//得到当前要读取的字符
  91   1              uart_fifo_out++;//指向下一个要读取的字符
  92   1              if(uart_fifo_out==UART_BUFF_SIZE)uart_fifo_out=0;//如果到了fifo末尾 则重从头开始
  93   1              return 1;
  94   1      }
  95          
  96          //********************************************************************************************************
             -***************
  97          //函数作用:向串口发送一个字符
  98          //参数说明:ch---要发送的字符
  99          //注意事项:
 100          //返回说明:无
 101          //********************************************************************************************************
             -***************
 102          void uart_write_char(uchar ch)
 103          {       
 104   1              SBUF=ch;
 105   1              while(TI==0);//如果TI=0说明还没有发送完毕---死等
 106   1              TI=0;//发送完毕以后--TI清0
C51 COMPILER V7.20   UART                                                                  11/03/2007 17:08:45 PAGE 3   

 107   1      }
 108          
 109          //********************************************************************************************************
             -***************
 110          //函数作用:向串口发送字符串
 111          //参数说明:str---要发送的字符串
 112          //注意事项:
 113          //返回说明:无
 114          //********************************************************************************************************
             -***************
 115          void uart_write_str(uchar *str)
 116          {
 117   1              while(*str)uart_write_char(*str++);
 118   1      }
 119          
 120          //********************************************************************************************************
             -***************
 121          //函数作用:向串口发送缓冲区的数据
 122          //参数说明:
 123          //注意事项:
 124          //返回说明:无
 125          //********************************************************************************************************
             -***************
 126          //void uart_write_buf(uchar *buffer, uint length)
 127          //{     
 128          //      while(length--)
 129          //      {
 130          //              uart_write_char(*buffer++);
 131          //      }
 132          //}
 133          
 134          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    226    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----       7
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =     18    ----
   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 + -