hi,
the coding of asm
;---------------------- Memory Allocate -------------------------------------
;*****************************************************************
;* *
;* unlimited PWM Subroutines for the 8051 microcontroller *
;* to add more pwm signal. just add memory value and port map *
;*****************************************************************
;---------------------- memory map -----------------------------------------
PWM_swap equ 7fh
PWM_skn equ 7eh ;speed value of right motor
PWM_skr equ 7dh ;speed value of left motor
;---------------------- port map -------------------------------------------
pwmkr bit p0.0
pwmkn bit p0.1
;---------------------- Zero Page ----------------------------------------
org 0H ; Reset
ljmp Begin
; org 03H ; INT 0
; reti
org 0BH ; Timer 0
ljmp PWM_msac
; org 13H ; INT 1
; reti
; org 1BH ; Timer 1
; reti
; org 23H ; Port I/O Serial
; reti
;---------------------- Begin -----------------------------------------------
org 100H
begin: mov TMOD,#22h
mov IE,#10010010b
setb TR0
setb TR1
mov P0,#0h
clr pwmkr
clr pwmkr
start:
mov PWM_skr,#0ddh ;speed value of left motor
mov PWM_skn,#0ffh ;speed value of right motor
sjmp start
;---------------------- PWM Service --------------------------------
PWM_msac: mov PWM_swap,A
mov TH0,#0dch ;cc 60hz, dc 100hz xtall 11.059
djnz R7,Check
setb pwmkn
setb pwmkr
reti
Check: xch A,R7
cjne A,PWM_skn,Check1
clr pwmkn
Check1: cjne A,PWM_skr,PWM_Ret
clr pwmkr
PWM_Ret: xch A,R7
mov A,PWM_swap
reti
end