P89C51RD2的Boot ROM與ISP功能的實(shí)現(xiàn)
對(duì)上段程序分析如下:首先,將校驗(yàn)和單元清零,開始接收第1個(gè)ASCII碼,并判斷是否為:。如果是,則說(shuō)明是一個(gè)命令字的開始,下面便依次接收字節(jié)數(shù)DATA_LEN、數(shù)據(jù)首地址高8位DATA_ ADDRH、數(shù)據(jù)首地址低8位DATA_ADDRL和數(shù)據(jù)操作類型DATA_MODE。這跟其命令字格式是完全對(duì)應(yīng)的。然后,程序根據(jù)接收數(shù)據(jù)字節(jié)數(shù) DATA_ LEN來(lái)決定下面的數(shù)據(jù)接收,并將接收的數(shù)據(jù)存儲(chǔ)在從80H開始的內(nèi)部數(shù)據(jù)存儲(chǔ)器中,以備下一步的處理。最后,進(jìn)入校驗(yàn)和的接收,將程序計(jì)算所得的校驗(yàn)和與上位機(jī)傳輸?shù)男r?yàn)和作比較,如果不等,回傳X字符,通知上位機(jī)進(jìn)行異常處理;如果相等,則轉(zhuǎn)入相應(yīng)的命令執(zhí)行。
3.3 命令的執(zhí)行
命令解釋和執(zhí)行的源代碼和反匯編程序如下:
源程序 反匯編程序
FCBF E5 35 RUN_MODE: MOV A,DATA_MODE
;35H數(shù)據(jù)操作類型
FCC1 23 RL A ;A=A*2
FCC2 90 FC C6 MOV DPTR,#BASE_ADDR ;程序散轉(zhuǎn)
FCC5 73 JMP @A+DPTR
FCC6 81 D4 BASE_ADDR: AJMP PRO_DATA
;00=傳送編程數(shù)據(jù)并完成編程
FCC8 81 F8 AJMP SEND_CHAR_OK
;01=傳文件結(jié)束符
FCCA 81 FE AJMP SETUP_FOSC
;02=指定振蕩器頻率
FCCC A1 70 AJMP MPRO_DAT
;03=雜項(xiàng)編程功能
FCCE A1 04 AJMP READ_CHECK
;04=顯示指定地址段FLASH數(shù)據(jù)或查空
FCD0 A1 9F AJMP READ_DATA
;05=各種讀功能
FCD2 A1 B3 AJMP SETUP_BPS
;06=直接裝載波特率
在正確地接收命令后,通過(guò)DATA_MODE項(xiàng)(即命令格式中的RR)來(lái)判斷功能并轉(zhuǎn)入相應(yīng)的程序。程序中對(duì)每一個(gè)跳轉(zhuǎn)地址都作出了相應(yīng)的注釋。
4 幾點(diǎn)說(shuō)明
?、?上述帶源代碼的程序均是Boot ROM中反匯編得來(lái)的,并且大部分是連續(xù)的。這一點(diǎn)可以從地址分布上看出來(lái),讀者可以將其合并在一起看,相信可以加強(qiáng)理解。有興趣的讀者也可以參照以上給出的方法將全部代碼讀出,電路圖和源程序幾乎都不必重編了。
?、?Boot ROM中既包括了ISP的程序,也包括了IAP的程序。限于篇幅,只給出了ISP的部分源程序,部分子程序只作了說(shuō)明而未列出源程序。
參考文獻(xiàn)
1 廣州周立功單片機(jī)發(fā)展有限公司. P89C51Rx+/Rx2/66x系列單片機(jī)的在線編程
2 P89C51RB2/P89C51RC2/P89C51RD2 DATA SHEET. Philips Semiconductors, 2001 Jun 27
3 何立民. MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì). 北京:北京航空航天大學(xué)出版社,1990
評(píng)論