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

📄 cj2.lst

📁 485通信仿真源码.rar
💻 LST
字号:
C51 COMPILER V8.01   CJ2                                                                   03/22/2010 21:00:08 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE CJ2
OBJECT MODULE PLACED IN cj2.OBJ
COMPILER INVOKED BY: D:\学习软件\keil\C51\BIN\C51.EXE cj2.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include<18B20_1.h>             //      包含18b20函数
   3          #define uchar unsigned char
   4          
   5          sbit RE=P3^4;
   6          uchar code display_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x77,0x7c};
   7          uchar ti=0;temperature[4]={12,0,0,0};
   8          bit t=0;        //数据发送控制位
   9          
  10          void display();                 //      显示函数
  11          void delay1(uchar a);   //      延时函数
  12          void judge_button();    //      判断按键
  13          void more_send();          //数据发送函数
  14          
  15          void main()
  16          {
  17   1              int temp;
  18   1      
  19   1              TMOD=0x21;              //定时计数器1设置为模式2 ,定时计数器0为模式1
  20   1              TL1=0XFD;
  21   1              TH1=0XFD;
  22   1              TH0=(65536-50000*110592/120000)/256;    //设置50ms溢出一次
  23   1              TL0=(65536-50000*110592/120000)%256;
  24   1              PCON=0X00;
  25   1              SCON=0xf0;              //工作在方式3,允许通信,SM2=1只有RB8为1时才接受数据,否则不要
  26   1              TR0=1;
  27   1              TR1=1;
  28   1              EA=1;
  29   1              ET0=1;
  30   1              RE=1;                   //设置457为发送状态
  31   1      
  32   1      
  33   1              while(1)
  34   1              {       
  35   2                      display();
  36   2                      judge_button();
  37   2      
  38   2                      if(ti==20)
  39   2                      {
  40   3                              ti=0;
  41   3                              temp=b20_temperate();                   //      获得整数部分温度
  42   3                              temperature[1]=temp%1000/100;           //      百位温度
  43   3                              temperature[2]=temp%100/10;                     //      十位温度
  44   3                              temperature[3]=temp%10;                         //      个位温度
  45   3      
  46   3                              if(t==1)                                                //控制数据是否不断发送
  47   3                              {
  48   4                                      more_send();
  49   4                              }
  50   3                      }                       
  51   2              }
  52   1              
  53   1      }
  54          
  55          
C51 COMPILER V8.01   CJ2                                                                   03/22/2010 21:00:08 PAGE 2   

  56          void delay(uchar a)
  57          {
  58   1              uchar i;
  59   1              for(;a>0;a--)
  60   1                      for(i=100;i>0;i--);
  61   1      
  62   1      }
  63          
  64          
  65          void display()
  66          {
  67   1      
  68   1              P2=0XFF;                           //  显示从机的代号
  69   1              P0=display_table[temperature[0]];
  70   1              P2=0xfe;
  71   1              delay(1);
  72   1      
  73   1              P2=0XFF;                           //  显示温度
  74   1              P0=display_table[temperature[1]];
  75   1              P2=0xfd;
  76   1              delay(1);
  77   1      
  78   1              P2=0XFF;
  79   1              P0=display_table[temperature[2]];
  80   1              P2=0xfb;
  81   1              delay(1);
  82   1      
  83   1              P2=0XFF;
  84   1              P0=display_table[temperature[3]]+0x80;
  85   1              P2=0xf7;
  86   1              delay(1);
  87   1      
  88   1      }
  89          
  90          
  91          void one_send()                 //      发送一次数据
  92          {
  93   1              uchar i;
  94   1      
  95   1              SBUF=0XFD;              //将本机的地址发送给主机
  96   1              while(TI!=1);   
  97   1              TI=0;
  98   1              delay(10);      
  99   1              
 100   1              for(i=0;i<4;i++)          //发送要显示的4个数据
 101   1              {
 102   2                      SBUF=temperature[i];
 103   2                      while(TI!=1);
 104   2                      TI=0;
 105   2                      delay(10);
 106   2               }      
 107   1      
 108   1      
 109   1      }
 110          
 111          
 112          void more_send()                        //      不断发送数据
 113          {
 114   1              uchar i;
 115   1      
 116   1              SBUF=0XFE;              //将本机的地址发送给主机
 117   1              while(TI!=1);   
C51 COMPILER V8.01   CJ2                                                                   03/22/2010 21:00:08 PAGE 3   

 118   1              TI=0;
 119   1              delay(10);      
 120   1      
 121   1              SBUF=0XFE;              //用来验证数据的传送
 122   1              while(TI!=1);   
 123   1              TI=0;
 124   1              delay(10);
 125   1              
 126   1              for(i=0;i<4;i++)          //发送要显示的4个数据
 127   1              {
 128   2                      SBUF=temperature[i];
 129   2                      while(TI!=1);
 130   2                      TI=0;
 131   2                      delay(10);
 132   2               }      
 133   1      
 134   1      
 135   1      }
 136          
 137          
 138          void judge_button()                                                
 139          {
 140   1              if(P1!=0xff)                                                    //判断是否有按钮按下
 141   1              {
 142   2                      delay(10);                                                                       
 143   2      
 144   2                      switch(P1)
 145   2                      {                                                                                       
 146   3                              case 0xfe:   t=0;       one_send();   break;    //      发送一次数据    
 147   3                              case 0xfd:   t=1;   break;                      //      连续发送数据    
 148   3                      }
 149   2      
 150   2                      P1=0XFF;        
 151   2              }               
 152   1      }
 153          
 154          
 155          void time() interrupt 1            //定时器
 156          {
 157   1              TH0=(65536-50000*110592/120000)/256;
 158   1              TL0=(65536-50000*110592/120000)%256;
 159   1      
 160   1              ti++;
 161   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    527    ----
   CONSTANT SIZE    =     13    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9       1
   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 + -