定时器头文件"time.h"
#ifndef __TIM_H
#define __TIM_H
#include "STC15F2K60S2.H"
void Cls_Peripheral(void);
void Led_Disp(unsigned char ucLed);
void Timer1Init(void);
#endif
定时器源文件“tim.c"
#include "tim.h"
void Cls_Peripheral(void)
{
P0 = 0xFF;
P2 = P2 & 0x1F | 0x80;
P2 &= 0x1F;
P0 = 0;
P2 = P2 & 0x1F | 0xA0;
P2 &= 0x1F;
}
void Led_Disp(unsigned char ucLed)
{
P0 = ~ucLed;
P2 = P2 & 0x1F | 0x80;
P2 &= 0x1F;
}
void Timer1Init(void) //1毫秒@12.000MHz
{
AUXR &= 0xBF; //定时器时钟12T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = 0x18; //设置定时初值
TH1 = 0xFC; //设置定时初值
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
ET1 = 1; //允许定时器1中断
EA = 1; //允许系统中断
}
定时器示例程序"main.c"
//使用程序前将J13调整为IO模式
#include "tim.h"
unsigned char ucSec;
unsigned long ulms; //时间
void main(void)
{
Cls_Peripheral();
Timer1Init();
while(1);
}
void Time_1(void) interrupt 3
{
ulms++;
if(!(ulms % 1000)) //ulms=1000时,执行循环里的代码
{
ucSec++;
Led_Disp(ucSec);
}
}