討論移植51程序到430上時(shí)需要注意那些問(wèn)題(2)
鑒于目前較多數(shù)新用戶之前是有學(xué)習(xí)過(guò)8051或者是用過(guò)8051單片機(jī)的經(jīng)驗(yàn)。在應(yīng)用到一些外部電路驅(qū)動(dòng)程序要移植到MSP430單片機(jī)上使用時(shí),我們需要注意那些的問(wèn)題。我希望通過(guò)這個(gè)首貼來(lái)引出一個(gè)咱們有共同性的話題,希望有這方面體驗(yàn)的網(wǎng)友進(jìn)來(lái)分享一下你們對(duì)這個(gè)話題的見解。
以下我草草也發(fā)表幾句,非常不全面也未經(jīng)整理...不足之處請(qǐng)各位補(bǔ)上。
【關(guān)于IO模擬控制程序的移植】
比如一些芯片驅(qū)動(dòng)程序包,要移植到430上來(lái)。此時(shí)我們要注意一些事項(xiàng),在8051單片機(jī)的結(jié)構(gòu)中是沒有方向寄存器的。而MSP430單片機(jī)中就有PxDIR方向寄存器和輸入/輸出寄存器 PxOUT/PxIN。由于51通用型單片機(jī)一般沒有硬件SPI、IIC外設(shè),此時(shí)很多驅(qū)動(dòng)程序是直接由IO模擬時(shí)序進(jìn)行與部分芯片進(jìn)行控制的。在這些程序的低層軟件中,對(duì)于某位進(jìn)行輸入或輸出設(shè)置IO的高低電平時(shí)測(cè)需要注意這三個(gè)寄存器的轉(zhuǎn)換和設(shè)置。這基本上是一般51單片機(jī)程序移植中最常碰見的問(wèn)題。
【關(guān)于硬件模塊程序的移植】
對(duì)于程序中有用到的硬件資源,較常見的有51的Timer、UART、時(shí)基模塊等等時(shí),由于這兩者硬件絕然不同。我們別無(wú)選擇當(dāng)然要完全修改為MSP430的硬件部分了,這里當(dāng)然包括了中斷服務(wù)程序。對(duì)對(duì)這種問(wèn)題,一般出現(xiàn)在在程序整體架構(gòu)上較多。對(duì)上一個(gè)的問(wèn)題則出現(xiàn)在低層驅(qū)動(dòng)較多。
【關(guān)于關(guān)鍵字和宏定義的問(wèn)題】
這部分待其他網(wǎng)友來(lái)補(bǔ)上吧,我使用51并不多 所以在這里不作多說(shuō)了。不過(guò)較多的網(wǎng)友總以51的結(jié)構(gòu)思路來(lái)想430應(yīng)該也有這樣的用法,比如直接位操作、存儲(chǔ)器區(qū)分塊、指令周期等等問(wèn)題。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我來(lái)補(bǔ)充下.51與MSP430都有自已一套指令集,如果是匯編的話,兩者的區(qū)別是非常大的;C語(yǔ)言的話,它們的相通之處還是很多的.如在51中,要把數(shù)據(jù)放在FLASH中,可以用 unsigned char co de 而MSP430呢,可以用const unsigned char 它們是等效的.在MSP430中,monitor關(guān)鍵字的意思是在執(zhí)行這個(gè)子程序的時(shí)候不允許中斷. 而51就沒有這個(gè)關(guān)鍵字.宏定義呢,差別不大,由于MSP430不支持位操作,當(dāng)然也可以自已定義.比如我們要給P1口的D0置位,可用:
P1OUT |=BIT0;
清零可用:
P1OUT &=~BIT0;
【關(guān)于中斷問(wèn)題】
51中,中斷是可以嵌套的。而MSP430呢,也可以。不過(guò)要注意MSP430進(jìn)行中斷之后,會(huì)立刻關(guān)閉總中斷的,中斷服務(wù)程序執(zhí)行完之后又自動(dòng)打開,如果你要在430中斷之后又要進(jìn)入另一個(gè)中斷的話,那你就要打開總斷了。不過(guò)這樣的話,處理不當(dāng)會(huì)引起程序跑飛的。
【關(guān)于MSP430與外圍器件的設(shè)計(jì)問(wèn)題】
大家都知道430是3.3V電平的。有不少的器件是5V是電平的。這樣就涉及到邏輯電平匹配的問(wèn)題,該不該用3.3V到5V或者是5V到3.3V的電平轉(zhuǎn)換呢。我個(gè)人認(rèn)為,得根據(jù)具體情況具體分析,一般來(lái)說(shuō),用3.3V來(lái)驅(qū)動(dòng)5V是沒有問(wèn)題的,而輸入呢,5V的電平MSP430可以承受,不過(guò)最好是用5V到3.3V的電平轉(zhuǎn)換了。
說(shuō)得不對(duì)的,請(qǐng)網(wǎng)友指正。望網(wǎng)友繼續(xù)補(bǔ)充下去。關(guān)于MSP430編程的問(wèn)題,這部分待其他網(wǎng)友來(lái)補(bǔ)上吧。MSP430的速度是比較快的,還有它有很多的外圍模塊,設(shè)計(jì)與編程時(shí)該如何安排等.
~~~~~~~~~~~~~~~~~
51也好長(zhǎng)時(shí)間沒用了。依稀記得些。
本文引用地址:http://m.butianyuan.cn/article/201611/316439.htm51有布爾處理能力,而430是沒有的。所以假如出現(xiàn)要p2.4口輸出高電平 51只需要P2^4=1就OK了,而430不緊要設(shè)置方向寄存器 而且只能進(jìn)行位與操作。
51的異步通訊的那個(gè)公式我記不住了,但是他的傳輸比特率只能是整數(shù),對(duì)出現(xiàn)的時(shí)鐘除以比特率不是整數(shù)的沒有430的小數(shù)調(diào)整功能。
評(píng)論