本帖最后由 hujia 于 2015-6-23 15:41 編輯
自從無線通信完成后我沒做什么,而是把AVR的學習列上日程,AVR的學習我是純手工打造,所有的實驗板全部自己焊接,因為用51習慣了,他是那么的方便,到AVR這卻是一件很簡單的事情顯得如此復雜,那下載來說吧,51的ISP是通過串口直接寫到FLASH,而AVR的還要設置熔絲位,如果搞不好芯片鎖死就完蛋了,至少我的水平是夠嗆解決的。遇到的第一個問題是價格,AVR的價格比51的貴將近2-5倍,我選的是16L,因為他的FLASH足夠我這種菜鳥用的,16KB,另一個是他的寬電壓,以前51就沒有這個優勢,最重要的其實學哪種都無所謂,編程嗎,其實就是一個中心思想的問題,只要你有好的算法,用什么語言描述就無關緊要了,關鍵AVR有個架構是不同于51的,那就是哈佛結構,這種結構要比51 速度快幾倍,我花了大約一個星期的時間看了內部的架構,至于匯編我大體略了下,因為以后的程序我主要基于C語言的,學單片機最重要的明白他的內部架構,硬件配置,然后開發流程,我用的USBASP,光驅動換了4次,重裝了3次,哎!曲折啊。好不容易搞好了,又有一個口PC口不正常。原因是JTAGE開了,關了就正常了,現在我只邁了一小步----對他的開發流程大體了解、板子焊完了、下載調通了,熔絲設置完畢,下一步就要熟悉軟件,抽象到編程和移植程序,還有很多問題要解決,困難也肯定肯定很多!但是還是那句話,不積跬步,無以至千里,不積小流,無以成江海,九層之臺,起于壘土;千里之行,始于足下。坐而言,不如起而行,路雖遠,行則將至;事雖難,做則必成。
/* AVR閃爍燈!!0412 第四項目部宿舍*/
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
/*下面是位操作的宏定義*/
#define set_bit(a,b) a|=(1<<b)
#define clr_bit(a,b) a&=~(1<<b)
void delay(void)//延時函數
{
uint i,j;
for(i=240;i;i--)
for(j=240;j;j--);
}
void main (void)//主函數
{
uchar b;
DDRA=0xff;//初始化端口A
PORTA=0x00;//初值設定為00H
while(1)
{
set_bit(PORTA,0);//將PA口得第0位置1;
delay();
clr_bit(PORTA,0);//將PA口的第0位置0;
delay();
}
}
|