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

📄 uart.lst

📁 王绍伟先生的单片机入门资料
💻 LST
字号:
C51 COMPILER V7.10   UART                                                                  01/02/2005 16:12:27 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN .\Uart.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE ..\SourceFile\Uart.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\
                    -Uart.lst) OBJECT(.\Uart.obj)

line level    source

   1          /*************************************************/
   2          
   3          /**************串行口控制********************/
   4          
   5          /*************2003年1月24日*********************/
   6          
   7          /************WROTE BY WANGSW********************/
   8          
   9          /*
  10          UART所需的定时器由T1或T2提供,而不是T0
  11          
  12                  SCON:串行口控制寄存器
  13                  SM0(9F),SM1(9E)
  14                          SM0,SM1|工作方式|        说明                   |所用波特率 
  15                             0,0     |  方式0       |同步移位寄存器|       Fosc/12                 
  16                             0,1     |  方式1       | 10位异步收发       |由定时器控制 
  17                     1,0     |  方式2       | 11位异步收发       |Fosc/32或Fosc/64     
  18                     1,1     |  方式3       | 11位异步收发       |由定时器控制
  19                 SM2(9D)          多机通信0:单机,1:多机
  20                 REN(9C)          接收控制0:禁止接收,1:允许接收    
  21                 TB8      (9B)            发送数据第九位
  22                 RB8      (9A)            接收数据第九位
  23                 TI       (99)            发送中断标记
  24                 RI       (98)            接收中断标志
  25          */
  26          
  27          #include "reg52x2.h"
  28          #include <stdlib.h>
  29          #include <stdio.h>
  30          #include "define.h"
  31          
  32          #include "string.h"
  33          
  34          #include "uart.h"
  35          
  36          static void UartInterruptServer(void);
  37          
  38          
  39          
  40          
  41          
  42          /******************************************************************************************
  43          *函数名:                UartInterruptServer
  44          *参数:                  无
  45          *返回值:                无
  46          *描述:                  串口中断服务子程序
  47          *编写:                  王绍伟
  48          *版本信息:              V1.0                    2003年8月15日
  49          ******************************************************************************************/
  50          static void UartInterruptServer(void) interrupt 4
  51          {
  52   1              ES = 0;
  53   1              RI = 0;
  54   1              //msg_queue_in(MSG_KEY, SBUF);          /*用串口模拟按键*/
C51 COMPILER V7.10   UART                                                                  01/02/2005 16:12:27 PAGE 2   

  55   1      
  56   1              msg_queue_in(MSG_UART,SBUF);
  57   1              ES=1;
  58   1      }
  59          
  60          
  61          
  62          
  63          
  64          
  65          
  66          
  67          
  68          /******************************************************************************************
  69          *函数名:                uart_init
  70          *参数:                  eBaudRate
  71          *返回值:                无
  72          *描述:                  串口初始化程序,主要设定了波特率以及T1作为波特率产生
  73                                          器的工作方式等,并且指定了串口数据以及命令存放堆栈
  74          *编写:                  王绍伟
  75          *版本信息:              V1.0                    2003年8月15日
  76          ******************************************************************************************/
  77          extern void uart_init(UartBaudrate eBaudRate)
  78          {
  79   1              ES = 0;                 /*关串行口中断*/        
  80   1              
  81   1              
  82   1      
  83   1              SETBIT(PCON, 7);
  84   1              
  85   1              TMOD &= 0x0F;
  86   1              TMOD |= 0x20;
  87   1              ET1 = 0;                                /*中断无效*/
  88   1              TH1 = eBaudRate;
  89   1              TL1 = eBaudRate;
  90   1              TR1 = 1;                                /*定时器开启*/
  91   1              SCON = 0x50;
  92   1      
  93   1              ES = 1;                         /*串行口中断printf需要串口关闭*/
  94   1      }
  95          
  96          
  97          extern void uart_send_byte(byte val)
  98          {
  99   1              bool bES;
 100   1              bES = ES;               
 101   1              ES = 0;
 102   1              SBUF = val;
 103   1              while(!TI);
 104   1              TI = 0;
 105   1              ES = bES;
 106   1      }
 107          
 108          
 109          /******************************************************************************************
 110          *函数名:                uart_send_data
 111          *参数:                  pData
 112          *返回值:                len
 113          *描述:                  以串口发送以pData为首地址,len长度的字节数据
 114          *编写:                  王绍伟
 115          *版本信息:              V1.0                    2003年8月15日
 116          ******************************************************************************************/
C51 COMPILER V7.10   UART                                                                  01/02/2005 16:12:27 PAGE 3   

 117          extern void uart_send_string(byte* pData, byte len)
 118          {
 119   1              bool bES;
 120   1              byte data i;
 121   1              byte data j;
 122   1              bES = ES;               /*禁止串口产生中断,而以查询的方式发送数据*/
 123   1              ES = 0;
 124   1              if(len)
 125   1              {
 126   2                      i = len;
 127   2                      while(i--)
 128   2                      {
 129   3                              SBUF = *pData++;
 130   3                              while(!TI);
 131   3                              TI = 0;
 132   3                      }
 133   2              }
 134   1              else
 135   1              {
 136   2                      i = strlen(pData);
 137   2                      while(i--)
 138   2                      {
 139   3                              j = *pData++;
 140   3                              if(j == 0x0A)
 141   3                              {
 142   4                                      SBUF = 0x0D;
 143   4                                      while(!TI);
 144   4                                      TI = 0;
 145   4                              }
 146   3                              SBUF = j;
 147   3                              while(!TI);
 148   3                              TI = 0;
 149   3                      }
 150   2              }
 151   1      
 152   1              ES = bES;
 153   1      }
 154          
 155          
 156          
 157          
 158          /******************************************************************************************
 159          *函数名:                uart_process
 160          *参数:                  无
 161          *返回值:                无
 162          *描述:                  串口处理程序,
 163          *编写:                  王绍伟
 164          *版本信息:              V1.0                    2003年8月15日
 165          ******************************************************************************************/
 166          extern void uart_process(void)
 167          {
 168   1      /*
 169   1              添加自己的代码
 170   1      */
 171   1      }
 172          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    240    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----       3
C51 COMPILER V7.10   UART                                                                  01/02/2005 16:12:27 PAGE 4   

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


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

⌨️ 快捷键说明

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