AVR 流水灯

2019-07-15 22:49发布

刚刚学AVR ,写了一个流水灯,可是仿真的时候除了问题,自己呢也找不到这个程序的问题在哪里。。。。求助于各位了
#include<iom16v.h>
#include<macros.h>
void delay(unsigned int a)
{
unsigned char i;
for(;a>0;a--)
  for(i=6245;i>0;i--);
}
void main(void)
{
DDRA=0xff;
PORTA=0xff;
PORTA=0xff;
while(1)
{
   PORTA=~0X01;
    delay(100);
   PORTA=~0X02;
    delay(100);
  PORTA=~0X04;
    delay(100);
  PORTA=~0X08;  
    delay(100);
  PORTA=~0X10;
    delay(100);
  PORTA=~0X20;
    delay(100);
  PORTA=~0X40;
    delay(100);
  PORTA=~0X80;
    delay(100);
}
}
1.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
今日立夏
2019-07-16 08:45
CrazyMCU 发表于 2013-8-24 20:01
你要说出什么问题啊,   而且你这样写是不行的PORTA=~0X01;直接PORTA=0X01,不要“~” ...

我的这个程序是利用“~”进行取反。。。主要是在仿真的时候只有第一个灯亮。。。后面我又写了两个还是这样的问题,这个是不是仿真软件的问题?
#include<iom16v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint a)
{
uchar i;
for(;a>0;a--)
  for(i=6245;i>0;i--);
}
void main(void)
{
DDRA=0xff;
PORTA=0xff;

DDRB=0xff;
PORTB=0xff;
while(1)
{
  uint i;
  for(i=0;i<8;i++)
  {
  PORTA &=~BIT(i);
  delay(100);
  PORTA |=BIT(i);
  }
}
}

一周热门 更多>