求ATmega16流水灯程序
答案:4 悬赏:60 手机版
解决时间 2021-02-05 08:20
- 提问者网友:伴风望海
- 2021-02-05 02:05
求ATmega16流水灯程序
最佳答案
- 五星知识达人网友:鸽屿
- 2021-02-05 03:37
#include <D:\开发板\OK100E\程序\avr程序\OK100E.H>
void One_led(uchar number,uchar light)
{
uchar i;
if(light==TRUE) //点亮操作
{
PORTB&=~BIT(number); //输出数据
PORTC|=BIT(LEDLK); //更新数据
Delayms(5); //调整时序
PORTC&=~BIT(LEDLK); //锁存数据
}
else
{
PORTB|=BIT(number); //输出数据
PORTC|=BIT(LEDLK); //更新数据
Delayms(5); //调整时序
PORTC&=~BIT(LEDLK); //锁存数据
}
}
void All_led(uchar light)
{
if(light)
{
PORTB&=~ALLLED; //ALLLED=0xFF,使全部LED都亮
PORTC|=BIT(LEDLK); //输出数据
Delayms(5); //调整时序
PORTC&=~BIT(LEDLK); //锁存数据
}
else
{
PORTB|=ALLLED; //ALLLED=0xFF,使全部LED都灭
PORTC|=BIT(LEDLK); //输出数据
Delayms(5); //调整时序
PORTC&=~BIT(LEDLK); //锁存数据
}
}
void main()
{
Board_init();
PORTC|=BIT(BEEP);
while(1)
{
uchar i;
for(i=0;i<8;i++) //循环8次,8个LED依次点亮
{
All_led(FALSE); //全部熄灭
One_led(i,TRUE); //点亮指定的LED
Delayms(200); //延时指定的时间
}
}
}
全部回答
- 1楼网友:愁杀梦里人
- 2021-02-05 06:08
#include <iom8v.h>
void main()
{int i;
DDRB = 0xFF;
while (1)
{
PORTD=0x55;
for (i=0;i<10000;i++);
PORTD=0xaa;
for (i=0;i<10000;i++);
}
}
- 2楼网友:第四晚心情
- 2021-02-05 05:35
include<iom16v.h>
const unsigned char dis[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
void delay(unsigned char x)//延迟函数
{unsigned char i,j;
for(i=0;i<x;i++)
for(j=0;j<1140;j++);
}
void main(void)
{unsigned char n;
DDRA=0xff;
while(1)
{
for(n=0;n<8;n++)
{PORTA=dis[n];
delay(1000);
}
for(n=7;n>1;n--)
{PORTA=dis[n];
delay(1000);
}
}
}
- 3楼网友:独钓一江月
- 2021-02-05 04:05
首先这个单片机是mega8不是mega16 不过这个没影响 因为你在proteus里面选的是对的 问题出在主程序第二行 你应该将d端口设置为输出 而不是b端口 将ddrb=0xff改为ddrd=0xff即可
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯