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

 我来答
我已开始明白
2011-03-24 · TA获得超过125个赞
知道答主
回答量:74
采纳率:0%
帮助的人:76.6万
展开全部
如果是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;
//自己的程序
}}
aaasuper
2011-03-24 · TA获得超过801个赞
知道小有建树答主
回答量:431
采纳率:100%
帮助的人:624万
展开全部
可以利用定时器中断,12MHz的情况下,计数初值为0xBDC,然后在中断程序中写上
用一个全局变量计数,达到16则表示过了一秒并将该变量清零
追问
用C语言写
追答
我上面的改成C语言了,你再看看,如果你是想要延时的话,可以用下面的,但是c语言写的延时精度肯定没有用汇编的高
void delay()
{
unsigned char i,j;
for(i=0;i<4;++i)
for(j=0;j<165;++j)
;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式