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

📄 text1.lst

📁 proteus实例集锦
💻 LST
字号:
C51 COMPILER V7.06   TEXT1                                                                 04/05/2007 20:30:28 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1 BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #define _PPDATAR_H
   2          
   3          #include <reg51.h>
   4          #include <string.h>
   5          
   6          #define uchar unsigned char
   7          #define uint unsigned int
   8          
   9          /* 握手信号宏定义 */
  10          #define CALL 0x24               // 主机呼叫
  11          #define OK 0x00                 // 从机准备好
  12          #define MAXLEN 64       // 缓冲区最大长度
  13          uchar buf[MAXLEN];
  14          sbit  p00 = P0^0; sbit  p01 = P0^1; sbit  p02 = P0^2; sbit  p03 = P0^3;
  15          sbit p10=P1^0; sbit p11=P1^1; sbit p12=P1^2; sbit p13=P1^3;
  16          sbit p14=P1^4; sbit p15=P1^5; sbit p16=P1^6; sbit p17=P1^7;
  17          bit err;
  18          void delay();
  19          
  20          //********************八段码*************************//
  21          code unsigned char LEDMAP[] = { 
  22          0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
  23          0x7f, 0x6f, 0x00,0x71//共阳显示码,分别显示0、1、2、3、4、5、6、7、8、9、灭、F。
  24          };
  25          //***********************显示码选择**********************//
  26          int DisplayLED(unsigned char j)
  27          {
  28   1              unsigned int i=0;
  29   1              unsigned int x1;
  30   1              x1= LEDMAP[(i+j) & 0x0f];
  31   1              return  x1;
  32   1      }
  33          
  34          //***********************显示**********************//
  35          void  display()
  36          {
  37   1              P0=0xf7;
  38   1              P1=DisplayLED(buf[0]);
  39   1              delay();
  40   1              P0=0xfb;
  41   1              P1=DisplayLED(buf[1]);
  42   1              delay();
  43   1              P0=0xfd;
  44   1              P1=DisplayLED(buf[2]);
  45   1              delay();
  46   1              P0=0xfe;
  47   1              P1=DisplayLED(buf[3]);
  48   1              delay();
  49   1      }
  50          //////////////////////显示FFFF//////////////////////////////
  51          void  display_f()
  52          {
  53   1              P0=0xfe;
  54   1              P1=DisplayLED(11);
  55   1              delay();
C51 COMPILER V7.06   TEXT1                                                                 04/05/2007 20:30:28 PAGE 2   

  56   1              P0=0xfd;
  57   1              P1=DisplayLED(11);
  58   1              delay();
  59   1              P0=0xfb;
  60   1              P1=DisplayLED(11);
  61   1              delay();
  62   1              P0=0xf7;
  63   1              P1=DisplayLED(11);
  64   1              delay();
  65   1      }
  66          //************************CRC计算****************************************//
  67          uint getcrc(uchar *s,uchar len)
  68          {
  69   1        uint acc=0,i,j=0;
  70   1      while(len--)
  71   1       {
  72   2          acc=acc^(*s++<<8);
  73   2          for(i=0;i++<8;)
  74   2            if(acc&0x8000)
  75   2              acc=(acc<<1)^0x1021;
  76   2            else
  77   2              acc=acc<<1;
  78   2       }
  79   1       return(acc);
  80   1      }
  81          //*************************delay*********************//
  82          void delay()
  83          {
  84   1              unsigned int i,n;
  85   1              n=100;
  86   1              for (i=0; i<n; i++) {}
  87   1      }
  88          //************************进行数据校验****************************************//
  89          int chkcrc(uchar *buf,uchar len)
  90                  {
  91   1                uint strcrc;
  92   1                 strcrc=getcrc(buf,len);   //生成接收数据的CRC码
  93   1                 if(((0xff&buf[len])==(0xff&(strcrc/256)))&&((0xff&buf[len+1])==(0xff&(strcrc%256))))
  94   1                                         //接收的CRC码和生成的CRC码进行比较
  95   1                   return(0);
  96   1                 else
  97   1                   return(-1);
  98   1              }
  99          
 100          /* 接收数据函数 */
 101          bit recvdata(uchar *buf)
 102          {
 103   1              uchar i;
 104   1              uchar len;                                      // 保存数据长度
 105   1              int ecc;                                        // 保存校验字节
 106   1              
 107   1              /* 接收数据长度字节 */
 108   1              RI = 0;
 109   1              while(!RI);
 110   1              len = SBUF;
 111   1              RI = 0;
 112   1      
 113   1              /* 接收数据及校验字节 */
 114   1              for (i=0;i<len+2;i++)
 115   1              {
 116   2                      while(!RI);
 117   2                      *buf = SBUF;    
C51 COMPILER V7.06   TEXT1                                                                 04/05/2007 20:30:28 PAGE 3   

 118   2                      RI = 0; 
 119   2                      buf++;          
 120   2              }
 121   1              *buf = 0;                                       // 表示接收结束 
 122   1             
 123   1               /* 进行数据校验 */
 124   1              ecc = chkcrc(buf,len);
 125   1              if (ecc!=0)                                     // 如果校验错误
 126   1              
 127   1                     return 1;                        // 返回1表示校验错误
 128   1              else
 129   1                     return 0;                                        // 校验成功,返回0
 130   1             
 131   1      }
 132          
 133          void init_serial()
 134          {
 135   1              TMOD = 0x20;                            // 定时器T1使用工作方式2
 136   1              TH1 = 250;
 137   1              TL1 = 250;
 138   1              TR1 = 1;                                        // 开始计时
 139   1              PCON = 0x80;                            // SMOD = 1
 140   1              SCON = 0x50;                            // 工作方式1,波特率9600kbit/s,允许接收 
 141   1      }
 142          
 143          /*串口通信程序 */
 144          void tongxin()
 145          { 
 146   1              uchar tmp=0;
 147   1              init_serial();
 148   1              EA = 0;                                 // 关闭所有中断
 149   1      
 150   1             /* 如果接收到的数据不是CALL,则继续等待 */
 151   1                      while (tmp!=CALL)
 152   1                      {
 153   2                              RI = 0;
 154   2                              while(!RI)
 155   2                              tmp = SBUF;
 156   2                              RI = 0;
 157   2                      }
 158   1              
 159   1                      /* 发送OK信号,表示从机可以接收数据 */
 160   1                      TI = 0;                         
 161   1                      SBUF = OK;
 162   1                      while(!TI);
 163   1                      TI = 0;
 164   1      
 165   1                      /* 数据接收 */
 166   1              err = recvdata(buf);    // 校验失败返回1,接收成功返回0
 167   1                              if(err==1)
 168   1                                  display_f();
 169   1                              if(err==0)
 170   1                                   display();
 171   1                       
 172   1      
 173   1      }
 174          //*************************主函数***********************//
 175          void  main()
 176          {
 177   1           
 178   1            while(1)
 179   1            {
C51 COMPILER V7.06   TEXT1                                                                 04/05/2007 20:30:28 PAGE 4   

 180   2               tongxin();
 181   2                  
 182   2            }  
 183   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    430    ----
   CONSTANT SIZE    =     12    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     64      16
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -