//EX2
//微信号:shanqianyu1
//author:QI小米粥
//date:2018.3.9
#include
#include
char c=1;
char d=1;
void init(void) //初始化函数
{
//中断定义
MCUCR &=0XF0; //int0,int1为低电平触发
GICR |=0XC0; //打开int0,int1的中断总开关
DDRB=0XFF; //PB口全部设置为输出
PORTB=0X00;//PB口全部输出低电平
DDRD &=0XF3;//PD1,PD0设置为输入
PORTD |=0X0C;//PD1,PD0设置上拉内置的上拉电阻
SFIOR &=~BIT(2);//上拉电阻的总开关,打开
}
void delay(void) //延时函数
{
int a,b;
for (a=0;a<500;a++)
{
for(b=0;b<500;b++) {}
}
}
void flicker(char a)//闪烁函数a为某一位PB口
{
PORTB |=BIT(a);// PBa高电平
delay();//保持
PORTB &=~BIT(a);//PBa低电平
delay();//保持
}
#pragma interrupt_handler int0:2
void int0(void) //int0引脚为低电平触发中断PB0,PB2一直闪烁
{
flicker(0);
flicker(2);
}
#pragma interrupt_handler int1:3
void int1(void)////int1引脚为低电平触发中断PB1,PB2一直闪烁
{
flicker(1);
flicker(2);
}
void main(void)
{
SREG |=0X80; //全局中断I打开
init();
while(1)
{
flicker(2); //正常情况下PB2一直高低电平闪烁
}
}
网友评论