硬件选用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在空转而已,浪费资源。这时候我们就要引入定时中断比较合适了。