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

📄 serial.lst

📁 单片机的串口调试 单片机的串口调试 单片机的串口调试 单片机的串口调试
💻 LST
字号:
C51 COMPILER V7.09   SERIAL                                                                09/28/2004 10:20:01 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN Serial.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Serial.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /************************************************************
   2           * 文件名:   Serial.c                                       *
   3           * 文件说明: 读端口P0,如果数值改变,则将P0口读到的数送     *
   4           *           PC机显示。                                     *
   5           ************************************************************/
   6          
   7          #include "REG51.h"
   8          
   9          unsigned char data PreValue;            // 存放读P0口的先前值
  10          unsigned char data ChangeFlag=0;        // P0口数据改变标志
  11          
  12          /************************************************************
  13           * 函数原型: void Init_Serial(void)                         *
  14           * 函数描述: 初始化串口,晶振为11.0592MHz,波特率为19200bps *
  15           ************************************************************/
  16          void Init_Serial(void)
  17          {
  18   1              SCON = 0x50;                            // 串口工作方式1
  19   1              TMOD = (TMOD&0x0F)|0x20;        // 选择定时器1方式2
  20   1              PCON = 0x80;                                    // 波特率倍增
  21   1              TH1 = 0xFD;                                     // 计数初值, 19200bps
  22   1              TR1 = 1;                                        // 启动定时器1
  23   1              ES = 0;
  24   1      }
  25          
  26          /***********************************************************
  27           * 函数原型: void Init_Time0(void)                         *
  28           * 函数描述: 初始化定时器0,定时到就读P0口,如果读到的数   *
  29           *           与上一次的不同,设置标志位                    *
  30           ***********************************************************/
  31          void Init_Time0(void)
  32          {
  33   1              TMOD = (TMOD&0xF0)|0x01;                // 定时器0工作方式1
  34   1              TH0 = 0x0;                                              // 装计数初值
  35   1              TL0 = 0x0;
  36   1              TR0 = 1;                                                // 启动定时器0
  37   1              ET0 = 1;                                                // 开定时器0中断
  38   1              EA = 1;                                                 // 开总中断
  39   1      }
  40          
  41          //--------------------------------------------------------//
  42          //---------------          主程序          ---------------//
  43          //--------------------------------------------------------//
  44          void main(void)
  45          {
  46   1              Init_Serial();
  47   1              Init_Time0();
  48   1              while(1)
  49   1              {
  50   2                      if(ChangeFlag==0x01)
  51   2                      {
  52   3                              SBUF = PreValue;                // 将P0口的值送PC显示
  53   3                              while(TI == 0);
  54   3                              TI = 0;
  55   3                              ChangeFlag = 0;
C51 COMPILER V7.09   SERIAL                                                                09/28/2004 10:20:01 PAGE 2   

  56   3                      }
  57   2              }
  58   1      }
  59          
  60          /****************************************************
  61           * 函数原型: void Time0_isr() interrupt 1           *
  62           * 函数描述: 定时器0中断服务程序,读端口P0,然后    *
  63           *           与先前值比较,若不等则置标志位         *
  64           ****************************************************/
  65          void Time0_isr() interrupt 1
  66          {
  67   1              unsigned char Temp;
  68   1              TH0 = 0x0;
  69   1              TL0 = 0x0;
  70   1              P0 = P0|0xFF;
  71   1              Temp = P0;
  72   1              if(Temp != PreValue)
  73   1              {
  74   2                      PreValue = Temp;
  75   2                      ChangeFlag = 0x01;
  76   2              }
  77   1      }


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