打印
[AVR单片机]

中断实验问题,如何输出高电平

[复制链接]
1599|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
clleady|  楼主 | 2010-4-16 20:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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输出高电平,大侠帮忙。

相关帖子

沙发
huamunv| | 2010-4-16 21:17 | 只看该作者
GICR|=(1<<INT0); 这句作用是什么?这个编程不熟悉

使用特权

评论回复
板凳
ershisi| | 2010-4-18 23:10 | 只看该作者
:o,帮顶

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:活到老学到老

219

主题

477

帖子

1

粉丝