內容簡介
本書內容通俗易懂,實用性強,可供學習PIC單片機C語言開發的有關技術人員和愛好者以及高等院校相關專業的師生閱讀參考。目錄
第1章什麼是C語言1
1.1什麼是程式1
1.1.1計算機的結構1
1.1.2程式和命令2
1.2二進制和十六進制3
1.3C語言4
1.3.1從彙編語言談起5
1.3.2C語言的歷史5
1.3.3C語言特點5
第2章PIC單片機的基本概念7
2.1什麼是PIC7
2.1.1PIC概要8
2.1.2PIC單片機的結構概要10
2.1.3PIC單片機的存儲器結構11
2.1.4指令結構13
2.1.5特殊功能暫存器15
2.2程式開發環境23
2.2.1基本環境23
2.2.2MPLAB23
2.2.3PIC編程器24
第3章PIC用C語言編譯器25
3.1PIC的C語言編譯器25
3.2CSS公司的C編譯器26
3.2.1CSS公司的C編譯器結構27
3.2.2CCS公司的C編譯器概要28
3.2.3限制事項29
3.3PCM的安裝30
3.3.1PCM的安裝30
3.3.2與MPLAB的集成33
3.4PCM的使用方法34
3.4.1C語言程式設計流程35
3.4.2建立項目35
3.4.3建立源檔案39
3.4.4編譯40
3.5調試方法43
3.5.1在MPLAB環境下的程式調試43
3.5.2根據標準輸入/輸出函式進行調試44
3.6對PIC單片機的寫入操作46
3.6.1PICSTARTPlus的情形46
3.6.2PIC編程器Ver3的情形48
第4章練習用的硬體50
4.1練習用的PIC通用單元A50
4.1.1概要50
4.1.2功能及電路51
4.1.3接口描述51
4.1.4使用的元件53
4.1.5安裝方法53
4.2練習用的PIC通用單元B54
4.2.1概要54
4.2.2功能及電路55
4.2.3接口描述57
4.2.4液晶顯示器的連線57
4.2.5所用元件58
4.2.6安裝60
第5章什麼是C語言61
5.1C程式的基本結構61
5.1.1程式的基本結構61
5.1.2函式、表達式和數據62
5.2程式的格式和記述64
5.2.1格式的規定64
5.2.2編程風格67
5.3main函式71
第6章首先上手試一試74
6.1設備指定與配置74
6.1.1設備指定和#include75
6.1.2配置與#fuses78
6.2輸入/輸出連線埠的控制81
6.2.1PIC的輸入/輸出連線埠81
6.2.2C語言編程82
6.3標準輸入/輸出函式的使用方法88
6.3.1掌握RS232C88
6.3.2printf函式90
第7章預處理器94
7.1預處理器分類和一覽94
7.2符號定義和檔案包含97
7.2.1符號定義的預處理器97
7.2.2檔案包含98
7.3條件編譯99
7.3.1#if語句的用法99
7.3.2#ifdef語句的使用101
7.3.3#error語句的使用方法101
7.4設備特有的控制用預處理器102
7.4.1頁面和程式配置102
7.4.2#inline和#separate105
7.4.3頁面和變數的配置107
第8章程式結構和流程控制函式108
8.13種基本結構108
8.2if語句的使用方法111
8.2.1if語句的格式111
8.2.2if語句的嵌套113
8.2.3條件的表述方法115
8.2.4複合條件的表述方法115
8.3while語句和dowhile語句116
8.3.1while語句117
8.3.2dowhile語句118
8.4for語句的使用方法119
8.5switch語句的使用方法122
8.6break語句和continue語句125
8.6.1break語句126
8.6.2continue語句127
第9章數據類型和運算符131
9.1數據類型的種類和格式131
9.1.1數值常量的格式131
9.1.2變數和數據類型132
9.1.3變數的聲明格式1349.1.4文字編碼和char型135
9.1.5字元型數據的書寫方式和文字排列138
9.2運算符號的使用方法139
9.2.1算術運算符和自動類型變換140
9.2.2關係運算符和邏輯運算符140
9.2.3增量和減量運算符141
9.2.4位運算符和移位運算符142
9.2.5其他運算符143
9.2.6運算符的優先權145
第10章模組化和函式148
10.1程式的模組化148
10.1.1結構化程式設計方法148
10.1.2什麼是好的程式149
10.2函式製作方法150
10.2.1函式的基本書寫方式150
10.2.2引數和返回值151
10.2.3函式的原形說明152
10.3變數的記憶類別和有效範圍154
10.3.1變數的性質和有效範圍154
10.3.2局部變數和全局變數155
10.3.3實際的例子156
第11章標準函式和標準輸入/輸出函式159
11.1標準函式159
11.1.1標準函式表159
11.1.2CCS公司的獨自函式159
11.2標準輸入/輸出函式165
11.2.1標準輸入/輸出函式一覽表165
11.2.2putc函式和getc函式167
11.2.3printf函式的擴展170
11.2.4puts函式和gets函式171
第12章數組和指針173
12.1什麼是數組173
12.1.1數組的格式173
12.1.2數組的使用方法175
12.2字元串的處理177
12.3指針179
12.3.1指針變數180
12.3.2數組和指針182
12.3.3函式的引數和指針184
12.3.4函式的引數和數組185
第13章結構體和聯合體191
13.1結構體191
13.1.1結構體的定義和說明191
13.1.2對結構體各成員的訪問192
13.1.3位欄位193
13.1.4結構數組194
13.1.5結構體指針195
13.2聯合體198
13.3枚舉類型200
第14章內部函式的使用方法202
14.1延時函式202
14.1.1延時函式概要202
14.1.2使用方法203
14.2輸入/輸出引腳的控制205
14.2.1輸入/輸出模式的設定205
14.2.2輸入/輸出引腳控制用內部函式209
14.3動態顯示控制211
14.3.1程式段發光二極體的概要211
14.3.2顯示控制方法212
14.3.3套用實例213
14.4液晶顯示器的控制214
14.4.1液晶顯示器的概要215
14.4.2接口規格217
14.4.3初始設定步驟219
14.4.4液晶顯示器控制程式庫220
14.4.5程式庫使用實例222
14.5中斷處理224
14.5.1中斷概要224
14.5.2引起中斷處理因素225
14.5.3中斷用預處理器227
14.5.4中斷處理的程式設計228
14.5.5實例1230
14.5.6暫存器的讓路等待和回復原狀232
14.5.7實例2233
14.5.8實例3235
14.6定時器0模組的使用方法236
14.6.1定時器0的概要236
14.6.2定時器0用的內部函式238
14.6.3時間間隔測量器的使用方法239
14.6.4定數器套用實例241
14.7定時器1模組的使用方法243
14.7.1定時器1簡介243
14.7.2定時器1的內部函式245
14.7.3基於中斷的時間間隔測量器的實例246
14.8A/D轉換器的使用方法249
14.8.1A/D轉換器簡介249
14.8.2A/D轉換的內部函式252
14.8.3電壓測量實例254
14.8.42通道測量顯示實例256
14.9USART模組的使用方法258
14.9.1USART簡介258
14.9.2USART用內部函式260
14.9.3USART套用舉例(接收中斷實例)263
14.10MSSP模組的使用方法(SPI通信)266
14.10.1SPI通信簡介266
14.10.2SPI用內部函式269
14.10.3SPI通信套用舉例270
14.11MSSP的使用方法(I2C通信)275
14.11.1I2C通信簡介275
14.11.2I2C通信用內部函式280
14.11.3I2C通信實例1(外設EEPROM)282
14.11.4I2C通信實例2(PIC間通信)288
14.12CCP模組的使用方法293
14.12.1捕獲(Capture)模式293
14.12.2比較模式294
14.12.3PWM模式295
14.12.4CCP模組用內部函式297
14.12.5捕捉模式實例298
14.12.6比較模式套用實例300
14.12.7PWM套用實例302
14.13內置EEPROM的使用方法304
14.13.1內置EEPROM簡介304
14.13.2內置EEPROM用內部函式306
14.13.3套用實例306
14.14睡眠模式和喚醒功能310
14.14.1睡眠模式310
14.14.2喚醒功能311
14.14.3喚醒因素的識別312
14.14.4套用實例313
第15章PIC單片機的實時OS317
15.1PICROS簡介317
15.1.1特點和功能317
15.1.2PICROS的構成318
15.1.3任務和狀態轉移319
15.1.4服務函式321
15.2任務的製作方法322
15.2.1任務構成實例1322
15.2.2任務構成實例2323
15.2.3任務構成實例3324
15.2.4任務構成實例4325
15.2.5任務構成實例5326
15.3PICROS主體326
15.3.1全體構成327
15.3.2TCB的構成328
15.3.3任務調度程式的動作329
15.3.4服務函式的動作330
15.3.5定時器0的中斷處理動作331
15.4PICROS的配置331
15.4.1配置檔案(usrconf.h)332
15.4.2任務分配表(tdt.h)334
15.4.3任務連結檔案(tasklink.h)335
15.4.4用戶初始化函式(usrini.c)335
15.4.5MPLAB項目的製作方法336
15.5實際套用舉例337
15.5.1各任務的程式338
15.5.2中斷處理函式342
15.5.3用戶初始化函式343
15.5.4配置用的相關檔案344
15.5.5生成項目346
15.6調試工具348
15.6.1調試工具的功能348
15.6.2使用方法349
書摘
序言
活用PIC單片機說明書出版已經有2年半了,在此期間很多人說都想學習並套用PIC單片機。
在收到的信件中,很多人都希望筆者能對PIC的C語言程式設計進行系統說明,這真是對我的挑戰。
無論從哪方面來說,PIC單片機都是小型的控制器,其結構並不太適合使用C語言。但是也有一些克服這些困難而開發出來的C語言編譯器。利用這些編譯器用C語言進行的程式設計,仍然比用彙編語言進行程式設計輕鬆得多。
文摘
第1章 什麼是C語言
所有的計算機都是通過程式,也就是通過按一定順序記載的語言進行工作的。這種語言因最終使計算機這種機器能夠理解,故稱之為機器語言。
這種程式雖是人們創造,計算機使用,但人們使用機器語言會感到很複雜和消耗時間。因此,人們做了很多嘗試,力圖用和人類相近的語言來記述程式,並不斷取得了進步。在這些嘗試中,很早就得到套用,並且現在也作為主流語言使用的就是C語言。
本章就對這種語言的產生歷史和特點予以說明。
1.1 什麼是程式
計算機的運行就是由外部設備或人來輸入數據,對這些數據進行加工或處理並向外部設備或人輸出數據。根據計算機使用目的,處理的內容會不同,所以即使同樣結構的計算機也可以適應多種場合的需要。這些處理的內容決定了怎樣輸入數據,進行怎樣的處理,又做什麼形式的輸出,這一過程被稱之為程式。