本程序主要是通过定时器实现中断进行流水灯灯的实现
#include "reg52.h"
#include "intrins.h"
sfr AUXR=0X8E;
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;
TMOD &= 0xF0;
TL0 = 0x00;
TH0 = 0x28;
TF0 = 0;
TR0 = 1;
EA = 1;
ET0 = 1;
TR0 = 1;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)