void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
//TH0=0x00; //给定初值
//TL0=0x00;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1
{
TH0=(65536-2000)/256; //重新赋值 2ms
TL0=(65536-2000)%256;
Display(4,4);
}
这里面的2ms就直接减去2000,要是一毫秒是不是就减去1000呢?这个怎么算的啊?12M
那定时方式 是1 啊,
我记得方式2 是自动载入的;方式0是用作13位的,
方式1 是TH1和TL1连起来用做16位的吧·····
我也不大懂,请多多指教下啊···
方式1 是TH1和TL1连起来用做16位的吧/恩 对
TH1是高八位,TL1是第八位
只有自动载入不一样.自动载入 是八位的
在中断里面不用赋值,硬件会自动赋值, 赋值的内容就是TH1中的内容..
{
因为打开定时器,TL1中的内容,会随着时间改变,所以它记不下你赋给的初始值,.只能靠TH1去记录
产生中断时候,直接将 TH1中的值赋值给 TL1;
}仔细想想其实 这几个工作模式几乎是一样的,(自动载入,是省去了人为赋值,定时相对来说准确点)