您的位置:首页 > 编程语言 > C语言/C++

单片机定时驱动led程序2--c语言实现

2006-04-23 15:31 681 查看
实验要求:

使用定时/记数中断控制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语言编写单片机程序,在程序中,我使用了很多宏定义,这有利于程序的再利用.

同时真正理解延迟和中断的概念!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: