Gast
#462367
Hallo,
ich versuche gerade für ein Projekt an der Uni eine PWM mit dem
AT89LP2052/4052 zu realisieren. Eigentlich ganz einfach dachte ich.
Ich habe dazu unten mal meinen Code eingefügt. Diese Funktionen werden
dann von einem anderen Programm aufgerufen. Mein erstes Problem ist, das
ich das ganze noch nicht auf dem µC testen konnte, da wir die leider
noch nicht haben. Also habe ich das ganze mit Keil µVision 3 simuliert.
Funktioniert in der Theorie auch alles so, wie es sollte (der Timer
zählt und lädt auch den Reload wert wieder rein). Das einzige was ich
nicht sehe, ist das sich im Portregister des Port 3 der Wert für P3.4
(der PWM ausgang) ändert. Habe auch einen anderen Code im Internet
gefunden, wo das eigentlich gemacht wird, wie ich es auch mache. Auch
beim dem Code sehe ich nicht wie der Pin seinen Zustand ändert.
Wo liegt nun das Problem? An meinem Code? Oder zeigt mir das µVision
einfach nicht den Zustandswechsel an?
pwm_init:
mov P1M0,#00H ;alle ports quasi bidirektional, 8051 kompatibel
mov P1M1,#00H
mov P3M0,#00H
mov P3M1,#00H
clr TR0 ;Timer 0 anhalten
orl TMOD,#01H ;Timer0, Mode 1
orl TCONB,#40H ;Timer 0 PWM an P3.4
ret
pwm_start:
SETB TR0 ;Timer 0 run bit 1
ret
pwm_laden:
mov TL0,#0FFH ;T0 Prescaler
mov RL0,#0FFH ;Reloadwert
mov TH0,#00H ;T0 Startwert
mov RH0,#0AAH ;Pulsweite
ret