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

📄 chengxu.lst

📁 单路带数码管可编程可调节延时模块
💻 LST
字号:
C51 COMPILER V7.06   CHENGXU                                                               06/06/2012 17:35:29 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE CHENGXU
OBJECT MODULE PLACED IN chengxu.OBJ
COMPILER INVOKED BY: D:\keil2\C51\BIN\C51.EXE chengxu.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /********************************************************************
   2                                      汇诚科技
   3          
   4          实现功能:此版配套测试程序
   5          使用芯片:STC12C2052AD
   6          晶振:11.0592MHZ
   7          波特率:9600
   8          编译环境:Keil
   9          作者:yang
  10          QQ:790244909
  11          淘宝店:汇诚科技 http://shop36330473.taobao.com
  12          【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     
  13          /********************************************************************
  14          采样AD的电压值作为继电器的延时吸合时间  最大调节数为255秒最小调节单位是秒
  15          或者最大调节时间为分,最大调节数为255,最小调节单位为分
  16          ********************************************************************/
  17          #include<STC12C5A60S2.H>   //库文件
  18          #include <intrins.h>
  19          #include<eprom.h>
  20          #define uchar unsigned char//宏定义无符号字符型
  21          #define uint unsigned int  //宏定义无符号整型
  22          #define DUAN P2            //P0口控制段
  23          #define WEI  P1            //P2口控制位
  24          /********************************************************************
  25                                      初始定义
  26          *********************************************************************/
  27          //数码管显示段码 
  28          code uchar seg7code[11]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0XBF};
  29          //数码管显示位码 
  30          sbit wei1=P1^0;           //位的控制端
  31          sbit wei2=P1^1;
  32          sbit wei3=P1^2;
  33          sbit wei4=P1^3;
  34                                       
  35          uchar numb[4];        //定义字符串用于数值转换
  36          sbit jdq=P3^7;        //继电器控制端口
  37          //按键
  38          sbit key1=P3^2;
  39          sbit key2=P3^3;
  40          sbit key3=P3^4;
  41          //输入控制端
  42          sbit IN0=P1^6;
  43          sbit IN1=P1^7;
  44          //全局变量和标着位变量
  45          uchar timesnum;
  46          uchar setnum=1;
  47          bit flag=0;
  48          /********************************************************************
  49                                      延时函数
  50          *********************************************************************/
  51          void delay(uchar x)  //延时程序 0.002秒
  52          {
  53   1              uchar m,n,s;
  54   1              for(m=x;m>0;m--)
  55   1              for(n=20;n>0;n--)
C51 COMPILER V7.06   CHENGXU                                                               06/06/2012 17:35:29 PAGE 2   

  56   1              for(s=248;s>0;s--);
  57   1      }       
  58          /********************************************************************
  59                                      求值函数
  60          *********************************************************************/
  61          void t_to_dis()
  62          {
  63   1              numb[0]=0;                      //显示千位
  64   1              numb[1]=setnum/100;             //显示百位
  65   1              numb[2]=setnum%100/10;          //显示十位
  66   1              numb[3]=setnum%10;          //显示个位
  67   1      }
  68          
  69          /********************************************************************
  70                                      显示函数
  71          *********************************************************************/        
  72          void display()                  //显示函数
  73          {
  74   1            WEI&=0XF0;
  75   1                DUAN=seg7code[numb[0]];
  76   1                wei1=1;
  77   1                delay(2);
  78   1      
  79   1                WEI&=0XF0;  
  80   1            DUAN=seg7code[numb[1]];
  81   1                wei2=1;
  82   1                delay(2);
  83   1      
  84   1                WEI&=0XF0;  
  85   1                DUAN=seg7code[numb[2]];
  86   1                wei3=1;
  87   1                delay(2);
  88   1      
  89   1                WEI&=0XF0;  
  90   1            DUAN=seg7code[numb[3]];
  91   1                wei4=1;
  92   1                delay(2);
  93   1                WEI&=0XF0;
  94   1      }   
  95          /********************************************************************
  96                                     IO口初始化函数
  97          *********************************************************************/    
  98          void init_all(void)
  99          {               
 100   1          P2M1=0;
 101   1              P2M0=0xff;
 102   1              P1M1=0;
 103   1              P1M0=0x0f;
 104   1              P3M1&=0x7f;
 105   1              P3M0|=0x80;
 106   1      } 
 107          /********************************************************************
 108                                     按键扫描函数
 109          *********************************************************************/    
 110          void key_scan(void)
 111          {
 112   1           if(key1==0)                         //增加次数
 113   1                      {
 114   2                        delay(5);
 115   2                        if(key1==0)
 116   2                         {
 117   3                           while(!key1);
C51 COMPILER V7.06   CHENGXU                                                               06/06/2012 17:35:29 PAGE 3   

 118   3                               setnum++;                   //keynum=0为模式0,继电器吸合300ms ,keynum=1继电器吸合12s
 119   3                               if(setnum>=100)
 120   3                                   setnum=100;
 121   3                           IapEraseSector(0);  //擦除扇区
 122   3                               IapProgramByte(5,setnum);
 123   3                         }
 124   2                      }
 125   1      
 126   1                 if(key2==0)                   //按键扫描,key2按下模式变化一次
 127   1                      {
 128   2                        delay(5);
 129   2                        if(key2==0)
 130   2                         {
 131   3                           while(!key2);
 132   3                               setnum--;                   //减小次数
 133   3                               if(setnum==0||setnum>=120)
 134   3                                 setnum=0;
 135   3                               IapEraseSector(0);  //擦除扇区
 136   3                               IapProgramByte(5,setnum);
 137   3                         }
 138   2                      }
 139   1      }
 140          /********************************************************************
 141                                     定时器T0初始化
 142          *********************************************************************/
 143          void timer0init(void)
 144          { 
 145   1               TMOD=0X01;                  //定义定时器工作方式
 146   1               TH0=(65536-25000)/256;
 147   1               TL0=(65536-25000)%256;
 148   1               ET0=1;
 149   1               TR0=1;
 150   1               EA=1;
 151   1       }
 152          /********************************************************************
 153                                      主函数
 154          *********************************************************************/
 155          void main()
 156          {           
 157   1              init_all();                     //初始化IO
 158   1              timer0init();
 159   1              IN0=IN1=1;
 160   1              jdq=0;
 161   1              setnum=IapReadByte(5); 
 162   1              while(1)
 163   1              {  
 164   2                t_to_dis();                   //数值变换
 165   2                key_scan();                           //键盘扫描
 166   2                if(IN1==0&&flag==0)       //按键扫描,key2按下模式变化一次
 167   2                {
 168   3                        delay(10);                
 169   3                        if(IN1==0)
 170   3                        {
 171   4                           delay(2);
 172   4                           //while(!IN1);
 173   4                               jdq=!jdq;
 174   4                               flag=1;
 175   4                        }
 176   3                }
 177   2               if(flag==1&&IN0==0)
 178   2               {
 179   3                  delay(5);
C51 COMPILER V7.06   CHENGXU                                                               06/06/2012 17:35:29 PAGE 4   

 180   3                if(IN0==0)
 181   3                { 
 182   4                   delay(5);
 183   4                   while(!IN0);
 184   4                   timesnum++;
 185   4                       if(timesnum>=(setnum+1))
 186   4                       {
 187   5                         delay(60);
 188   5                        timesnum=0;
 189   5                        jdq=!jdq;  
 190   5                       }
 191   4                 }
 192   3                }
 193   2          }
 194   1      }
 195          /********************************************************************
 196                                     定时器T1中断函数
 197          *********************************************************************/
 198          void timer0(void)interrupt 1  using 1
 199          { 
 200   1       TH0=(65536-25000)/256;
 201   1       TL0=(65536-25000)%256;
 202   1              display();                   //显示函数 
 203   1              
 204   1      }
 205          /********************************************************************
 206                                        结束
 207          *********************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    445    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6    ----
   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 + -