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

📄 serial.lst

📁 实用的空调计费系统
💻 LST
字号:
C51 COMPILER V7.50   SERIAL                                                                07/13/2005 17:03:45 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN E:\空调计费\空调计费\SERIAL.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\空调计费\空调计费\SERIAL.C DB SB OE

line level    source

   1          #include "P89C60X2.h"
   2          #include "hicj6.h"
   3          /**********************************************
   4          
   5          IO 口模拟232通讯程序
   6          
   7          使用两种方式的C程序 占用定时器0
   8          
   9          **********************************************/
  10          
  11          #define MODE_QUICK
  12          
  13          #define F_TM F0
  14          
  15          #define TIMER0_ENABLE TL0=TH0; TR0=1;
  16          #define TIMER0_DISABLE TR0=0;
  17          
  18          sbit ACC0= ACC^0;
  19          sbit ACC1= ACC^1;
  20          sbit ACC2= ACC^2;
  21          sbit ACC3= ACC^3;
  22          sbit ACC4= ACC^4;
  23          sbit ACC5= ACC^5;
  24          sbit ACC6= ACC^6;
  25          sbit ACC7= ACC^7;
  26          
  27          void IntTimer0() interrupt 1
  28          {
  29   1      F_TM=1;
  30   1      }
  31          //发送一个字符
  32          void PSendChar(unsigned char inch)
  33          {
  34   1      #ifdef MODE_QUICK
  35   1      ACC=inch;
  36   1      
  37   1      F_TM=0;
  38   1      BT_SND=0; //start bit
  39   1      TIMER0_ENABLE; //启动
  40   1      while(!F_TM);
  41   1      
  42   1      BT_SND=ACC0; //先送出低位
  43   1      F_TM=0;
  44   1      while(!F_TM);
  45   1      
  46   1      BT_SND=ACC1;
  47   1      F_TM=0;
  48   1      while(!F_TM);
  49   1      
  50   1      BT_SND=ACC2;
  51   1      F_TM=0;
  52   1      while(!F_TM);
  53   1      
  54   1      BT_SND=ACC3;
  55   1      F_TM=0;
C51 COMPILER V7.50   SERIAL                                                                07/13/2005 17:03:45 PAGE 2   

  56   1      while(!F_TM);
  57   1      
  58   1      BT_SND=ACC4;
  59   1      F_TM=0;
  60   1      while(!F_TM);
  61   1      
  62   1      BT_SND=ACC5;
  63   1      F_TM=0;
  64   1      while(!F_TM);
  65   1      
  66   1      BT_SND=ACC6;
  67   1      F_TM=0;
  68   1      while(!F_TM);
  69   1      
  70   1      BT_SND=ACC7;
  71   1      F_TM=0;
  72   1      while(!F_TM);
  73   1      
  74   1      BT_SND=1;
  75   1      F_TM=0;
  76   1      while(!F_TM);
  77   1      
  78   1      
  79   1      TIMER0_DISABLE; //停止timer
  80   1      #else
              unsigned char ii;
              
              ii=0;
              
              F_TM=0;
              BT_SND=0; //start bit
              TIMER0_ENABLE; //启动
              while(!F_TM);
              
              while(ii<8)
              {
              if(inch&1)
              {
              BT_SND=1;
              }
              else
              {
              BT_SND=0;
              }
              F_TM=0;
              while(!F_TM);
              ii++;
              inch>>=1;
              }
              BT_SND=1;
              F_TM=0;
              while(!F_TM);
              
              #endif
 110   1      TIMER0_DISABLE; //停止timer
 111   1      }
 112          //接收一个字符
 113          /*
 114          unsigned char PGetChar()
 115          {
 116          #ifdef MODE_QUICK
 117          
C51 COMPILER V7.50   SERIAL                                                                07/13/2005 17:03:45 PAGE 3   

 118          TIMER0_ENABLE;
 119          F_TM=0;
 120          while(!F_TM); //等过起始位
 121          ACC0=BT_REC;
 122          
 123          TL0=TH0;
 124          
 125          F_TM=0;
 126          while(!F_TM);
 127          ACC1=BT_REC;
 128          
 129          F_TM=0;
 130          while(!F_TM);
 131          ACC2=BT_REC;
 132          
 133          F_TM=0;
 134          while(!F_TM);
 135          ACC3=BT_REC;
 136          
 137          F_TM=0;
 138          while(!F_TM);
 139          ACC4=BT_REC;
 140          
 141          F_TM=0;
 142          while(!F_TM);
 143          ACC5=BT_REC;
 144          
 145          F_TM=0;
 146          while(!F_TM);
 147          ACC6=BT_REC;
 148          
 149          F_TM=0;
 150          while(!F_TM);
 151          ACC7=BT_REC;
 152          
 153          F_TM=0;
 154          
 155          while(!F_TM)
 156          {
 157          if(BT_REC)
 158          {
 159          break;
 160          }
 161          }
 162          TIMER0_DISABLE; //停止timer
 163          return ACC;
 164          #else
 165          unsigned char rch,ii;
 166          TIMER0_ENABLE;
 167          F_TM=0;
 168          ii=0;
 169          rch=0;
 170          while(!F_TM); //等过起始位
 171          
 172          while(ii<8)
 173          {
 174          rch>>=1;
 175          if(BT_REC)
 176          {
 177          rch|=0x80;
 178          }
 179          ii++;
C51 COMPILER V7.50   SERIAL                                                                07/13/2005 17:03:45 PAGE 4   

 180          F_TM=0;
 181          while(!F_TM);
 182          
 183          }
 184          F_TM=0;
 185          while(!F_TM)
 186          {
 187          if(BT_REC)
 188          {
 189          break;
 190          }
 191          
 192          }
 193          TIMER0_DISABLE; //停止timer
 194          return rch;
 195          
 196          #endif
 197          
 198          } */
 199          //检查是不是有起始位
 200          /*
 201          bit StartBitOn()
 202          {
 203          return (BT_REC==0);
 204          
 205          } */
 206          /*
 207          void main1()
 208          {
 209          unsigned char gch;
 210          
 211          TMOD=0x22; //定时器1为工作模式2(8位自动重装),0为模式2(8位自动重装)
 212          PCON=00;
 213          
 214          TR0=0; //在发送或接收才开始使用
 215          TF0=0;
 216          TH0=(256-96); //9600bps 就是 1000000/9600=104.167微秒 执行的
 217          //timer是
 218          //
 219          //104.167*11.0592/12= 96
 220          TL0=TH0;
 221          ET0=1;
 222          EA=1;
 223          
 224          PSendChar(0x55);
 225          PSendChar(0xaa);
 226          PSendChar(0x00);
 227          PSendChar(0xff);
 228          
 229          while(1)
 230          {
 231          if(StartBitOn())
 232          {
 233          gch=PGetChar();
 234          PSendChar(gch);
 235          }
 236          }
 237          
 238          }
 239          
 240          */
C51 COMPILER V7.50   SERIAL                                                                07/13/2005 17:03:45 PAGE 5   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


ACC7 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00E7H  1
P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
_PSendChar . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  inch . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
ACC. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00E0H  1
TH0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008CH  1
TL0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008AH  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
BT_SND . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B4H  1
IntTimer0. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
F0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D5H  1
ACC0 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00E0H  1
ACC1 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00E1H  1
ACC2 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00E2H  1
ACC3 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00E3H  1
ACC4 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00E4H  1
ACC5 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00E5H  1
ACC6 . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00E6H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    100    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   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 + -