新手在单片机开发应用过程中,时而出现延时与中断的问题,那该怎么解决呢?
一些人会把单片机中断和延时概念搞混,首先我们先来理清楚单片机中断和延时的概念。中断是停止当前正执行的任务,转而去执行中断任务,等中断任务执行结束后继续回来执行当前正在运行的任务。开启中断源之后,有初始化中断、响应中断等都是从中断入口地址处执行中断程序的,建议有中断程序尽可能的简洁,越短越好。而延时仅仅是主程序在执行的过程中不断调用的一段子程序。
下边为大家分享一下大多数单片机包含PIC单片机开发在内的延时与中断的常见问题及解决方法。
1、单片机延时程序的延时时间怎么算的?
答:如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。
如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059
2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2
μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536
μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。
2、求个单片机89S51 12M晶振 用定时器延时10分钟,控制1个灯就可以
答:可以设50ms中断一次,定时初值,TH0=0x3c、TL0=0xb0。中断20次为1S,10分钟的话,需中断12000次。计12000次后ÿ