引例程序

硬件选用8052单片机,12MHz晶振。

这里我们要实现的一个功能:二极管Led1实现一秒钟亮一秒钟灭,一直循环。我们刚开始学习单片机的时候大部分是这样编写的。

#include “reg52.h”

 
 

sbit Led1=P0^0;

 
 

void Delayms(unsigned int ms)

{

    unsigned int i,j;

    for(i=0;i<ms;i++)

    {

        for(j=0;j<110;j++)

        {

        }

    }

}

 
 

void main()

{

    while(1)

    {

        Led1=~Led1;

        Delayms(1000);

    }

}

这个程序从使用角度看问题不大,我们再实现一个功能,增加两个灯,灯Led2按照两秒钟亮两秒钟灭的频率做闪烁,灯Led3按照三秒钟亮三秒钟灭的频率做闪烁。这时候我们再用上面延时的思路就不能实现了,另外Delayms延时只是让CPU在空转而已,浪费资源。这时候我们就要引入定时中断比较合适了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注