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

本文介绍了一个使用定时中断控制四个LED灯不同周期闪烁的单片机实验。实验通过C语言编程实现LED1每0.1秒交替亮灭,LED2每1秒交替亮灭,LED3每10秒交替亮灭,LED4每100秒交替亮灭。通过此次实验,作者掌握了宏定义的应用及中断的概念。

实验要求:

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

同时真正理解延迟和中断的概念!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值