假设单片机的晶体振荡器的频率是12MHz,利用定时器1采用方式1定时20ms,

假设单片机的晶体振荡器的频率是12MHz,利用定时器1采用方式1定时20ms,写出初值的计算过程和整个定时器初始化程序,同时写出在P1.7脚上输出0.2秒的方波的完整程序

第1个回答  推荐于2017-12-16
12MHz晶振,单片机机械周期 T=12/Fosc=12/12MHz=1us;
T1定时器工作模式1 为 16位定时器,定时计算公式为:t=
(2^16-<TH1:TL1>)×机械周期 T,
将T=1us,t=20ms 代入公式得:
(65536-<TH1:TL1>)×1us=20ms,得:
TH1:TL1=65536-20ms×1000us/ms÷1us=45536=0xB1E0,得:
TH1=0xB1,TL0=0xE0;
定时器初始化函数:
void TimerInit()
{
TMOD &=0x0F;
TMOD |=0x10;
TH1=0xB1;
TL1=0xE0;//建议将 0xB1、0xE0宏定义为th1、tl1;
EA=1;
ET1=1;
TR1=1;
}

0.2秒方波,未说明是脉宽还是周期,只能认为是周期。则脉宽为0.2s÷2=100ms;
#define T100msAt20msCount 5
sbit WaveOut=P1^7;
void Timer1()interrupt 3
{
static unsigned char t20ms=0;
TL1=tl1;//
TH1=th1;//按前面说的宏定义
if(++t20ms>=T100msAt20msCount)
{
t20ms-=T100msAt20msCount;
WaveOut=~WaveOut;
}
}
void main()
{
TimerInit();
while(1);
}本回答被网友采纳

假设单片机的晶体振荡器的频率是12MHz,利用定时器1采用方式1定时20ms...
定时器的初值的计算如下:在定时器模式下,计数器的计数脉冲来自于晶振脉冲的12分频信号,即对机器周期进行计数。若选择12M晶振,则定时器的计数频率为1MHZ。假设定时时间为T,机器周期为T1,即12\/晶振频率。X为定时器初值。则 X=2^n-T\/T1。方式0,n=13,方式1时,n=16,方式2和方式3,n=8 ...

假设单片机的晶体震荡器的频率是12MHz,利用定时器1采用方式1定时2ms...
51单片机指令频率是晶振频率的12分频,所以单片机的指令周期为1\/1MHz=1uS,所以定时器计一个数就是1uS,要定时2mS需要计数的数量为:2mS\/1uS=2000,定时器计满溢出定时器产生中断,所以初值为:65536-2000=63536,希望对你有帮助

设晶振为12MHz,选用定时器0的工作方式1产生20ms定时中断,并实现驱动2...
若单片机的晶振频率为12MHz,用51单片机内部定时\/计数器T0,工作方式为1,在单片机P1.0口产生周期为20ms的方波,波形占空比为50%。试解答下列问题: 1) 计算定时器的装入初值; 2) 用中断的方式使用定时器,编写相关程序序

假设单片机的晶体震荡器的频率是11.0592MHz,利用定时器1采用方式1定时2...
定时\/计数器T1定时10ms,选择对系统时钟的12分频模式,T1x12位为0,Tc=10ms,fosc=12MHz,可知计数次数N=10000,选择方式1。初值X=216-10000=55536=D8F0H,则TH1=D8H,TL1=F0H。(1)汇编程序:ORG 0000H LJMP MAIN ORG001BH ;T1的中断向量入口地址 LJMPT1_INT ORG0100H MAIN:MOVSP,#0B...

单片机的定时器0工作在方式1,晶振频率为12MHZ,要实现定时20ms,定时器的...
定时器计数脉冲频率是1 MHZ,周期是1us,因此20ms是20000个脉冲 因此初值是65536-20000 高8位上的1代表256,因此高8位装的256倍数 TH0=(65536-20000)\/256;低8位装的是不足256部分;TL0=(65536-20000)%256;

假设单片机的晶体振荡器的频率是12mhz,利用定时器1工作方式0定时500ms...
单片机晶振12M,一个机器周期是1us,定时500ms需要500000个机器周期,一次中断无法完成定时,需要多次定时才能实现,一次中断最大定时时间是65.536ms,可以取一个整数,比如50ms,那么定时器的初值为:TH0=(65536-50000)\/256;TL0=(65536-50000)%256;初始化和方波程序如下:include<reg51.h> sbit pl...

若51单片机的晶振频率为12MHz,要使定时器TO以方式0工作的定时时间为1m...
如图所示,TH0=0xD1,TL0=0x20。望采纳。。。

单片机:若系统晶振频率是12MHZ,利用定时器\/计数器1定时1ms,在方式0下...
在单片机系统中,当晶振频率设定为12MHz时,理解定时器\/计数器1定时1毫秒(1ms)的设置至关重要。首先,我们来计算基本的机器周期:12MHz等于12000000赫兹,因此每个机器周期为12\/12MHz,即1微秒(us)。1毫秒等于1000个微秒,要让定时器\/计数器1定时1ms,我们需要确保计数在1000个机器周期后溢出以触发...

假定某单片机系统的晶振频率是12mhz,定时\/计数器1工作于定时方式1...
方式一的最大计数是2^16=65536;M=A-计数值=65536-40000=25536=63C0;所以TH1=63H,TL1=C0H.

.已知51单片机系统晶振频率为12MHz,请利用定时器1工作方式1,中断方式...
SJMPT1_INT MOVTMOD,#10H;设置T1定时方式1 MOVTH1,#(65536-50000)\/256;送入初始值。MOVTL1,#(65536-50000)MOD256;定时50000us@12MHz MOVIE,#10001000B;开放总中断和T1中断。SETBTR1;启动T1 MOVTH1,#(65536-50000)\/256;重新送入初始值。MOVTL1,#(65536-50000)MOD256;定时50000...

相似回答