摘要:C8051F系列單片機是Cygnal公司出品的高速單片機,它與80C51系列單片機指令集兼容,但比后者增加了許多資源,從而為嵌入式系統(tǒng)的開發(fā)提供了極大的方便。文中介紹了這兩者在結(jié)構(gòu)上的差異以及編程時應(yīng)注意的問題,并給出了它們較完整的初始化程序。
1 引言
近30年來,世界各主要電子元器件生產(chǎn)廠商紛紛推出自己各具特色的單片機產(chǎn)品。而在百花齊放的單片機家族中,80C5l系列一直扮演著重要的角色。該單片機在教學(xué)、科研等領(lǐng)域已經(jīng)成為入門單片機并成為單片機應(yīng)用的首選,該產(chǎn)品以其易讀性好、擴展能力強而著稱,從而成為廣大從事單片機開發(fā)者最熟悉、最具代表的機型。但人們往往在熟悉80C51單片機之后又選擇別的系列單片機開發(fā)產(chǎn)品,這是因為80C51具有運算速度慢、功耗大、內(nèi)部資源少等不足,所以限制了其使用范圍。Cygnal公司推出的C805lF系列單片機既彌補了80C51系列的不足,又與MCS—5l指令集兼容。C805lFxxx系列單片機是完全集成的混合信號系統(tǒng)級芯片,具有與8051指令集完全兼容的CIP-51內(nèi)核。它在單片內(nèi)集成了構(gòu)成一個單片機數(shù)據(jù)采集或控制系統(tǒng)所需要的幾乎所有模擬和數(shù)字外設(shè)及其它功能部件。這些外設(shè)或功能部件包括:ADC、可編程增益放大器、DAC、電壓比較器、電壓基準(zhǔn)、溫度傳感器、SMBus/I2C、UART、SPI、定時器、可編程計數(shù)器/定時器陣列(PCA)、內(nèi)部振蕩器、看門狗定時器及電源監(jiān)視器等。這些外設(shè)部件的高集成度為設(shè)計小體積、低功耗、高可靠性、高性能的單片機應(yīng)用系統(tǒng)提供了很大的方便,同時也可以使整體系統(tǒng)的成本大大降低。
熟悉MCS—51系列單片機的工程技術(shù)人員可以很容易地掌握C8051Fxxx的應(yīng)用技術(shù)并進(jìn)行軟件移植。但不能將8051的程序直接應(yīng)用于C8051F單片機中,因為這兩種系列的單片機內(nèi)部資源存在較大的差異,因此,完全照搬、移植是行不通的,必須經(jīng)過“改良”(主要是初始化控制字的改寫)才能正確運行。本文以C8051Fxxx系列單片機中資源最豐富、功能最多、運算速度最快(達(dá)到100MIPS)的C8051F12X系列為例,介紹其與80C51的主要不同之處以及開發(fā)時應(yīng)注意的問題,同時給出了其完整的、且經(jīng)過運行驗證的源程序。
圖1
2 結(jié)構(gòu)差異
C8051F12X單片機與8051單片機在結(jié)構(gòu)上的最大區(qū)別有四點:外引腳采用交叉開關(guān)配置;系統(tǒng)時鐘源多樣且控制靈活;內(nèi)部特殊功能寄存器SFR種類數(shù)量增多;具有基于JTAG接口的在系統(tǒng)調(diào)試功能。下面主要介紹前三部分內(nèi)容。
2.1 可編程數(shù)字I/O和交叉開關(guān)
可編程數(shù)字I/O和交叉開關(guān)是一個大的數(shù)字開關(guān)網(wǎng)絡(luò),它允許將內(nèi)部數(shù)字系統(tǒng)資源分配給端口I/O引腳。與具有標(biāo)準(zhǔn)復(fù)用數(shù)字I/O的微控制器不同,這種結(jié)構(gòu)支持所有的功能組合??赏ㄟ^設(shè)置交叉開關(guān)控制寄存器(XBR2、XBR1和XBR0)將片內(nèi)的計數(shù)器/定時器、串行總線、硬件中斷、ADC轉(zhuǎn)換啟動輸入、比較器輸出以及微控制器內(nèi)部的其它數(shù)字信號配置為在端口I/O引腳出現(xiàn),這就使用戶可以根據(jù)自己的特定應(yīng)用選擇通用端口I/O和需數(shù)字資源的組合。而不同于8051單片機的引腳基本是固定分配的。C8051F系列通過優(yōu)先權(quán)交叉開關(guān)譯碼器來控制數(shù)字開關(guān)網(wǎng)絡(luò),優(yōu)先權(quán)交叉開關(guān)譯碼器的值由交叉開關(guān)控制寄存器(XBR2、XBR1和XBR0)來配置,如圖1所示。優(yōu)先權(quán)交叉開關(guān)譯碼器按優(yōu)先權(quán)順序從P0.0開始,可以一直分配到P3.7,它為數(shù)字外設(shè)所分配的端口引腳的優(yōu)先順序是按系統(tǒng)默認(rèn)的順序,即:串行通信UART0具有最高優(yōu)先級,TX0和RX0分別被分配到P0.0和P0.1? 串行通信SPI具有次高優(yōu)先級,詳細(xì)的端口引腳的優(yōu)先分配順序表請參考有關(guān)資料。如果不選擇某個資源,則優(yōu)先順序表中的下一個功能將填充這個位置。圖2所示是三個交叉開關(guān)控制寄存器(XBR2、XBR1和XBR0)中各位的含義,它們的復(fù)位值均為00000000。
當(dāng)交叉開關(guān)配置寄存器XBR2、XBR1和XBR0中外設(shè)的對應(yīng)位被設(shè)置成邏輯1時,交叉開關(guān)將端口引腳分配給外設(shè);如果一個數(shù)字外設(shè)的允許位未被設(shè)置成邏輯1,則其端口不能通過引腳訪問。未被設(shè)置的交叉開關(guān)分配端口可當(dāng)作標(biāo)準(zhǔn)連續(xù)的I/O口使用。在系統(tǒng)復(fù)位后,默認(rèn)的寄存器XBR2、XBR1和XBR0的值均為零,即所有I/O引腳被強迫成輸入口(帶上拉),且不與內(nèi)部資源連通。這樣,沒有輸出的系統(tǒng)顯然無意義,所以,無論如何都應(yīng)置XBR2的第6位為1,使交叉開關(guān)允許以便引出輸出信號。
    2.2 系統(tǒng)時鐘源
C8051F12X的系統(tǒng)時鐘可以取自內(nèi)部振蕩電路、外部振蕩電路(包括晶振,RC振蕩,陶瓷諧振電路)和鎖相環(huán)PLL電路,鎖相環(huán)PLL電路的輸入源可選擇來自內(nèi)部振蕩電路,也可以選擇外部振蕩電路,通過PLL的倍頻作用可以提高時鐘頻率。C8051F12X系統(tǒng)內(nèi)的振蕩電路如圖3所示。要產(chǎn)生所需的系統(tǒng)時鐘,通常要設(shè)置8個寄存器:OSCXIN、OSCICN、OSCICL、CLKSEL、PLLOCN、PLLOFLT、PLL0DIV、PLL0MUL,其中后4個是有關(guān)PLL的寄存器。
2.3 特殊功能寄存器SFR結(jié)構(gòu)
與MCS—51的SFR不同的是,C8051F12X的SFR由圖4所示的多頁組成,共有5頁,頁號為0、1、2、3、15。各個SFR分布在不同的頁里,像XBR0、XBR1、XBR2、OSCXIN、OSCICN、LLOCN、PLLOFLT等定位在15頁里,定時器有關(guān)的寄存器TCON、TMOD、TH、TL等定位在0頁里。在讀寫各個SFR之前,必須先切換到相應(yīng)的頁,可使用“MOV SFRPAGE,#頁號”指令來進(jìn)行切換。各個SFR所在哪些頁,請查看相關(guān)的資料。
3 應(yīng)用舉例
該例中要用的引出腳有一個串行異步通信UART和一個外中斷INT0。按照系統(tǒng)默認(rèn)的優(yōu)先順序,P0口被內(nèi)部資源引出而占用,其中P0.0為UART通信的RX端, P0.1為UART通信的TX端,P0.3為外中斷INT0輸入引腳,其它端口為通用I/O口。P1口為具有上拉電阻的輸入口,P2口為通用推挽的輸出口,P3口也是通用推挽輸出口。具體如下:
$include(c8051f120.inc)
ORG 00H
JMP RESET ;程序入口
ORG 03H
JMP EX_INT ;外中斷INT0入口
ORG 0BH
JMP TIME_0 ;定時器0中斷入口
ORG 100H
RESET?MOV, WDTCN,#0DEH ?禁止看門狗
MOV WDTCN,#0ADH
MOV SFRPAGE, #0FH ;取特殊功能寄存器的15頁
MOV OSCXCN,#01100111B ;外用時鐘源選擇晶體,頻率范圍在30MHz以下
ORL PLL0CN,#00000111B ;用外部晶振作為PLL的源
MOV PLL0DIV,#00000001B ;PLL的輸入除系數(shù)1(復(fù)位后默認(rèn))
MOV PLL0MUL,#00000010B ;PLL的倍頻系數(shù)為2(25MHz晶振)
MOV PLL0FLT,#00010001B ;PLL的濾波參數(shù)(復(fù)位后默認(rèn)為00110001B)
MOV R4,#0 ;延遲一會兒,使晶振穩(wěn)定
NNOP1:MOV R5,#0
DJNZ R5,$
DJNZ R4,NNOP1
MOV CLKSEL,#00000010B ;系統(tǒng)時鐘源用晶振再經(jīng)鎖相環(huán)PLL二倍頻,產(chǎn)生50MHz的時鐘
ANL OSCICN,#01111111B ?;允許外部振蕩,禁止內(nèi)部振蕩
MOV XBR2;#01000000B ;使能交叉譯碼開關(guān)(這條指令很重要)
MOV P2MDOUT,#11111111B ;P2口置成輸出方式
MOV P3MDOUT,#11111111B ;P0口置成輸出方式(復(fù)位默認(rèn)為0__開漏)
MOV XBR1,#0000100B ;允許外中斷0連到端口
MOV SFRPAGE, #0H ;取特殊功能寄存器的0頁(因為有關(guān)定時器、中斷的SFR在0頁)
SETB EX0 ;允許外中斷0
SETB IT0 ;INT0下降沿中斷
MOV TMOD,#21h ;設(shè)置定時器0為方式1, 定時器1為方式2
MOV CKCON,#08h ;選定時器0時鐘為系統(tǒng)時鐘,定時器1時鐘為系統(tǒng)時鐘除以12
MOV TH1,#242 ;(50/12)MHz的時鐘產(chǎn)生9600波特率的計數(shù)初值為242
SETB TR0 ;接通定時0
SETB TR1 ;接通定時1
CLR ET1 ;禁止定時器1中斷
MOV SCON,#50H ;串口工作于方式1,允許接收,單機工作
SETB ET0 ;允許T0中斷
SETB PT0 ;T0的中斷優(yōu)先級高
SETB EA ;開中斷
MOV SP,#30H ;棧底在30H單元
MAIN: . ;以上是程序的初始化
. ;主程序
.
JMP MAIN
?****** 定時中斷子程序 *******
TIME_0:PUSH ACC
MOV TH0,#0H
MOV TL0,#0H
CPL P2.2 ;在P2口的D2腳輸出方波
POP ACC
RETI
?******* 外中斷子程序 *******
EX INT?PUSH ACC
MOV A,P1 ;從P1口取一字節(jié)
CPL A
MOV P3,A ;送出一字節(jié)
POP ACC
RET
- c805(9848)
- 同初始化(5318)
相關(guān)推薦
***等相關(guān)項目((單片機類)51、STC、MSP430、C80...
80C51
80C51單片機有哪些功能
80C51單片機的LED動態(tài)顯示實例
80C51單片機的內(nèi)部結(jié)構(gòu)
80C51單片機的最小系統(tǒng)包括哪些部分?
80C51系列單片機引腳圖及邏輯符號簡介
80C51系列單片機硬件基礎(chǔ)相關(guān)資料推薦
80C51上的C語言編程
80C51匯編語言編程實驗
80c51單片機使用c語言實現(xiàn)P2接口
80c51單片機最小系統(tǒng)原理圖
80c51內(nèi)核在單片機中的應(yīng)用
C8051F單片機SMbus同時工作在主/從方式時管腳如何處理?
C8051F單片機的IAP系統(tǒng)設(shè)計與實現(xiàn)
C8051F單片機解密方法型號大全
C8051F系列單片機
c8051f單片機簡介
c8051f單片機資料下載
c8051f系列單片機的相關(guān)問題
Lora官方sx1278移植到80c51單片機經(jīng)常報錯
MCS-51系列單片機結(jié)構(gòu)和原理
MCS-51系列和80C51系列單片機的區(qū)別
MSC-51單片機是什么
[下載]應(yīng)用c8051f單片機總結(jié)出來的經(jīng)驗------大家共同分享一下
[原創(chuàng)c8051f單片機應(yīng)用解析之c8051f330
[推薦]C8051f單片機芯片服務(wù)
[討論]c8051f系列單片機最新報價
[討論]給大家介紹一個非常不錯的c8051f單片機學(xué)習(xí)網(wǎng)站
[轉(zhuǎn)帖]應(yīng)用c8051f單片機總結(jié)出來的經(jīng)驗------大家共同分享一下
關(guān)于C8051F系列單片機程序的燒錄問題
基于80C51單片機的交通燈C語言源程序
基于80C51單片機的智能電表設(shè)計
基于80C51單片機的自動售貨機設(shè)計
如何將c8051f單片機內(nèi)數(shù)據(jù)以串口方式發(fā)送出去
掌握80C51單片機矩陣鍵盤的構(gòu)成原理和軟件編程
有關(guān)80C51中斷系統(tǒng)的基本知識匯總
請問C8051F系列單片機與5V系統(tǒng)接口的解決方案誰的更簡單?
高速SOC單片機C8051F不得不知的知識點
c8051f單片機中文資料下載
 244
244C8051F單片機
 63
63C8051F與80C51系列單片機的不同初始化
 3069
3069
C8051F單片機介紹
 305
305C8051F單片機IAP原理
 192
192C8051F與80C51系列單片機的初始化比較
 4650
4650
80C51單片機的硬件結(jié)構(gòu)是怎么樣的?
 23
2380C51單片機與8051單片機的主要差別在哪里
 7406
740680C51單片機與8051單片機的區(qū)別是什么
 7901
790180c51是幾位單片機 80c51單片機有幾個中斷源
 3859
3859 電子發(fā)燒友App
                        電子發(fā)燒友App
                     
                 
                 
           
        
 
        







 
            
             
             
                 
             工商網(wǎng)監(jiān)
工商網(wǎng)監(jiān)
        
評論