【单片机】实验七:定时计数器实验

发布时间 2023-12-08 22:05:36作者: 萌狼蓝天
#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;
		}
	}

}