单片机c语言编写产生1秒定时的程序,怎么写?

如题所述

如果是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;
//自己的程序
}}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-24
可以利用定时器中断,12MHz的情况下,计数初值为0xBDC,然后在中断程序中写上
用一个全局变量计数,达到16则表示过了一秒并将该变量清零追问

用C语言写

追答

我上面的改成C语言了,你再看看,如果你是想要延时的话,可以用下面的,但是c语言写的延时精度肯定没有用汇编的高
void delay()
{
unsigned char i,j;
for(i=0;i<4;++i)
for(j=0;j<165;++j)
;
}

本回答被网友采纳