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

📄 main.lst

📁 单路带数码管可编程可调节延时模块
💻 LST
字号:
C51 COMPILER V9.00   MAIN                                                                  05/08/2013 17:51:18 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************
   2                                      汇诚科技
   3          
   4          实现功能:继电器循环通断控制程序(eeprom)
   5          使用芯片:STC12C5204AD
   6          晶振:11.0592MHZ
   7          编译环境:Keil
   8          硬件环境:四位数显两路输入三按键
   9          作者:yang
  10          QQ:790244909
  11          网站:www.ourhc.cn
  12          物联网测试网站:http://hualongelectron.eicp.net/
  13          日期:2013-04-02
  14          淘宝店:
  15                华龙电子直销:http://hlelectrony.taobao.com 
  16                电子开发直销:http://shop63233873.taobao.com 
  17                    汇诚科技网路购物:http://shop36330473.taobao.com
  18          【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     
  19          /********************************************************************    
  20          /********************************************************************
  21          功能说明:继电器循环通断控制程序
  22          继电器通、断时间可调,
  23          key1功能键:调节模式与实时显示模式转换
  24          key2、key3调节按键用于调节通断时间(通、断时间相等,即一个参数),掉电记忆设定值
  25          上电时,继电器吸合,数显开始计时,到达设定闭合时间后断开;
  26          数显清零,数显开始计时,到设定时间,继电器闭合,数显清零。。。循环下去。。
  27          
  28          设定最大时间是99分60秒
  29          ********************************************************************/
  30          #include<STC12C5A60S2.H>               //库文件
  31          #include <intrins.h>
  32          #include"eprom.h"
  33          #define uchar unsigned char//宏定义无符号字符型
  34          #define uint unsigned int  //宏定义无符号整型
  35          
  36          #define DUAN P2   //P0口控制段
  37          #define WEI  P1   //P2口控制位
  38          sbit jdq= P3^7;
  39          sbit key1=P3^2; //功能按键
  40          sbit key2=P3^3; //增加
  41          sbit key3=P3^4; //减小
  42          /********************************************************************
  43                                      初始定义
  44          *********************************************************************/
  45          code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟
  46          uchar wei[4]={0X01,0X02,0X04,0X08};                                 //位的控制端
  47          uchar numb[4];        //定义字符串
  48          uchar cnt,keynum;
  49          uchar setfen,setmiao;
  50          uchar miao,fen;
  51          void IapEraseSector(uint addr);
  52          void IapProgramByte(uint addr,uchar dat);
  53          uchar IapReadByte(uint addr);
  54          /********************************************************************
  55                                      延时函数
C51 COMPILER V9.00   MAIN                                                                  05/08/2013 17:51:18 PAGE 2   

  56          *********************************************************************/
  57          void delay(uchar x)    //延时程序 0.1秒
  58          {
  59   1              uchar m,n,s;
  60   1              for(m=x;m>0;m--)
  61   1              for(n=20;n>0;n--)
  62   1              for(s=248;s>0;s--);
  63   1      }
  64          /********************************************************************
  65                                      显示函数
  66          *********************************************************************/        
  67          void display(uchar a ,uchar b)   //显示函数
  68          {
  69   1            WEI&=0XF0;
  70   1                DUAN=seg7code[a/10];
  71   1                WEI=wei[0];
  72   1                delay(2);
  73   1      
  74   1                WEI&=0XF0;  
  75   1            DUAN=seg7code[a%10]&0x7f;
  76   1                WEI=wei[1];
  77   1                delay(2);
  78   1      
  79   1                WEI&=0XF0;  
  80   1                DUAN=seg7code[b/10];
  81   1                WEI=wei[2];
  82   1                delay(2);
  83   1      
  84   1                WEI&=0XF0;  
  85   1            DUAN=seg7code[b%10];
  86   1                WEI=wei[3];
  87   1                delay(2);
  88   1                 
  89   1                WEI&=0XF0;
  90   1      }
  91          void keyscan(void)
  92          {
  93   1       if(key1==0)
  94   1       {  delay(1);
  95   2          if(key1==0)
  96   2          {
  97   3                 while(!key1);
  98   3                 keynum++;
  99   3                 if(keynum>=3)
 100   3                 { 
 101   4                   keynum=0;
 102   4                       miao=fen=0;
 103   4                      //jdq=0;
 104   4                }
 105   3          }
 106   2        }
 107   1      
 108   1        switch(keynum)
 109   1        {
 110   2          case 1: if(key2==0)
 111   2                      {
 112   3                                delay(5);
 113   3                                if(key2==0)
 114   3                        {
 115   4                                        while(!key2);
 116   4                                        setmiao++;
 117   4                                        if(setmiao>59)
C51 COMPILER V9.00   MAIN                                                                  05/08/2013 17:51:18 PAGE 3   

 118   4                                           setmiao=59;
 119   4                                        IapEraseSector(0);
 120   4                                        IapProgramByte(0,setmiao);  //写入函数
 121   4                                }
 122   3                               }
 123   2                              if(key3==0) 
 124   2                              {
 125   3                                delay(5);
 126   3                                if(key3==0)
 127   3                        {
 128   4                                  while(!key3);
 129   4                                  setmiao--;
 130   4                                      if(setmiao==0||setmiao>=250)
 131   4                                        setmiao=0;
 132   4                                  IapEraseSector(0);
 133   4                                  IapProgramByte(0,setmiao);  //写入函数
 134   4                                }
 135   3                              }
 136   2                       display(setfen,setmiao);
 137   2                              break;
 138   2           case 2: if(key2==0)
 139   2                       {
 140   3                                        delay(5);
 141   3                                        if(key2==0)
 142   3                                {
 143   4                                                while(!key2);
 144   4                                                setfen++;
 145   4                                                if(setfen>99)
 146   4                                               setfen=99;
 147   4                                                IapEraseSector(512);
 148   4                                                IapProgramByte(512,setfen);  //写入函数
 149   4                                }
 150   3                               }
 151   2                               if(key3==0) 
 152   2                               {
 153   3                                        delay(5);
 154   3                                        if(key3==0)
 155   3                                {
 156   4                                          while(!key3);
 157   4                                          setfen--;
 158   4                                          if(setfen==0||setfen>=250)
 159   4                                             setfen=0;
 160   4                                          IapEraseSector(512);
 161   4                                          IapProgramByte(512,setfen);  //写入函数
 162   4                                        }
 163   3                              }
 164   2                              display(setfen,setmiao);
 165   2                              break;
 166   2               default : break;
 167   2        }
 168   1      }
 169          /********************************************************************
 170                                     定时器T0初始化
 171          *********************************************************************/
 172          void cshh()
 173          { 
 174   1               TMOD|=0X01; //定义定时器工作方式
 175   1               TH0=0Xa6;
 176   1               TL0=0X01;
 177   1               ET0=1;
 178   1               TR0=1;      //开定时器
 179   1               EA=1;       //开中断
C51 COMPILER V9.00   MAIN                                                                  05/08/2013 17:51:18 PAGE 4   

 180   1       }
 181          /********************************************************************
 182                                      初始化函数
 183          *********************************************************************/
 184          void init_all(void)    
 185          {
 186   1              P2M1=0;
 187   1              P2M0=0xff;
 188   1              P1M1=0;
 189   1              P1M0=0x0f;
 190   1              P3M1&=0x7f;
 191   1              P3M0|=0x80;
 192   1              P3=0xff;        
 193   1      }                  
 194          /********************************************************************
 195                                      主函数
 196          *********************************************************************/
 197          void main()
 198          {        
 199   1              init_all();
 200   1              setfen=IapReadByte(512);           //读取函数
 201   1              setmiao=IapReadByte(0);
 202   1              cshh();                          //定时器初始化
 203   1              while(1)
 204   1              {  
 205   2                 if(keynum==0)
 206   2                 {
 207   3                   display(fen,miao);
 208   3                 }
 209   2             keyscan();
 210   2                 }
 211   1      }
 212          /********************************************************************
 213                                     定时器中断函数
 214          *********************************************************************/
 215          void timer1(void)interrupt 1  
 216          { 
 217   1         TH0=0Xa6; //定时初值
 218   1         TL0=0X01; //定时初值
 219   1         cnt++;
 220   1         if(cnt>=40)
 221   1         {
 222   2               cnt=0;
 223   2               miao++;
 224   2               if(miao>=60)
 225   2               {
 226   3                 miao=0;
 227   3                 fen++;
 228   3               }
 229   2          }
 230   1              if((fen>=setfen)&&(miao>=setmiao))       
 231   1          { 
 232   2              jdq=!jdq;
 233   2                      miao=0;
 234   2                      fen=0;
 235   2          }
 236   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    529    ----
   CONSTANT SIZE    =     10    ----
C51 COMPILER V9.00   MAIN                                                                  05/08/2013 17:51:18 PAGE 5   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     14    ----
   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 + -