单片机晶振12MHz 用T1产生1us定时 可选哪几种工作方式?写出定时器的方式控制字和字数初值

如题所述

你是不是说错了啊,单片机每执行一条指令就1us,还怎么定时啊,单片机不用干别的了
定时1ms是没问题的,定时器处于工作方式一,TMOD=0x01,初值TL0=(65535-1000)%256
TH0=(65535-1000)/256追问

书上题目就是这样的,用T1产生1us定时那怎么办呢

追答

12M晶振是无法实现的http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4626758&bbs_page_no=7&bbs_id=9999,看看这个论坛,非要执行1us就这样写
main(){TMOD = 0x20;
TH1 = 256 - 1;
TL1 = 256 - 1;
EA=1;
ET1=1;
TR1 = 1;
while(1); }
中断函数里只写一个
nop;//头文件要加入汇编头文件
这样有可能是1us,你可以用示波器测下,

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-28
TMOD = 0x20; //8位自动重装,12分频,12M时钟,1微秒一次
TH1 = TL1 = 256 - 1;
TR1 = 1;

参考资料://

第2个回答  2017-10-19
方式0
void InitTimer0(void)
{
TMOD = 0x00;
TH0 = 0x1F;
TL0 = 0x0FF;
EA = 1;
ET0 = 1;
TR0 = 1;
}
方式1
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0FF;
TL0 = 0x0FF;
EA = 1;
ET0 = 1;
TR0 = 1;
}
方式2
void InitTimer0(void)
{
TMOD = 0x02;
TH0 = 0x00;
TL0 = 0x0FF;
EA = 1;
ET0 = 1;
TR0 = 1;
}
方式3
void InitTimer0(void)
{
TMOD = 0x03;
TH0 = 0x00;
TL0 = 0x0FF;
EA = 1;
ET0 = 1;
TR0 = 1;
}
第3个回答  2011-04-28
那这样的话不用干其他的了,只能是一直定时器中断