请个位大侠帮忙一下这个问题出在哪里

[复制链接]
2784|6
 楼主| 邓诚dengcheng 发表于 2010-5-7 12:41 | 显示全部楼层 |阅读模式
本帖最后由 邓诚dengcheng 于 2010-5-7 19:35 编辑

我才学习AVR单片机,我在WINAVR 定义了两个输出端口,但是在AVR studio中调试发现只有一个端口有信号输出,这是为什么呀,程序写的很差请各为大侠帮忙看一下:
#include<avr/io.h>
#include<avr/interrupt.h>
int main(void)
{DDRC=0XFF;
DDRB=0XFF;
PORTB=0X12;
PORTC=0X00;
TCCR0=0X01;
TCNT0=0X10;
TIMSK=1<<;PB0;
sei();
}
SIGNAL(SIG_OVERFLOW0)
{char i,j,s;
j=0X01;
  PORTB=0X00;

for(i=0;i<5;i++)
     {PORTC=j;
      j=j<<1;
     
      for(j=0;j<200;j++)
         for(s=0;s<100;s++)
      ;
     }
TCNT0=0x10;
PORTB=0X31;


}
liao_fangxing 发表于 2010-5-7 14:55 | 显示全部楼层
SIGNAL(SIG_OVERFLOW0)  ------怎么进来??
{char i,j,s;
j=0X01;
  PORTB=0X00;

for(i=0;i<5;i++)
     {PORTC=j;
      j=j<<1;
     
      for(j=0;j<20000;j++)  --------
         for(s=0;s<1200;s++)------j、s为char  能涨到这么大??
      ;
     }
TCNT0=0x10;
PORTB=0X31;


}
qnmdsb2008 发表于 2010-5-7 15:06 | 显示全部楼层
没看明白 你的signal函数在哪里调用的 这是全部的程序吗
 楼主| 邓诚dengcheng 发表于 2010-5-7 19:34 | 显示全部楼层
我把定义的字符变量j,s改小也不行,SIGNAL(SIG_OVERFLOW0)  函数是当T0溢出时的一个中断函数,我在书上看到的,如果不存在的话编译时会报错!!!!!
 楼主| 邓诚dengcheng 发表于 2010-5-7 19:38 | 显示全部楼层
我用的是AVR GCC中定义的定时器溢出中断符号,
 楼主| 邓诚dengcheng 发表于 2010-5-7 19:44 | 显示全部楼层
调试的时候不能看到PB口输出的变化,一直输出为PORTB=0X31;在运行中C口变化正常,PORTB不能变成0值
dulianling 发表于 2010-5-8 19:03 | 显示全部楼层
看下该口有没有其他的功能,是不是上电默认做其他功能用了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部