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

📄 chengxu.lst

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

  56          void delay(uchar x)//延时程序 0.1秒
  57          {
  58   1              uchar m,n,s;
  59   1              for(m=x;m>0;m--)
  60   1              for(n=20;n>0;n--)
  61   1              for(s=248;s>0;s--);
  62   1      }       
  63          /********************************************************************
  64                                      求值函数 1
  65          *********************************************************************/
  66          void t_to_dis1()
  67          {
  68   1              numb[0]=0;                           //显示千位
  69   1              numb[1]=countnum/100;           //显示百位
  70   1              numb[2]=countnum%100/10;                //显示十位
  71   1              numb[3]=countnum%10;          //显示个位
  72   1      }
  73          /********************************************************************
  74                                      求值函数 2
  75          *********************************************************************/
  76          void t_to_dis2()
  77          {
  78   1              numb[0]=0;                       //显示千位
  79   1              numb[1]=setnum/100;             //显示百位
  80   1              numb[2]=setnum%100/10;          //显示十位
  81   1              numb[3]=setnum%10;          //显示个位
  82   1      }
  83          /********************************************************************
  84                                      显示函数
  85          *********************************************************************/        
  86          void display()  //显示函数
  87          {
  88   1            WEI&=0XF0;
  89   1                DUAN=seg7code[numb[0]];
  90   1                wei1=1;
  91   1                delay(2);
  92   1      
  93   1                WEI&=0XF0;  
  94   1            DUAN=seg7code[numb[1]];
  95   1                wei2=1;
  96   1                delay(2);
  97   1      
  98   1                WEI&=0XF0;  
  99   1                DUAN=seg7code[numb[2]];
 100   1                wei3=1;
 101   1                delay(2);
 102   1      
 103   1                WEI&=0XF0;  
 104   1            DUAN=seg7code[numb[3]];
 105   1                wei4=1;
 106   1                delay(2);
 107   1                WEI&=0XF0;
 108   1      }
 109                     
 110          /********************************************************************
 111                                     IO口初始化函数
 112          *********************************************************************/    
 113          void init_all(void)
 114          {               
 115   1          P2M1=0;
 116   1              P2M0=0xff;
 117   1              P1M1=0;
C51 COMPILER V7.06   CHENGXU                                                               05/14/2012 14:26:11 PAGE 3   

 118   1              P1M0=0x0f;
 119   1              P3M1&=0x7f;
 120   1              P3M0|=0x80;
 121   1      } /********************************************************************
 122                                     按键扫描函数
 123          *********************************************************************/    
 124          void key_scan(void)
 125          {
 126   1           if(key1==0)                //增加次数
 127   1                      {
 128   2                        delay(5);
 129   2                        if(key1==0)
 130   2                         {
 131   3                           while(!key1);
 132   3                               setnum++;              //keynum=0为模式0,继电器吸合300ms ,keynum=1继电器吸合12s
 133   3                               if(setnum>=45)
 134   3                                   setnum=0;
 135   3                         }
 136   2                      }
 137   1      
 138   1      }
 139          /********************************************************************
 140                                     定时器T0初始化
 141          *********************************************************************/
 142          void timer0init(void)
 143          { 
 144   1               TMOD=0X01;//定义定时器工作方式
 145   1               TH0=(65536-30000)/256;
 146   1               TL0=(65536-30000)%256;
 147   1               ET0=1;
 148   1               TR0=1;
 149   1               EA=1;
 150   1       }
 151          /********************************************************************
 152                                      主函数
 153          *********************************************************************/
 154          void main()
 155          {        
 156   1              init_all();         //初始化IO
 157   1              timer0init();  //d定时器T0初始化
 158   1              IN1=1;
 159   1              jdq=1;
 160   1              while(1)
 161   1              {  
 162   2        
 163   2                if(IN1==1&&startflag)         //红外计数器
 164   2                {
 165   3                        delay(5);
 166   3                        if(IN1==1)
 167   3                         {
 168   4                           while(IN1);
 169   4                                countnum++;
 170   4                         }
 171   3                }
 172   2                if(key2==0)           //脚踏开关
 173   2                      {
 174   3                        delay(5);
 175   3                        if(key2==0)
 176   3                        {
 177   4                            while(!key2);
 178   4                                startflag=1;
 179   4                                jdq=0;
C51 COMPILER V7.06   CHENGXU                                                               05/14/2012 14:26:11 PAGE 4   

 180   4                        }
 181   3                      }
 182   2            
 183   2                if(key3==0)    //功能按键
 184   2                {
 185   3                  delay(5);
 186   3                  if(key3==0)
 187   3                       {
 188   4                        while(!key3);
 189   4                    flag=!flag;
 190   4                       }        
 191   3             }
 192   2      
 193   2                 if(flag==1)     //显示设定值还是计数值
 194   2                 {
 195   3                        t_to_dis2();
 196   3                 }
 197   2                 else
 198   2                  t_to_dis1();
 199   2      
 200   2                 if(countnum>=setnum)  //计数值大于设定值时继电器断开
 201   2                 {
 202   3                    jdq=1;
 203   3                        countnum=0;
 204   3                        startflag=0;
 205   3                 }
 206   2      
 207   2                   
 208   2      
 209   2         
 210   2      }
 211   1      }
 212          /********************************************************************
 213                                     定时器T1中断函数
 214          *********************************************************************/
 215          void timer0(void)interrupt 1  using 1
 216          { 
 217   1       TH0=(65536-25000)/256;
 218   1       TL0=(65536-25000)%256;
 219   1              display();                //显示函数 
 220   1              if(flag==1)
 221   1              {
 222   2                 key_scan();
 223   2               }
 224   1      }
 225          
 226          /********************************************************************
 227                                        结束
 228          *********************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    341    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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