AT89S52 PWM řízení pomocí tlačítka pro zm. / zvětšení střídy

Zdravím,

programuji přes asembler S52. Potřebuji udělat Pwm řízení pomocí tlačítka (tlačítko up a down =>zmenšení zvětšení střídy)

tenhle kod jsem našel pro řízení přes pwm ale není zde možnost nastavení střídy pomocí tlačítek.

    PWMPIN EQU P1.0         ; PWM output pin

PWM_SETUP:
MOV TMOD,#00H ; Timer0 in Mode 0
MOV R7, #160 ; R7=0 0V R7=255 5V
SETB EA ; Enable Interrupts
SETB ET0 ; Enable Timer 0 Interrupt
SETB TR0 ; Start Timer
RET

TIMER_0_INTERRUPT:
JB F0, HIGH_DONE ; If F0 flag is set then we just finished
; the high section of the
LOW_DONE: ; cycle so Jump to HIGH_DONE
SETB F0 ; Make F0=1 to indicate start of high section
SETB PWMPIN ; Make PWM output pin High
MOV TH0, R7 ; Load high byte of timer with R7
; (pulse width control value)
CLR TF0 ; Clear the Timer 0 interrupt flag
RETI ; Return from Interrupt to where
; the program came from
HIGH_DONE:
CLR F0 ; Make F0=0 to indicate start of low section
CLR PWMPIN ; Make PWM output pin low
MOV A, #0FFH ; Move FFH (255) to A
CLR C ; Clear C (the carry bit) so it does
; not affect the subtraction
SUBB A, R7 ; Subtract R7 from A. A = 255 - R7.
MOV TH0, A ; so the value loaded into TH0 + R7 = 255
CLR TF0 ; Clear the Timer 0 interrupt flag
RETI ; Return from Interrupt to where
; the program came from

Dělal už někdy podobnou věc pro S52? Zmíněný program je pro řadu 8051 . Jestli někdo zná nějakou stránku či sám dělal byl bych rád za každou radu.

Děkuji za odpoveďi.

:arrow_right: administrator: přejmenováno z "AT89S52 PWM - help"

expertcore.org/viewtopic.php?t=302

(viz prog)