zhtest.lst

来自「郑州远博公司生产的单片机B型实验板电路原理图及配套源程序代码」· LST 代码 · 共 181 行

LST
181
字号
C51 COMPILER V7.20   ZHTEST                                                                06/06/2005 22:55:36 PAGE 1   


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

line level    source

   1          /**************************************************************************
   2          YB-51-B  综合演示程序 (完成对实验板的综合测试)
   3          来源: 郑州远博科技   王兴民
   4          0371-66949037  0371-67256036 13949105551
   5          
   6            液晶屏第一行开始显示年、月、日 、星期
   7            第二行开始显示时、分、秒 和温度
   8            (演示程序时间不可调整)
   9          ***************************************************************************/
  10          
  11          #include <config.h>
  12          #define BUZZ  P3_6     //蜂鸣器
  13          #define JDQ   P3_7      //继电器
  14          #define LEDPOWER P2_7   //发光二极管总电源
  15          void d_convert(Uchar  dd);
  16          void rw24c02(void);
  17          void testfmq(void);
  18          void testjdq(void);
  19          void testsmg(void);
  20          void testled(void);
  21          void enint0(void);
  22          
  23          code char examp1[]="K1 be pressed!";
  24          code char examp2[]="K2 be pressed!";
  25          code char examp3[]="K3 be pressed!";
  26          code char examp4[]="K4 be pressed!";
  27          
  28          data Uchar wdh,wdl;
  29          data Uchar displaybuff[]={0x0a,0x0a,0x0a,0x0a,0x0a,0x0a}; //数码管显示缓冲区,初始化全灭
  30          
  31          data Uchar clockdata2[7];     //DS1302时钟数据缓冲区 for ds1302
  32          data Uchar *clockdatain;
  33          data Uchar *clockdataout;
  34          data Uchar cmddata;
  35          data Uchar indata,outdata;
  36          data Uchar houtdatal,houtdatah,moutdatal,moutdatah,soutdatal,soutdatah; //时、分、秒
  37          data Uchar noutdatal,noutdatah,youtdatal,youtdatah,routdatal,routdatah; //年、月、日
  38          data Uchar woutdatal, woutdatah;
  39          
  40          code Uchar hdata=0xfe;     //for 18b20    上限报警设定值                                  
  41          code Uchar ldata=0x05;     //  下限报警设定值
  42          data Uchar databuff[9];
  43          
  44          data Uchar keyvalue;
  45          
  46          
  47          code Uchar CH0=0X02;              //ADC0832通道0被选中
  48          
  49          void main(void)           {  
  50   1      Uchar j,temp;
  51   1      Delayms(500);
  52   1      Lcdreset();
  53   1      testfmq();
  54   1      testjdq();
  55   1      testled();
C51 COMPILER V7.20   ZHTEST                                                                06/06/2005 22:55:36 PAGE 2   

  56   1      testsmg();
  57   1      rw24c02();
  58   1      enint0();   //允许中断
  59   1      
  60   1      
  61   1      for(j=0;j<6;j++)    {    //数码管显示缓冲区全部填充为不显示
  62   2      displaybuff[j]=0x0a;
  63   2                          }
  64   1      cmddata=0x8e;
  65   1      indata=0x00;
  66   1      v_W1302(cmddata, indata); //init
  67   1      cmddata=0x80;
  68   1      indata=0x00;
  69   1      v_W1302(cmddata, indata);//秒
  70   1      cmddata=0x82;
  71   1      indata=0x00;
  72   1      v_W1302(cmddata, indata);//分
  73   1      cmddata=0x84;
  74   1      indata=0x00;
  75   1      v_W1302(cmddata, indata);//小时
  76   1      cmddata=0x86;
  77   1      indata=0x31;
  78   1      v_W1302(cmddata, indata);//日
  79   1      cmddata=0x88;
  80   1      indata=0x03;
  81   1      v_W1302(cmddata, indata);//月
  82   1      cmddata=0x8A;
  83   1      indata=0x03;
  84   1      v_W1302(cmddata, indata);//星期
  85   1      cmddata=0x8C;
  86   1      indata=0x05;
  87   1      v_W1302(cmddata, indata);//年 
  88   1      Init_18b20();
  89   1      Skip();
  90   1      Write_18b20(0x4e);    //写缓存命令
  91   1      Write_18b20(hdata);   //写地址2  (TH温度触发器)
  92   1      Write_18b20(ldata);   //写地址3  (TL温度触发器)
  93   1      Write_18b20(0x7f);    //12位分辨率
  94   1      Init_18b20();
  95   1      Skip();
  96   1      Write_18b20(0x48);    //复制暂存存储器
  97   1      Init_18b20();
  98   1      Skip();
  99   1      
 100   1      
 101   1      while(1)   {
 102   2      temp=Adconvert(CH0);       //18B20转换数据
 103   2      Display(displaybuff); 
 104   2      displaybuff[2]=temp/100;
 105   2      displaybuff[1]=(temp-displaybuff[2]*100)/10;
 106   2      displaybuff[0]=temp-(displaybuff[2]*100+displaybuff[1]*10);
 107   2      Display(displaybuff);           //在数码管上显示转换的数据
 108   2      Init_18b20();
 109   2      Skip();
 110   2      Convert();             //温度转换
 111   2      Display(displaybuff); 
 112   2      Display(displaybuff); 
 113   2      Display(displaybuff); 
 114   2      Display(displaybuff); 
 115   2      //Display(displaybuff); 
 116   2                      keyvalue=Key_s(); //读取键值
 117   2                      if(keyvalue==0x7f)
C51 COMPILER V7.20   ZHTEST                                                                06/06/2005 22:55:36 PAGE 3   

 118   2                        {while(Key_s()==0x7f)
 119   3                            {Lcdreset();Eputstr(0,2,examp1); P3_6=0;}  //P3_6是蜂鸣器的接口
 120   3                        }
 121   2                      if(keyvalue==0xbf)
 122   2                        {while(Key_s()==0xbf)
 123   3                            {Lcdreset();Eputstr(0,2,examp2); P3_6=0;}  //P3_6是蜂鸣器的接口
 124   3                        }
 125   2                      if(keyvalue==0xdf)
 126   2                        {while(Key_s()==0xdf)
 127   3                            {Lcdreset();Eputstr(0,2,examp3); P3_6=0;}  //P3_6是蜂鸣器的接口
 128   3                        }
 129   2      
 130   2                       if(keyvalue==0xef)
 131   2                        {while(Key_s()==0xef)
 132   3                            {Lcdreset();Eputstr(0,2,examp4); P3_6=0;}  //P3_6是蜂鸣器的接口
 133   3                        }               
 134   2                       if(keyvalue==0xff) { P3_6=1;}
 135   2      Init_18b20();
 136   2      Skip();
 137   2      Read_scrat();       //读18b20 scratchpad   存储器
 138   2      for(j=0;j<9;j++)
 139   2       {
 140   3        databuff[j]=Read_18b20();
 141   3        Display(displaybuff); 
 142   3      
 143   3       }
 144   2      databuff[0]=databuff[0]>>4;
 145   2      databuff[1]=databuff[1]<<4;
 146   2      databuff[0]=(databuff[0]|databuff[1])&0x7f;
 147   2      d_convert(databuff[0]);
 148   2                 clockdataout=&clockdata2;     
 149   2                 v_BurstR1302T(clockdataout);
 150   2                 soutdatal=clockdata2[0]&0x0f;
 151   2                 soutdatah=(clockdata2[0]>>4)&0x07;
 152   2                 moutdatal=clockdata2[1]&0x0f;
 153   2                 moutdatah=(clockdata2[1]>>4)&0x07;
 154   2                 houtdatal=clockdata2[2]&0x0f;
 155   2                 houtdatah=(clockdata2[2]>>4)&0x07; 
 156   2                 routdatal=clockdata2[3]&0x0f;
 157   2                 routdatah=(clockdata2[3]>>4)&0x07;
 158   2                 youtdatal=clockdata2[4]&0x0f;
 159   2                 youtdatah=(clockdata2[4]>>4)&0x07;
 160   2                 woutdatal=clockdata2[5]&0x0f;
 161   2                 woutdatah=(clockdata2[5]>>4)&0x07;
 162   2                 noutdatal=clockdata2[6]&0x0f;
 163   2                 noutdatah=(clockdata2[6]>>4)&0x07;
 164   2      
 165   2                    
 166   2                     Disponechar(0,0,50);     //50代表数字‘2’的ASC码,液晶屏是按照ASC码来显示字符
 167   2                     Disponechar(0,1,48);       //48代表数字‘0’的ASC码
 168   2                     Disponechar(0,2,noutdatah+48);   //48表示对应数字的实际值和相对应的ASC码的偏移

⌨️ 快捷键说明

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