单片机实验——0到60秒的计时器(使用硬件中断方式实现)

编译环境:KEIL C51 V3
仿真软件:proteus 7.4
单片机类型:AT89C52

数码管类型:7seg-mpx1-cc (cc——共阴数码管)

 

没难度,主要是想通过这个实验来加深对中断的理解。

 

 

烧写到单片机上的程序:

 

#include char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char count; unsigned char second; void main() { TMOD=0x01; //定时器/计数器工作方式为16位定时/计数器 //给定时器/计数器T0装入预定初值 TH0=(65535-60000)/256; TL0=(65535-60000)/256; TR0=1; //设置定时器/计数器T0为定时器状态 ET0=1; //打开定时器ET0中断允许标志位 EA=1; //打开CPU中断允许标志位 count=0; second=0; P2=table[second%10]; P1=table[second/10]; while(1) {} } void t0_interrupt_function(void) interrupt 1 { if(count==40) { count=1; if(second==60) { second=0; } P1=table[second/10]; P2=table[second%10]; second=second+1; } else { count=count+1; } }

 

电路核心部分:

 

 

你可能感兴趣的:(【嵌入式/单片机】)