#include<reg52.h>
void main()
{
EA=1;//开总断(所有中断)寄成器头文件都定义好,直接拿来用就可以
EA=0;//关总断
ET1=1;//开定时器中断1;
ET1=0;//关定时器中断1;
PT1=1;//定时器中断1为高优先级
PT1=0;//定时器中断1为低优先级外部中断分两个等级,MCU优先响应高优先级的中断,同级中断的顺序:外部中断0,定时器T0,外部中断1,定时器T1,串行口
//TMOD寄存器控制两个定时(计数中断)中断,定时器或计数器的工作方式,寄存器有八位但不能进行位操作。
// 八位分别是GATE C/\T M1 M0 GATE C/\T M1 M0 高四位控制定时器T1,低四位控制定时器T0.
//每位作用分别是M1,M0控制计数器或定时器的工作方式。
// M1 M0 工作方式功能说明
// 0 0 方式0 13位计数器K位13 最大定时时间为8912uS 最大计数为8912次,和方式一有点重合,一般用方式一会多点。
// 0 1 方式1 16位计数器K位16 最大定时时间为65536uS 最大计数为65536次
// 1 0 方式2 自动再装入8位计数器只用装一次初值,低八位的初值会自动重装高八位中,计数和定时精度比较高,串口通信等。
// 1 1 方式0 定时器0,分成两个8位计数器,定时器1停止工作。
使用见书,用的不多。
// C/\T :功能选择位,C/\T=0时,为定时器,C/\T=1,为计数器。
// GATE :门控制位。
当GATE=0时,软件可以控制位TR0或TR1来启动或关闭T0或T1. 当GATE=1时,TR0和TR1为1并且\INT0和\INT1为高电平才能启动T0和T1。
允许外部中断0或外部中断1来启动T0和T1。
// 定时器时间=(2的K次方-初值X)*振荡周期*12 内部12分频的
TMOD=0X10;//定时器t1以方式一定时
TH1=(65536-50000)/256;//定时50ms给定时器赋初值
TL1=(65536-50000)%256;//可以先算好,这样可以提高单片机的运行速度
TR1=1;//启动定时器中断1
TR1=1;//关定时器中断1
}
void time1() interrupt 4
{
TH1=(65536-50000)/256;//定时50ms给定时器赋初值
TL1=(65536-50000)%256;//可以先算好,这样可以提高单片机的运行速度}。