|
以下是我稍微修改的程序,但是没得到实验结果
//////实验功能:练习使用外部中断
/////硬件连接:PA口与LED的段码连,LED的是能端直接接地
///// 独立按键K17\K18与PD2/PD3(INT0/INT1)连,PD2/PD3使能内部上拉
/////实验现象:按K17,显示加一,按K18,显示减一
/////头文件
#include <avr/io.h>
#include <avr/interrupt.h>
/////定义变量
unsigned char counter;
unsigned char led_7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
/**************************INT0中断服务函数************************
SIGNAL (SIG_INTERRUPT0)
{
counter++;
if (counter>=10) counter=0;
}
//**************************INT1中断服务函数************************
SIGNAL (INT1_vect)
{
if (counter==0) counter=9;
else counter--;
}
//******************************主函数************************************
int main (void)
{
PORTA=0XFF; //LED段码输出
DDRA=0XFF;
PORTD|=0X0C; //PD2/PD3(INT0/INT1)输入,使能上拉
DDRD&=0XF3;
////初始化INT0/INT1中断
MCUCR|=0X0A; //INT0/INT1下降沿触发
GICR|=0XC0; //使能INT0/INT1中断
GIFR&=0XC0; //清除INT0/INT1中断标志位
counter=0; //计数单元初始化为0
sei();
while (1)
{
PORTA=led_7[counter];
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|