Potrzebuje pomocy w programie w EdSim51. Mój program powinien wykonywać 3 obroty i 2 w lewo i tak się dzieje ale co drugi cykl nie działa funkcja stop i silnik się odchyla po czym wraca do położenia czujnika i liczy to jako obrót. Problem polega na tym że na mostku po procedurze CLR P3.0 ze stanu 1 0 zmienia się na 0 0 a ze stanu 0 1 nie tylko zostaje 0 1. jak to rozwiązać. Oto kod źródłowy mojego programu:
Kod: Zaznacz cały
ORG 0
JMP main
ORG 001Bh
JMP main2
ORG 030h
main:
MOV TMOD, #060h
SETB ET1
SETB EA
MOV TL1, #0FDh
SETB TR1
CLR P3.1 ;w prawo
CLR C
JMP $
main2:
CLR P3.0 ;stop
CLR P3.1
CLR TR1
if1: JC else1
MOV TL1, #0FEh
SETB P3.1 ;w lewo
JMP endif1
else1:
MOV TL1, #0FDh
SETB P3.0 ;w prawo
endif1:
SETB TR1
CPL C
RETI