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

📄 print.lst

📁 C51操作5767收音机芯片(内置杭州的几个台)
💻 LST
字号:
C51 COMPILER V7.09   PRINT                                                                 07/05/2007 19:59:43 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE PRINT
OBJECT MODULE PLACED IN print.obj
COMPILER INVOKED BY: D:\A\KEIL\C51\BIN\C51.EXE print\print.c BROWSE DEBUG OBJECTEXTEND PRINT(.\print.lst) OBJECT(print.o
                    -bj)

line level    source

   1          /****************************************************************
   2          * print Lite for 51 (#fal)
   3          * printf51简化版(编译后代码体积小)
   4                  void print_init(void);                          //串口初始化
   5                  void print_Str(const char*p);           //串口输出字符串
   6                  void print_Char(unsigned char c);       //串口输出单个字符
   7                  void print_Dec(unsigned char n,unsigned char flag);     //n:需要转换的数  flag:是否加回车
   8                  void print_Hex(unsigned char n,unsigned char flag);     //串口输出16进数
   9          * 占用串行口中断
  10          *  http://www.newmsg.com/bbs
  11          ****************************************************************/
  12          
  13          #include "print.h"
  14          
  15          #ifdef PRINT_USE
  16                  
  17                  char *pUART;    //字符串指针
  18                  unsigned char uRxUART;
  19          
  20                  void UART_INT(void) interrupt 4
  21                  {
  22   1                      if (RI)
  23   1                      {                                                               //无线串口代码
  24   2                              uRxUART = SBUF;
  25   2                              SBUF = uRxUART;
  26   2                              uRxUART = '\0';
  27   2                          pUART=&uRxUART;
  28   2                              RI = 0;
  29   2                      }
  30   1                      else    //TI
  31   1                      {
  32   2                              TI=0;   //发送中断标志位(SCON)
  33   2                              if (*pUART != '\0')
  34   2                              {
  35   3                                      SBUF = *pUART;
  36   3                                      pUART++;
  37   3                              }
  38   2                              else pUART=0;   //不会启动下一次发送
  39   2                      }
  40   1              }
  41                  
  42                  void print_Str(const char*p)
  43                  {
  44   1                      pUART=p;
  45   1                      TI=1;
  46   1                      while (pUART!=0);       //遇到 '\0',输出完毕
  47   1              }
  48                  
  49                  #ifdef PRINT_CHAR
  50                  void print_Char(unsigned char c)
  51                  {
  52   1                      SBUF = c;
  53   1                      c = '\0';
  54   1                  pUART=&c;
C51 COMPILER V7.09   PRINT                                                                 07/05/2007 19:59:43 PAGE 2   

  55   1                      while (pUART!=0);
  56   1              }
  57                  #endif
  58                          
  59                  #define DEC_MAX  6
  60                  #ifdef PRINT_DEC
                      void print_Dec(unsigned char n,unsigned char flag)      //n:需要转换的数  flag:回车标志符
                      {
                              unsigned char c[DEC_MAX+1];
                              unsigned char i;
                              c[DEC_MAX] = '\0';
                              i=DEC_MAX-1;
                              do
                              {
                                              c[i]=n%10+48;
                                              i--;
                                              n=n/10;
                              }while (n!=0);
                              print_Str(c+i+1);
                              print_Str(" "); 
                              if (flag!=0) print_Str("\n\r");
                      }
                      #endif
  78          
  79                  #ifdef PRINT_HEX
  80                  void print_Hex(unsigned char n,unsigned char flag)
  81                  {
  82   1                      unsigned char c[DEC_MAX+1];
  83   1                      unsigned char i;
  84   1                      c[DEC_MAX] = '\0';
  85   1                      i=DEC_MAX-1;
  86   1                      do
  87   1                      {
  88   2                                      c[i]= (n&0x0f) >9? (n&0x0f)+87 : (n&0x0f)+48;
  89   2                                      i--;
  90   2                                      n=n>>4;
  91   2                      }while(n!=0);
  92   1                      if (i==DEC_MAX-2)
  93   1                      {
  94   2                              c[i]='0';
  95   2                              i--;
  96   2                      }
  97   1                      c[i]='x';
  98   1                      c[i-1]='0';
  99   1                      print_Str(c+i-1);
 100   1                      print_Str(" "); 
 101   1                      if (flag!=0) print_Str("\n\r");
 102   1              }
 103                  #endif
 104                  
 105                  
 106                  //<--串口初始化-->      
 107                  void print_init(void)
 108                  {
 109   1                      SCON = 0x40;    //串行口控制寄存器SCON   工作方式1: 10位UART 以定时器T1作为波特率发生器
 110   1                      TMOD = 0x21;    //定时/计数控制器 T1:自动重装          T0:16位定时器
 111   1                      TH1  = 0xfd;    //波特率9600
 112   1                      TL1  = 0xfd;
 113   1                      ET1  = 0;               //T1 中断禁用
 114   1                      ES   = 1;               //串行中断允许
 115   1                      EA   = 1;               //所有中断允许
 116   1                      PS       = 1;           //串口中断高优先
C51 COMPILER V7.09   PRINT                                                                 07/05/2007 19:59:43 PAGE 3   

 117   1                      REN  = 1;
 118   1                      TR1  = 1;                       //T1启动
 119   1              }
 120          #endif //PRINT_USE


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    253    ----
   CONSTANT SIZE    =      5    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       8
   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 + -