joedarton
Newbie level 4
at89s51 programming enable
My Name is Joe, Student in VietNam.
Please Help me!
I have a final Exam in University. Topic "Programming ISP 89S51 using 89c51". It likes "89Sxx In-Circuit Serial Programmer".
I have promblem with "Serial Programming Timing".
I am coding some function. But function doesn`t work.
After I call function "Programming_Enable" output data is Acc=0. ( not =01101001B)
Pleaze help me fix some problems.
Thank you very very very very ..... much.
Pin connet:
Master At89c51 Slaver AT89s51
P1.0 RST
P1.1 SCK
P1.2 MISO
P1.3 MOSI
My Coding:
"*****************************"
" Funtion Write One Byte To 89s52 "
"*****************************"
WRITE_BYTE:
JB ACC.0, LABEL0
CLR P1.3
LJMP LA0
LABEL0: SETB P1.3
LA0: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.1, LABEL1
CLR P1.3
LJMP LA1
LABEL1: SETB P1.3
LA1: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.2, LABEL2
CLR P1.3
LJMP LA2
LABEL2: SETB P1.3
LA2: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.3, LABEL3
CLR P1.3
LJMP LA3
LABEL3: SETB P1.3
LA3: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.4, LABEL4
CLR P1.3
LJMP LA4
LABEL4: SETB P1.3
LA4: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.5, LABEL5
CLR P1.3
LJMP LA5
LABEL5: SETB P1.3
LA5: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.6, LABEL6
CLR P1.3
LJMP LA6
LABEL6: SETB P1.3
LA6: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.7, LABEL7
CLR P1.3
LJMP LA7
LABEL7: SETB P1.3
LA7: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
RET
************************************************** ******
"***************************************"
" Funtion Write 4 Byte to AT89s51 "
" Input : R0 : begin address memory using store data"
"***************************************"
WRITE_4_BYTE:
MOV R1,#4
LAP_WRITE_4_BYTE:
MOV A,@R0
INC R0
LCALL WRITE_BYTE
DJNZ R1,LAP_WRITE_4_BYTE
RET
************************************************** *
"***************************************"
" Funtion Programming Enable "
" DATA: MOV 20H,#10101100B "
" MOV 21H,#01010011B "
" MOV 22H,#0 "
" MOV 23H,#0 "
" Input : R0 : begin address memory using store data (#20H)"
" Output: ACC=01101001B "
"***************************************"
PROGRAMING_ENABLE:
SETB P1.0
NOP
NOP
NOP
NOP
NOP
NOP
MOV R0,#20H
LCALL WRITE_4_BYTE
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP0
SETB ACC.0
LJMP RAP0
READP0: CLR ACC.0
RAP0: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP1
SETB ACC.1
LJMP RAP1
READP1: CLR ACC.1
RAP1: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP2
SETB ACC.2
LJMP RAP2
READP2: CLR ACC.2
RAP2: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP3
SETB ACC.3
LJMP RAP3
READP3: CLR ACC.3
RAP3: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP4
SETB ACC.4
LJMP RAP4
READP4: CLR ACC.4
RAP4: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP5
SETB ACC.5
LJMP RAP5
READP5: CLR ACC.5
RAP5: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP6
SETB ACC.6
LJMP RAP6
READP6: CLR ACC.6
RAP6: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP7
SETB ACC.7
LJMP RAP7
READP7: CLR ACC.7
RAP7: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
RET
************************************************** ********
"***************************************"
" Funtion Erase Data "
" DATA: MOV 24H,#10101100B "
" MOV 25H,#10000000B "
" MOV 26H,#0 "
" MOV 27H,#0 "
" Input : R0 : begin address memory using store data (#24H)"
"***************************************"
ERASE_DATA:
MOV R0,#24H
LCALL WRITE_4_BYTE
MOV R3,#10
LAP_ERASE_DATA0:
MOV R4,#250
LAP_ERASE_DATA1:
MOV R5,#200
DJNZ R5,$
DJNZ R4,LAP_ERASE_DATA1
DJNZ R3,LAP_ERASE_DATA0
RET
************************************************** ******
"***************************************"
" Funtion Programming Enable "
" DATA: MOV 28H,##00100000B "
" MOV 29H, "
" MOV 2AH,#0 "
" MOV 2BH,#0 "
" Input : R0 : begin address memory using store data (#28H)"
" Output: ACC : data readed "
"***************************************"
READ_BYTE:
MOV R0,#28H
LCALL WRITE_4_BYTE
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ0
SETB ACC.0
LJMP RA0
READ0: CLR ACC.0
RA0: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ1
SETB ACC.1
LJMP RA1
READ1: CLR ACC.1
RA1: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ2
SETB ACC.2
LJMP RA2
READ2: CLR ACC.2
RA2: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ3
SETB ACC.3
LJMP RA3
READ3: CLR ACC.3
RA3: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ4
SETB ACC.4
LJMP RA4
READ4: CLR ACC.4
RA4: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ5
SETB ACC.5
LJMP RA5
READ5: CLR ACC.5
RA5: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ6
SETB ACC.6
LJMP RA6
READ6: CLR ACC.6
RA6: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ7
SETB ACC.7
LJMP RA7
READ7: CLR ACC.7
RA7: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
RET
*************************************************
Added after 11 minutes:
Your email: Joedarton@gmail.com
My Name is Joe, Student in VietNam.
Please Help me!
I have a final Exam in University. Topic "Programming ISP 89S51 using 89c51". It likes "89Sxx In-Circuit Serial Programmer".
I have promblem with "Serial Programming Timing".
I am coding some function. But function doesn`t work.
After I call function "Programming_Enable" output data is Acc=0. ( not =01101001B)
Pleaze help me fix some problems.
Thank you very very very very ..... much.
Pin connet:
Master At89c51 Slaver AT89s51
P1.0 RST
P1.1 SCK
P1.2 MISO
P1.3 MOSI
My Coding:
"*****************************"
" Funtion Write One Byte To 89s52 "
"*****************************"
WRITE_BYTE:
JB ACC.0, LABEL0
CLR P1.3
LJMP LA0
LABEL0: SETB P1.3
LA0: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.1, LABEL1
CLR P1.3
LJMP LA1
LABEL1: SETB P1.3
LA1: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.2, LABEL2
CLR P1.3
LJMP LA2
LABEL2: SETB P1.3
LA2: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.3, LABEL3
CLR P1.3
LJMP LA3
LABEL3: SETB P1.3
LA3: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.4, LABEL4
CLR P1.3
LJMP LA4
LABEL4: SETB P1.3
LA4: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.5, LABEL5
CLR P1.3
LJMP LA5
LABEL5: SETB P1.3
LA5: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.6, LABEL6
CLR P1.3
LJMP LA6
LABEL6: SETB P1.3
LA6: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
JB ACC.7, LABEL7
CLR P1.3
LJMP LA7
LABEL7: SETB P1.3
LA7: NOP
SETB P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
NOP
RET
************************************************** ******
"***************************************"
" Funtion Write 4 Byte to AT89s51 "
" Input : R0 : begin address memory using store data"
"***************************************"
WRITE_4_BYTE:
MOV R1,#4
LAP_WRITE_4_BYTE:
MOV A,@R0
INC R0
LCALL WRITE_BYTE
DJNZ R1,LAP_WRITE_4_BYTE
RET
************************************************** *
"***************************************"
" Funtion Programming Enable "
" DATA: MOV 20H,#10101100B "
" MOV 21H,#01010011B "
" MOV 22H,#0 "
" MOV 23H,#0 "
" Input : R0 : begin address memory using store data (#20H)"
" Output: ACC=01101001B "
"***************************************"
PROGRAMING_ENABLE:
SETB P1.0
NOP
NOP
NOP
NOP
NOP
NOP
MOV R0,#20H
LCALL WRITE_4_BYTE
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP0
SETB ACC.0
LJMP RAP0
READP0: CLR ACC.0
RAP0: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP1
SETB ACC.1
LJMP RAP1
READP1: CLR ACC.1
RAP1: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP2
SETB ACC.2
LJMP RAP2
READP2: CLR ACC.2
RAP2: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP3
SETB ACC.3
LJMP RAP3
READP3: CLR ACC.3
RAP3: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP4
SETB ACC.4
LJMP RAP4
READP4: CLR ACC.4
RAP4: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP5
SETB ACC.5
LJMP RAP5
READP5: CLR ACC.5
RAP5: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP6
SETB ACC.6
LJMP RAP6
READP6: CLR ACC.6
RAP6: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READP7
SETB ACC.7
LJMP RAP7
READP7: CLR ACC.7
RAP7: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
RET
************************************************** ********
"***************************************"
" Funtion Erase Data "
" DATA: MOV 24H,#10101100B "
" MOV 25H,#10000000B "
" MOV 26H,#0 "
" MOV 27H,#0 "
" Input : R0 : begin address memory using store data (#24H)"
"***************************************"
ERASE_DATA:
MOV R0,#24H
LCALL WRITE_4_BYTE
MOV R3,#10
LAP_ERASE_DATA0:
MOV R4,#250
LAP_ERASE_DATA1:
MOV R5,#200
DJNZ R5,$
DJNZ R4,LAP_ERASE_DATA1
DJNZ R3,LAP_ERASE_DATA0
RET
************************************************** ******
"***************************************"
" Funtion Programming Enable "
" DATA: MOV 28H,##00100000B "
" MOV 29H, "
" MOV 2AH,#0 "
" MOV 2BH,#0 "
" Input : R0 : begin address memory using store data (#28H)"
" Output: ACC : data readed "
"***************************************"
READ_BYTE:
MOV R0,#28H
LCALL WRITE_4_BYTE
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ0
SETB ACC.0
LJMP RA0
READ0: CLR ACC.0
RA0: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ1
SETB ACC.1
LJMP RA1
READ1: CLR ACC.1
RA1: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ2
SETB ACC.2
LJMP RA2
READ2: CLR ACC.2
RA2: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ3
SETB ACC.3
LJMP RA3
READ3: CLR ACC.3
RA3: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ4
SETB ACC.4
LJMP RA4
READ4: CLR ACC.4
RA4: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ5
SETB ACC.5
LJMP RA5
READ5: CLR ACC.5
RA5: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ6
SETB ACC.6
LJMP RA6
READ6: CLR ACC.6
RA6: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
NOP
NOP
NOP
SETB P1.1
NOP
NOP
JB P1.2, READ7
SETB ACC.7
LJMP RA7
READ7: CLR ACC.7
RA7: NOP
NOP
NOP
NOP
NOP
NOP
CLR P1.1
RET
*************************************************
Added after 11 minutes:
Your email: Joedarton@gmail.com