1. 程式人生 > >微控制器定時驅動led程式2--c語言實現

微控制器定時驅動led程式2--c語言實現

實驗要求:

使用定時/記數中斷控制led1亮0.1s,滅0.1s,led2亮1s,滅1s,led3亮10s,滅10s,led4亮100s,滅100s.

/////////////////////////////////////////////////////////////////////////////////////////////////////

//標頭檔案yzxled.h 

#include <reg51.h>
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit LED4=P1^3;
#define ON 1
#define OFF 0
#define RELOADTH0 0x3c
#define RELOADTL0 0x0b0

//////////////////////////////////////////////////////////////////////////////////////////////////////////

//主程式

#include "yzxled.h"
//初始化
void init(void)
 {
 LED1=OFF;
 LED2=OFF;
 LED3=OFF;
 LED4=OFF;
 }
//設定控制方式
void set(void)
 {
 TMOD=0x01;
 EA=1;
        ET0=1;
        TH0=RELOADTH0;
 TL0=RELOADTL0;
 }
//////////
void timer0(void) interrupt 1 using 1
 {
        static int i=1;
 LED1=!LED1;
 i++;
 TH0=RELOADTH0;
 TL0=RELOADTL0;
 if(!(i%10))
  LED2=!LED2;
 if(!(i%100))
  LED3=!LED3;
 if(!(i%1000))
  {
  LED4=!LED4;
  i=0;
  }
 return;
 }
void main(void)
 {
 init();
 set();
 TR0=ON;
 while(1) ;
 }
實驗心得:

      通過這次實驗,我學會了使用c語言編寫微控制器程式,在程式中,我使用了很多巨集定義,這有利於程式的再利用.

同時真正理解延遲和中斷的概念!