P
param_vlsi
Guest
Hi Hver kropp,
Jeg arbeider med en Akselerometer, kan vi kommunisere til Akselerometer gjennom SPI/I2C. Jeg har utviklet en kode for SPIen hjelp av Software SPI gjennomføring i AT89c52.but det ikke.
Jeg har gjort i henhold til dataarket for Akselerometer.
Jeg gir koden nedenfor og også Dataark av Akselerometer.
kan noen rette meg probllem.
Takke deg på forhånd.
Med hilsen
ParamT2CON EQU 0C8H
T2MOD EQU 0C9H
TH2 EQU 0CDH
TL2 EQU 0CCH
TR2 EQU 0CAH
RCAP2L EQU 0CAH
RCAP2H EQU 0CBH
ET2 EQU 0ADH
TF2 EQU 0CFH
Org 00H
MOV 81H, # 50H
LJMP START
Org 01BH
LJMP IT_TIMER1
START:
MOV B, # 50H
CLR C
RLC A
RLC A
CLR P0.4
CLR P2.3
CLR P2.1
CLR P2.4
CLR P2.5
CLR P2.6
CLR P2.7
SETB EA
MOV TMOD, # 20h
MOV R7, # 02
MOV R0, # 08
MOV R4, # 09
MOV R6, # 02
MOV R2, # 16
MOV R5, # 02
MOV TL1, # 00H
MOV TH1, # 00H
SETB ET1
SETB ET2
SETB TR1
JMP $IT_TIMER1:
MOV TH1, # 00H
CPL P2.3
JB P2.6, hlabel
JNB P2.3, HLABEL
JMP LAST
HLABEL:
JB P2.4, Trinn 1
LCALL CONTROL_WORD
JMP LAST
Trinn 1:
LCALL READ_CONTROL
/ / JB P0.5, STEP0
/ / LCALL READ_X
/ / JMP LAST
/ / STEP0:
/ / JB P0.6, STEP6
/ / LCALL READ_Y
/ / JMP LAST
/ / STEP6:
/ / JB P0.7, STEP7
/ / LCALL READ_Z
/ / JMP LAST
/ / STEP7:
/ / PUSH 01H
/ / CLR TR1
/ / MOV R3, # 05
/ / MOV R5, # 05
/ / MOV R7, # 05
/ / LCALL _calctan
/ / POP 01H
/ / SETB TR1
/ / LCALL RESET
SISTE:
RETI
CONTROL_WORD:
DJNZ R7, ASSERT_CS
MOV R7, # 01
DJNZ R0, LOAD_ADRESS_CONTROL
MOV R0, # 01
DJNZ R6, INITIALISE_CONTROL_DATA
MOV R6, # 01
DJNZ R4, LOAD_DATA_CONTROL
MOV R4, # 01
LCALL INTIALISE_ADRESS
SETB P2.4
JMP LAST2
ASSERT_CS:
CLR P2.0
JMP LAST2
LOAD_ADRESS_CONTROL:
MOV 0A2H, C
RLC A
JMP LAST2
INITIALISE_CONTROL_DATA:
MOV A, # 05H
JMP LAST2
LOAD_DATA_CONTROL:
RLC A
MOV 0A2H, C
LAST2:
RET
INTIALISE_ADRESS:
MOV A, # 10H
RLC A
RLC A
MOV R0, # 08
MOV R4, # 09
MOV R6, # 02
MOV R2, # 16
MOV R7, # 02
MOV R5, # 02
RET
READ_CONTROL:
DJNZ R0, LOAD_ADRESS_CONTROL1
MOV R0, # 01
DJNZ R6, INITIALISE_CONTROL_DATA1
MOV R6, # 01
DJNZ R7, LAST3
MOV R7, # 01
JB P2.3, ylabel
JMP LAST3
ylabel:
DJNZ R4, READ_DATA_CONTROL
MOV R4, # 01
DJNZ R5, LAST3
MOV R5, # 01
CLR P2.6
LCALL INTIALISE_ADRESS
JMP LAST3
LOAD_ADRESS_CONTROL1:
MOV 0A2H, C
RLC A
JMP LAST3
INITIALISE_CONTROL_DATA1:
MOV B, # 00H
SETB P2.6
JMP LAST3
READ_DATA_CONTROL:
MOV C, 0A1H
RLC A
LAST3:
RET
END
Jeg arbeider med en Akselerometer, kan vi kommunisere til Akselerometer gjennom SPI/I2C. Jeg har utviklet en kode for SPIen hjelp av Software SPI gjennomføring i AT89c52.but det ikke.
Jeg har gjort i henhold til dataarket for Akselerometer.
Jeg gir koden nedenfor og også Dataark av Akselerometer.
kan noen rette meg probllem.
Takke deg på forhånd.
Med hilsen
ParamT2CON EQU 0C8H
T2MOD EQU 0C9H
TH2 EQU 0CDH
TL2 EQU 0CCH
TR2 EQU 0CAH
RCAP2L EQU 0CAH
RCAP2H EQU 0CBH
ET2 EQU 0ADH
TF2 EQU 0CFH
Org 00H
MOV 81H, # 50H
LJMP START
Org 01BH
LJMP IT_TIMER1
START:
MOV B, # 50H
CLR C
RLC A
RLC A
CLR P0.4
CLR P2.3
CLR P2.1
CLR P2.4
CLR P2.5
CLR P2.6
CLR P2.7
SETB EA
MOV TMOD, # 20h
MOV R7, # 02
MOV R0, # 08
MOV R4, # 09
MOV R6, # 02
MOV R2, # 16
MOV R5, # 02
MOV TL1, # 00H
MOV TH1, # 00H
SETB ET1
SETB ET2
SETB TR1
JMP $IT_TIMER1:
MOV TH1, # 00H
CPL P2.3
JB P2.6, hlabel
JNB P2.3, HLABEL
JMP LAST
HLABEL:
JB P2.4, Trinn 1
LCALL CONTROL_WORD
JMP LAST
Trinn 1:
LCALL READ_CONTROL
/ / JB P0.5, STEP0
/ / LCALL READ_X
/ / JMP LAST
/ / STEP0:
/ / JB P0.6, STEP6
/ / LCALL READ_Y
/ / JMP LAST
/ / STEP6:
/ / JB P0.7, STEP7
/ / LCALL READ_Z
/ / JMP LAST
/ / STEP7:
/ / PUSH 01H
/ / CLR TR1
/ / MOV R3, # 05
/ / MOV R5, # 05
/ / MOV R7, # 05
/ / LCALL _calctan
/ / POP 01H
/ / SETB TR1
/ / LCALL RESET
SISTE:
RETI
CONTROL_WORD:
DJNZ R7, ASSERT_CS
MOV R7, # 01
DJNZ R0, LOAD_ADRESS_CONTROL
MOV R0, # 01
DJNZ R6, INITIALISE_CONTROL_DATA
MOV R6, # 01
DJNZ R4, LOAD_DATA_CONTROL
MOV R4, # 01
LCALL INTIALISE_ADRESS
SETB P2.4
JMP LAST2
ASSERT_CS:
CLR P2.0
JMP LAST2
LOAD_ADRESS_CONTROL:
MOV 0A2H, C
RLC A
JMP LAST2
INITIALISE_CONTROL_DATA:
MOV A, # 05H
JMP LAST2
LOAD_DATA_CONTROL:
RLC A
MOV 0A2H, C
LAST2:
RET
INTIALISE_ADRESS:
MOV A, # 10H
RLC A
RLC A
MOV R0, # 08
MOV R4, # 09
MOV R6, # 02
MOV R2, # 16
MOV R7, # 02
MOV R5, # 02
RET
READ_CONTROL:
DJNZ R0, LOAD_ADRESS_CONTROL1
MOV R0, # 01
DJNZ R6, INITIALISE_CONTROL_DATA1
MOV R6, # 01
DJNZ R7, LAST3
MOV R7, # 01
JB P2.3, ylabel
JMP LAST3
ylabel:
DJNZ R4, READ_DATA_CONTROL
MOV R4, # 01
DJNZ R5, LAST3
MOV R5, # 01
CLR P2.6
LCALL INTIALISE_ADRESS
JMP LAST3
LOAD_ADRESS_CONTROL1:
MOV 0A2H, C
RLC A
JMP LAST3
INITIALISE_CONTROL_DATA1:
MOV B, # 00H
SETB P2.6
JMP LAST3
READ_DATA_CONTROL:
MOV C, 0A1H
RLC A
LAST3:
RET
END