Witam.
PCF8591 połączyłem z AT89S8252.
Napisałem program do odczytu wartości z wejścia analogowego oraz drugi program do wystawiania wartości na wyjściu analogowym.
Osobno programy te działają prawidłowo. Jednak po połączeniu ich wykazuje program problem z komunikacją.
Poniżej przedstawiam listing.
Proszę o uwagi dotyczące błędów.
Grzegorz.
$include(at89s8252.inc)
sda equ P1.6
scl equ P1.7
org 0100h
clr C
call Start
jc Blod
mov A,#10010001b
acall Wyslij
jc Blod
mov A,#00000000b
call Wyslij
jc Blod
call Odczyt
call Potwierdz
call Odczyt
call Potwierdz
mov P3,A
mov R4,A
clr A
clr C
call Start
jc Blod
mov A,#10010000b
call Wyslij
jc Blod
mov A,#01000000b
call Wyslij
jc Blod
mov A,R4
call Wyslij
jc Blod
call Stop
sjmp $
Start:
setb sda
setb scl
call Stabil
jnb sda,Blod
jnb scl,Blod
clr sda
call Stabil
clr scl
clr C
ret
Stabil:
nop
ret
Blod:
mov A,#00000000b
mov P3,A
aCall Stabil
setb C
ret
Wyslij:
mov R7,#00001000b
Wy:
rlc A
mov sda,C
acall Stabil
setb scl
acall Stabil
clr scl
djnz R7,Wy
setb sda
acall Stabil
setb scl
acall Stabil
mov C,sda
clr scl
ret
Odczyt:
setb sda
mov R6,#00001000b
Od:
acall Stabil
setb scl
acall Stabil
mov C,sda
clr scl
rlc A
djnz R6,Od
ret
Potwierdz:
clr sda
acall Stabil
setb scl
acall Stabil
clr scl
ret
Stop:
clr sda
setb scl
acall Stabil
setb sda
ret
end.
PCF8591 połączyłem z AT89S8252.
Napisałem program do odczytu wartości z wejścia analogowego oraz drugi program do wystawiania wartości na wyjściu analogowym.
Osobno programy te działają prawidłowo. Jednak po połączeniu ich wykazuje program problem z komunikacją.
Poniżej przedstawiam listing.
Proszę o uwagi dotyczące błędów.
Grzegorz.
$include(at89s8252.inc)
sda equ P1.6
scl equ P1.7
org 0100h
clr C
call Start
jc Blod
mov A,#10010001b
acall Wyslij
jc Blod
mov A,#00000000b
call Wyslij
jc Blod
call Odczyt
call Potwierdz
call Odczyt
call Potwierdz
mov P3,A
mov R4,A
clr A
clr C
call Start
jc Blod
mov A,#10010000b
call Wyslij
jc Blod
mov A,#01000000b
call Wyslij
jc Blod
mov A,R4
call Wyslij
jc Blod
call Stop
sjmp $
Start:
setb sda
setb scl
call Stabil
jnb sda,Blod
jnb scl,Blod
clr sda
call Stabil
clr scl
clr C
ret
Stabil:
nop
ret
Blod:
mov A,#00000000b
mov P3,A
aCall Stabil
setb C
ret
Wyslij:
mov R7,#00001000b
Wy:
rlc A
mov sda,C
acall Stabil
setb scl
acall Stabil
clr scl
djnz R7,Wy
setb sda
acall Stabil
setb scl
acall Stabil
mov C,sda
clr scl
ret
Odczyt:
setb sda
mov R6,#00001000b
Od:
acall Stabil
setb scl
acall Stabil
mov C,sda
clr scl
rlc A
djnz R6,Od
ret
Potwierdz:
clr sda
acall Stabil
setb scl
acall Stabil
clr scl
ret
Stop:
clr sda
setb scl
acall Stabil
setb sda
ret
end.