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