守时/计数器的结构和作业原理
守时/计数器的本质是加1计数器(16位),由高8位和低8位两个寄存器组成。80C51单片机守时/计数器的作业是由两个特别功用寄存器操控的。TMOD是守时/计数器的作业方式寄存器,确认作业方式和功用,低四位用于T0,高四位用于T1。TCON是操控寄存器,操控T0和T1的发动和中止及溢出标志,高四位与守时器有关,低四位与外部中止有关。假如守时/计数器作业于守时形式,则表明守时时刻已到;假如作业于计数模式,则表明计数值已满。加1计数器输入的计数脉冲有两个来历,一个是由体系的时钟振动脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。
中止答应操控。CPU对中止体系一切中止以及某个中止源的敞开和屏蔽是由中止答应寄存器
IE操控的。
#include <reg52.h>
unsigned int t;
sbit p3_4 = P3^4;
void init_timer(){
TH0 = (65535 – 50000) / 256; //求取高8位
TL0 = (65535 – 50000) % 256; //求取低8位
EA = 1; //CPU总中止答应位
ET0 = 1; //守时/计数器中止答应位
IT0 = 1; //下降沿有用
TR0 = 1; //守时器发动
TMOD = 0x01; //运用守时器T0,16位计数器
p3_4 = 1;
}
void main(){
init_timer();
t = 0;
while(1){
if(t == 20){
p3_4 = “p3_4; //响一秒,停一秒
t = 0;
}
}
}
void bell() interrupt 1{
TH0 = (65535 – 50000) / 256; //从15535开端计时,共50000us,50ms
TL0 = (65535 – 50000) % 256; //20*50 = 1000ms = 1s 即1s响停一次
t++;
}