第1章 基礎知識 1
1.1 計算機的基本認識 1
1.1.1 計算機系統的工作過程及其
內部結構 3
1.1.2 指令、指令系統及程序 8
1.2 尋址方式 14
1.3 單片機及其發展概況 14
1.3.1 單片機及其特點 15
1.3.2 單片機技術現狀及將來發展趨勢 16
習題1 20
第2章 STM8S系列MCU芯片
內部結構 21
2.1 STM8S系列MCU性能概述 21
2.2 STM8S系列MCU內部結構 23
2.2.1 STM8 內核CPU 24
2.2.2 STM8S系列芯片封裝與
引腳排列 26
2.3 通用I/O口GPIO
(General Purpose I/O Port) 29
2.3.1 I/O引腳結構 30
2.3.2 I/O端口數據寄存器與
控制寄存器 30
2.3.3 輸入模式 32
2.3.4 輸出模式 32
2.3.5 多重復用引腳的選擇 33
2.3.6 I/O引腳初始化特例 33
2.3.7 I/O引腳負載能力 34
2.4 STM8S的電源供電及濾波 35
2.5 復位電路 37
2.5.1 復位狀態寄存器RST_SR 38
2.5.2 外部復位電路 39
2.6 時鐘電路 40
2.6.1 內部高速RC振蕩器時鐘源HSI 41
2.6.2 內部低速RC振蕩器時鐘源LSI 42
2.6.3 外部高速時鐘源HSE 42
2.6.4 時鐘源切換 43
2.6.5 時鐘安全系統(CSS) 45
2.6.6 時鐘輸出 46
2.6.7 時鐘初始化過程及特例 46
習題2 47
第3章 存儲器系統及訪問 49
3.1 存儲器結構 49
3.1.1 隨機讀寫RAM存儲區 50
3.1.2 Flash ROM存儲區 51
3.1.3 數據EEPROM存儲區 52
3.1.4 硬件配置選項區 52
3.1.5 通用I/O端口及外設寄存器區 53
3.1.6 唯一ID號存儲區 53
3.2 存儲器讀寫保護與控制寄存器 53
3.2.1 存儲器讀保護(ROP)選擇 53
3.2.2 存儲器寫保護 53
3.2.3 存儲器控制寄存器 54
3.3 Flash ROM存儲器IAP編程 56
3.3.1 字節編程 56
3.3.2 字編程 61
3.3.3 塊編程 68
習題3 70
第4章 STM8內核CPU指令系統 72
4.1 ST匯編語言格式及其偽指令 72
4.1.1 ST匯編常數表示法 72
4.1.2 ST匯編語言格式 73
4.1.3 ST匯編支持的關系運算符 74
4.1.4 ST匯編偽指令(Pseudoinstruction) 75
4.2 STM8尋址方式 81
4.2.1 立即尋址(Immediate) 81
4.2.2 寄存器尋址 82
4.2.3 直接尋址(Direct) 82
4.2.4 寄存器間接尋址(Indirect) 82
4.2.5 變址尋址(Indexed) 82
4.2.6 以存儲單元作間址的間接
尋址方式 83
4.2.7 復合尋址方式 84
4.2.8 相對尋址(Relative) 85
4.2.9 隱含尋址(Inherent) 85
4.2.10 位尋址(Bit) 85
4.3 STM8指令系統 86
4.3.1 數據傳送(Load and Transfer)指令 86
4.3.2 算術運算(Arithmetic Operations)
指令 95
4.3.3 增量/減量(Increment/Decrement)
指令 106
4.3.4 邏輯運算(Logical Operations)
指令 108
4.3.5 位操作(Bit Operation)指令 110
4.3.6 移位操作(Shift and Rotates)指令 113
4.3.7 比較(Compare)指令 115
4.3.8 正負或零測試(Tests)指令 116
4.3.9 控制及轉移(Jump and Branch)
指令 117
習題4 124
第5章 匯編語言程序設計 126
5.1 STVD開發環境與STM8匯編語言
程序結構 126
5.1.1 在STVD開發環境中創建
工作站文件 126
5.1.2 STVD自動創建項目文件內容 128
5.1.3 完善STVD自動創建的項目
文件內容 131
5.1.4 在項目文件中添加其他文件 135
5.2 STM8匯編程序結構 136
5.2.1 子程序與中斷服務程序在
主模塊內 136
5.2.2 子程序與中斷服務程序在各自
模塊內 137
5.2.3 子程序結構 138
5.3 程序基本結構 140
5.3.1 順序結構 140
5.3.2 循環結構 143
5.3.3 分支程序結構 144
5.4 并行多任務程序結構及實現 149
5.4.1 串行多任務程序結構與并行
多任務程序結構 149
5.4.2 并行多任務程序結構 150
5.5 程序仿真與調試 154
習題5 157
第6章 STM8中斷控制系統 159
6.1 CPU與外設通信方式概述 159
6.1.1 查詢方式 159
6.1.2 中斷通信方式 159
6.2 STM8S中斷系統 160
6.2.1 中斷源及其優先級 160
6.2.2 中斷響應條件與處理過程 164
6.2.3 外中斷源及其初始化 165
6.2.4 中斷服務程序結構 167
6.2.5 中斷服務程序執行時間控制 167
小結 168
習題6 168
第7章 STM8S系列MCU定時器 169
7.1 高級控制定時器TIM1結構 170
7.2 TIM1時基單元 171
7.2.1 16位預分頻器TIM1_PSCR 172
7.2.2 16位計數器TIM1_CNTR 172
7.2.3 16位自動裝載寄存器
TIM1_ARR 173
7.2.4 計數方式 174
7.2.5 重復計數器TIM1_RCR 177
7.2.6 更新事件(UEV)與更新中斷(UIF)
控制邏輯 177
7.3 TIM1時鐘及觸發控制 178
7.3.1 主時鐘觸發信號 179
7.3.2 外部時鐘模式1 180
7.3.3 外部時鐘模式2 182
7.3.4 觸發同步 183
7.4 捕獲/比較通道 183
7.4.1 輸入模塊內部結構 184
7.4.2 輸入捕獲初始化與操作舉例 185
7.4.3 輸出比較 186
7.4.4 輸出比較初始化舉例 190
7.5 定時器中斷控制 193
7.6 通用定時器TIM2/TIM3 193
7.6.1 通用定時器TIM2/TIM3結構 193
7.6.2 通用定時器時基單元 193
7.6.3 通用定時器輸入捕獲/輸出比較 194
7.6.4 通用定時器TIM2/TIM3
初始化舉例 196
7.7 窗口看門狗定時器WWDG 198
7.7.1 窗口看門狗定時器結構及其
溢出時間 198
7.7.2 窗口看門狗定時器初始化 200
7.7.3 在Halt狀態下WWDG
定時器的活動 200
7.8 硬件看門狗定時器IWDG 200
7.8.1 硬件看門狗定時器結構 201
7.8.2 硬件看門狗定時器控制與初始化 201
習題7 203
第8章 STM8S MCU串行通信 204
8.1 串行通信的概念 204
8.1.1 串行通信的種類 205
8.1.2 波特率 206
8.1.3 串行通信數據傳輸方向 206
8.1.4 串行通信接口的種類 207
8.2 UART串行通信接口 207
8.2.1 UART串行通信波特率設置 210
8.2.2 UART串行通信信息幀格式 210
8.2.3 奇偶校驗選擇 211
8.2.4 數據發送/接收過程 212
8.2.5 多機通信 218
8.2.6 UART同步模式 220
8.2.7 UART串行通信的初始化步驟 222
8.3 RS232C串行接口標準及應用 223
8.3.1 RS232C的引腳功能 223
8.3.2 RS232C串行接口標準中主信道
重要信號的含義 224
8.3.3 電平轉換 224
8.3.4 RS232C的連接 225
8.3.5 通信協議及約定 226
8.4 RS422/RS485總線 227
8.4.1 RS422接口標準 228
8.4.2 RS485標準 229
8.4.3 RS422/RS485標準性能指標 229
8.4.4 RS485/RS422標準接口
芯片簡介 230
8.4.5 RS485/RS422通信接口
實際電路 231
8.4.6 避免總線沖突方式 232
8.5 串行外設總線接口(SPI) 234
8.5.1 STM8S系列芯片SPI接口
部件結構 235
8.5.2 STM8S系列芯片SPI接口
部件功能 235
8.5.3 STM8S系列芯片SPI接口
部件的初始化 242
習題8 244
第9章 AD轉換器(ADC)及其使用 245
9.1 ADC概述 245
9.2 ADC功能選擇 246
9.2.1 分辨率與轉換精度 246
9.2.2 轉換方式選擇 247
9.2.3 轉換速度設置 250
9.2.4 觸發方式 250
9.3 ADC初始化過程舉例 250
9.4 提高ADC轉換精度與轉換的
可靠性 251
9.5 軟件濾波 254
9.5.1 算術平均濾波法 254
9.5.2 滑動平均濾波法 254
9.5.3 中值法 255
9.5.4 數字濾波 257
習題9 261
第10章 數字信號輸入/輸出
?接口電路 262
10.1 開關信號的輸入/輸出方式 262
10.2 I/O資源及擴展 264
10.2.1 STM8系統擴展I/O引腳
資源策略 264
10.2.2 利用串入并出及并入串出芯片
擴展I/O口 265
10.2.3 利用MCU擴展I/O 267
10.3 STM8與總線接口設備的連接 269
10.4 簡單顯示驅動電路 270
10.4.1 發光二極管 270
10.4.2 驅動電路 272
10.4.3 LED發光二極管顯示
狀態及同步 273
10.5 LED數碼管及其顯示驅動電路 277
10.5.1 LED數碼管 278
10.5.2 LED數碼顯示器接口電路 279
10.5.3 LED點陣顯示器及其接口電路 292
10.6 LCD模塊顯示驅動電路 297
10.6.1 以T6963C為顯示控制芯片的
LCD模塊接口及時序 298
10.6.2 T6963C操作命令 300
10.6.3 屏幕像點與顯示RAM之間的
對應關系及模塊的初始化 306
10.6.4 應用舉例 307
10.7 鍵盤電路 314
10.7.1 按鍵結構與按鍵電壓波形 314
10.7.2 鍵盤電路形式 316
10.7.3 鍵盤按鍵編碼 318
10.7.4 鍵盤監控方式 319
10.8 光電耦合器件接口電路 337
10.9 單片機與繼電器接口電路 339
習題10 341
第11章 STM8S應用系統設計 342
11.1 硬件設計 342
11.1.1 硬件資源分配 344
11.1.2 硬件可靠性設計 345
11.1.3 元器件選擇原則 346
11.1.4 印制電路設計原則 347
11.2 軟件設計 349
11.2.1 存儲器資源分配 349
11.2.2 程序語言及程序結構選擇 350
11.3 STM8芯片提供的可靠性功能 350
11.3.1 提高晶振電路的可靠性 351
11.3.2 使用存儲器安全機制保護程序
代碼不被意外改寫 351
11.3.3 硬件看門狗 351
11.4 軟件可靠性設計 351
11.4.1 PC“跑飛”及其后果 352
11.4.2 降低PC“跑飛”對系統的
影響 354
11.4.3 PC“跑飛”攔截技術 355
11.4.4 檢查并消除STM8指令碼中
不需要的關鍵字節 361
11.4.5 提高信號輸入/輸出的可靠性 362
11.4.6 選擇合適的判別條件提高軟件的
可靠性 363
11.4.7 增加芯片硬件自檢功能 364
習題11 365
參考文獻 366