标题: ATTINY13A单片机顺序点亮灯程序哪里不对? [打印本页]

作者: hjx5548    时间: 2019-9-12 13:30
标题: ATTINY13A单片机顺序点亮灯程序哪里不对?
主要点亮PB0~PB4的五个LED,
第一次  0 1 1 1 1     LED分别接PB0~PB4,0低电平点亮,1高电平息灭
第二次 0  0 1 1 1
第三次  0 0 0  1 1
第四次0 0 0 0 1
第五次 0 0 0 0 0
然后一直全部亮

void main(void)
{
sys_init();       脚位初始化
while(1)
{

PORTB=(0<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4);    //点亮第一个LED
  delay_ms(1000);
PORTB=(0<<PB0)|(0<<PB0)|(1<<PB2)|(1<<PB3)|(1<<PB4);    //点亮第一、二个LED
  delay_ms(1000);
PORTB=(0<<PB0)|(0<<PB0)|(0<<PB0)|(1<<PB3)|(1<<PB4);     //点亮第一、二、三个LED
  delay_ms(1000);
PORTB=(0<<PB0)|(0<<PB0)|(0<<PB0)|(0<<PB0)|(1<<PB4);    //点亮第一、二、三、四个LED
  delay_ms(1000);
PORTB=(0<<PB0)|(0<<PB1)|(0<<PB2)|(0<<PB3)|(0<<PB4);   //全部点亮
  while(1);
}
}


作者: taotie    时间: 2019-9-13 14:49
需要设置端口方向

#include <inttypes.h>
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
//sys_init();       脚位初始化
DDRB=0xff;//B端口设置为输出

{

PORTB=(0<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4);    //点亮第一个LED
  _delay_ms(1000);
PORTB=(0<<PB0)|(0<<PB0)|(1<<PB2)|(1<<PB3)|(1<<PB4);    //点亮第一、二个LED
  _delay_ms(1000);
PORTB=(0<<PB0)|(0<<PB0)|(0<<PB0)|(1<<PB3)|(1<<PB4);     //点亮第一、二、三个LED
  _delay_ms(1000);
PORTB=(0<<PB0)|(0<<PB0)|(0<<PB0)|(0<<PB0)|(1<<PB4);    //点亮第一、二、三、四个LED
  _delay_ms(1000);
PORTB=(0<<PB0)|(0<<PB1)|(0<<PB2)|(0<<PB3)|(0<<PB4);   //全部点亮
  while(1);
}
}
作者: taotie    时间: 2019-9-13 14:50
WINAVR编译通过
作者: taotie    时间: 2019-9-13 14:56


作者: hjx5548    时间: 2019-9-14 09:19
void sys_init(void)
{
        DDRB = 0xff;        //将所有I/O口均初始化为输出状态
        PORTB = 0xff;       
}
已经端口初始化
作者: hjx5548    时间: 2019-9-14 09:27
谢谢,一切正常了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1