新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機51到AVR程序的移植

        單片機51到AVR程序的移植

        作者: 時間:2016-11-21 來源:網絡 收藏
        將 C51 向 ICCAVR的轉換進行一次總結
        1、 頭文件
        對C51中定義寄存器的頭文件如 reg51.h at89x51.h等替換成相應的 AVR頭文件 如 io8515.h io2313.h等
        2、 中斷處理函數
        在 C51 中以 interrupt 關鍵字來說明某一個函數為中斷處理函數 在 ICCVAR 中可采用#pragma interrupt_handler預處理命令在程序開始處聲明 具體用法如下:
        #pragma interrupt_handler <中斷處理函數名> <中斷向量號>
        注意 對原 C51 源程序中的 interrupt 和 using關鍵字應當刪除
        3 、對 C51 中的 bit 和 sbit 數據類型的處理
        在 ICCAVR中不支持 bit 和 sbit數據類型 對這兩種類型可用 unsigned char來代替對有關位運算用標準 C 的位運算功能進行處理 也可采取在線匯編處理
        4 、對中斷系統 定時器初始化
        需重新根據相應控制寄存器的功能給其賦值 方法與 C51 相同 具體如下對 MCS51中 TMOD TCON的處理改為對 AVR的 TCCR0 TCCR1A TCCR1B TIFR的處理
        對 MCS51 中 IE IP的處理改為對 AVR中 GIMSK TIMSK MCUCR SREG
        的處理對 MCS51 中 IE IP的處理改為對 AVR中 GIMSK TIMSK MCUCR SREG的處理
        5 將原 C51中有關對看門狗電路 外部 EEPROM的處理改為對 AVR芯片內部看門狗電路 內部 EEPROM的處理
        6 、對 MCS51UART 的初始化改為對 UCR和 UBRR和被始化
        7、 如果使用片外 SRAM 應當對 MCUCR初始化如果有引腳作為輸出引腳使應當對其方向寄存器進行初始化
        8、 對 C51中符合 ANSI標準的 C語言 原則上不需要進行修改 除非為了程序結構的優化


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 黄山市| 中卫市| 富锦市| 德江县| 武穴市| 富蕴县| 奉贤区| 册亨县| 临海市| 北碚区| 嘉义市| 永济市| 怀来县| 吉安市| 会宁县| 屏东县| 白银市| 华亭县| 香格里拉县| 美姑县| 信宜市| 阳西县| 颍上县| 宝鸡市| 高安市| 竹北市| 宝丰县| 塔城市| 大荔县| 二连浩特市| 绵竹市| 鄂托克前旗| 甘肃省| 台州市| 洞口县| 雷波县| 双柏县| 黎城县| 磐安县| 临海市| 信丰县|