概述
在介紹C8051Fxxx單片機工作原理的基礎上,對單片機外設adc、dac、比較器、定時器、pwm、方波輸出和定時器捕捉等均給出調試代碼;在匯流排方面,對can,SMBusi2c,spi和uart均給出雙機調試代碼和一些高層套用,以幫助讀者更好地理解單片機工作原理;還增加了lcd、紅外編碼解碼、步進電機、直流電機、舵機、超聲測距、i2crom及串列時鐘等方面的套用,以提高實用性。
本書實例較多,而且採用c語言編程,程式代碼可讀性和移植性強,大部分代碼稍加修改即可成為其他型號單片機的子程式;
本書可作為使用C8051F系列單片機進行產品開發的工程技術人員的硬體和軟體設計參考書,部分內容對其他類型單片機的開發也具有一定的參考價值。
目錄
第1章keilc編程
1.1keilc快速入門1
1.1.1檔案載入1
1.1.2連線埠硬體操作5
1.1.3中斷操作7
1.1.4存儲空間分配11
1.1.5指針13
1.2keilc集成軟體設定20
1.2.1medwin設定和c51晶片燒寫20
1.2.2silabs集成軟體設定22
1.2.3在μvision51中調試silabs單片機24
1.2.4其他深入學習資料24
1.3最佳化程式24
1.4keilc庫函式25
1.4.1ctype.h字元函式25
1.4.2stdio.h標準i/o函式27
1.4.3string.h字元串函式31
1.4.4stdlib.h標準庫函式33
1.4.5math.h數學函式34
1.4.6absacc.h絕對地址訪問函式35
.1.4.7intrins.h內部函式35
1.4.8stdarg.h變數參數表36
1.4.9setjmp.h全程跳轉函式37
第2章cip51處理器
2.1cip51處理器特性38
2.2存儲組織結構41
2.3中斷系統43
2.4電源管理模式45
2.5cip51暫存器46
2.5.1sfrpgcn(sfrpagecontrolregister)46
2.5.2sfrpage(sfrpageregister)47
2.5.3sfrnext(sfrnextregister)47
2.5.4sfrlast(sfrlastregister)47
2.5.5sp(stackpointer)48
2.5.6DPL(datapointerlow)48
2.5.7DPH(datapointerhigh)48
2.5.8psw(programstatusword)49
2.5.9acc(accumulator)50
2.5.10b(bregister)50
2.5.11ie(interruptenable)50
2.5.12ip(interruptpriority)51
2.5.13eie1(extendedinterruptenable1)52
2.5.14eie2(extendedinterruptenable2)53
2.5.15eip1(extendedinterruptpriority1)54
2.5.16eip2(extendedinterruptpriority2)54
2.5.17pcon(powercontrol)55
第3章12位模/數轉換器adc0
3.1模擬通道選擇器和pga可調增益56
3.1.1amux模擬輸入配置57
3.1.2hvda高壓差動放大器58
3.2adc0工作模式60
3.2.1adc0啟動方式60
3.2.2adc0跟蹤模式61
3.2.3adc0信號建立時間62
3.3內部溫度感測器63
3.4adc0可程式監控模組63
3.5adc0電氣參數67
3.6參考電壓68
3.6.1參考電壓工作原理68
3.6.2參考電壓設定暫存器70
3.7adc0暫存器71
3.7.1amx0cf(amux0configurationregister)71
3.7.2amx0sl(amux0channelselectregister)71
3.7.3hva0cn(highvoltagedifferenceamplifiercontrolregister)72
3.7.4adc0cf(adc0configurationregister)73
3.7.5adc0cn(adc0controlregister)74
3.7.6adc0h(adc0datawordmsbregister)75
3.7.7adc0l(adc0datawordlsbregister)75
3.7.8adc0gth(adc0greaterthandatahighbyteregister)76
3.7.9adc0gtl(adc0greaterthandatalowbyteregister)76
3.7.10adc0lth(adc0lessthandatahighbyteregister)76
3.7.11adc0ltl(adc0lessthandatalowbyteregister)77
3.8adc0調試例程77
例程31內部溫度感測器77
例程32利用過採樣實現16位adc轉換80
例程33adc0單端輸入模式86
例程34adc0差動輸入模式90
例程35高差壓輸入adc0轉換94
例程36adc0監控中斷101
第4章8位模/數轉換器adc2
4.1adc2操作模式106
4.1.1adc2啟動模式107
4.1.2adc2跟蹤模式107
4.1.3adc2信號建立時間107
4.2adc2可程式監控模組108
4.3adc2電氣參數109
4.4adc2暫存器111
4.4.1amx2cf(amux2configurationregister)111
4.4.2amx2sl(amux2channelselectregister)111
4.4.3adc2cf(adc2configurationregister)112
4.4.4adc2cn(adc2controlregister)113
4.4.5adc2(adc2datawordregister)114
4.4.6adc2gt(adc2greaterthandataregister)115
4.4.7adc2lt(adc2lessthandataregister)116
4.5adc2調試例程116
第5章12位數/模轉換器dac
5.1dac輸出調度121
5.2dac操作暫存器122
5.2.1dac0h(dac0highbyteregister)122
5.2.2dac0l(dac0lowbyteregister)123
5.2.3dac0cn(dac0controlregister)123
5.2.4dac1h(dac1highbyteregister)124
5.2.5dac1l(dac1lowbyteregister)124
5.2.6dac1cn(dac1controlregister)125
5.3dac電氣參數126
5.4dac調試例程127
第6章比較器
6.1比較器工作暫存器132
6.1.1cptncn(comparator0,1and2controlregister)132
6.1.2cptnmd(comparatormodeselectionregister)133
6.2比較器電氣參數133
6.3比較器調試例程134
第7章reset復位源
7.1上電復位(power?onreset)140
7.2失電復位(power?failreset)141
7.3外部復位(externalreset)141
7.4時鐘失步監測復位(missingclockdetectorreset)141
7.5比較器0復位(comparator0reset)142
7.6外部cnvstr0復位(externalcnvstr0pinreset)142
7.7看門狗復位(watchdogtimerreset)142
7.8看門狗與復位源暫存器143
7.8.1wdtcn(watchdogtimercontrolregister)143
7.8.2rstsrc(resetsourceregister)144
7.9復位電氣參數145
第8章晶振
8.1可程式內部晶振147
8.2內部晶振電氣參數149
8.3外部晶振驅動電路149
第9章快閃記憶體
9.1快閃記憶體編程153
9.2快閃記憶體安全技術154
9.3快閃記憶體操作暫存器154
9.3.1flscl(flashmemorycontrol)154
9.3.2psctl(programstoreread/writecontrol)155
9.3.3flacl(flashaccesslimit)155
9.4快閃記憶體調試例程156
第10章記憶體
10.1記憶體訪問方式159
10.2xram接口選擇與配置160
10.3xram數據地址復用模式與非復用模式161
10.3.1數據地址復用模式161
10.3.2數據地址非復用模式162
10.4xram訪問控制時序162
10.4.1數據地址非復用模式時序162
10.4.2數據地址復用模式時序165
10.5記憶體控制暫存器168
10.5.1emi0cn(externalmemoryinterfacecontrol)168
10.5.2emi0cf(externalmemoryconfiguration)169
10.5.3emi0tc(externalmemorytimingcontrol)170
10.6外部記憶體接口時序參數171
第11章輸入/輸出連線埠
11.1p0~p3交叉開關配置173
11.2i/o連線埠配置176
11.2.1i/o連線埠輸出模式配置178
11.2.2i/o連線埠輸入模式配置179
11.3i/o連線埠暫存器179
11.3.1xbr0(porti/ocrossbarregister0)179
11.3.2xbr1(porti/ocrossbarregister1)180
11.3.3xbr2(porti/ocrossbarregister2)181
11.3.4xbr3(porti/ocrossbarregister3)182
11.3.5p0(port0dataregister)183
11.3.6p0mdout(port0outputmoderegister)183
11.3.7p1(port1dataregister)184
11.3.8p1mdin(port1inputmoderegister)184
11.3.9p1mdout(port1outputmoderegister)185
11.3.10p2(port2dataregister)185
11.3.11p2mdin(port2inputmoderegister)185
11.3.12p2mdout(port2outputmoderegister)186
11.3.13p3(port3dataregister)186
11.3.14p3mdin(port3inputmoderegister)187
11.3.15p3mdout(port3outputmoderegister)187
11.3.16p4(port4dataregister)187
11.3.17p4mdout(port4outputmoderegister)188
11.3.18p5(port5dataregister)188
11.3.19p5mdout(port5outputmoderegister)189
11.3.20p6(port6dataregister)189
11.3.21p6mdout(port6outputmoderegister)189
11.3.22p7(port7dataregister)190
11.3.23p7mdout(port7outputmoderegister)190
第12章can
12.1can簡介191
12.2can協定192
12.2.1數據幀194
12.2.2遠程幀197
12.2.3錯誤幀197
12.2.4過載幀198
12.2.5幀間空間199
12.2.6can匯流排其他相關定義和要求200
12.3can控制器暫存器204
12.3.1cancontrolregister(addresses0x01&0x00)205
12.3.2statusregister(addresses0x03&0x02)206
12.3.3errorcounter(addresses0x05&0x04)207
12.3.4bittimingregister(addresses0x07&0x06)207
12.3.5testregister(addresses0x0b&0x0a)208
12.3.6brpextensionregister(addresses0x0d&0x0c)208
12.3.7ifxcommandrequestregisters209
12.3.8ifxcommandmaskregisters209
12.3.9ifxmaskregisters211
12.3.10ifxarbitrationregisters212
12.3.11ifxmessagecontrolregisters212
12.3.12ifxdataaanddatabregisters214
12.3.13interruptregister(addresses0x09&0x08)214
12.3.14transmissionrequestregisters215
12.3.15newdataregisters215
12.3.16interruptpendingregisters215
12.3.17messagevalid1register216
12.3.18記憶體數據幀報文結構示意圖216
12.4can測試模式216
12.4.1靜音模式216
12.4.2迴路模式217
12.4.3迴路靜音模式217
12.4.4基本模式218
12.5can波特率設定218
12.6can調試例程223
例程121can雙節點通信223
例程122can多訊息通信231
例程123can互動收/發通信236
例程124can遠程幀控制244
12.7can外圍電路252
第13章smbus匯流排
13.1i2c匯流排簡介255
13.2smbus概述257
13.3smbus器件連線257
13.4smbus協定258
13.4.1smbus時序258
13.4.2smbus仲裁259
13.4.3smbus傳輸模式260
13.5smbus暫存器262
13.5.1smb0cn(smbus0controlregister)263
13.5.2smb0cr(smbus0clockrateregister)265
13.5.3smb0dat(smbus0dataregister)265
13.5.4smb0adr(smbus0addressregister)266
13.5.5smb0sta(smbus0statusregister)266
13.6smbus調試例程268
13.6.1利用配置嚮導完成smbus初始化268
13.6.2smbus主發從收調試過程280
13.6.3smbus主收從發調試過程285
13.6.4套用smbus實現記憶體互訪290
第14章spi匯流排
14.1spi信號描述301
14.1.1mosi控制線301
14.1.2MISO控制線301
14.1.3sck時鐘線301
14.1.4nss片選線302
14.2spi0傳輸模式303
14.2.1spi0主機模式303
14.2.2spi0從機模式304
14.3spi0中斷源304
14.4spi0時鐘305
14.5spi暫存器306
14.5.1spi0cfg(spi0configurationregister)307
14.5.2spi0cn(spi0controlregister)308
14.5.3spi0ckr(spi0clockrateregister)309
14.5.4spi0dat(spi0dataregister)309
14.6spi調試例程310
第15章uart0串列通信
15.1uart0工作模式316
15.1.1模式0316
15.1.2模式1317
15.1.3模式2318
15.1.4模式3319
15.2uart0多機通信319
15.2.1禁止地址控制320
15.2.2廣播地址控制320
15.3uart0標準波特率設定321
15.4uart0暫存器322
15.4.1scon0(uart0controlregister)323
15.4.2ssta0(uart0statusandclockselectionregister)324
15.4.3sbuf0(uart0databufferregister)325
15.4.4saddr0(uart0slaveaddressregister)325
15.4.5saden0(uart0slaveaddressenableregister)325
15.5uart0調試例程326
例程151uart0模式1全雙工通信326
例程152uart0模式3多機通信332
第16章uart1串列通信
16.1uart1增強型波特率產生器340
16.2uart1工作模式344
16.2.18位工作模式345
16.2.29位工作模式345
16.3uart1多機通信346
16.4uart1暫存器346
16.4.1scon1(serialport1controlregister)346
16.4.2sbuf1(serialuart1portdatabufferregister)347
16.5uart1調試例程348
例程161uart18位模式雙機通信348
例程162uart1多機通信353
第17章定時器
17.1t0和t1359
17.1.113位定時/計數模式(mode0)359
17.1.216位定時/計數器(mode1)363
17.1.38位自動重載定時/計數器(mode2)363
17.1.48位雙定時/計數器(mode3)364
17.2t0和t1暫存器365
17.2.1TCON(timercontrolregister)365
17.2.2TMOD(timermoderegister)366
17.2.3ckcon(clockcontrolregister)367
17.2.4tl0(timer0lowbyte)368
17.2.5tl1(timer1lowbyte)368
17.2.6th0(timer0highbyte)368
17.2.7th1(timer1highbyte)368
17.3t2,t3和t4定時/計數器369
17.3.1t2,t3和t4雙向計數369
17.3.2捕捉模式369
17.3.3自動重載模式370
17.3.4方波輸出模式371
17.4t2,t3和t4暫存器371
17.4.1tmrncn(timerncontrolregisters)371
17.4.2tmrncf(timernconfigurationregisters)372
17.4.3rcapnl(timerncaptureregisterlowbyte)373
17.4.4rcapnh(timerncaptureregisterhighbyte)374
17.4.5tmrnl(timernlowbyte)374
17.4.6tmrnh(timernhighbyte)374
17.5定時器調試例程375
例程171t3可調頻率方波輸出375
例程172t法測頻377
例程173t4捕捉測脈寬387
第18章pca可程式計數器陣列
18.1pca定時/計數器393
18.2捕捉/比較模組394
18.2.1邊沿捕捉模式395
18.2.2定時模式396
18.2.3高速輸出模式397
18.2.4頻率輸出模式397
18.2.58位pwm輸出模式398
18.2.616位pwm輸出模式398
18.3pca0暫存器399
18.3.1pca0cn(pcacontrolregister)399
18.3.2pca0md(pca0moderegister)400
18.3.3pca0cpmn(pca0capture/comparemoderegisters)401
18.3.4pca0l(pca0counter/timerlowbyte)402
18.3.5pca0h(pca0counter/timerhighbyte)402
18.3.6pca0cpln(pca0capturemodulelowbyte)402
18.3.7pca0cphn(pca0capturemodulehighbyte)403
18.4pca調試例程403
例程181pca捕捉測脈寬403
例程182pca高速輸出模式408
例程183pca可調頻率方波輸出413
例程184pca8位pwm脈寬調製416
例程185可變周期pwm脈寬調製418
例程186用pca檢測uart0波特率421
第19章lcd輸入/輸出子系統
19.1lcd控制器lc1621428
19.2lc1621操作原理432
19.3lc1621指令描述436
19.4lc1621單片機接口操作439
19.5lcd調試例程443
例程191lcd虛擬時序實現和顯示操作444
例程192用庫函式printf()實現lcd顯示操作449
例程193輸入/輸出子系統與lcd選單操作實現454
第20章單片機套用
20.1串列可擦寫romat24c256操作469
20.2ht1380時鐘晶片控制477
20.3直流電機驅動控制488
20.4步進電機控制493
20.5舵機控制499
20.6超音波感測器測距505
20.7紅外編碼/解碼510
20.7.1紅外遙控原理510
20.7.2紅外編碼/解碼電路512
20.7.3紅外編碼/解碼調試代碼513
20.7.4用MCS51實現紅外遙控521附錄acip51指令集
附錄bc8051f040封裝及引腳說明
附錄c中斷矢量表
附錄d隨書光碟內容、各種資料資源及軟體安裝說明
附錄ec8051f單片機開發工具
參考文獻