DrWhoF said:and I thought that they would run faster.
DrWhoF said:When DS89C450 is in nothing is sent out and strange pulses every 30ms appear on RST pin and it looks like microcontroller is running in endless loop.
ORG 0000H
MOV TMOD, #20h
MOV SCON, #52h
MOV PCON, #80h
MOV TH1, #0FAh
MOV TCON, #40h ; SETB TR1
MOV 50h, #'H'
MOV 51h, #'E'
MOV 52h, #'L'
MOV 53h, #'L'
MOV 54h, #'O'
MOV 55h, #10 ; LF
MOV 56h, #13 ; CR
;-------------------------------------------------
;Main Program
;-------------------------------------------------
Ser_Loop:
LCALL send_string
Not_Continue:
MOV B, #0FFh
DJNZ B, $
LCALL ser_in
CJNE A, #'c', Not_Continue
SJMP Ser_Loop
;-------------------------------------------------
send_string:
MOV R0, #07h ; Loop counter ..
MOV R1, #50h
S_Loop:
MOV A, @R1
LCALL Ser_Out
INC R1
MOV B, #0FFh
DJNZ B, $
CPL P1.0
DJNZ R0, S_Loop
RET
Ser_Out:
JNB TI, $
CLR TI
MOV SBUF, A
RET
;-------------------------------------------------
ser_in:
JNB RI, $
CLR RI
MOV A, SBUF
RET
; --------------------------------------------------
END
; --------------------------------------------------
END
It sends HELLO all over again.
$NOPAGING
$MOD252
WDCON DATA 0D8h
TA DATA 0C7h
ORG 0000H
MOV TA, #0AAh
MOV TA, #55h
CLR WDCON.1 ; Disable EWT
MOV B, #0FFh
DJNZ B, $
MOV TMOD, #20h
MOV SCON, #52h
MOV PCON, #80h
MOV TH1, #0FAh
MOV TCON, #40h ; SETB TR1
MOV 50h, #'H'
MOV 51h, #'E'
MOV 52h, #'L'
MOV 53h, #'L'
MOV 54h, #'O'
MOV 55h, #10 ; LF
MOV 56h, #13 ; CR
;-------------------------------------------------
;Main Program
;-------------------------------------------------
Main_Loop:
LCALL Send_String
Not_Continue:
MOV B, #0FFh
DJNZ B, $
LCALL Ser_in
CJNE A, #'c', Not_Continue
SJMP Main_Loop
;-------------------------------------------------
;Character sent subroutine
;-------------------------------------------------
Send_String:
MOV R0, #07h ; Loop counter ..
MOV R1, #50h
S_Loop:
MOV A, @R1
LCALL Ser_Out
INC R1
MOV B, #0FFh
DJNZ B, $
CPL P1.3
DJNZ R0, S_Loop
RET
Ser_Out:
JNB TI, $
CLR TI
MOV SBUF, A
RET
;-------------------------------------------------
;Character receive subroutine
;-------------------------------------------------
Ser_in:
JNB RI, $
CLR RI
MOV A, SBUF
RET
; --------------------------------------------------
END
WDCON DATA 0D8h
TA DATA 0C7h
FCNTL DATA 0D5h
ORG 0000H
MOV B, #0FFh
READ_FCNTL: ;Make sure the FBUSY bit is 1
MOV A, FCNTL ;to indicate flash MMU is idle.
JB ACC.7, ERASE_OCR
DJNZ B, READ_FCNTL
MOV A, #01
AJMP ERROR ;timeout
ERASE_OCR: ;Write 0Ch to the FCNTL register
MOV TA, #0AAh using the timed access sequence.
MOV TA, #55h
MOV FCNTL, #0Ch
MOV B, #FFh
PROG_START: ;Make sure the FBUSY bit is 0
MOV A,FCNTL ;to indicate programming has started.
JNB ACC.7, WAIT_ERASE
DJNZ B, PROG_START
MOV A, #02
AJMP ERROR
MOV B, $FF ;Wait for FBUSY bit to return to 1
MOV R0,$FF ;to indicate end of programming operation.
WAIT_ERASE:
MOV A,FCNTL
JB ACC.7, PROG_ERROR
DJNZ B, WAIT_ERASE
DJNZ R0, WAIT_ERASE
MOV A, #03
AJMP ERROR
PROG_ERROR: ;Make sure FERR is 0
MOV A, FCNTL ;to indicate no programming error.
JNB ACC.6, READY
MOV A, #04
ERROR:
MOV P1, A ;test with a DVM the P1 pins status
AJMP $
READY:
MOV P1, #FF
AJMP $
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?