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

📄 timer.lst

📁 键盘扫描程序
💻 LST
字号:
C51 COMPILER V8.08   TIMER                                                                 09/21/2008 19:50:20 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN timer.OBJ
COMPILER INVOKED BY: D:\微控制器\kei c51 8.08\C51\BIN\C51.EXE timer.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include"keyboard.h"
   3          #include"timer.h"
   4          
   5          
   6          /*-----------------------------------------------------------------------------------*/
   7          /*定义定时器0重装值(只适用于晶振为11.0592M时),50ms溢出 46080                              */
   8          #define RELOAD_H            ( 65536-1843)/256;
   9          #define RELOAD_L            ( 65536-1843 )%256;
  10          //----------------------------------------------------------------------------------
  11          //蜂鸣器引脚定义
  12          sbit Beep = P2^0;
  13          
  14          //extern bit FLAG0;
  15          //extern unsigned char ptr;
  16          
  17          unsigned char dispcode[6];       //数码管显示值存放数组
  18          unsigned char sec_cnt=0;     //秒计数器
  19          
  20          
  21          
  22          /*-----------------------------------------------------------------------------------
  23          功能:定时器0初始化(晶振11.0592M,溢出周期为50ms)   
  24          名称:Timer0_Init()  
  25          输入:无
  26          输出:无
  27          返回:无
  28          -------------------------------------------------------------------------------------*/
  29          void Timer0_Init(void)
  30          {
  31   1      //工作方式控制寄存器TMOD
  32   1      //--------------------------------------------------------------------------------------
  33   1      //TMOD寄存器用于定义定时/计数器的操作方式及工作模式,其格式如下:
  34   1      //      7               6               5               4               3               2               1               0
  35   1      //      GATE    C/T             M1              M0              GATE    C/T             M1              M0
  36   1      //--------------------------------------------------------------------------------------
  37   1      //其中低4位(0~3)位定义定时/计数器0,高4位(4~7)定义定时/计数器1
  38   1      //--------------------------------------------------------------------------------------
  39   1      // M1  M0 为操作方式选择位
  40   1      // 0   0   方式0     13位计数器
  41   1      // 0   1   方式1     16位计数器
  42   1      // 1   0   方式2     自动再装入的8位计数器
  43   1      // 1   1   方式3         将定时/计数器0分成两个8位计数器.
  44   1      //--------------------------------------------------------------------------------------
  45   1      //C/T:选择定时器或计数模式. C/T=1时为计数模式  当C/T=0时为定时模式 
  46   1      //--------------------------------------------------------------------------------------
  47   1      //GATE:选通控制.当GATE=1时,只有当 INTx端口为高电平且TRx置位为1时才选通定时器/计数器x;
  48   1      //              当GATE=0时,只需TRx置位为1即选通定时/计数器x.
  49   1      
  50   1        TMOD|=0x01;    //定时器0,方式1
  51   1        TL0=RELOAD_L;  //TL0定时器0低8位计数器
  52   1        TH0=RELOAD_H;  //TH0定时器0高8位计数器
  53   1        TR0=1;         //定时器/计数器0启动位.TR0=1:开始计时或计数 TR0=1禁止计时或计数 
  54   1        ET0=1;         //定时器/计数器0中断使能
  55   1        EA=1;                  //全局中断使能
C51 COMPILER V8.08   TIMER                                                                 09/21/2008 19:50:20 PAGE 2   

  56   1      }
  57          
  58          
  59          /*-----------------------------------------------------------------------------------
  60          功能:定时器0中断服务程序     
  61          名称:Timer0_ISR(void) interrupt 1   
  62          输入:无
  63          输出:无
  64          返回:无
  65          备注:2ms中断一次
  66          -------------------------------------------------------------------------------------*/
  67          void Timer0_ISR(void) interrupt 1
  68          {
  69   1        static unsigned int  int_cnt=0;       //中断次数
  70   1      //  static unsigned int i=0;
  71   1        static unsigned char j=0;
  72   1      
  73   1        int_cnt++;
  74   1      
  75   1        if( (int_cnt%500)==0 )        //每2ms中断一次,500次就是1000ms即为1s "%"为求余
  76   1        {
  77   2          int_cnt=0;
  78   2        }
  79   1       
  80   1      //----------------------------------------------------------------------------------
  81   1      //动态扫描每个数码管
  82   1         P0=(j<<4) |dispcode[j];
  83   1         if((++j)>1) {j=0;}
  84   1      
  85   1      //----------------------------------------------------------------------------------
  86   1      //定时器0初值重装            
  87   1       TL0=RELOAD_L;
  88   1       TH0=RELOAD_H; 
  89   1      }
  90          
  91          /*-----------------------------------------------------------------------------------
  92          功能:软件延时
  93          名称:delay
  94          输入:n
  95          输出:无
  96          返回:无
  97          -------------------------------------------------------------------------------------*/
  98          void Delay(unsigned int n)
  99          {
 100   1        unsigned int i,j;
 101   1      
 102   1        for(i=0;i<n;i++)
 103   1        {
 104   2          for(j=0;j<100;j++);
 105   2        }
 106   1      
 107   1      }
 108          
 109          /*-----------------------------------------------------------------------------------
 110          功能:蜂鸣器控制函数
 111          名称:BEEP
 112          输入:time
 113          输出:无
 114          返回:无
 115          -------------------------------------------------------------------------------------*/
 116          void BEEP(unsigned int time)
 117          {
C51 COMPILER V8.08   TIMER                                                                 09/21/2008 19:50:20 PAGE 3   

 118   1        Beep=0;
 119   1        Delay(time);
 120   1        Beep=1;
 121   1      }


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