📄 main.c
字号:
/*
* Copyright (C) 2006, 华中科技大学电气与电子科技创新中心
* All Rights Reserved.
*
* 文件名: main.c
* 文件描述: 计时器测试主程序文件
*
* 当前版本: 1.0
* 作者: SangWei(swkyer@gmail.com)
* 完成日期: 2005年12月12日
*
*/
#include <reg51.h>
#include <INTRINS.H>
#include "..\seg7\seg7.h"
/* 定时时间高低字节数据, 12MHZ时定时时间5mS */
#define TIMERH 0xEC
#define TIMERL 0x78
unsigned char cs;
unsigned char dispram[4];
bit flag;
unsigned char count;
unsigned int time;
void InitTimer(void);
void main(void)
{
/* 初始化IO口 */
P0 = 0xFF;
P2 = 0xFF;
/* 初始化变量 */
flag = 0;
count = 0;
time = 0;
/* 初始化定时器 */
InitTimer();
/* 启动定时器1 */
TR1 = 1;
while(1)
{
/* 如果置位,说明1秒已过 */
if(flag == 1)
{
/* 清标志位 */
flag = 0;
/* 计数值最大为9999 */
if(time == 9999)
time = 0;
else
time++;
/* 改写显示缓冲区 */
dispram[0] = time/1000;
dispram[1] = (time%1000)/100;
dispram[2] = (time%100)/10;
dispram[3] = time%10;
}
}
}
/**************************************
说明: 定时器初始化
定时时间10mS
**************************************/
void InitTimer(void)
{
/* 变量初始化 */
cs = 0;
dispram[0] = dispram[1] = dispram[2] = dispram[3] = 0;
/* 初始化定时器,定时时间10mS,允许定时器中断 */
TMOD = 0x90;
TH1 = TIMERH;
TL1 = TIMERL;
/* 开定时器中断 */
EA = 1;
ET1 = 1;
}
/**************************************
说明: 定时器中断处理函数
**************************************/
void Timer1ISR(void) interrupt 3 using 2
{
/* 定时器重装 */
TH1 = TIMERH;
TL1 = TIMERL;
/* 清中断标志 */
TF1 = 0;
/* 循环显示 */
if(cs >= 3)
cs = 0;
else
cs++;
WriteSegData(dispram[cs]);
WriteCsData(1<<cs);
/* 计数器,200次为1秒,置标志位 */
if(count == 200)
{
flag = 1;
count = 0;
}
else
count++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -