//---定时器实验---
//---头文件引用---
#include<reg51.h>
#include<absacc.h>
//---宏声明---
#define uchar unsigned char
uchar idata led[8]={0xfa,0xf5,0xaf,0x5f,0xaa,0x55,0x00,0xff}; //显示常数表
uchar times=20; //延时1秒的常数
uchar status=0;
//---定时器---
void int1() interrupt 3
{
TR1=0; //关定时器
TL1=0x00;
TH1=0x4b; //延时50ms常数
TR1=1; //开定时器
times=(times-1);
if(times==0)
{
times=20; //延时1秒的常数
P1=led[status]; //送P1口显示
status=((status+1)&0x07);
}
}
//---主程序---
void main()
{
TMOD=0x10; //置T1为方式1
TL1=0x00; //延时50ms的时间常数
TH1=0x4b;
TR1=1;
ET1=1;
EA=1; //开中断
while(1);
}
老师要我们把TL1=0x00; TH1=0x4b;改为另一种表达式,
我的方法是计算出高八位低八位,即4b00=4*16*16*16+b*16*16=19200,65536-19200=46336,则可改为:TH1=(65536-46336)/256;TL0=(65536-46636)%256;
然而,带实训中的三个老师各说不同的方法,真是让我刚到惊讶,
第一种:TH1=(65536-19200)/256;TL0=(65536-19200)%256;
第二种:TH1=19200/256;TL1=19200%256;
特来请教各位大虾我的方法是对还是老师的对,或者都错了,谢谢大家 |