1 引言 80C51系列單片機及其衍生產品在我國乃至全世界范圍獲得了非常廣泛的應用。單片機領域的大部分工作人員都熟悉80C51單片機,各大專院校都采用80C51系列單片機作為教學模型。隨著單片機的不斷發展,市場上出現了很多高速、高性能的新型單片機,基于標準8051內核的單片機正面臨著退出市場的境地。為此,一些半導體公司開始對傳統8051內核進行大的構造,主要是提高速度和增加片內模擬和數字外設,以期大幅度提高單片機的整體性能。其中美國Cygnal公司推出的C8051F系列單片機把80C51系列單片機從MCU時代推向SoC時代,使得以8051為內核的單片機上了一個新的臺階。 C8051F系列單片機是完全集成的混合信號系統級芯片,具有與8051兼容的CIP-51微控制器內核,采用流水線結構,單周期指令運行速度是8051的12倍,全指令集運行速度是原來的9.5倍。熟悉NCS-51系列單片機的工程技術人員可以很容易地掌握C8051F的應用技術并能進行軟件的移植。但是不能將8051的程序完全照搬的應用于C8051F單片機中,這是因為兩者的內部資源存在較大的差異,必須經過加工才能予以使用。其中C8051F020以其功能較全面,應用較廣泛的特點成為C8051F的代表性產品,其性能價格比在目前應用領域也極具競爭力。C8051F020的內部電路包括CIP-51微控制器內核及RAM、ROM、I/O口、定時/計數器、ADC、DAC、PCA、SPI和SMBus等部件,即把計算機的基本組成單元以及模擬和數字外設集成在一個芯片上,構成一個完整的片上系統(SoC)。本文將介紹C8051F020單片機與80C51的異同點(主要是不同之處)及初學者編程時應該注意的問題,并給出經過Cygnal開發工具IDE調試環境軟件驗證的源程序。 2 相同點 C8051F020單片機與80C51系列單片機的指令系統完全一樣。掌握80C51單片機的人員可以很容易地接受C8051F020的應用技術并能完成相應軟件的移植。 3 主要硬件不同點 3.1 運行速度 C8051F020的指令運行速度是一般80C51系列單片機的10倍以上。因為其CIP-51中采用了流水線處理結構,已經沒有了機器周期時序,指令執行的最小時序單位為系統時鐘,大部分指令只要1~2個系統周期即可完成。又由于其時鐘系統比80C51的更加完善,有多個時鐘源,且時鐘源可編程,時鐘頻率范圍為0~25 MHz,當CIP-5l工作在最大系統時鐘頻率25 MHz時,它的峰值速度可以達到25 MI/s,C8051F020已進入了8位高速單片機行列。 3.2 I/O端口的配置方式 C8051F020擁有8個8位的I/O端口,大量減少了外部連線和器件擴展,有利于提高可靠性和抗干擾能力。其中低4個I/O端口除可作為一般的通用I/O端口外,還可作為其他功能模塊的輸入或輸出引腳,它是通過交叉開關配置寄存器XBR0、XBR1、XBR2(各位名稱及格式如表1所示)選擇并控制的,它們控制優先權譯碼選擇開關電路如圖1所示,可將片內的計數器/定時器、串行總線、硬件中斷、比較器輸出及其它的數字信號配置為在端口I/O引腳出現,這樣用戶可以根據自己的特定需要選擇所需的數字資源和通用I/O口。數字交叉開關是一個比較大的數字開關網路,這在所有80C51系列單片機上是一個空白。另外P1MDIN用于選擇P1的輸入方式是模擬輸入還是數字輸入,復位值為11111111B,即默認為數字輸入方式。而80C51單片機的I/O引腳是固定分配的,即占用引腳多,配置又不夠靈活。 C8051F020通過優先權交叉開關譯碼器(如圖2所示)控制數字開關網路,端口引腳的分配順序是從P0.0開始一直到P3.7。當交叉開關配置寄存器XBR0、XBR1和XBR2中外設的對應使能位被設置為邏輯“1”時,交叉開關將端口引腳分配給外設,例如,如果UARTOEN位(XBR0.2)被設置為邏輯“1”,則TX0和RX0引腳將分別被分配到P0.0和P0.1。因為UART0有最高優先權,所以當UARTOEN位被設置為邏輯“1”時其引腳將總是被分配到P0.0和P0.1。未被設置的交叉開關分配端口可作為通用I/O口。注意:當選擇了串行通信外設(即SMBus、SPI或UART)時,交叉開關將為所有相關功能分配引腳。例如,不能為UART0功能只分配TX0引腳而不分配RX0引腳。交叉開關寄存器被正確配置后,通過將XBARE(XBR2.6)設置為邏輯“1”來使能交叉開關。 3.3 內部功能 C8051F020內部帶有數據采集所需的ADC和DAC,其中ADC有兩個,一個是8路12位逐次逼近型ADC,可編程轉換速率,最大為100 kS/s.可通過多通道選擇器配置為單端輸入或差分輸入。內有可編程增益放大器PGA用于將輸入的信號放大,提高A/D的轉換精度。可編程增益為:0.5、1、2、4、8或16,復位時默認值為1。另一個是8路8位ADC,可編程轉換速率最大為500 kS/s,其可編程放大增益為0.5、1、2、4,復位時默認值為0.5。有2個12位的DAC,用于將12位的數字量轉換為電壓量,可產生連續變化的波形,兩路信號可同步輸出。 3.4 外部接口 C8051F020外設還增添了三個串行口。可同時與外界進行串行數據通信,SMBus兼容于I2C串行擴展總線;SPI串行擴展接口;兩個增強型UART串口。C8051F020具有基于JTAG接口的在系統調試功能,片內的調試電路通過JTAG接口可提供高速、方便的在系統調試。 4 軟件編程舉例 鑒于C8051F020在硬件方面與80C51的不同之處,故它們在軟件編程時也會有所區別,這種區別主要體現在初始化程序上。該程序是在Cygnal的開發工具即IDE調試環境中予以驗證的。 例:利用定時器T0定時,在P1.2端輸出一方波,方波周期為20 ms,已知晶振頻率為12 MHz,采用中斷的方式實現。 采用C8051F020單片機實現的程序如下: 從上面的程序中可以看出:在C8051F020軟件編程中須首先設置看門狗定時器的工作狀態,其次,要由內部振蕩器控制寄存器OSCICN設置采用內部時鐘還是外部時鐘工作,若選擇外部時鐘可通過外部振蕩器控制寄存器OSCXCN來選擇適當的頻率,本題目采用內部時鐘,并通過時鐘控制寄存器CKCON選擇使用系統時鐘的12分頻。再次,若選擇的I/O口是低四個端口P0~P3作為工作口,需要設定寄存器XBR0、XBR1、XBR2(復位值為0),在本設計中未用到數字資源,故XBR0、XBR1的值為復位值,只需設定XBR2的值為40H允許功能選擇開關即可,若本設計中的P1.2換為P4.2,則無需設定寄存器XBR0、XBR1、XBR2,因為高端口P4~P7與交叉開關無關。最后還要選擇所用I/O口的輸出方式,P0、P1、P2、P3口分別由POMDOUT、P1MD-OUT、P2MDOUT、P3MDOUT端口輸出方式寄存器來選擇,寄存器中的某位置0為漏極開路輸出方式,置1則為推拉輸出方式。另外,由于C8051F020的專用寄存器比一般51單片機多,而8051指令不能識別它增加的專用寄存器,公司提供了所有的專用寄存器及相應位的地址定義文件,用戶只需加一條$include(C8051F020.inc)指令即可。 該程序只需將與上面提到的幾點相關的指令去掉即為80C51的源程序(程序中已標示)。當然這僅僅是一個簡單的例子,并不能完全說明所有不同之處,但可說明它們典型的不同點。 5 結束語 C8051F020與80C51單片機的指令系統完全兼容,給用戶使用帶來了極大的方便,但它們的硬件結構不同,因此在使用上有所區別,只有了解了它們之間的異同點,才能更好地對C8051F020進行開發利用,充分發揮它的先進功效。 |