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

📄 chengxu.lst

📁 单路带数码管可编程可调节延时模块
💻 LST
字号:
C51 COMPILER V9.00   CHENGXU                                                               05/13/2013 13:15:24 PAGE 1   


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

line level    source

   1          /********************************************************************
   2                                      汇诚科技
   3          
   4          实现功能: 接通电源继电器吸合30分钟断开
   5          使用芯片:STC12C5204AD
   6          晶振:11.0592MHZ
   7          编译环境:Keil
   8          硬件环境:四位数显两路输入三按键 (kzs1211-75150k (双路输入,继电器单路输出,三个按键,四位数码管模块))
   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           接通电源继电器吸合30分钟断开,数码管前两位显示分钟,后两位显示秒
  22          采用倒计时方式计时
  23          ********************************************************************/
  24          
  25          #include<STC12C52.h>           //库文件
  26          #include <intrins.h>
  27          #define uchar unsigned char//宏定义无符号字符型
  28          #define uint unsigned int  //宏定义无符号整型
  29          #define FOSC 11059200L
  30          #define BAUD  9600
  31          
  32          #define ADC_POWER   0x80            //ADC 电源控制位
  33          #define ADC_FLAG    0x10            //ADC 转换结束标志位
  34          #define ADC_START   0x08            //ADC 开始转换控制位
  35          #define ADC_SPEEDLL 0x00            //420个时钟周期转换一次
  36          #define ADC_SPEEDL  0x20            //280 个时钟周期转换一次
  37          #define ADC_SPEEDH  0x40            //140个时钟周期转换一次
  38          #define ADC_SPEEDHH 0x60            //70个时钟周期转换一次
  39          void display(void);                  //显示函数
  40          void t_to_dis(uchar num);
  41          
  42          #define DUAN P2            //P0口控制段
  43          #define WEI  P1            //P2口控制位
  44          /********************************************************************
  45                                      初始定义
  46          *********************************************************************/
  47          //数码管显示段码 
  48          code uchar seg7code[11]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0XBF};
  49          //数码管位控制端
  50          sbit wei1=P1^0;
  51          sbit wei2=P1^1;
  52          sbit wei3=P1^2;
  53          sbit wei4=P1^3;  
  54          //继电器输出控制端                            
  55          sbit OUT=P3^7;
C51 COMPILER V9.00   CHENGXU                                                               05/13/2013 13:15:24 PAGE 2   

  56          //按键输入控制端
  57          sbit key1=P3^2;
  58          sbit key2=P3^3;
  59          sbit key3=P3^4;
  60          //两路输入控制端可做ad采样
  61          sbit IN0=P1^6;
  62          sbit IN1=P1^7;
  63          uchar numb[4];        //定义字符串用于数值转换
  64          uint tcnt;
  65          uchar miao=0;
  66          uchar fen=0;
  67          
  68          /********************************************************************
  69                                      延时函数
  70          *********************************************************************/
  71          void delay(uint x)//延时程序 0.1秒
  72          {
  73   1              uint m,n,s;
  74   1              for(m=x;m>0;m--)
  75   1              for(n=20;n>0;n--)
  76   1              for(s=248;s>0;s--);
  77   1      }
  78                             
  79          /********************************************************************
  80                                     IO口初始化函数
  81          *********************************************************************/    
  82          void init_all(void)
  83          {               
  84   1          P2M1=0;
  85   1              P2M0=0xff;
  86   1              P1M1=0x80;
  87   1              P1M0=0x0f;
  88   1              P3M1&=0x7f;
  89   1              P3M0|=0x80;
  90   1      } 
  91          /********************************************************************
  92                                     定时器T1初始化
  93          *********************************************************************/
  94          void timer0init(void)
  95          { 
  96   1               TMOD=0X10;                  //设定定时器工作方式
  97   1               TH1 =0x4c;
  98   1           TL1 =0x00;
  99   1               ET1=1;
 100   1               TR1=1;
 101   1               EA=1;
 102   1       }
 103          /********************************************************************
 104                                      主函数
 105          *********************************************************************/
 106          void main()
 107          {        
 108   1          init_all();  //初始化IO
 109   1              timer0init();//定时器初始化
 110   1              OUT=1;
 111   1              while(1)
 112   1              {  
 113   2                       t_to_dis(miao);   //数值变换
 114   2                       display();       //显示
 115   2                      if(tcnt>=20)   //秒减去1
 116   2                      {
 117   3                               tcnt=0;
C51 COMPILER V9.00   CHENGXU                                                               05/13/2013 13:15:24 PAGE 3   

 118   3                           miao++;
 119   3                               if(miao>=60)   //60秒,分钟变量加1
 120   3                               {
 121   4                                      miao=0;
 122   4                                      fen++;
 123   4                                      if(fen>=30)
 124   4                                      {
 125   5                                        fen=0;
 126   5                                        TR1=0;
 127   5                                        OUT=0;
 128   5                                      }
 129   4                               }
 130   3                       }
 131   2          }
 132   1      }
 133          /********************************************************************
 134                                     定时器T1中断函数
 135          *********************************************************************/
 136          void timer1(void)interrupt 3  using 2
 137          {        
 138   1           TH1 =0x4c;
 139   1           TL1 =0x00;
 140   1              tcnt++;
 141   1      
 142   1      
 143   1      }
 144          /********************************************************************
 145                                      求值函数
 146          *********************************************************************/
 147          void t_to_dis(uchar num)
 148          {
 149   1              numb[0]=fen/10;                 //显示千位
 150   1              numb[1]=fen%10;         //显示百位
 151   1              numb[2]=num/10;             //显示十位
 152   1              numb[3]=num%10;             //显示个位
 153   1      }
 154          /********************************************************************
 155                                      显示函数
 156          *********************************************************************/
 157          void display()                  //显示函数
 158          {
 159   1            WEI&=0XF0;
 160   1                DUAN=seg7code[numb[0]];
 161   1                wei1=1;
 162   1                delay(1);
 163   1      
 164   1                WEI&=0XF0;  
 165   1            DUAN=seg7code[numb[1]]&0x7f;
 166   1                wei2=1;
 167   1                delay(1);
 168   1      
 169   1                WEI&=0XF0;  
 170   1                DUAN=seg7code[numb[2]];
 171   1                wei3=1;
 172   1                delay(1);
 173   1      
 174   1                WEI&=0XF0;  
 175   1            DUAN=seg7code[numb[3]];
 176   1                wei4=1;
 177   1                delay(1);
 178   1                WEI&=0XF0;
 179   1      }       
C51 COMPILER V9.00   CHENGXU                                                               05/13/2013 13:15:24 PAGE 4   

 180          /********************************************************************
 181                                        结束
 182          *********************************************************************/


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