51单片机 用一个定时器实现两个功能

来自:    更新日期:早些时候
关于51单片机使用两个定时器进行控制的问题~

D1=0,D1=1,这俩应该放到If里面

TF0=0;//关闭定时器0

TF1=1;打开定时器1
D1=0;//LED灭
while(1)
{
if(aa==20)
{
aa=0;

D1=1;//LED亮,持续亮两秒,

TF1=0;
TF0=1;

}
if(bb==40)
{
bb=0;

D1=0;//LED灭一秒

TF0=0;

TF1=1;

}
}
并且在程序开始处开启定时器1(也就是先执行的定时器),但是要注意,你现在是两个定时器同时工作,应该在if中关闭当前的定时器,并打开另一个定时器

可以的! 但需要初始化! 例如一个定时器用于串口的波特率产生,另外一个则可以用作计数器!

void init_uart() void
{
TMOD = 0x20; //定时器T1使用工作方式2
TH1 = 253; // 设置初值
TL1 = 253;
TR1 = 1; // 开始计时
SCON = 0x50; //工作方式1,波特率9600bps,允许接收
ES = 1;
EA = 1; // 打开所有中断
TI = 0;
RI = 0;
}

随便举个例子:
//定时器中断 10mS中断一次
void timer0_isr(void) interrupt 1
{

if(flag == 0)
{
//这里是第一件事情
flag = 1;//在主程序处理完第一件事,将此标记清除
}

if (++ucCount == 100) //累加100次达到1秒
{
ucCount = 0; //复位计数
ioLED = !ioLED; //这是第二件事情,实现LED闪烁
}

}

实现两个什么功能?


51单片机 用一个定时器实现两个功能视频

相关评论:

相关主题精彩

版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

Copyright © 喜物网