16F628 PWM LED test
http://www.bristolwatch.com/PIC16F628A/a6.htm
PIC16F628 Pulse Width Modulation Controls Brightness of LED
For how to calculate frequency and duty cycle for PIC PWM 
see Working with Pulse-Width Modulation and the PIC Microcontroller
;********************************************************************** ;Filename: pwmdemo1.asm ;Uses PIC16F628A ;Date: 13 Nov. 2013 ;Author: Lewis Loflin ;http://www.bristolwatch.com ;Uses PWM to control LEDs from off to bight to off again ;Demonstrates the use of loops and PWM ;Delay routines based on 16 mHz external ; ;PWM Period = [(PR2) + 1] * 4 * TOSC * (TMR2 Prescale Value) ;PWM duty cycle = (DCxB9:DCxB0 bits value) * ; Tosc * (TMR2 prescale value) ;Tosc = 16 mHz / 4 ;PWM output PORTB, 3 ;********************************************************************** list p=16f628A ; list directive to define processor #include; processor specific variable definitions errorlevel -302 ; suppress message 302 from list file __CONFIG _CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC ; Use _INTOSC_OSC_NOCLKOUT for ; internal 4 mHz osc and no ext reset, use pin RA5 as an input ; Use _HS_OSC for a 16 mHz ext crystal. ; Use _XT_OSC for 4 mHz ext crystal. Page 95 in spec sheet. ;------------------------------------------------------------ cblock 0x20 ; Begin General Purpose-Register ;-------------------------- counters count1 count2 count3 val endc ORG 0x000 ; processor reset vector goto setup ; go to beginning of program setup ; init PIC16F628A movlw 0x07 ; Turn comparators off and enable pins for I/O movwf CMCON clrf INTCON clrf T2CON clrf TMR2 banksel TRISA ; BSF STATUS,RP0 Jump to bank 1 use BANKSEL instead clrf PIE1 movlw d'255' ; frequency ~ 1000 Hz movwf PR2 clrf TRISA clrf TRISB banksel INTCON ; back to bank 0 clrf PORTB clrf PORTA movlw b'00000111' movwf T2CON ; turn on TMR2 prescale 16 movlw d'0' ; duty cycle = 0% or no output movwf CCPR1L movlw b'00111100' movwf CCP1CON ; turn on PWM goto main main ; first loop increases brightness of LEDs clrf val ; val = 0 gg call delay_100ms movf val, w movwf CCPR1L ; output val to pwm RB3 movlw d'10' addwf val, F ; add 10 to val btfss STATUS, C ; check for carry goto gg ; no carry loop again ; decreases brightness of LEDs movlw 0xFF movwf val hh call delay_100ms movfw val movwf CCPR1L ; save val to register movlw d'10' subwf val, F ; subtract 10 from val save in val btfsc STATUS, C ; check for < 0 goto hh ; no loop again clrf CCPR1L goto main delay_1ms ; 16 mHz crystal, 4 mS with 4 mhz crystal movlw 0x07 movwf count1 aa movlw 0xBC movwf count2 decfsz count2, F goto $-1 decfsz count1, F goto aa return delay_100ms ; 16 mHz crystal, 400 mS with 4 mHz crystal movlw d'99' movwf count3 bb call delay_1ms decfsz count3, F goto bb return END ; directive 'end of program' 

- Projects using PIC16F628:
 - Home Built PIC16F628 Prototyping Board
 - Exploring the Microchip PIC in Assembly
 - Using a Microchip PIC with TLC548 Serial ADC
 - Controlling PIC Pulse Width Modulation with a Serial ADC
 - Using TMR0 on a PIC with Interrupts
 - External Clock Crystal with PIC16F628 TMR1 Generates Interrupt
 - PIC Using Rotary Encoder to Operate Stepper Motor
 - PIC16F628 Pulse Width Modulation Controls Brightness of LED
 - Another way to Turn On-Off PWM in a PIC
 - TLC548 Serial ADC Spec. Sheet
 - You Tube Videos for the Series
 
Related Videos, Links
- Using the MAX7219 with the 18F2550 Programs:
 - MAX7219 Display Driver and a PIC Micro Controller
 - MAX7219 Display Controller in the Non-Decode Mode with PIC
 - YouTube Videos:
 - My YouTube Channel
 - MAX7219 display controller with 8X8 LED Matrix
 - Programming the MAX7219 and 7-Segment Display
 - Schematics and drawings:
 - LED Matrix diagram
 - Connections to MAX7219
 - MAX7219 internal block diagram
 
- Using Hall Effect Sensors with Alternating Current
 - Using Hall Effect Switches and Sensors
 - Using Ratiometric Hall Effect Sensors
 - Using Hall Effect Sensors with the Arduino-ATMEGA168
 - TL173C 12-Volt Ratiometric Hall Sensor (PDF file)
 - UGN3503 5-Volt Ratiometric Hall Effect Sensor (PDF file)
 - SS466 Hall Latch (PDF file)