单片机c语言编写产生1秒定时的程序,怎么写?
2个回答
展开全部
如果是51单片机的话其实很简单的,这里假设晶振频率是12M(一般都是的),你可以选用定时器0,工作在工作状态2,因为这个状态下装入初始值几乎不需要时间,所以定时精确,也就是8位预置数状态,将初始值设为6,这样每次定时就是250微秒,在中断程序中定义一个静态变量,每次中断加一,这样当这个变量值为4000时就刚好是1S钟。
关键程序是:
void main()
{
TMOD=OX02;
EA=1;
ET0=1;
TH0=0X06;
TL0=0X06;
while(1);
}
void timer0() interrupt 1
{
static unsigned int times=0;
times++;
if(times==4000)
{
times=0;
//自己的程序
}}
关键程序是:
void main()
{
TMOD=OX02;
EA=1;
ET0=1;
TH0=0X06;
TL0=0X06;
while(1);
}
void timer0() interrupt 1
{
static unsigned int times=0;
times++;
if(times==4000)
{
times=0;
//自己的程序
}}
展开全部
可以利用定时器中断,12MHz的情况下,计数初值为0xBDC,然后在中断程序中写上
用一个全局变量计数,达到16则表示过了一秒并将该变量清零
用一个全局变量计数,达到16则表示过了一秒并将该变量清零
追问
用C语言写
追答
我上面的改成C语言了,你再看看,如果你是想要延时的话,可以用下面的,但是c语言写的延时精度肯定没有用汇编的高
void delay()
{
unsigned char i,j;
for(i=0;i<4;++i)
for(j=0;j<165;++j)
;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询