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

📄 uart.lst

📁 基于单片机的32M U盘程序
💻 LST
字号:
C51 COMPILER V7.20   UART                                                                  11/17/2002 14:00:15 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE uart.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          * Copyright (c) 2004,北京博创兴业科技有限公司
   3          * All rights reserved.
   4          * 
   5          * 文件名称:uart.c
   6          * 文件标识:uart
   7          * 摘    要:串口通讯的函数实现
   8          * 
   9          * 当前版本:2.0
  10          * 作    者:Kent
  11          * 完成日期:2004年5月20日
  12          *
  13          * 取代版本:1.1 
  14          * 原作者  :Frank
  15          * 完成日期:2003年8月10日
  16          */
  17          
  18          #include <REGSND1.H>
  19          #include "uart.h"
  20          
  21          #define AT89C51SND1 1   //如果使用的是AT89C51SND1
  22          
  23          
  24          /*------------------------------------------------------------------------------
  25          ------------------------------------------------------------------------------*/
  26          char hex[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
  27          
  28          /*------------------------------------------------------------------------------
  29          初使化串口
  30          ------------------------------------------------------------------------------*/
  31          void init_uart(int fre)                  //开发板用的晶振是20M,1M = 1000,不等于1024
  32          {
  33   1      #if AT89C51SND1 
  34   1              if (fre == 1200)              //波特率为1200bps
  35   1              {
  36   2                      TMOD = 0x20;    ////下面几句用来产生波特率8-bit Auto-ReloadTimer/Counter using timer 1
  37   2                      TH1  = 0xa9;
  38   2                      TL1  = 0xa9;
  39   2                      SCON = 0x50;   //8 BIT UART, BAUD RATE VARIABLE
  40   2                      PCON = PCON | 0x80;       //SMOD = 1, Double baud rate bit k=2
  41   2                      TR1  = 1;  //Timer 1 run control bit. Set/ckared by softwareto turn Timer/Counter 1 ON/OFF.
  42   2              }
  43   1      #else
              
              #endif
  46   1      }
  47          
  48          /*--------------------------------------------------------------------
  49          当输出仅为字符串时可使用
  50          ---------------------------------------------------------------------*/
  51          void printu(char * c)   
  52          {
  53   1      
  54   1          int i = 0, j = 0;
  55   1              char ct = *c;
C51 COMPILER V7.20   UART                                                                  11/17/2002 14:00:15 PAGE 2   

  56   1          init_uart(1200);
  57   1              while (ct != '\0')
  58   1              {
  59   2      #if AT89C51SND1
  60   2                      SBUF = ct;
  61   2      
  62   2                      while (!TI);   //Transmit interrupt tlag. Set by hardware at the end of the 8th bit time in mode O,or at
             - the
  63   2      //beginningof the stop bit in the other modes.Must be cleared by software.
  64   2                      
  65   2                      j++;
  66   2                      TI = 0;
  67   2                      ct = *(c + j);
  68   2                      
  69   2      #endif
  70   2              }
  71   1      
  72   1      }
  73          
  74          /*-----------------------------------------------------------------------
  75          当输出为字符串时可使用或含有一控制符时使用,格式符仅用于16进制输出
  76          格式控制符为%x,回车控制符为/n
  77          -----------------------------------------------------------------------*/
  78          void printuf(char * c, unsigned char cb) 
  79          {
  80   1              int i = 0;
  81   1              char ct = *c;
  82   1              char cx1;
  83   1              char cx2;
  84   1          
  85   1              init_uart(1200);
  86   1      
  87   1      #if AT89C51SND1
  88   1              while (ct != '\0')
  89   1              {
  90   2                      if (ct == '%')
  91   2                      {       
  92   3                              if (*(c + i + 1) == 'x')              
  93   3                              {
  94   4                                      i += 2;
  95   4                                      cx1 = cb / 16;
  96   4                                      cx2 = cb % 16;
  97   4      
  98   4                                      SBUF = hex[cx1];
  99   4      
 100   4                                      while (!TI);
 101   4                                      TI = 0;
 102   4                                      SBUF = hex[cx2]; 
 103   4      
 104   4                                      while (!TI);
 105   4                                      TI = 0;
 106   4                                      ct = *(c + i);
 107   4      
 108   4                                      continue;
 109   4                              }
 110   3                              
 111   3                      }
 112   2                      if (ct == '/')
 113   2                      {
 114   3                              if (*(c + i + 1) == 'n')
 115   3                              {
 116   4                                      i += 2;
C51 COMPILER V7.20   UART                                                                  11/17/2002 14:00:15 PAGE 3   

 117   4                                      SBUF = 13;
 118   4      
 119   4                                      while (!TI);
 120   4                                      TI = 0;
 121   4                                      SBUF = 10;
 122   4      
 123   4                                      while (!TI);
 124   4                                      TI = 0;
 125   4                                      ct = *(c + i);
 126   4      
 127   4                                      continue;
 128   4                              }
 129   3                      }
 130   2                      SBUF = ct;
 131   2      
 132   2                      while (!TI);
 133   2                      TI = 0;
 134   2                      i++;
 135   2                      ct = *(c + i);
 136   2              }
 137   1      #endif
 138   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    346    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     16      12
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -