定时器
#include<reg52.h>
unsigned char i=100;
void main()
{
TMOD=0X01;
TH0=0XEE;
TL0=0X00;
P2=0x00;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void time() interrupt 1
{
TH0=0XEE;
TL0=0X00;
i--;
if(i<=0)
{
P2=~P2;
i=100;
}
}
中断的程序写法:
EA=1//开总中断
EX0=1;//外部中断0*1
IT=0//低电平触发方式,IT=1是下降沿触发
void time() interrupt 0//*2
*1 EX0=1,外部中断0 开 同理EX1也是
ET0=1;定时器/计数器分开关打开,ET1也是
*2中断程序入口表
中断源 | 入口 | 优先级 |
---|---|---|
外部中断0 | 0 | 高 |
定时器/计数器0 | 1 | |
外部中断1 | 2 | |
定时器/计数器1 | 3 | |
串行口 | 4 | 低 |
定时器程序写法
TR0置1定时器/计数器开始工作,TR1也是如此,TF1/0计数溢出时硬件自动设置为1。这4位是TCON的高四位。控制定时器/计数器的启动和中断申请。
TMOD如上图
M1 M0 | 工作方式 | 说明 | 范围(晶振12MHZ) |
---|---|---|---|
0 0 | 方式0 | 13位 | 2^13=8192 |
0 1 | 方式1 | 16位 | 2^16=65536 |
1 0 | 方式2 | 两个8位计数器,初值自动装入 | 2^8=256 |
1 1 | 方式3 | 两个8位计数器,适用于T0 |
EA=1;//开总中断
ET0;//定时器0分开关
TMOD=0X01//0000 0001采用方式1定时器0
TH0=(65536-50000)/256;//高四位装初值
TL0=(65536-50000)%256;//低四位装初值
TR0=1;//启动定时器0