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

📄 timer05.lst

📁 这是用51单片机开发的电子时钟
💻 LST
字号:
C51 COMPILER V8.05a   TIMER05                                                              02/08/2009 08:16:07 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE TIMER05
OBJECT MODULE PLACED IN timer05.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE timer05.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2           /*
   3          * Copyright (c) 2005, Owen Studio
   4          * All rights reserved.
   5          *
   6          * 文件名称:MyBoard.c
   7          * 当前版本:Version 1.0
   8          * 
   9          * 本程序为通过调试的源程序
  10          *
  11          * 功能描述:上电后系统等待用户输入登陆密码,用户可查询储存在24C02中的登陆密码(A键),也可修改登陆密码(B键),
  12          * 当输入登陆密码后按D键,如果密码正确则进入系统。进入系统后6个数码管开始计时,同时循环播放4首音乐,发光二
  13          * 极管也按预定流水灯程序循环闪动。此时按1-9键则播放第1-9首音乐。按0键则停止播放。按D键开始/停止音乐自动播
  14          * 放。按*键开始/停止流水灯自动演示。按#键切换流水灯方案臘键则跳到下一首音乐,按A键、B键、C键则分别对时、分
  15          * 、秒进行调节。
  16          * 另外本程序集成了与PC通信的串口服务程序,所有按键的功能也可以通过PC机的控制软件实现。状态也可以反馈到此
  17          * 控制软件上。
  18          *
  19          * 资源配置:Timer0用于为系统提供时基;Timer1用于音乐播放;Timer2用于串口波特率发生器。
  20          * 3个中断源,其中两个为Timer0和Timer1中断,另一个为串口中断,主要完成与PC机的通信。
  21          */
  22          /*************************************************************************/
  23          //////////////////////////Beginning of Program/////////////////////////////
  24          /*************************************************************************/
  25          #include <reg52.h>
  26          #include <intrins.h>
  27                     
  28          #define  uchar unsigned char    
  29          #define  uint  unsigned int
  30          
  31          
  32          #define  SCAN_CYCLE 500
  33          sbit P3_3=P3^3;
  34          sbit P3_7=P3^7;
  35          static const char c_keyCode[16]={0x01,0x02,0x03,0x0a,            /*键盘1,2,3,A*/
  36                                           0x04,0x05,0x06,0x0b,            /*键盘4,5,6,B*/
  37                                           0x07,0x08,0x09,0x0c,            /*键盘7,8,9,C*/
  38                                           0x0e,0x00,0x0f,0x0d};           /*键盘*,0,#,D*/
  39          /*************************************************************************/
  40          /*System Variables*/
  41                                  
  42          uchar hour=10;min=0;sec=0;
  43          uchar DisplayArray[6];  
  44           
  45          
  46          uchar Int0Flag,TH0Global,TL0Global;
  47          uchar modifyTimeFlag=0;
  48          /*System Variables Over*/
  49          /*************************************************************************/
  50          /*System Functions*/
  51          
  52          void MainSystem(void);            /*系统主程序*/
  53          void ScrShift(uchar keyIndex);    /*六位数码管顺序左移*/
  54          void Delay (uint value);          /*10us延时*/
  55          void ModifyTime(void);            /*调整时间*/
C51 COMPILER V8.05a   TIMER05                                                              02/08/2009 08:16:07 PAGE 2   

  56          void ScanSeg7();                  /*数码管扫描显示*/    
  57          /*System Functions Over*/
  58          /*************************************************************************/
  59          /*************************************************************************/
  60          /*************************************************************************/
  61          void main(void)         /*主程序入口*/
  62          {
  63   1          TMOD=0x11;          /*Timer0工作在案MODE1,16位定时器,Timer1工作在MODE2,自动重新装载模式*/
  64   1                              /*|    定时器1        |     定时器1       |*/
  65   1                              /*| GATE|C/T| M1 | M0 | GATE|C/T| M1 | M0 |*/
  66   1          TH0=(65536-SCAN_CYCLE)/256; /*设定Timer0每隔SCAN_CYCLEu中断一次*/
  67   1          TL0=(65536-SCAN_CYCLE)%256;
  68   1          TR0=1;                      /*启动TEMER0*/
  69   1          
  70   1          IE=0x9a;            /*使能总中断、Timer0,1中断、外部中断1,2*/
  71   1                              /*| EA| - | ET2| ES | ET1| EX1| ET0| EX0|*/
  72   1          IP=0x12;            /*优先Timer0中断*/
  73   1                              /*| - | - | PT2| PS | PT1| PX1| PT0| PX0|*/
  74   1         
  75   1          P3_3=1;             /*关喇叭*/
  76   1          P2=0x00;            /*点亮8个发光二极管*/
  77   1         
  78   1      }
  79          /*************************************************************************/
  80          
  81          /*************************************************************************/
  82          void MainSystem(void)           /*系统主程序*/
  83          {
  84   1          
  85   1          
  86   1         
  87   1          if(modifyTimeFlag==1)
  88   1          {
  89   2              ModifyTime();           /*根据新秒值调整时间*/
  90   2              modifyTimeFlag=0;
  91   2          }
  92   1      }
  93          /*************************************************************************/
  94          
  95          /*************************************************************************/
  96          
  97          /*************************************************************************/
  98          /*************************************************************************/
  99          
 100          /*************************************************************************/
 101          void ScrShift(uchar keyIndex)       /*六位数码管顺序左移*/
 102          {
 103   1          uchar i;                    
 104   1          for(i=5;i>0;i--)
 105   1          {
 106   2              DisplayArray[i]=DisplayArray[i-1];  
 107   2          }
 108   1          DisplayArray[0]=c_keyCode[0x0d];    
 109   1      }               
*** WARNING C280 IN LINE 101 OF TIMER05.C: 'keyIndex': unreferenced local variable
 110          /*************************************************************************/
 111          /*************************************************************************/
 112          
 113          /*************************************************************************/
 114          
 115          /*************************************************************************/
 116          
C51 COMPILER V8.05a   TIMER05                                                              02/08/2009 08:16:07 PAGE 3   

 117          /*************************************************************************/
 118          void Delay (unsigned int value)     /*10us延时*/
 119          {
 120   1          while (value!=0) 
 121   1          {
 122   2              value--;        
 123   2          }
 124   1      }
 125          /*************************************************************************/
 126          void ModifyTime(void)               /*调整时间*/
 127          {
 128   1          uchar ucharTemp;
 129   1          ucharTemp=sec;              
 130   1          sec%=60;                        /*秒除60取余数为sec*/
 131   1          min+=ucharTemp/60;              /*分加上秒的进位先暂存于min*/
 132   1          ucharTemp=min;
 133   1          min%=60;                        /*分再除60取余数为min*/
 134   1          hour=(hour+ucharTemp/60)%24;    /*时加上分的进位除24取余数为hour时*/
 135   1          DisplayArray[0]=(sec%10);       /*将时间存入显示缓冲区*/    
 136   1          DisplayArray[1]=(sec/10);           
 137   1          DisplayArray[2]=(min%10);           
 138   1          DisplayArray[3]=(min/10);           
 139   1          DisplayArray[4]=(hour%10);  
 140   1          DisplayArray[5]=(hour/10);  
 141   1      }       
 142          /*************************************************************************/     
 143          void ScanSeg7()                             /*数码管扫描显示*/
 144          {
 145   1          static uchar s_scanCounter;
 146   1          s_scanCounter++;
 147   1          if(s_scanCounter>5) s_scanCounter=0;                    /*ptr1>5表示6个数码管都已经扫描过*/
 148   1          P0=s_scanCounter|(DisplayArray[s_scanCounter]<<4);
 149   1      }   
 150          /*************************************************************************/
 151          
 152          /*************************************************************************/
 153          
 154          /*************************************************************************/
 155          
 156          /*************************************************************************/
 157          
 158          /*************************************************************************/
 159          
 160          /*************************************************************************/
 161          
 162          /*************************************************************************/
 163          
 164          /*************************************************************************/
 165          
 166          /*************************************************************************/
 167          void Timer0Int() interrupt 1 using 2        /*每隔SCAN_CYCLEus中断扫描一次数码管*/
 168          {
 169   1               TH0=(65536-SCAN_CYCLE)/256; /*设定Timer0每隔SCAN_CYCLEu中断一次*/
 170   1           TL0=(65536-SCAN_CYCLE)%256;
 171   1         
 172   1           ScanSeg7();
 173   1           ScrShift();
*** WARNING C209 IN LINE 173 OF TIMER05.C: '_ScrShift': too few actual parameters
 174   1                      
 175   1      }   
 176          /*************************************************************************/
 177          
C51 COMPILER V8.05a   TIMER05                                                              02/08/2009 08:16:07 PAGE 4   

 178          /*************************************************************************/
 179          /////////////////////////////End of Program////////////////////////////////
 180          /*************************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    250    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     32       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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