单片机500ms延时器程序(中断方式)

单片机500ms延时器程序(中断方式),第1张

#include<reg52h>

#include uahar unsigned char

#include uint undigned int

ucahr cont;

void init()

{

TH0=(65536-50000)/256; //赋初值

TL0=(65536-50000)%256;

EA=1;//开总中断

ET0=1;//开定时器中断

TR0=1;//开启定时器0

}

void main()

{

init();//调用初始化子程序

}

void timer0() interrupt 2 //定时程序

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

cont++;

if(cont==10)

{

cont=0;

此处是你需要 *** 作的数据,比如你要发光二级管亮灭, 或者数加减!!!

}

}

所谓中断,就是可以打断正常运行的程序,这个程序也可以是正在运行的延时程序,除非程序中主动禁止

定时器中断

,总会到时响应中断,即打断正在运行的程序,去调用

中断服务程序

,结束中断服务程序后,再在断点

恢复现场

继续运行,就好像没有调用过中断服务程序一样。由于中断服务程序打断了delay,因此delay程序实际上延时是原先没有中断程序时多延时

一点时间

(因为延时期间被中断插入执行了若干次服务程序,增加了

运行时间

)

一般单片机在c语言中很难得到精确的延时,所以一般对时间要求高的都用计时器中断来做了。如果时间要求不严格可以用for循环来做,你可以实际测试一下,把时间延时到大概一秒左右,然后烧进单片机里运行,比如一个灯亮灯灭的程序,看着灯计数,同时用秒表计时,几个几十次后取平均值就能知道大概时间了。

以上就是关于单片机500ms延时器程序(中断方式)全部的内容,包括:单片机500ms延时器程序(中断方式)、单片机C语言编程问题:延时函数运行中能否响应中断、单片机c语言的延时程序500ms等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/9852447.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存