Home Programmering PIC 16F628 PWM Test program
PIC 16F628 PWM Test program PDF Skriv ut E-post
Skrevet av Jens Christoffersen   
fredag 04. mars 2011 19:03

Dette lille programmer, pulserer RB3, som er hardware PWM modulen i 16F628 IC'en.

 

/* 
 
Program:        main.c 
Description:    PWM Test 
PIC:            PIC 16 F 628 
IDE:            MPLAB 
Compiler:        Hi Tech C 
Date:            Mars 2011 
Author:            Jens Christoffersen 
WEB:            www.nerdegutta.org 
*/ 
 
/* Include & definitions */ 
#include  
 
#define _XTAL_FREQ 4000000 
 
/* Configuration */ 
__CONFIG    (WDTDIS & 
PWRTEN & 
MCLREN & 
BOREN & 
LVPDIS & 
DATUNPROT & 
UNPROTECT & 
INTIO); 
 
/* Prototyping function */ 
 
/* Gobal variables */ 
static unsigned char retning; 
 
static void Intr(void) interrupt 0 
{ 
 if(T0IF)    // Har vi fått en timer interupt? 
 { 
 T0IF=0; 
 
 if(retning)    // teller oppover 
 { 
 CCPR1L++; 
 if(CCPR1L == 255) 
 retning=0; 
 } 
 else 
 { 
 CCPR1L--; 
 if(CCPR1L == 0) 
 retning=1; 
 } 
 } 
} // end static void Intr(void) 
 
/* Functions */ 
 
/* Main Program */ 
 
void main() 
{ 
retning=0; 
 
TRISA = 0b11111111; 
TRISB = 0b00000000; 
 
PORTA = 0b00000000; 
PORTB = 0b00000000; 
 
PR2 = 255; // Setter PWM periode 
CCPR1L = 1; // Setter PWM duty cycle 
CCP1CON = 4|8; // Setter PWM mode 
CCP1X = 1;  
 
T2CON = 0x00; 
T2CKPS0 = 1; // Set timer 2 prescaler to 1:16 
T2CKPS1 = 1; // These bits are in T2CON 
TMR2ON = 1; // Enable timer 2 
 
// Set up timer0 interrupt 
T0CS=0;    // Internal clock source 
PSA=0;    // Assign prescaler to timer0 
PS2=0;    PS1=1;    PS0=0; 
INTCON=0; 
GIE=1; 
T0IE=1; 
TMR0=0; 
 
while (1); // Fortsetter inn i evigheten, og forbi 
 
 
}

 

Video:

 

 

 

Sist oppdatert fredag 04. mars 2011 20:20
 
Kopirett © 2012 nerdegutta.org. Alle rettigheter reservert.
Joomla! er fri programvare utgitt under GNU/GPL License.