摘要:C8051F系列單片機是Cygnal公司出品的高速單片機,它與80C51系列單片機指令集兼容,但比后者增加了許多資源,從而為嵌入式系統(tǒng)的開發(fā)提供了極大的方便。文中介紹了這兩者在結構上的差異以及編程時應注意的問題,并給出了它們較完整的初始化程序。
1 引言
近30年來,世界各主要電子元器件生產(chǎn)廠商紛紛推出自己各具特色的單片機產(chǎn)品。而在百花齊放的單片機家族中,80C5l系列一直扮演著重要的角色。該單片機在教學、科研等領域已經(jī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)集成了構成一個單片機數(shù)據(jù)采集或控制系統(tǒng)所需要的幾乎所有模擬和數(shù)字外設及其它功能部件。這些外設或功能部件包括:ADC、可編程增益放大器、DAC、電壓比較器、電壓基準、溫度傳感器、SMBus/I2C、UART、SPI、定時器、可編程計數(shù)器/定時器陣列(PCA)、內(nèi)部振蕩器、看門狗定時器及電源監(jiān)視器等。這些外設部件的高集成度為設計小體積、低功耗、高可靠性、高性能的單片機應用系統(tǒng)提供了很大的方便,同時也可以使整體系統(tǒng)的成本大大降低。
熟悉MCS—51系列單片機的工程技術人員可以很容易地掌握C8051Fxxx的應用技術并進行軟件移植。但不能將8051的程序直接應用于C8051F單片機中,因為這兩種系列的單片機內(nèi)部資源存在較大的差異,因此,完全照搬、移植是行不通的,必須經(jīng)過“改良”(主要是初始化控制字的改寫)才能正確運行。本文以C8051Fxxx系列單片機中資源最豐富、功能最多、運算速度最快(達到100MIPS)的C8051F12X系列為例,介紹其與80C51的主要不同之處以及開發(fā)時應注意的問題,同時給出了其完整的、且經(jīng)過運行驗證的源程序。
圖1
2 結構差異
C8051F12X單片機與8051單片機在結構上的最大區(qū)別有四點:外引腳采用交叉開關配置;系統(tǒng)時鐘源多樣且控制靈活;內(nèi)部特殊功能寄存器SFR種類數(shù)量增多;具有基于JTAG接口的在系統(tǒng)調(diào)試功能。下面主要介紹前三部分內(nèi)容。
2.1 可編程數(shù)字I/O和交叉開關
可編程數(shù)字I/O和交叉開關是一個大的數(shù)字開關網(wǎng)絡,它允許將內(nèi)部數(shù)字系統(tǒng)資源分配給端口I/O引腳。與具有標準復用數(shù)字I/O的微控制器不同,這種結構支持所有的功能組合。可通過設置交叉開關控制寄存器(XBR2、XBR1和XBR0)將片內(nèi)的計數(shù)器/定時器、串行總線、硬件中斷、ADC轉換啟動輸入、比較器輸出以及微控制器內(nèi)部的其它數(shù)字信號配置為在端口I/O引腳出現(xiàn),這就使用戶可以根據(jù)自己的特定應用選擇通用端口I/O和需數(shù)字資源的組合。而不同于8051單片機的引腳基本是固定分配的。C8051F系列通過優(yōu)先權交叉開關譯碼器來控制數(shù)字開關網(wǎng)絡,優(yōu)先權交叉開關譯碼器的值由交叉開關控制寄存器(XBR2、XBR1和XBR0)來配置,如圖1所示。優(yōu)先權交叉開關譯碼器按優(yōu)先權順序從P0.0開始,可以一直分配到P3.7,它為數(shù)字外設所分配的端口引腳的優(yōu)先順序是按系統(tǒng)默認的順序,即:串行通信UART0具有最高優(yōu)先級,TX0和RX0分別被分配到P0.0和P0.1? 串行通信SPI具有次高優(yōu)先級,詳細的端口引腳的優(yōu)先分配順序表請參考有關資料。如果不選擇某個資源,則優(yōu)先順序表中的下一個功能將填充這個位置。圖2所示是三個交叉開關控制寄存器(XBR2、XBR1和XBR0)中各位的含義,它們的復位值均為00000000。
當交叉開關配置寄存器XBR2、XBR1和XBR0中外設的對應位被設置成邏輯1時,交叉開關將端口引腳分配給外設;如果一個數(shù)字外設的允許位未被設置成邏輯1,則其端口不能通過引腳訪問。未被設置的交叉開關分配端口可當作標準連續(xù)的I/O口使用。在系統(tǒng)復位后,默認的寄存器XBR2、XBR1和XBR0的值均為零,即所有I/O引腳被強迫成輸入口(帶上拉),且不與內(nèi)部資源連通。這樣,沒有輸出的系統(tǒng)顯然無意義,所以,無論如何都應置XBR2的第6位為1,使交叉開關允許以便引出輸出信號。
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)時鐘,通常要設置8個寄存器:OSCXIN、OSCICN、OSCICL、CLKSEL、PLLOCN、PLLOFLT、PLL0DIV、PLL0MUL,其中后4個是有關PLL的寄存器。
2.3 特殊功能寄存器SFR結構
與MCS—51的SFR不同的是,C8051F12X的SFR由圖4所示的多頁組成,共有5頁,頁號為0、1、2、3、15。各個SFR分布在不同的頁里,像XBR0、XBR1、XBR2、OSCXIN、OSCICN、LLOCN、PLLOFLT等定位在15頁里,定時器有關的寄存器TCON、TMOD、TH、TL等定位在0頁里。在讀寫各個SFR之前,必須先切換到相應的頁,可使用“MOV SFRPAGE,#頁號”指令來進行切換。各個SFR所在哪些頁,請查看相關的資料。
3 應用舉例
該例中要用的引出腳有一個串行異步通信UART和一個外中斷INT0。按照系統(tǒng)默認的優(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(復位后默認)
MOV PLL0MUL,#00000010B ;PLL的倍頻系數(shù)為2(25MHz晶振)
MOV PLL0FLT,#00010001B ;PLL的濾波參數(shù)(復位后默認為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 ;使能交叉譯碼開關(這條指令很重要)
MOV P2MDOUT,#11111111B ;P2口置成輸出方式
MOV P3MDOUT,#11111111B ;P0口置成輸出方式(復位默認為0__開漏)
MOV XBR1,#0000100B ;允許外中斷0連到端口
MOV SFRPAGE, #0H ;取特殊功能寄存器的0頁(因為有關定時器、中斷的SFR在0頁)
SETB EX0 ;允許外中斷0
SETB IT0 ;INT0下降沿中斷
MOV TMOD,#21h ;設置定時器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(10286)
- 同初始化(5396)
80C51單片機有哪些功能
80c51內(nèi)核在單片機中的應用
C8051F單片機的IAP系統(tǒng)設計與實現(xiàn)
C8051F系列單片機
c8051f單片機簡介
c8051f單片機資料下載
c8051f系列單片機的相關問題
MCS-51系列和80C51系列單片機的區(qū)別
[原創(chuàng)c8051f單片機應用解析之c8051f330
[推薦]C8051f單片機芯片服務
[討論]c8051f系列單片機最新報價
高速SOC單片機C8051F不得不知的知識點
c8051f單片機中文資料下載
248C8051F單片機應用解析
99基于C8051F的CRC校驗算法的實現(xiàn)
46C8051F使用中的一些技術問題
29基于C8051F的數(shù)據(jù)傳輸系統(tǒng)設計與實現(xiàn)
34C8051F單片機
63基于80C51的電動智能小車設計論文
33180C51 Study學習板用戶手冊
62C8051F單片機教學實驗機簡介
63C8051F單片機在遠端測控裝置中的應用
61C8051F與80C51系列單片機的不同初始化
3397
基于HYM8563的80C51系列單片機低功耗系統(tǒng)設計
3337
針對C8051F單片機的手持編程器(SMP)
2057
C8051F單片機介紹
306C8051F單片機的IAP系統(tǒng)設計
122C8051F單片機IAP原理
19380C51虛擬指令執(zhí)行系統(tǒng)的設計
2063
C8051F單片機開發(fā)與C編程電子書
0C8051F單片機初學教程
1721Microchip繼續(xù)生產(chǎn)100%兼容NXP停產(chǎn)MCU的8051/80C51單片機
1801C8051F與80C51系列單片機的初始化比較
5529
80C51單片機源碼 Small RTOS 1.12.1版_下載
0c8051f單片機ad采樣程序(附詳細注釋)
2995680C51單片機的功能結構與引腳性能
44283
80C51系列單片機的內(nèi)部RAM如何進行擴展的詳細方案分析設計
280C51單片機的硬件結構是怎么樣的?
2780C51單片機實用教程資料合集免費下載
6051單片機教程之80C51單片機的指令系統(tǒng)
36單片機教程之80C51的中斷系統(tǒng)及定時和計數(shù)器的詳細資料概述
980C51單片機教程之80C51單片機的指令系統(tǒng)詳細資料概述
2580C51單片機與8051單片機的主要差別在哪里
841551單片機教程之80C51的結構與原理知識點概述課件免費下載
1451單片機教程之80C51單片機的C語言程序設計資料概述
29951單片機教程之80C51單片機的串行口介紹及如何進行串行總線的擴展
27C8051F單片機應用解析29篇應用筆記詳細資料免費下載
69基于C8051F系列單片機的數(shù)據(jù)采集系統(tǒng)USB接口設計
2456
Intel 80C51及系列51單片機教材使你的8051工程和開發(fā)過程變得簡單
680C51單片機的中斷系統(tǒng)和系統(tǒng)結構的詳細資料說明
251單片機引腳簡介
56058
80C51單片機與8051單片機的區(qū)別是什么
9732如何對C8051F系列單片機的溫度傳感器測量環(huán)境溫度的誤差進行分析
880C51單片機使用手冊中文版
0C8051F330ST單片機學習板使用手冊
9單片機 C8051F便攜直流高壓發(fā)生器的研制
4380C51單片機串行通信講解
3180C51單片機的最小系統(tǒng)
7680C51系列單片機硬件基礎
2780c51是幾位單片機 80c51單片機有幾個中斷源
783380c51單片機的控制總線信號有哪些 80c51單片機特點
469380c51單片機的基本配置有哪些 80c51單片機各個引腳及功能
9775基于FPGA的C8051F單片機開發(fā)板設計
5
電子發(fā)燒友App


評論