单片机新手,入门前的感悟第三篇。跑马灯的修改,我成功了。
我修改了程序,仿真成功。
#include <mega16.h>
#include<stdlib.h>
#include<delay.h>
void F1()
{
unsigned char position=0;
int i=0;
PORTA=0xFF;
DDRA=0xFF;
while(1)
{PORTA=~(1<<position);
if(++position>=8)
{i++;
if(i<=2)
position=0;
else
break;}
delay_ms(500);
};
}
void F2()
{
unsigned char position=0;
int i=0;
PORTA=0xFF;
DDRA=0xFF;
while(1)
{
PORTA=~(128>>position);
if(++position>=8)
{i=i+1;
if(i<=2)
position=0;
else
break;}
delay_ms(500);
};
}
void F3()
{ int i;
PORTA=0xAA;
DDRA=0xFF;
for(i=1;i<=10;i++)
{PORTA=~PORTA;
delay_ms(500);};
}
void F4()
{ int i;
unsigned char position=0;
PORTA=0xFF;
DDRA=0xFF;
for( i=0;i<=16;i++)
{ position=rand()%8;
PORTA=~(1<<position);
delay_ms(500);}
}
void main(void)
{ F1();
F2();
F3();
F4();
while (1)
{
F1();
F2();
F3();
F4();
};
}
通过编这个程序,学到些东西,和新手交流一下。
大家对比我这两个程序
1.函数调用要加括号,否则会出现expression with possibly no effect
2.int i;放在{}外了,于是出现undefined symbol ‘int’ 。 undefined symbol ‘i' 。declaration syntax error符号声明错误
3.两个随机函数的使用(见附件)cout<<position<<" "这句是c++里的,是把position的值输出到屏幕上,类似于printf,直接删掉就可以。注意多了一个头文件。
4.拿到Proteus中仿真(电路图见附件),右键点单片机选编辑属性,即可导入程序,如果要修改打开CVAVR修改,然后build一下,再在Proteus仿真就行了。
5.LED选LED-GREEN,别选LED,他不发光,另外仿真时红点表示高电平,蓝点表示低电平。 |