一、AVR開發(fā)工具簡介及開發(fā)環(huán)境的建立
- 軟件開發(fā)工具
- 編譯環(huán)境:WinAVR
- 下載軟件:MucodeISP
- 仿真環(huán)境:AVR Studio
- 集成環(huán)境:AVR Studio,可以內(nèi)聯(lián)WinAVR 成為一個(gè)具有編譯、仿真、下載功能的集成環(huán)境
- 硬件開發(fā)工具
- 下載線(并口也有USB接口的,功能是下載程序配置熔絲位)
- 仿真器
- 學(xué)習(xí)板(或手工焊接的系統(tǒng)板)
- 工具手冊
- WinAVR技術(shù)手冊
- ATmega16官方中文版技術(shù)手冊(英文水平好也可以看看英文版)
WinAVR 說明
WinAVR 下載安裝后只用到PN其他刪除就行了、PN我們一般把他作為一個(gè)編輯環(huán)境來使用,保存為.c文件之后他就會(huì)變成一個(gè)有顏色的C文件了,這個(gè)有點(diǎn)就顯示出來了(關(guān)鍵字帶顏色深藍(lán)色和點(diǎn)擊小括號其中另一半就會(huì)高亮很多層括號就有用了)而WinAVR 的編譯功能需要編寫Makefile文件所以對初學(xué)者有難度先不介紹了。而編譯使用AVR Studio來完成就可以了。
下載線作用
一、修改熔絲位
二、向單片機(jī)Flash中下載程序代碼。不具備單步調(diào)試仿真功能。
三、下載線有很多種,最常用的是插在計(jì)算機(jī)并口上的STK200/300
下載軟件說明
下載軟件有很多、但推薦初學(xué)者使用Mucode isp 優(yōu)點(diǎn)是熔絲位設(shè)置很清晰,不至于設(shè)錯(cuò)而鎖死芯片
一般我們只管設(shè)置時(shí)鐘(前8個(gè) 選了就不用管了)和JTAGEN (下面8個(gè)其中的一個(gè))就行了。下載線和下載軟件
-
AVR Studio 是Atmel公司官方的匯編、下載與仿真軟件可以內(nèi)聯(lián)WinAVR獲得C語言編譯能力。單獨(dú)裝AVR Studio只能編譯匯編語言的代碼,通過JTAGE 工具也具有下載仿真的功能也可以更改熔絲位不過熔絲位不夠直觀。內(nèi)聯(lián)就可以獲得C語言編譯能力了。 - JTAG ICE 是Atmel公司官方的仿真調(diào)試器,但已經(jīng)被仿制,價(jià)格比官方版本要便宜十倍
- 可以使用淘寶購買的JTAGEICE 當(dāng)然你買的時(shí)候最要要賣家給發(fā)給你個(gè)AVR Studio 的版本
創(chuàng)建一個(gè)項(xiàng)目如下圖
點(diǎn)擊下一步
選著JTAGE ICE
進(jìn)入項(xiàng)目
點(diǎn)擊project 下的配置選項(xiàng) (configuration options)
填入:晶振頻率和代碼優(yōu)化
點(diǎn)擊確定。
注意AVR都要包含一個(gè)最為基本的頭文件
#include
//在AVR Studio下編譯代碼就不如在 WinAVR下編譯好如括號不好用。
調(diào)試如下
這樣其實(shí)已經(jīng)通過仿真器已經(jīng)下載到了單片機(jī)里面了,這就提到一個(gè)JTAG的一個(gè)好處,JTAG 一邊是DB9頭一邊就是JTAG仿真接口接單片機(jī)。所以仿真什么結(jié)果實(shí)際運(yùn)行就是什么結(jié)果是一樣的。51不帶JTAG口一般采用偉福仿真器。、它的仿真是一種ROM仿真,仿真時(shí)候使用仿真頭來代替單片機(jī)來進(jìn)行仿真,最后再下載進(jìn)去,所以最后運(yùn)行的結(jié)果不一定是一樣的。
二、計(jì)算機(jī)原理基礎(chǔ)知識講解
-
數(shù)值就是一位數(shù)字能夠表示的數(shù)的數(shù)量,N進(jìn)制數(shù)的進(jìn)位規(guī)則是“馮N進(jìn)1
1字節(jié)=2位十六進(jìn)制數(shù)
例如:
0x55 = 0b01010101 = 85
0xa3 = 0b10100011 = 163
-
存儲(chǔ)器
對于8位單片機(jī),其內(nèi)部存儲(chǔ)器均為8位。
RAM與ROM 模型
-
CPU
CPU即是為中央處理器
取指令-執(zhí)行
三、C語言基礎(chǔ)知識講解
-
變量 -
運(yùn)算符
-
語句
-
函數(shù)
-
順序語句
-
選擇語句
-
循環(huán)語句
-
數(shù)組和指針
變量:變量就是存儲(chǔ)于RAM或ROM中的數(shù)據(jù)
變量的分類:
單片機(jī)中比較常用的是字符型(char)和整型(int)
實(shí)型(float)變量在單片機(jī)C語言中一般用不到(浮點(diǎn))
運(yùn)算符:類似于數(shù)學(xué)運(yùn)算中的運(yùn)算符號(+ - * / 移位等C語言課本后有附表)
語句:C語言中以分號作為一條語句的結(jié)束
習(xí)慣上每條語句單獨(dú)占用一行,但也可以每行有多條語句,
DDRx
#elif defined (__AVR_ATmega16__)
#
在找到iom16.h就有定義地址了
#define DDRC
#define DDC0
#define DDC1
#define DDC2
#define DDC3
#define DDC4
#define DDC5
#define DDC6
#define DDC7
就是說明在 0x14位置
字符型變量
占用存儲(chǔ)器中的一個(gè)字節(jié)空間,即8位二進(jìn)制數(shù)
取值范圍:0~(2^8 - 1 )即0~255
可以賦值為整數(shù)或ASCII碼
char zifu
char zifu = 'a'//這種特殊方式是‘a’ 字符就是把ASCII碼值給了ASCII(2)0--255對應(yīng)一個(gè)字符是一種映射關(guān)系單引號告訴編譯器從這個(gè)碼表中取出對應(yīng)的ASCII碼賦值給zifu 查下表得出對應(yīng)就是97,所以這兩條語句是等效的。
前提是先進(jìn)入調(diào)試模式下view下的Watch才能用 不然是灰色的
在Value右鍵可以選十六進(jìn)制和十進(jìn)制 看看
整形變量
占用存儲(chǔ)器中的2個(gè)字節(jié),即16位二進(jìn)制數(shù)
有無符號子類型
unsigned int :無符號整型
取值范圍0~(2^16-1)即0~65535
signed int 有符號整形,signed 可以省略。
取值范圍-2^15 ~ (2^15-1)即-32768 ~ 32767
長整型
取值范圍更大的int 子類型
long int :長整形,長度為32位,即4個(gè)字節(jié)
long long int :長度為64位,即8個(gè)字節(jié)
常用的運(yùn)算符
賦值 = 加 + 減 - 乘 * 除 / 括號() 求余%
與& 或| 取反~ 異或^ 左移 << 右移 >>
邏輯與&& 邏輯||