新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 討論移植51程序到430上時需要注意那些問題(2)

        討論移植51程序到430上時需要注意那些問題(2)

        作者: 時間:2016-11-13 來源:網絡 收藏

        鑒于目前較多數新用戶之前是有學習過8051或者是用過8051單片機的經驗。在應用到一些外部電路驅動程序要移植MSP430單片機上使用時,我們需要注意那些的問題。我希望通過這個首貼來引出一個咱們有共同性的話題,希望有這方面體驗的網友進來分享一下你們對這個話題的見解。
        以下我草草也發表幾句,非常不全面也未經整理...不足之處請各位補上。

        【關于IO模擬控制程序的移植】
        比如一些芯片驅動程序包,要移植到430上來。此時我們要注意一些事項,在8051單片機的結構中是沒有方向寄存器的。而MSP430單片機中就有PxDIR方向寄存器和輸入/輸出寄存器 PxOUT/PxIN。由于51通用型單片機一般沒有硬件SPI、IIC外設,此時很多驅動程序是直接由IO模擬時序進行與部分芯片進行控制的。在這些程序的低層軟件中,對于某位進行輸入或輸出設置IO的高低電平時測需要注意這三個寄存器的轉換和設置。這基本上是一般51單片機程序移植中最常碰見的問題。

        【關于硬件模塊程序的移植】
        對于程序中有用到的硬件資源,較常見的有51的Timer、UART、時基模塊等等時,由于這兩者硬件絕然不同。我們別無選擇當然要完全修改為MSP430的硬件部分了,這里當然包括了中斷服務程序。對對這種問題,一般出現在在程序整體架構上較多。對上一個的問題則出現在低層驅動較多。

        【關于關鍵字和宏定義的問題】
        這部分待其他網友來補上吧,我使用51并不多 所以在這里不作多說了。不過較多的網友總以51的結構思路來想430應該也有這樣的用法,比如直接位操作、存儲器區分塊、指令周期等等問題。

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        我來補充下.51與MSP430都有自已一套指令集,如果是匯編的話,兩者的區別是非常大的;C語言的話,它們的相通之處還是很多的.如在51中,要把數據放在FLASH中,可以用 unsigned char code 而MSP430呢,可以用const unsigned char 它們是等效的.在MSP430中,monitor關鍵字的意思是在執行這個子程序的時候不允許中斷. 而51就沒有這個關鍵字.宏定義呢,差別不大,由于MSP430不支持位操作,當然也可以自已定義.比如我們要給P1口的D0置位,可用:

        P1OUT |=BIT0;

        清零可用:

        P1OUT &=~BIT0;
        【關于中斷問題】
        51中,中斷是可以嵌套的。而MSP430呢,也可以。不過要注意MSP430進行中斷之后,會立刻關閉總中斷的,中斷服務程序執行完之后又自動打開,如果你要在430中斷之后又要進入另一個中斷的話,那你就要打開總斷了。不過這樣的話,處理不當會引起程序跑飛的。
        【關于MSP430與外圍器件的設計問題】
        大家都知道430是3.3V電平的。有不少的器件是5V是電平的。這樣就涉及到邏輯電平匹配的問題,該不該用3.3V到5V或者是5V到3.3V的電平轉換呢。我個人認為,得根據具體情況具體分析,一般來說,用3.3V來驅動5V是沒有問題的,而輸入呢,5V的電平MSP430可以承受,不過最好是用5V到3.3V的電平轉換了。

        說得不對的,請網友指正。望網友繼續補充下去。關于MSP430編程的問題,這部分待其他網友來補上吧。MSP430的速度是比較快的,還有它有很多的外圍模塊,設計與編程時該如何安排等.

        ~~~~~~~~~~~~~~~~~

        51也好長時間沒用了。依稀記得些。

        本文引用地址:http://www.104case.com/article/201611/316439.htm

        51有布爾處理能力,而430是沒有的。所以假如出現要p2.4口輸出高電平 51只需要P2^4=1就OK了,而430不緊要設置方向寄存器 而且只能進行位與操作。

        51的異步通訊的那個公式我記不住了,但是他的傳輸比特率只能是整數,對出現的時鐘除以比特率不是整數的沒有430的小數調整功能。



        關鍵詞: 移植51程序43

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 新和县| 宽城| 五寨县| 大方县| 乌鲁木齐县| 鄂伦春自治旗| 永修县| 昭通市| 融水| 东乌珠穆沁旗| 黄陵县| 宜兴市| 南宁市| 徐闻县| 长寿区| 大邑县| 天柱县| 开平市| 东台市| 新泰市| 阳曲县| 翁牛特旗| 宁河县| 越西县| 南康市| 张掖市| 康定县| 任丘市| 红河县| 青浦区| 博白县| 凤翔县| 新乐市| 鹰潭市| 惠来县| 左贡县| 定日县| 嘉定区| 青田县| 泰来县| 台安县|