某单片机系统,时钟频率是12MHz,定时器⼀计数器T0用于20ms定时,T1用于100次计数,两者均要求重复工作,试编程

2024-12-26 15:04:12
推荐回答(2个)
回答1:

//我自己一个字一个字敲出来的,已经调试过了。
//请选为最佳答案啊。
//计数的输入引脚在P3.5,低电平触发的。你自己在硬件上加上拉电阻。
#include "reg51.h"
void main()
{
//Set T/C Work Mode
TMOD = 0X61;
//T1:counter, Auto-cover Mode.
//T0:Timer, 16bits.

//Set Timer/Counter Initial Value.
TH0 = 0xB1;
TL0 = 0x10;

TH1 = 156;
TL1 = 156;

//Enable Interrupt
ET0 = 1;
ET1 = 1;
EA = 1;

//Run Timer/Counter
TR0 = 1;
TR1 = 1;

while(1);
//Recycle
}

void Timer0() interrupt 1
{
//Set Timer/Counter Initial Value.
TH0 = 0xB1;
TL0 = 0xE0;

//Todo...
//这是定时器20mS的,在下面添加你自己的代码。
}

void Counter1() interrupt 3
{
//Todo...
//计数的引脚是P3.5
//这是计数100次的,在下面添加你自己的代码
}
//请选我为最佳答案啊,呵呵

回答2:

自动重装或者在中断中每次重新赋值一次