;---------------------- Memory Allocate ------------------------------------- ;***************************************************************** ;* * ;* unlimited PWM Subroutines for the 8051 microcontroller * ;* m suzatob aang c, 2005 * ;* 4th floor b402-Electronic Engineering - ITS * ;* surabaya indonesia * ;* 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 ;mengaktifkan interupt 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