#include <macros.h>
#include "delay.h"
#define uchar unsigned char
void port_init(void)
{
PORTC=0x00; //PORTC输出低电平
DDRC=0x00; //PORTC设置方向为输出
PORTA = 0x00; //PORTA输出低电平
DDRA = 0x00; //PORTA设置方向为输入
PORTB = 0x00; //PORTB输出低电平
DDRB = 0x00; //PORTB设置方向为输入
PORTD = 0x00; //PORTD输出低电平
DDRD = 0x80; //PORTD设置方向为输入
}
#pragma interrupt_handler int0_isr:iv_INT0
void int0_isr(void) //中断函数
{
while(!(PIND&(1<<PD2)))
{
PORTD^=(1 << PD7); //PD0按位取反
delay_ms(1000); //延时1s
}
}
void init_devices(void) //初始化设置
{
CLI(); //清除所有中断
port_init(); //端口初始化
MCUCR = 0x00; //设置低电平触发
GICR|=(1<<INT0); //INT0使能
SEI(); //使能全局中断
}
void main(void) //主函数
{
init_devices(); //初始化设置
while(1) //主程序
{
PORTD|=0x80; //LED灭;
}
}
PD7我希望在正常时候输出高电平,那么LED则灭。但是由于上面有句GICR|=(1<<INT0); 导致PORTD|=0x80; 也没办法让PD7输出高电平,大侠帮忙。 |