《AVR單片機C語言輕鬆學》

《AVR單片機C語言輕鬆學》

AVR單片機C語言輕鬆學》


GITHUB:
https://github.com/jash-git/Jash-good-idea-20220101-001/tree/main/HW/Arduino


扉頁; 1

版權; 2

前言; 3

目錄; 5

1  ATmega16單片機基礎; 11

   
1.1  AVR
系列單片機; 11

   
1.2  ATmega16
單片機的特點、硬體結構和封裝; 11

   
1.3  ATmega16
單片機的內核; 14

       
1.3.1 
算數邏輯單位ALU; 15

       
1.3.2 
狀態寄存器SREG; 15

       
1.3.3 
通用寄存器; 15

       
1.3.4 
堆疊; 16

       
1.3.5 
中斷和重定處理模組; 17

   
1.4  ATmega16
單片機的記憶體體系; 18

       
1.4.1 
程式記憶體; 18

       
1.4.2 
資料記憶體; 18

       
1.4.3  E2PROM
記憶體; 19

   
1.5  ATmega16
單片機的系統時鐘; 20

       
1.5.1  ATmega16
的系統時鐘組成; 20

       
1.5.2  ATmega16
的時鐘源選擇; 21

       
1.5.3 
晶體振盪器; 21

       
1.5.4 
低頻晶體振盪器; 22

       
1.5.5 
外部RC振盪器; 22

       
1.5.6 
片內RC振盪器; 23

       
1.5.7 
外部時鐘源; 24

   
1.6  ATmega16
單片機的電源管理; 25

   
1.7  ATmega16
單片機的復位; 27

       
1.7.1  ATmega16
的復位源; 27

       
1.7.2 
上電復位; 28

       
1.7.3 
外部復位; 29

       
1.7.4 
掉電檢測復位; 29

       
1.7.5 
看門狗復位; 29

       
1.7.6  ATmega16
的復位控制寄存器; 30

       
1.7.7  
片內基準電壓; 30

   
1.8  ATmega16
單片機的中斷系統; 31

2  ATmega16單片機的指令和C語言; 33

    2.1  ATmega16單片機的指令系統; 33

       
2.1.1  ATmega16
單片機的指令集; 33

       
2.1.2  ATmega16
單片機的定址方式; 37

   
2.2  ATmega16
單片機C語言的資料類型、運算子號和運算式; 38

       
2.2.1 
常量和變數; 38

       
2.2.2  
算數運算、賦值、邏輯運算以及關係運算;
38

       
2.2.3 
自增減、複合和逗號運算; 39

       
2.2.4 
位運算; 40

       
2.2.5 
運算的優先順序; 40

   
2.3  ATmega16
單片機C語言的結構; 41

   
2.4  ATmega16
單片機C語言的函數; 42

       
2.4.1 
函數的定義、參數和返回值; 42

       
2.4.2 
函數的調用; 42

       
2.4.3 
區域變數和全域變數; 42

   
2.5  ATmega16
單片機C語言的陣列和指標; 43

   
2.6  ATmega16
單片機C語言的自構造類型; 44

       
2.6.1 
結構體; 44

       
2.6.2 
聯合體; 45

       
2.6.3 
枚舉; 46

3  ATmega16單片機的ICC AVR軟體發展環境; 47

   
3.1  ATmega16
單片機的軟體發展環境; 47

   
3.2 
安裝ICC AVR; 47

   
3.3  ICC AVR
的工作介面; 49

   
3.4  ICC AVR
的功能表列和快捷列; 50

      
 3.4.1  ICC AVR
的功能表列; 50

       
3.4.2  ICC AVR
的快捷列; 54

   
3.5  ICC AVR
的擴展關鍵字; 55

       
3.5.1 
中斷關鍵字; 55

       
3.5.2 
非揮發寄存器關鍵字; 56

       
3.5.3 
資料段關鍵字; 56

   
3.6  ICC AVR
的文件; 56

       
3.6.1  ICC AVR
的常用檔案類型; 56

       
3.6.2  ICC AVR
的庫函數檔; 57

        3.6.3 
ICC AVR
的開機檔案; 57

   
3.7  “Hello World!”——ICC AVR
的應用實例; 58

4  ATmega16單片機的硬體開發和Proteus硬體模擬環境; 62

   
4.1  ATmega16
單片機的硬體系統開發流程和開發工具; 62

       
4.1.1  ATmega16
單片機的硬體系統開發流程; 62

       
4.1.2  ATmega16
單片機的硬體開發工具; 63

   
4.2  Proteus
應用基礎; 64

        4.2.1 
Proteus
的介面和支援的檔; 64

       
4.2.2  Proteus
的菜單; 66

       
4.2.3  Proteus
的快捷列和工具箱; 77

   
4.3  Proteus
的使用流程; 80

   
4.4  Proteus
中的ATmega16及其使用; 80

   
4.5  Proteus
ICC AVR聯合使用; 82

5  ATmega16單片機的I/O引腳和外部中斷; 88

   
5.1  ATmega16
外部引腳基礎使用方法; 88

       
5.1.1  ATmega16
I/O引腳的結構; 88

       
5.1.2  ATmega16
I/O引腳配置; 89

       
5.1.3  ATmega16
I/O引腳電平讀取; 91

       
5.1.4  ATmega16
I/O引腳低功耗處理; 92

   
5.2  ATmega16
外部引腳的第二功能; 92

   
5.3  ATmega16
的外部中斷; 96

       
5.3.1  MCU
控制寄存器(MCUCR; 96

       
5.3.2  MCU
控制與狀態寄存器(MCUCSR; 97

       
5.3.3 
通用中斷控制寄存器(GICR; 97

       
5.3.4 
通用中斷標誌寄存器(GIFR; 98

   
5.4  ATmega16
I/O引腳和中斷的應用實例; 98

       
5.4.1  I/O
引腳輸出高低脈衝電平實例; 98

       
5.4.2  I/O
引腳驅動發光二極體(LED)實例; 102

       
5.4.3  I/O
引腳驅動單位數碼管實例; 108

       
5.4.4  I/O
引腳驅動獨立按鍵實例; 114

       
5.4.5  I/O
引腳驅動行列鍵盤實例; 120

       
5.4.6 
外部中斷控制I/O引腳輸出實例 ; 125

6  ATmega16單片機的定時計數器; 129

   
6.1 
定時計數器T/C0; 129

       
6.1.1  T/C0
的相關寄存器; 129

       
6.1.2  T/C0
的工作模式; 133

   
6.2 
定時計數器T/C1; 137

       
6.2.1  T/C1
的相關寄存器; 137

       
6.2.2  T/C1
的工作模式; 142

    6.3  定時計數器T/C2; 147

       
6.3.1  T/C2
的相關寄存器; 148

       
6.3.2  T/C2
的工作模式; 151

   
6.4  ATmega16
的定時計數器的應用實例; 154

       
6.4.1  T/C0
控制I/O引腳輸出方波; 154

       
6.4.2  T/C1
控制I/O引腳輸出PWM; 157

       
6.4.3 
外部晶體秒定時; 159

7  ATmega16單片機的串口; 163

   
7.1  ATmega16
串口的結構; 163

   
7.2  ATmega16
串口的寄存器; 164

       
7.2.1 
串口資料寄存器(UDR; 164

       
7.2.2 
串口控制和狀態寄存器AUCSRA; 164

       
7.2.3 
串口控制和狀態寄存器BUCSRB; 165

       
7.2.4 
串口控制和狀態寄存器CUCSRC; 166

       
7.2.5 
串口串列傳輸速率寄存器(UBRRLUBRRH; 167

   
7.3  ATmega16
串口的使用方法; 170

       
7.3.1 
選擇ATmega16串口的時鐘源; 170

       
7.3.2 
選擇ATmega16串口的資料框架格式; 172

       
7.3.3  ATmega16
串口的資料收發; 173

       
7.3.4  ATmega16
串口的多機通信; 175

   
7.4  ATmega16
串口的應用實例; 176

       
7.4.1  ATmega16
串口資料發送; 176

       
7.4.2 
PC進行串列通信; 182

8  ATmega16單片機的TWISPI匯流排界面; 188

   
8.1  TWI
匯流排基礎; 188

       
8.1.1  TWI
匯流排的資料交互過程; 188

       
8.1.2  TWI
匯流排的位址; 190

   
8.2  TWI
匯流排模組相關寄存器; 191

       
8.2.1 
位元速率控制寄存器(TWBR; 191

       
8.2.2  TWI
控制寄存器(TWCR; 191

       
8.2.3  TWI
狀態寄存器(TWSR; 192

       
8.2.4  TWI
資料寄存器(TWDR; 193

       
8.2.5  TWI
從機位址寄存器(TWAR; 193

   
8.3  TWI
匯流排模組的使用; 193

   
8.4  TWI
匯流排模組的資料傳輸方式; 195

       
8.4.1 
主機發送模式(MT; 195

       
8.4.2 
主機接收模式(MR; 196

       
8.4.3 
從機發送模式(ST; 197

       
8.4.4 
從機接收模式(SR; 198

   
8.5  TWI
匯流排的仲裁; 199

   
8.6  SPI
匯流排基礎; 199

   
8.7  SPI
匯流排模組相關寄存器; 201

       
8.7.1  SPI
控制寄存器SPCR; 201

       
8.7.2  SPI
狀態寄存器SPSR; 202

       
8.7.3  SPI
資料寄存器SPDR; 203

   
8.8  SPI
匯流排界面的工作模式; 203

   
8.9  TWI
SPI匯流排模組應用實例; 205

       
8.9.1  ATmega16
雙機使用TWI匯流排模組進行通信; 205

       
8.9.2  ATmega16
雙機使用SPI匯流排模組進行通信; 213

9  ATmega16單片機的比較器和ADC模組; 221

   
9.1  ATmega16
單片機的比較器 ; 221

       
9.1.1 
模擬比較器基礎; 221

        9.1.2  模擬比較器的寄存器; 221

       
9.1.3 
模擬比較器的輸入通道; 223

   
9.2  ATmega16
單片機的ADC模組; 223

       
9.2.1  ADC
模組基礎; 224

       
9.2.2  ADC
模組的寄存器; 225

       
9.2.3  ADC
模組的轉換過程; 229

       
9.2.4  ADC
模組的輸入通道和參考電源; 231

       
9.2.5  ADC
模組的轉換結果和精度定義; 232

   
9.3  ATmega16
比較器的應用實例; 234

       
9.3.1 
雙通道類比信號比較應用實例; 234

       
9.3.2 
多通道類比信號比較應用實例; 237

   
9.4  ATmega16 ADC
模組的應用實例; 241

       
9.4.1 
單通道類比信號採集實例; 241

       
9.4.2 
多通道類比信號採集實例; 244

       
9.4.3 
增益放大類比信號採集實例; 247

       
9.4.4 
差分類比信號比較採集實例; 251

10  ATmega16的其他內部資源; 255

   
10.1 
看門狗(WDT; 255

       
10.1.1 
看門狗基礎; 255

       
10.1.2 
看門狗的寄存器; 255

       
10.1.3 
看門狗的啟動和關閉; 256

   
10.2 
內部E2PROM; 256

       
10.2.1  E2PROM
的操作; 257

       
10.2.2  E2PROM
的寄存器; 258

       
10.2.3  E2PROM
的操作函數; 259

   
10.3 
內置看門狗和E2PROM應用實例; 260

       
10.3.1 
內置看門狗模組測試應用實例; 260

       
10.3.2  E2PROM
讀寫應用實例; 264

11  ATmega16的應用系統; 268

   
11.1 
I/O引腳擴展多按鍵; 268

       
11.1.1 
應用系統背景; 268

       
11.1.2 
設計思路; 268

       
11.1.3 
硬體系統設計; 269

       
11.1.4 
軟體系統設計; 271

       
11.1.5 
應用系統的模擬和總結; 273

   
11.2 
簡易電子琴; 275

       
11.2.1 
應用系統背景; 275

       
11.2.2 
設計思路; 276

       
11.2.3 
硬體系統設計; 277

       
11.2.4 
軟體系統設計; 281

       
11.2.5 
應用系統的模擬和總結; 287

   
11.3 
商場燈光控制; 289

       
11.3.1 
應用系統背景; 289

       
11.3.2 
設計思路; 289

       
11.3.3 
硬體系統設計; 289

       
11.3.4 
軟體系統設計; 298

       
11.3.5 
應用系統的模擬和總結; 308

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *