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

📄 main.lst

📁 这个软件是设置时间的程序。可以把时间设置在寄存器中保存。
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V3.96,  SN-83203013  MAIN                                                     03/10/07  13:01:19  PAGE 1   


DOS C51 COMPILER V3.96, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\C51\BIN\C51.EXE MAIN.C DB OE SMALL ROM(LARGE) 

stmt level    source

   1          #include <reg52.h>
   2          #include <absacc.h>
   3          #include<intrins.h>
   4          #define  uchar unsigned char
   5          #define EleA1  XBYTE[0xf100]//控制继电器Ta1-Tb4
   6          #define EleA2  XBYTE[0xf200]//控制继电器Ta5-7T
   7          sbit P_BELL=P1^2;
   8          sbit P_RUN=P1^0;
   9          sbit P_DOG=P3^4;
  10          
  11          sbit wr=P3^6;
  12          sbit rd=P3^7;
  13          #define CMDOFF 0x00
  14          #define CMDON 0x01
  15          #define CMDLCDOFF 0x02
  16          #define CMDLCDON 0x03
  17          #define CMDB3C4 0x29
  18          sbit CSPIN=P1^5;
  19          sbit CLKPIN=P1^4;
  20          sbit DIPIN=P1^6;
  21          unsigned char count3=0;
  22          static uchar CDQR_Butt1=1;
  23          uchar BUFJS[5];
  24          uchar DEQ2S;
  25          uchar read_flag;
  26          int DEQ3S=0;
  27          unsigned char code LCM[]={0xEB,0x60,0xC7,0xE5,0x6C,0xAD,0xAF,0xE8,0xEF,0xED,0xee,0x00};
  28          unsigned char data l_data[9]; 
  29          uchar time1[10]={3,4,6,3,5,10,3,5,4,10};
  30          uchar ccount=1;
  31          uchar ccount1=0;
  32          uchar verifysum=0;
  33          void delay(int n)
  34          {
  35   1         while(n--);
  36   1      }
  37          void lcdwbit(bit n)
  38          {  DIPIN = n;
  39   1         _nop_();
  40   1         _nop_();
  41   1         CLKPIN = 1;
  42   1         _nop_();
  43   1         _nop_();
  44   1         CLKPIN = 0;
  45   1         _nop_();
  46   1         _nop_();
  47   1         CLKPIN = 1;
  48   1      }
  49          
  50          void lcdwc(unsigned char cmdcode)  //送控制字
  51          {  unsigned char i;
  52   1         CSPIN=1;
  53   1         CSPIN=0;
  54   1         lcdwbit(1);
  55   1         lcdwbit(0);
C51 COMPILER V3.96,  SN-83203013  MAIN                                                     03/10/07  13:01:19  PAGE 2   

  56   1         lcdwbit(0);
  57   1         for (i=0;i<8;i++)
  58   1         {  if((cmdcode&0x80)==0x80)
  59   2               lcdwbit(1);
  60   2            else
  61   2               lcdwbit(0);
  62   2            cmdcode<<=1;
  63   2         }
  64   1         lcdwbit(0);
  65   1         DIPIN=1;
  66   1         CSPIN=1;
  67   1      }
  68          
  69          void lcdreset()                    //初始化
  70          {  lcdwc(CMDOFF);                  //掉电
  71   1         lcdwc(CMDLCDOFF);               //关闭
  72   1         lcdwc(CMDON);                   //上电
  73   1         lcdwc(CMDLCDON);                //显示
  74   1         lcdwc(CMDB3C4);                 //模式设置
  75   1      }
  76          
  77          void lcdwd(unsigned char address,unsigned char data1)  //送6位地址+8位数据
  78          {  unsigned char i;
  79   1         CSPIN = 1;
  80   1         CSPIN = 0;
  81   1         lcdwbit(1);
  82   1         lcdwbit(0);
  83   1         lcdwbit(1);
  84   1         address<<=2;
  85   1         for (i=0;i<6;i++)
  86   1         {  if((address&0x80)==0x80)
  87   2               lcdwbit(1);
  88   2            else
  89   2               lcdwbit(0);
  90   2            address<<=1;
  91   2         }
  92   1         for (i=0;i<8;i++)
  93   1         {  if((data1&0x01)==0x01)
  94   2               lcdwbit(1);
  95   2            else
  96   2               lcdwbit(0);
  97   2            data1>>=1;
  98   2         }
  99   1         DIPIN=1;
 100   1         CSPIN=1;
 101   1      }
 102          void lcdwd1()                      //送数(从第一个地址起)
 103          {  unsigned char j;
 104   1         for(j=0;j<12;j++)
 105   1         {  lcdwd(j+j,l_data[j+1]);
 106   2         }
 107   1      }
 108          void init_serialcomm(void)
 109          {
 110   1          SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr 
 111   1          TMOD |= 0x21; //TMOD: timer 1, mode 2, 8-bit reload 
 112   1          TH1 = 0xFd; //Baud:9600 fosc=11.0592MHz 
 113   1          IE |= 0x92; //Enable Serial Interrupt 
 114   1          TR1 = 1; // timer 1 run 
 115   1          RCAP2H	= 0x4C;
 116   1          RCAP2L= 0x00;
 117   1          TH2	= 0x4c;					// 定时器初值
C51 COMPILER V3.96,  SN-83203013  MAIN                                                     03/10/07  13:01:19  PAGE 3   

 118   1          TL2	= 0x00;	
 119   1          ET2 = 1;					// 允许T2中断
 120   1          T2CON   = 0x04;
 121   1          TR2=1;
 122   1          TL0=0x00;//50ms产生中断
 123   1          TH0=0x4C;
 124   1          P0=0xff;
 125   1          wr=1; 
 126   1          rd=1;
 127   1          EleA1=0x00;
 128   1          EleA2=0x00;
 129   1          rd=0;
 130   1          P0=0xff;
 131   1          
 132   1      }
 133          void LCMinit()
 134          {
 135   1             l_data[1]=LCM[10];
 136   1            lcdwd1();
 137   1            
 138   1            l_data[2]=LCM[0];
 139   1            lcdwd1();
 140   1            
 141   1            l_data[3]=LCM[0];
 142   1            lcdwd1();
 143   1            
 144   1            l_data[5]=LCM[0];
 145   1            lcdwd1();
 146   1            
 147   1            l_data[6]=LCM[0];
 148   1            lcdwd1();
 149   1            l_data[7]=LCM[1];
 150   1            lcdwd1();
 151   1            l_data[8]=LCM[11];
 152   1            lcdwd1();
 153   1      }
 154          
 155          //向串口发送一个字符 
 156          void send_char_com(unsigned char ch) 
 157          {
 158   1      SBUF=ch;
 159   1      while(TI==0);
 160   1      TI=0;
 161   1      }
 162          
 163          //向串口发送一个字符串,strlen为该字符串长度 
 164          void send_string_com(unsigned char *str,unsigned int strlen)
 165          {
 166   1      unsigned int k;
 167   1          TI=0;
 168   1          for(k=0;k<strlen;k++) 
 169   1           send_char_com(str[k]);   
 170   1      }
 171          void senddata()  
 172          {
 173   1          uchar SENDBUF[]={0,0,0,0,0,0};
 174   1          SENDBUF[0]=0x3c;
 175   1          SENDBUF[1]=0x01;
 176   1          SENDBUF[2]=ccount1;
 177   1          SENDBUF[3]=ccount;
 178   1          SENDBUF[4]=verifysum;
 179   1          SENDBUF[5]=0x3e;
C51 COMPILER V3.96,  SN-83203013  MAIN                                                     03/10/07  13:01:19  PAGE 4   

 180   1          send_string_com(SENDBUF,6);
 181   1      }
 182          
 183          //串口接收中断函数 
 184          void serial () interrupt 4 using 3 
 185          {
 186   1         if(RI)
 187   1         {
 188   2           unsigned char ch;
 189   2           RI = 0;
 190   2           ch=SBUF;
 191   2           if(ch==0x3c)
 192   2            {
 193   3                 count3=0;
 194   3            }
 195   2           else 
 196   2           {
 197   3             ++count3;
 198   3             BUFJS[count3]=ch;
 199   3             if( ch==0x3e)
 200   3               {
 201   4                  read_flag=1; //如果串口接收的数据达到INBUF_LEN个,且校验没错, 
 202   4               }
 203   3           }
 204   2         }
 205   1          if(read_flag) //如果取数标志已置位,就将读到的数从串口发出 
 206   1          {
 207   2            read_flag=0; //取数标志清0 
 208   2            switch(BUFJS[2])  //判断命令
 209   2                    { 
 210   3                         case 0x01://K1
 211   3                          senddata();
 212   3                          time1[0]=BUFJS[3];
 213   3                         break;
 214   3                         case 0x02:
 215   3                         senddata();
 216   3                         time1[1]=BUFJS[3];
 217   3                     
 218   3                         break;

⌨️ 快捷键说明

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