#include <STC8.H>
/*
# 定时计数器溢出发生中断原理实验@2023N12Y7R
# P1:控制显示内容
# P2:控制显示位置
实验目的:利用单片机内部定时器T0或者T1,控制一个LED数码管实现数字0-9循环显示,精确执行每一秒显示一个数字
*/
unsigned char led[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned int n,m;
void init(){
/* # 设置IO口工作方式 */
P1M1=0x00;
P1M0=0xff;
/*
周期:10毫秒
频率:24MHZ
机器周期T机 = (1/24MHz)X12 = 0.5
选择T0定时计数器 方式1的工作模式
2^16 = 65536
初值 X = 65536 -10ms/0.5 = 65536-20 000 = 45536 = B1E0
*/
TH0=0xB1;TL0=0xE0;/*配置初值*/
TMOD = 0x00; /*清除T0模式位*/
EA = 1; /*允许全局中断*/
ET0 =1; /*打开T0中断允许*/
TR0=1;/*打开定时计数器*/
}
void show(){
P1 = led[m];
P2=0;
}
void main(){
init();
while(1){
show();
}
}
void stop() interrupt 1{
/* # 定时计数器T0 实现中断 */
n++;
if(n==100){
n=0;
m++;
if(m==10){
m=0;
}
}
}
标签:void,T0,单片机,计数器,实验,定时
From: https://www.cnblogs.com/mllt/p/dpj_dsjsqylsy.html