程序仿真出错

2019-07-16 04:35发布

#include<avr/io.h>
#include<util/delay.h>
#include<avr/interrupt.h>
const unsigned char display_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90};
unsigned char num=0;
int main()
{
EICRA=0X02;//外部中断0设置为下降沿触发
EIMSK=0X01;//开外部中断0
sei();//开总中断
DDRC=0xff;//PC口设置为输出,用来控制数码管显示数字,用的共阳数码管
DDRD=0XFE;//PD0设置为输入
PORTD=0X01;//PD0内部上来电阻有效,按键控制中断
while(1)
{
  PORTC=display_code[num];
}
}
SIGNAL(SIG_INTERRUPT0)//按键按下时,进入中断
{
_delay_ms(10);
num++;
if(num==10)
num=0;
}
用Atmega128写的,有一个警告,proteus仿真时数码管只显示1,按键时不发生改变
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
lstcspring
1楼-- · 2019-07-16 08:16
中断里面加个延时做什么,找一下为什么没进中断吧
士心甬力xzy
2楼-- · 2019-07-16 08:47
lstcspring 发表于 2012-9-20 12:32
中断里面加个延时做什么,找一下为什么没进中断吧

去了延时也是一样,好像是进了一次中断,仿真时直接就进了,如果把数码管显示程序放进中断,主程序只是等待,那么每次按键就能实现计数功能,弄的挺郁闷的

一周热门 更多>