; ******************************************************************* ; BLINKER.ASM ; slow sine blinker ; ******************************************************************* ; ; 2004 Copyright by Frank Buss ; ******************************************************************* ; LIST P=16F84 #include "P16F84.INC" org 0 ; global variables PWM_COUNT EQU H'10' TMP EQU H'11' PWM_INDEX EQU H'12' ; misc defines W EQU D'0' F EQU D'1' ; program start ; init clrf STATUS clrf INTCON bcf STATUS, RP0 ; select bank 0 movlw D'0' ; set levels low movwf PORTA ; for port a movwf PORTB ; and port b movlw B'11100000' ; set bits 0-4 port a as output bsf STATUS, RP0 ; select bank 1 movwf TRISA - H'80' movwf TRISB - H'80' bcf STATUS, RP0 ; select bank 0 ; main loop DELAY1 call GET_PWM movwf PWM_COUNT movwf TMP DELAY1_LOOP decf TMP, F btfss STATUS, Z ; skip if zero is set goto DELAY1_LOOP movlw D'0' ; set levels low movwf PORTA ; for port a DELAY2 movf PWM_COUNT, W sublw D'0' movwf TMP DELAY2_LOOP decf TMP, F btfss STATUS, Z ; skip if zero is set goto DELAY2_LOOP movlw D'255' ; set levels high movwf PORTA ; for port a incf PWM_INDEX, F goto DELAY1 ; PWM table GET_PWM movlw high PWM_TABLE movwf PCLATH movf PWM_INDEX, W movwf PCL ; change PC to the PWM_TABLE entry org H'100' PWM_TABLE retlw H'80' retlw H'83' retlw H'86' retlw H'89' retlw H'8C' retlw H'8F' retlw H'92' retlw H'95' retlw H'98' retlw H'9B' retlw H'9E' retlw H'A1' retlw H'A4' retlw H'A7' retlw H'AA' retlw H'AD' retlw H'B0' retlw H'B3' retlw H'B5' retlw H'B8' retlw H'BB' retlw H'BE' retlw H'C0' retlw H'C3' retlw H'C6' retlw H'C8' retlw H'CB' retlw H'CD' retlw H'CF' retlw H'D2' retlw H'D4' retlw H'D6' retlw H'D9' retlw H'DB' retlw H'DD' retlw H'DF' retlw H'E1' retlw H'E3' retlw H'E5' retlw H'E7' retlw H'E8' retlw H'EA' retlw H'EC' retlw H'ED' retlw H'EF' retlw H'F0' retlw H'F1' retlw H'F3' retlw H'F4' retlw H'F5' retlw H'F6' retlw H'F7' retlw H'F8' retlw H'F9' retlw H'FA' retlw H'FA' retlw H'FB' retlw H'FC' retlw H'FC' retlw H'FD' retlw H'FD' retlw H'FD' retlw H'FD' retlw H'FD' retlw H'FE' retlw H'FD' retlw H'FD' retlw H'FD' retlw H'FD' retlw H'FD' retlw H'FC' retlw H'FC' retlw H'FB' retlw H'FA' retlw H'FA' retlw H'F9' retlw H'F8' retlw H'F7' retlw H'F6' retlw H'F5' retlw H'F4' retlw H'F3' retlw H'F1' retlw H'F0' retlw H'EF' retlw H'ED' retlw H'EC' retlw H'EA' retlw H'E8' retlw H'E7' retlw H'E5' retlw H'E3' retlw H'E1' retlw H'DF' retlw H'DD' retlw H'DB' retlw H'D9' retlw H'D6' retlw H'D4' retlw H'D2' retlw H'CF' retlw H'CD' retlw H'CB' retlw H'C8' retlw H'C6' retlw H'C3' retlw H'C0' retlw H'BE' retlw H'BB' retlw H'B8' retlw H'B5' retlw H'B3' retlw H'B0' retlw H'AD' retlw H'AA' retlw H'A7' retlw H'A4' retlw H'A1' retlw H'9E' retlw H'9B' retlw H'98' retlw H'95' retlw H'92' retlw H'8F' retlw H'8C' retlw H'89' retlw H'86' retlw H'83' retlw H'80' retlw H'7C' retlw H'79' retlw H'76' retlw H'73' retlw H'70' retlw H'6D' retlw H'6A' retlw H'67' retlw H'64' retlw H'61' retlw H'5E' retlw H'5B' retlw H'58' retlw H'55' retlw H'52' retlw H'4F' retlw H'4C' retlw H'4A' retlw H'47' retlw H'44' retlw H'41' retlw H'3F' retlw H'3C' retlw H'39' retlw H'37' retlw H'34' retlw H'32' retlw H'30' retlw H'2D' retlw H'2B' retlw H'29' retlw H'26' retlw H'24' retlw H'22' retlw H'20' retlw H'1E' retlw H'1C' retlw H'1A' retlw H'18' retlw H'17' retlw H'15' retlw H'13' retlw H'12' retlw H'10' retlw H'0F' retlw H'0E' retlw H'0C' retlw H'0B' retlw H'0A' retlw H'09' retlw H'08' retlw H'07' retlw H'06' retlw H'05' retlw H'05' retlw H'04' retlw H'03' retlw H'03' retlw H'02' retlw H'02' retlw H'02' retlw H'02' retlw H'02' retlw H'02' retlw H'02' retlw H'02' retlw H'02' retlw H'02' retlw H'02' retlw H'03' retlw H'03' retlw H'04' retlw H'05' retlw H'05' retlw H'06' retlw H'07' retlw H'08' retlw H'09' retlw H'0A' retlw H'0B' retlw H'0C' retlw H'0E' retlw H'0F' retlw H'10' retlw H'12' retlw H'13' retlw H'15' retlw H'17' retlw H'18' retlw H'1A' retlw H'1C' retlw H'1E' retlw H'20' retlw H'22' retlw H'24' retlw H'26' retlw H'29' retlw H'2B' retlw H'2D' retlw H'30' retlw H'32' retlw H'34' retlw H'37' retlw H'39' retlw H'3C' retlw H'3F' retlw H'41' retlw H'44' retlw H'47' retlw H'4A' retlw H'4C' retlw H'4F' retlw H'52' retlw H'55' retlw H'58' retlw H'5B' retlw H'5E' retlw H'61' retlw H'64' retlw H'67' retlw H'6A' retlw H'6D' retlw H'70' retlw H'73' retlw H'76' retlw H'79' retlw H'7C' end