打印
[AVR单片机]

求解答

[复制链接]
1153|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xzy03101271|  楼主 | 2012-9-19 22:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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;
EIMSK=0X01;
sei();
DDRC=0xff;
DDRD=0XFC;
PORTD=0X03;
while(1)
{
  PORTC=display_code[num];
}
}
SIGNAL(SIG_INTERRUPT0)
{
_delay_ms(10);
num++;
if(num==10)
num=0;
}
用Atmega128写的,有一个警告,proteus仿真时数码管只显示1,按键时不发生改变

相关帖子

沙发
kpywe| | 2012-11-7 21:21 | 只看该作者
猜测你的中断没有发生,而你提供的程序也不知道你用的那个IO输入按键,建议检察案件中断

使用特权

评论回复
板凳
NE5532| | 2012-11-8 12:34 | 只看该作者
既然用了仿真,你就跟着程序一条一条的看,要不就去搭实物。

使用特权

评论回复
地板
fp123123| | 2012-11-8 23:25 | 只看该作者
改成下面这样,具体解释上百渡查
volatile unsigned char num=0;

使用特权

评论回复
5
fp123123| | 2012-11-8 23:29 | 只看该作者
而且在中断里延时不好,改成这样好一些

while(1)
{
  static unsigned char num0 = 0;
  PORTC=display_code[num];
  if(num0!=num)
  {
    _delay_ms(10);
    num0 = num;
  }
}
}
SIGNAL(SIG_INTERRUPT0)
{
num++;
if(num==10) num=0;
}

使用特权

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

本版积分规则

38

主题

97

帖子

1

粉丝