单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 230|回复: 5
收起左侧

ATTINY13A单片机顺序点亮灯程序哪里不对?

[复制链接]
hjx5548 发表于 2019-9-12 13:30 | 显示全部楼层 |阅读模式
主要点亮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 | 显示全部楼层
捕获1.PNG
 楼主| hjx5548 发表于 2019-9-14 09:19 | 显示全部楼层
void sys_init(void)
{
        DDRB = 0xff;        //将所有I/O口均初始化为输出状态
        PORTB = 0xff;       
}
已经端口初始化
 楼主| hjx5548 发表于 2019-9-14 09:27 | 显示全部楼层
谢谢,一切正常了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|单片机论坛 |51黑电子论坛技术交流 管理员QQ:125739409;技术交流QQ群636986012

Powered by 单片机教程网

快速回复 返回顶部 返回列表