AVR单片机函数解读

来源:百度知道 编辑:UC知道 时间:2024/05/31 11:45:50
哪位高手能给解读一下各条语句的意思啊

void main(void)
{
sint8 i,j;
uint8 k,temp=0;
LED_DDR=0XFF;

while(1)
{
for(i=7;i>=0;i--)
{
k=0x01;
for(j=i;j>=0;j--)
{
LED_PORT = temp|k;
delay50ms(5);
k<<=1;
}
temp = LED_PORT;
}
}
}

void main(void)
{
sint8 i,j;
uint8 k,temp=0; 定义几个数
LED_DDR=0XFF; 设置端口为输出模式(置1输出0输入)

while(1) 死循环
{
for(i=7;i>=0;i--)
{
k=0x01;
for(j=i;j>=0;j--)
{
LED_PORT = temp|k;
delay50ms(5);
k<<=1;
}
temp = LED_PORT;
}
}
}
你这就是个流水灯的程序,是定义一个数据K,然后进行循环,每一次循环方K和端口值“或”一次,然后左移,实现流水循环。
LED_PORT和LED_DDR要定义,前面加上头文件,否则不好使。
这个程序太复杂,给你一个简单的。

#include<avr/io.h>
#include<avr/delay.h>

void main(void)
{
LED_DDR=0XFF;
char i;
for(i=0;i<8;i++)
{
LED_PORT|=(1<<i);
_delay_ms(50);
LED_PORT=0xff;
}
}
完事了,就这么几行。原理是:吧LED的输出端口先置一,然后依次清零,实现流水,很简单的,还有什么疑问加我的Q274297534

void main(void)
{
sint8 i,j;
uint8 k,temp=0;
LED_DDR=0XFF; //设置端口全为输出状态

while(1) //死循环
{
for(i=7;i>=0;i--) //控制8次循环
{
k=0x01;
for(j=i;j>=0;j--) <