全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1617
推到 Plurk!
推到 Facebook!

89S52燒錄

缺席
marstate
一般會員


發表:3
回覆:6
積分:1
註冊:2009-01-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2018-03-07 15:42:06 IP:61.62.xxx.xxx 未訂閱
請問各位,以下程式是自己做89C51燒錄器的寫入程式.
在做C51寫入時正常,燒錄OK.但要改寫入S51/S52時,則一直無法寫入.
看S51手冊,寫入週期時間不同,有試著把延時時間修改,但還是一直無法寫入,抺除則可以,讀取也可以,就是不能對S51/52寫入
請大家幫忙下,是否還有那些要注意的,謝謝大家.
======寫C51正常==================================
C51_Writ: ;燒錄副程式
SETB C51D0 ;燒錄端的P3.7
SETB C51D1 ;燒錄端的P3.6
SETB C51D2 ;燒錄端的P2.7
CLR C51D3 ;燒錄端的P2.6
SETB C51D4 ;燒錄端的P3.3 (S51,S52使用)
SETB P3.2 ;先設 PRG=1
MOV P0,#0FFH
MOV R0,#LINE_BUF ;讀取由電腦輸入的資料
CW10:
MOV A,@R0 ;讀取資料
MOV P0,A ;輸出到P0待命
CLR VS ;RST=12V,啟動燒入,RST=12V
CALL DELAY40US ;
CLR P3.2 ;PRG=0,寫入脈波由0變1
CALL DELAY100US ;
SETB P3.2 ;PRG=1,,寫入脈波由0變1
CALL DELAY40US ;
SETB VS ;RST=5V,寫入完成一次
CALL DELAY2MS ;
CW30:
MOV A,P1
CJNE A,#0FFH,CW40 ;P1加到255後,P2要加1
INC P2 ;
MOV P1,#000H ;P1要再重頭開始計數
AJMP CW50
CW40: INC P1 ;計數一次
CW50:
RET
============寫S51,不能寫入=========================
S51_Writ: ;燒錄副程式
CLR C51D3 ;燒錄端的P2.6
SETB C51D2 ;燒錄端的P2.7
SETB C51D4 ;燒錄端的P3.3 (S51,S52使用)
SETB C51D1 ;燒錄端的P3.6
SETB C51D0 ;燒錄端的P3.7
SETB P3.2 ;先設 PRG=1
MOV P0,#0FFH
MOV R0,#LINE_BUF ;讀取由電腦輸入的資料
MOV A,@R0 ;讀取資料
MOV P0,A ;輸出到P0待命
CLR VS ;RST=12V,啟動燒入,RST=12V
CALL DELAY10US ;這里改了也是不能寫入
SETB VS ;RST=5V,寫入完成一次
CALL DELAY50US ;這里改了也是不能寫入
SW30:
MOV A,P1
CJNE A,#0FFH,SW40 ;P1加到255後,P2要加1
INC P2 ;
MOV P1,#000H ;P1要再重頭開始計數
AJMP SW50
SW40: INC P1 ;計數一次
SW50:
RET
;===S51/52 抺除正常=====================================================
S51_ERASE:
SETB P3.3 ;燒錄端的P2.6
CLR P2.7 ;C51使用/燒錄端的P2.7
SETB P2.5 ;燒錄端的P3.3 (S51,S52使用)
CLR P3.4 ;燒錄端的P3.6
CLR P3.5 ;燒錄端的P3.7
SETB P3.2 ;PRG=1
CALL DELAY10US
SETB RST ;設RST=H/5V
CLR VS ;RST=12V
CALL DELAY50MS
CLR P3.2 ;PRG=0
CALL DELAY50MS
SETB P3.2 ;PRG=1
CALL DELAY50MS
SETB VS ;RST=5V
RET
;=======================================================
系統時間:2024-04-29 12:38:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!