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

📄 dsq_main.lst

📁 单片机控制RTC(DS1302)时钟程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V6.12  DSQ_MAIN                                                               03/11/2009 20:31:19 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE DSQ_MAIN
OBJECT MODULE PLACED IN G:\DSQ\DSQ_MAIN.OBJ
COMPILER INVOKED BY: C:\keil\c51\bin\C51.EXE G:\DSQ\DSQ_MAIN.C DB SB OE

stmt level    source

   1          //本程序用于铁路道口管理等的定时记录等功能
   2          //修改时间2009-3-7
   3          //设计:魏兆俊
   4          //版本:1.0
   5          
   6          #include<reg52.h>
   7          //#include<w77c32.h>
   8          #include<stdio.h>
   9          #include<intrins.h>
  10          #include<absacc.h>
  11          
  12          /*
  13          版本说明
  14          
  15          */
  16          #define uchar unsigned char
  17          #define uint  unsigned int
  18          #define true 1
  19          #define faluse 0
  20          #define on 1
  21          #define off 0
  22          
  23          
  24          
  25          sbit warm_control=P2^3;
  26          sbit LED_BIT_A=P2^4;
  27          sbit LED_BIT_B=P2^5;
  28          sbit LED_BIT_C=P2^6;
  29          sbit LED_BIT_D=P2^7;
  30          sbit key_select=P2^0;
  31          sbit key_inc=P2^1;
  32          sbit key_dec=P2^2;
  33          
  34          
  35          
  36          
  37          uchar led_scan_counter;
  38          uchar display_counter;
  39          uchar led_code[17];
  40          uchar led_code_black[17];
  41          uchar code led_code_ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xff};
  42          uchar time_write[12];
  43          uint light_on;
  44          uchar  led_light_flag;
  45          
  46          
  47          
  48          
  49          //CPU 系统初始化函数
  50          void system_start();
  51          void delay500ms();
  52          //74HC154译码输出
  53          void ym_out();
  54          /********************************************************************
  55          *
C51 COMPILER V6.12  DSQ_MAIN                                                               03/11/2009 20:31:19 PAGE 2   

  56          * 名称: v_Get1302
  57          * 说明:
  58          * 功能: 读取DS1302当前时间
  59          * 调用: uc_R1302()
  60          * 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年
  61          * 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
  62          * 返回值: 无
  63          ***********************************************************************/
  64          void v_Get1302();
  65          /********************************************************************
  66          *
  67          * 名称: v_Set1302
  68          * 说明:
  69          * 功能: 设置初始时间
  70          * 调用: v_W1302()
  71          * 输入: pSecDa: 初始时间地址。初始时间格式为: 秒 分 时 日 月 星期 年
  72          * 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
  73          * 返回值: 无
  74          ***********************************************************************/
  75          void v_Set1302();
  76          //键盘处理函数
  77          void key_function();
  78          void delay5000ms();
  79          
  80          
  81          
  82          
  83          
  84          //系统主程序
  85          void main ()
  86            {
  87   1         uchar i;
  88   1        system_start();
  89   1        led_scan_counter=0;
  90   1      
  91   1        time_write[12]=0x9;
  92   1        time_write[11]=0x0;
  93   1        time_write[10]=0x03;
  94   1        time_write[9]=0x0;
  95   1        time_write[8]=0x0;
  96   1        time_write[7]=0x1;
  97   1        time_write[6]=0x2;
  98   1        time_write[5]=0x2;
  99   1        time_write[4]=0x5;
 100   1        time_write[3]=0x4;
 101   1        time_write[2]=0x4;
 102   1        time_write[1]=0x0;
 103   1      
 104   1      //  v_Set1302();
 105   1      
 106   1      
 107   1        while (1)
 108   1         {
 109   2      
 110   2          v_Get1302();
 111   2          for (i=0;i<17;i++)
 112   2          {led_code_black[i]=led_code[i];}
 113   2      
 114   2      //     led_code_black[7]=0x0b;
 115   2      //     led_code_black[8]=0x0b;
 116   2            warm_control=on;
 117   2            key_function();
C51 COMPILER V6.12  DSQ_MAIN                                                               03/11/2009 20:31:19 PAGE 3   

 118   2      
 119   2            delay500ms();
 120   2            delay500ms();
 121   2            delay500ms();
 122   2            delay500ms();
 123   2            delay500ms();
 124   2            delay500ms();
 125   2      
 126   2         }
 127   1         }
 128          
 129          
 130          //键盘处理函数
 131          void key_function()
 132                {
 133   1            led_light_flag=0;
 134   1      key_function0:if (key_select==0)
 135   1               {delay5000ms();
 136   2                goto key_function1; }
 137   1               if (led_light_flag>0)
 138   1                 {goto key_function_change; } 
 139   1               return;
 140   1      key_function1:if (key_select==0)
 141   1                    {goto key_function2;}
 142   1               if (led_light_flag>0)
 143   1                 {goto key_function_change; } 
 144   1                    return ;
 145   1      key_function2:
 146   1                    delay5000ms();
 147   1                    delay5000ms();
 148   1                    led_light_flag++;
 149   1                    if (led_light_flag>14)
 150   1                    {goto key_function_end;}
 151   1                   switch  (led_light_flag)
 152   1                      {
 153   2                       case 1:led_code_black[3]=0x0b;
 154   2                              break;
 155   2                       case 2:led_code_black[3]=led_code[3];
 156   2                              led_code_black[4]=0x0b;
 157   2                              break;
 158   2                       case 3:led_code_black[4]=led_code[4];
 159   2                              led_code_black[5]=0x0b;
 160   2                              break;
 161   2                       case 4:led_code_black[5]=led_code[5];
 162   2                              led_code_black[6]=0x0b;
 163   2                              break;
 164   2                       case 5:led_code_black[6]=led_code[6];
 165   2                              led_code_black[7]=0x0b;
 166   2                              break;
 167   2                       case 6:led_code_black[7]=led_code[7];
 168   2                              led_code_black[8]=0x0b;
 169   2                              break;
 170   2                       case 7:led_code_black[8]=led_code[8];led_code_black[9]=0x0b;
 171   2                              break;
 172   2                       case 8:led_code_black[9]=led_code[9];led_code_black[10]=0x0b;
 173   2                              break;
 174   2                       case 9:led_code_black[10]=led_code[10];led_code_black[11]=0x0b;
 175   2                              break;
 176   2                       case 10:led_code_black[11]=led_code[11];led_code_black[12]=0x0b;
 177   2                              break;
 178   2                       case 11:led_code_black[12]=led_code[12];led_code_black[13]=0x0b;
 179   2                              break;
C51 COMPILER V6.12  DSQ_MAIN                                                               03/11/2009 20:31:19 PAGE 4   

 180   2                       case 12:led_code_black[13]=led_code[13];led_code_black[14]=0x0b;
 181   2                              break;
 182   2                       case 13:led_code_black[14]=led_code[14];led_code_black[15]=0x0b;
 183   2                              break;
 184   2                       case 14:led_code_black[15]=led_code[15];led_code_black[16]=0x0b;
 185   2                              break;
 186   2                              
 187   2                       default:
 188   2                               break;       
 189   2                       }   
 190   1      
 191   1                    delay5000ms();
 192   1                    delay5000ms();
 193   1                    delay5000ms();
 194   1                    delay5000ms();
 195   1                    goto key_function0;
 196   1                    
 197   1                    
 198   1      key_function_change:if (key_inc==0)                //判断是否有加减键
 199   1                           {goto key_function_change1;}
 200   1                           if(key_dec==0)
 201   1                           {goto key_function_change1;}
 202   1                           goto  key_function0; 
 203   1                           
 204   1      key_function_change1:delay5000ms();
 205   1                           if (key_inc==0)
 206   1                             {goto key_inc_process;}
 207   1                           if (key_dec==0)
 208   1                              {
 209   2                               goto key_dec_process;}
 210   1                               delay5000ms();
 211   1                               delay5000ms();
 212   1                               delay5000ms();
 213   1                               delay5000ms();
 214   1                             goto key_function0;
 215   1      //加键处理函数
 216   1      key_inc_process:
 217   1                      switch  (led_light_flag)
 218   1                           {
 219   2                            case 1:if (led_code[3]==9)
 220   2                                   {led_code[3]=0;}else
 221   2                                    led_code[3]=led_code[3]+1;
 222   2                                   break;
 223   2      
 224   2                            case 2:if (led_code[4]==9)
 225   2                                   {led_code[4]=0;}else
 226   2                                    led_code[4]=led_code[4]+1;
 227   2                                   break;
 228   2                            case 3:if (led_code[5]==9)
 229   2                                   {led_code[5]=0;}else
 230   2                                    led_code[5]=led_code[5]+1;
 231   2                                   break;
 232   2                            case 4:if (led_code[6]==9)
 233   2                                   {led_code[6]=0;}else
 234   2                                    led_code[6]=led_code[6]+1;
 235   2                                   break;
 236   2                            case 5:if (led_code[7]==9)
 237   2                                   {led_code[7]=0;}else
 238   2                                    led_code[7]=led_code[7]+1;
 239   2                                   break;
 240   2                            case 6:if (led_code[8]==9)
 241   2                                   {led_code[8]=0;}else

⌨️ 快捷键说明

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