蓝桥杯单片机开发板-定时器中断实现流水灯

本程序主要是通过定时器实现中断进行流水灯灯的实现

#include "reg52.h"
#include "intrins.h"

sfr AUXR=0X8E;    //NOTES:sbit是位操作,用于将某个sfr中具体位赋值给一个变量

unsigned int count  = 0;
unsigned int flag   = 0;

void selectHC38(unsigned char n);
void InitTimer0(void);
void init();

void Timer0Interrupt(void) interrupt 1
{
	count++;	
	if(count == 100)
	{
		flag=flag+1;
		switch(flag)
		{
			case 1: selectHC38(4);P0=~(0x01); break;
			case 2: selectHC38(4);P0=~(0x02); break;
			case 3: selectHC38(4);P0=~(0x04); break;
			case 4: selectHC38(4);P0=~(0x08); break;
			case 5: selectHC38(4);P0=~(0x10); break;
			case 6: selectHC38(4);P0=~(0x20); break;
			case 7: selectHC38(4);P0=~(0x40); break;
			case 8: selectHC38(4);P0=~(0x80); break;
			default:selectHC38(4);P0=~(0x01);flag=0;break;
    }
		count=0;
	}
}

void main()
{
	init();
	while(1)
	{
		
	}

}


void selectHC38(unsigned char n)
{
	switch(n)
	{
		case 4 :P2 = 0x80;break;
		case 5 :P2 = 0xA0;break;
		case 6 :P2 = 0xC0;break;
		case 7 :P2 = 0xE0;break;	
	}
}

void init()
{
	InitTimer0();
	selectHC38(5);P0 = 0X00;P2=0x00;
	selectHC38(4);P0 = 0XFF;P2=0x00;
}
void InitTimer0(void)
{
	AUXR |= 0x80;		//定时器时钟1T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0x00;		//设置定时初值
	TH0 = 0x28;		//设置定时初值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
  EA = 1;
  ET0 = 1;
  TR0 = 1;
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知何时归家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值