TMOD 应如何设定 让定时器和计数器同时工作 急用 thanks

[复制链接]
查看11 | 回复1 | 2011-3-12 12:34:19 | 显示全部楼层 |阅读模式
回复

使用道具 举报

千问 | 2011-3-12 12:34:19 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">一个定时器本来就是具有定时器 计数器双重作用,其实定时、计数也是同样的意思,计一次数的时间是固定的,所以可以用来定时。
一般单片机有两个定时器,要让定时/计数器工作,书上不是讲得很清楚吗。TMOD占一个字节,高四位控制定时/计数器1,低四位控制定时/计数器2,如TMOD=0x01,意思是定时/计数器0工作在工作方式1(16位计数方式)、时钟计数方式即对内部时钟计数、内部计数方式即只受内部寄存器TR0开启控制;定时/计数器1工作在工作方式0(13位计数方式)、时钟计数方式即对内部时钟计数、内部计数方式即只受内部寄存器TR0开启控制。配合TCON里的相关寄存器来控制,TCON是可以位寻址的,如TR0/TR1是开启/暂停计数、TF0/TF1是定时/计数器中断溢出标志。多编几个程序练练就行了。
下面给个临时编的一秒钟LED闪一次的定时程序:
#include reg52.h
sbit led=P0^0; //LED接口
unsigned int count;
void Timer0()interrupt 1
{

TH0=-(50000/256);

TL0=-(50000%6);
//定时中断一次50ms,晶振12MHz

count;

if(count==10)//计数10次为500ms

{

count=0;

led=!led;

}
}
main()
{

count=0;led=1;

TMOD=0x01; //定时器0工作方式1

TH0=-(50000/256);

TL0=-(50000%6);
//定时一次50ms,晶振12MHz

TR0=1; //开始计数

while(1) ;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行