摘要:C8051F系列單片機是Cygnal公司出品的高速單片機,它與80C51系列單片機指令集兼容,但比后者增加了許多資源,從而為嵌入式系統的開發提供了極大的方便。文中介紹了這兩者在結構上的差異以及編程時應注意的問題,并給出了它們較完整的初始化程序。
1 引言
近30年來,世界各主要電子元器件生產廠商紛紛推出自己各具特色的單片機產品。而在百花齊放的單片機家族中,80C5l系列一直扮演著重要的角色。該單片機在教學、科研等領域已經成為入門單片機并成為單片機應用的首選,該產品以其易讀性好、擴展能力強而著稱,從而成為廣大從事單片機開發者最熟悉、最具代表的機型。但人們往往在熟悉80C51單片機之后又選擇別的系列單片機開發產品,這是因為80C51具有運算速度慢、功耗大、內部資源少等不足,所以限制了其使用范圍。Cygnal公司推出的C805lF系列單片機既彌補了80C51系列的不足,又與MCS—5l指令集兼容。C805lFxxx系列單片機是完全集成的混合信號系統級芯片,具有與8051指令集完全兼容的CIP-51內核。它在單片內集成了構成一個單片機數據采集或控制系統所需要的幾乎所有模擬和數字外設及其它功能部件。這些外設或功能部件包括:ADC、可編程增益放大器、DAC、電壓比較器、電壓基準、溫度傳感器、SMBus/I2C、UART、SPI、定時器、可編程計數器/定時器陣列(PCA)、內部振蕩器、看門狗定時器及電源監視器等。這些外設部件的高集成度為設計小體積、低功耗、高可靠性、高性能的單片機應用系統提供了很大的方便,同時也可以使整體系統的成本大大降低。
熟悉MCS—51系列單片機的工程技術人員可以很容易地掌握C8051Fxxx的應用技術并進行軟件移植。但不能將8051的程序直接應用于C8051F單片機中,因為這兩種系列的單片機內部資源存在較大的差異,因此,完全照搬、移植是行不通的,必須經過“改良”(主要是初始化控制字的改寫)才能正確運行。本文以C8051Fxxx系列單片機中資源最豐富、功能最多、運算速度最快(達到100MIPS)的C8051F12X系列為例,介紹其與80C51的主要不同之處以及開發時應注意的問題,同時給出了其完整的、且經過運行驗證的源程序。
圖1
2 結構差異
C8051F12X單片機與8051單片機在結構上的最大區別有四點:外引腳采用交叉開關配置;系統時鐘源多樣且控制靈活;內部特殊功能寄存器SFR種類數量增多;具有基于JTAG接口的在系統調試功能。下面主要介紹前三部分內容。
2.1 可編程數字I/O和交叉開關
可編程數字I/O和交叉開關是一個大的數字開關網絡,它允許將內部數字系統資源分配給端口I/O引腳。與具有標準復用數字I/O的微控制器不同,這種結構支持所有的功能組合。可通過設置交叉開關控制寄存器(XBR2、XBR1和XBR0)將片內的計數器/定時器、串行總線、硬件中斷、ADC轉換啟動輸入、比較器輸出以及微控制器內部的其它數字信號配置為在端口I/O引腳出現,這就使用戶可以根據自己的特定應用選擇通用端口I/O和需數字資源的組合。而不同于8051單片機的引腳基本是固定分配的。C8051F系列通過優先權交叉開關譯碼器來控制數字開關網絡,優先權交叉開關譯碼器的值由交叉開關控制寄存器(XBR2、XBR1和XBR0)來配置,如圖1所示。優先權交叉開關譯碼器按優先權順序從P0.0開始,可以一直分配到P3.7,它為數字外設所分配的端口引腳的優先順序是按系統默認的順序,即:串行通信UART0具有最高優先級,TX0和RX0分別被分配到P0.0和P0.1? 串行通信SPI具有次高優先級,詳細的端口引腳的優先分配順序表請參考有關資料。如果不選擇某個資源,則優先順序表中的下一個功能將填充這個位置。圖2所示是三個交叉開關控制寄存器(XBR2、XBR1和XBR0)中各位的含義,它們的復位值均為00000000。
當交叉開關配置寄存器XBR2、XBR1和XBR0中外設的對應位被設置成邏輯1時,交叉開關將端口引腳分配給外設;如果一個數字外設的允許位未被設置成邏輯1,則其端口不能通過引腳訪問。未被設置的交叉開關分配端口可當作標準連續的I/O口使用。在系統復位后,默認的寄存器XBR2、XBR1和XBR0的值均為零,即所有I/O引腳被強迫成輸入口(帶上拉),且不與內部資源連通。這樣,沒有輸出的系統顯然無意義,所以,無論如何都應置XBR2的第6位為1,使交叉開關允許以便引出輸出信號。
2.2 系統時鐘源
C8051F12X的系統時鐘可以取自內部振蕩電路、外部振蕩電路(包括晶振,RC振蕩,陶瓷諧振電路)和鎖相環PLL電路,鎖相環PLL電路的輸入源可選擇來自內部振蕩電路,也可以選擇外部振蕩電路,通過PLL的倍頻作用可以提高時鐘頻率。C8051F12X系統內的振蕩電路如圖3所示。要產生所需的系統時鐘,通常要設置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。按照系統默認的優先順序,P0口被內部資源引出而占用,其中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的輸入除系數1(復位后默認)
MOV PLL0MUL,#00000010B ;PLL的倍頻系數為2(25MHz晶振)
MOV PLL0FLT,#00010001B ;PLL的濾波參數(復位后默認為00110001B)
MOV R4,#0 ;延遲一會兒,使晶振穩定
NNOP1:MOV R5,#0
DJNZ R5,$
DJNZ R4,NNOP1
MOV CLKSEL,#00000010B ;系統時鐘源用晶振再經鎖相環PLL二倍頻,產生50MHz的時鐘
ANL OSCICN,#01111111B ?;允許外部振蕩,禁止內部振蕩
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時鐘為系統時鐘,定時器1時鐘為系統時鐘除以12
MOV TH1,#242 ;(50/12)MHz的時鐘產生9600波特率的計數初值為242
SETB TR0 ;接通定時0
SETB TR1 ;接通定時1
CLR ET1 ;禁止定時器1中斷
MOV SCON,#50H ;串口工作于方式1,允許接收,單機工作
SETB ET0 ;允許T0中斷
SETB PT0 ;T0的中斷優先級高
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口取一字節
CPL A
MOV P3,A ;送出一字節
POP ACC
RET
- c805(10286)
- 同初始化(5396)
80C51單片機有哪些功能
80c51內核在單片機中的應用
C8051F單片機的IAP系統設計與實現
C8051F系列單片機
c8051f單片機簡介
c8051f單片機資料下載
c8051f系列單片機的相關問題
MCS-51系列和80C51系列單片機的區別
[原創c8051f單片機應用解析之c8051f330
[推薦]C8051f單片機芯片服務
[討論]c8051f系列單片機最新報價
高速SOC單片機C8051F不得不知的知識點
c8051f單片機中文資料下載
248C8051F單片機應用解析
99基于C8051F的CRC校驗算法的實現
46C8051F使用中的一些技術問題
29基于C8051F的數據傳輸系統設計與實現
34C8051F單片機
63基于80C51的電動智能小車設計論文
33180C51 Study學習板用戶手冊
62C8051F單片機教學實驗機簡介
63C8051F單片機在遠端測控裝置中的應用
61C8051F與80C51系列單片機的不同初始化
3397
基于HYM8563的80C51系列單片機低功耗系統設計
3337
針對C8051F單片機的手持編程器(SMP)
2057
C8051F單片機介紹
306C8051F單片機的IAP系統設計
122C8051F單片機IAP原理
19380C51虛擬指令執行系統的設計
2063
C8051F單片機初學教程
1721Microchip繼續生產100%兼容NXP停產MCU的8051/80C51單片機
1801C8051F與80C51系列單片機的初始化比較
5529
80C51單片機源碼 Small RTOS 1.12.1版_下載
0c8051f單片機ad采樣程序(附詳細注釋)
2995680C51單片機的功能結構與引腳性能
44283
80C51系列單片機的內部RAM如何進行擴展的詳細方案分析設計
280C51單片機的硬件結構是怎么樣的?
2780C51單片機實用教程資料合集免費下載
60單片機教程之80C51的中斷系統及定時和計數器的詳細資料概述
980C51單片機教程之80C51單片機的指令系統詳細資料概述
2580C51單片機與8051單片機的主要差別在哪里
841551單片機教程之80C51的結構與原理知識點概述課件免費下載
1451單片機教程之80C51單片機的C語言程序設計資料概述
29951單片機教程之80C51單片機的串行口介紹及如何進行串行總線的擴展
27C8051F單片機應用解析29篇應用筆記詳細資料免費下載
69基于C8051F系列單片機的數據采集系統USB接口設計
2456
Intel 80C51及系列51單片機教材使你的8051工程和開發過程變得簡單
651單片機引腳簡介
56058
80C51單片機與8051單片機的區別是什么
9732如何對C8051F系列單片機的溫度傳感器測量環境溫度的誤差進行分析
880C51單片機使用手冊中文版
0C8051F330ST單片機學習板使用手冊
9單片機 C8051F便攜直流高壓發生器的研制
4380C51單片機串行通信講解
3180C51單片機的最小系統
7680C51系列單片機硬件基礎
2780c51是幾位單片機 80c51單片機有幾個中斷源
783380c51單片機的控制總線信號有哪些 80c51單片機特點
469380c51單片機的基本配置有哪些 80c51單片機各個引腳及功能
9775
電子發燒友App


評論