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

📄 uart0.lst

📁 单片机C语言程序
💻 LST
字号:
C51 COMPILER V7.50   UART0                                                                 03/24/2008 11:06:16 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE UART0
OBJECT MODULE PLACED IN uart0.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE uart0.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //UART0.c
   2          //uart0 相关程序
   3          
   4          #include "mytype.h"
   5          #include "config.h"
   6          #include<ds89c4xx.h>
   7          
   8          //extern uint8 xdata *pt;
   9          //uint8 sending;
  10          uint8 code HexTable[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  11          
  12          void UartInit0(void)    //8位数据位,1位停止位,无校验,波特率uartbuadrate
  13          {
  14   1              //EA = 0;
  15   1              TMOD &= 0x0F;
  16   1              TMOD |= 0x20;    //定时器1工作在模式2
  17   1              SCON0 = 0x50;   //串口工作在方式1
  18   1              PCON |= 0x80;   //smod = 1;
  19   1              TH1 = 256 - ((fosc/12)/16)/uart0baudrate;       //根据波特率计算定时器初值
  20   1              TL1 = 256 - ((fosc/12)/16)/uart0baudrate;
  21   1              ES0=0;         //串行中断允许=0
  22   1              TR1=1;        //启动定时器1
  23   1              TI_0 = 0;       //
  24   1              RI_0 = 0;
  25   1              REN_0=1;        //允许接收 
  26   1              //IP1 = 0x50;   
  27   1              //IP0 = 0x40;   //PORT1优先级3,PORT0优先级2
  28   1              //EA=1;         //允许中断   
  29   1      }
  30          
  31          void PutChar0(uint8 send)       //发送一个字节的数据
  32          {
  33   1              SBUF0 = send;
  34   1              while(0 == TI_0)        ;
  35   1              TI_0 = 0;       //TI_0 = 1,发送完成,再清0
  36   1      }
  37          
  38          void PutString0(uint8 *psend, uint8 idata length)       //发送字符串,以字符串长度或'\0'结束
  39          {
  40   1              while(length--)
  41   1              {
  42   2                      PutChar0(*psend);
  43   2                      psend++;
  44   2                      if(*psend == '\0')
  45   2                              return;
  46   2              }
  47   1      }
  48          
  49          void PutUint320(uint32 idata send,uint8 idata shuzhi)   //将32位的无符号数通过UART发送
  50          {
  51   1              uint8 idata buffer[10];
  52   1              int8 idata i;
  53   1              for(i=9;i>=0;i--)
  54   1              {
  55   2                      buffer[i] = send%shuzhi + '0';  //转换成ASCII码
C51 COMPILER V7.50   UART0                                                                 03/24/2008 11:06:16 PAGE 2   

  56   2                      send = send/shuzhi;
  57   2              }
  58   1              for(i=0;i<=9;i++)
  59   1              {
  60   2                      if(buffer[i] != '0')
  61   2                              break;
  62   2              }
  63   1              if(10 == i)
  64   1                      i = 9;          //如果传入为0,则至少显示一个0
  65   1              for( ;i<=9;i++)
  66   1              {
  67   2                      PutChar0(buffer[i]);
  68   2              }
  69   1      }
  70          
  71          void PutHex0(uint8 idata send)  //将8位无符号数转换成16进制后发送
  72          {
  73   1              PutChar0('0');
  74   1              PutChar0('x');
  75   1              PutChar0(HexTable[(send >> 4)]);
  76   1              PutChar0(HexTable[(send & 0x0f)]);
  77   1              PutChar0(' ');
  78   1      }
  79          
  80          /*void PutHex16bit0(uint16 send)
  81          {
  82                  PutChar0('0');
  83                  PutChar0('x');
  84                  PutChar0(HexTable[(send >> 12)]);
  85                  PutChar0(HexTable[((send >> 8) & 0x0f)]);
  86                  PutChar0(HexTable[((uint8)send) >> 4]);
  87                  PutChar0(HexTable[(uint8)send & 0x0f]);
  88                  PutChar0(' ');
  89          } */
  90          
  91          void NextLine0(void)    //换行
  92          {
  93   1              PutChar0(0x0d);
  94   1              PutChar0(0x0a);
  95   1      }
  96          
  97          void UART0_ISR(void) interrupt 4                //uart 中断程序
  98          {
  99   1              //uint8 temp;
 100   1              if(RI_0 == 1)    //收到数据
 101   1              {
 102   2                      RI_0 = 0;                     //清中断请求
 103   2                      //temp = SBUF0;
 104   2              }
 105   1              else  //发送完一字节数据
 106   1              {
 107   2                      TI_0 = 0;
 108   2                      //sending = 0;               //清发送标志
 109   2              }
 110   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    266    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V7.50   UART0                                                                 03/24/2008 11:06:16 PAGE 3   

   DATA SIZE        =   ----       5
   IDATA SIZE       =   ----      11
   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 + -