51单片机计数器代码示例
时间: 2024-11-28 17:06:32 浏览: 3
基于51单片机的时钟代码示例
51单片机的定时器/计数器(Timer/Counter)通常用于实现脉冲计数、延时等功能。这里以8051系列单片机如AT89S52为例,介绍基本的16位定时器/计数器T1的简单计数器模式的代码:
```c
#include <reg52.h> // 引入51单片机头文件
// 初始化定时器1为模式1(16位自动重装定时器)
void init_Timer1(void){
TMOD = 0x01; // 设置TMOD寄存器为定时器模式1
TH1 = 0xFF; // 定时器高字节初始化为最大值,以便从零开始计数
TL1 = 0xFF; // 定时器低字节初始化为最大值
}
// 计数函数
void count_Timer1(void){
while(!TF1); // 当TF1标志(溢出标志)未置1时,循环等待
TF1 = 0; // 清除溢出标志
TL1++; // 自动加1,若超过FF则TH1会自动加1形成溢出
}
// 主函数示例,每计满100次就输出一次
int main(void){
init_Timer1();
int count = 0;
while(1){
count_Timer1(); // 进行计数
if(count++ == 100){ // 每计到100次
// 打印计数值或其他操作...
printf("Count: %d\n", count);
count = 0; // 重置计数
}
}
return 0;
}
```
阅读全文