#include "c:\miniide\hcs12.inc" org $1000 dim_cnt rmb 1 org $1500 movb #$0,PWMCLK ; select clock A as the clock source movb #$01,PWMPOL ; make waveform to start with high level movb #$0C,PWMCTL ; select 8-bit mode movb #02,PWMPRCLK ; set clock prescaler to 4 movb #0,PWMCAE ; select left-aligned mode movb #100,PWMPER0 ; set period value (PWM frequency doesn't matter) movb #100,PWMDTY0 ; set duty value bset PWME,$01 ; enable PWM channel 0 ; The following instruction segment reduces duty count by 1 per 100 ms movb #10,dim_cnt loop1 ldy #1 jsr delayby100ms dec PWMDTY0 ; decrement duty by 1 dec dim_cnt bne loop1 ; The following instruction segment reduces duty count by 2 per 100 ms in four seconds movb #40,dim_cnt loop2 ldy #1 ; wait for 100 ms jsr delayby100ms ; " dec PWMDTY0 ; decrement duty cycle by 2% dec PWMDTY0 ; per 100 ms dec dim_cnt bne loop2 swi #include "c:\miniide\delay.asm" end