标题:
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
捕获1.PNG
(27.27 KB, 下载次数: 27)
下载附件
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