單片機51到AVR程序的移植
1、 頭文件
對C51中定義寄存器的頭文件如 reg51.h at89x51.h等替換成相應的 AVR頭文件 如 io8515.h
2、 中斷處理函數
在 C51 中以 interrupt 關(guān)鍵字來(lái)說(shuō)明某一個(gè)函數為中斷處理函數 在 ICCVAR 中可采用#pragma interrupt_handler預處理命令在程序開(kāi)始處聲明 具體用法如下:
#pragma interrupt_handler <中斷處理函數名> <中斷向量號>
注意 對原 C51 源程序中的 interrupt 和 using關(guān)鍵字應當刪除
3 、對 C51 中的 bit 和 sbit 數據類(lèi)型的處理
在 ICCAVR中不支持 bit 和 sbit數據類(lèi)型 對這兩種類(lèi)型可用 unsigned char來(lái)代替對有關(guān)位運算用標準 C 的位運算功能進(jìn)行處理 也可采取在線(xiàn)匯編處理
4 、對中斷系統 定時(shí)器初始化
需重新根據相應控制寄存器的功能給其賦值 方法與 C51 相同 具體如下
對 MCS51 中 IE IP的處理改為對 AVR中 GIMSK TIMSK MCUCR SREG
的處理對 MCS51 中 IE IP的處理改為對 AVR中 GIMSK TIMSK MCUCR SREG的處理
5 將原 C51中有關(guān)對看門(mén)狗電路 外部 EEPROM的處理改為對 AVR芯片內部看門(mén)狗電路 內部 EEPROM的處理
6 、對 MCS51UART 的初始化改為對 UCR和 UBRR和被始化
7、 如果使用片外 SRAM 應當對 MCUCR初始化如果有引腳作為輸出引腳使應當對其方向寄存器進(jìn)行初始化
8、 對 C51中符合 ANSI標準的 C語(yǔ)言 原則上不需要進(jìn)行修改 除非為了程序結構的優(yōu)化
評論