Le PIC18LF252


Ce microsite décrit une progression d'apprentissage du fonctionnement des microContrôleurs PIC de Microchip. On commencera par la famille 18F richement dotée en ROM et RAM. Les différences entre les versions 18F et 18LF tiennent aux conditions de tensions d'alimention. , Les différences entre les versions 18XFX52 et 18XFX520 tiennent à la présence de fonctionnalités USB.


X
Modèle BrochesEPROM/RAM/EEPROMIOVDDRS232USB
18F2522832K/16K/256?5VYN

Le montage de base


Aucune entrée/sortie applicatives n'est présentée ici. Seuls les circuits "minimum" sont proposés :


La connexion RS232




La connexion RS232



Calculateur SPBRG (mode asynchrone)

Fréquence de l'oscillateur (Hz) :
BaudRate désirée :
SPBRG (BRGH = 1)
Baud réel (BRGH = 1):
Erreur % (BRGH = 1):
SPBRG (BRGH = 0)
Baud réel (BRGH = 0) :
Erreur (BRGH = 0):
--
#include \
#include 
#include 
#include 

#pragma config OSC = HS      // Oscillator Selection bits (HS oscillator with PLL enabled/Clock frequency = (4 x FOSC))
#pragma config OSCS = OFF       // Oscillator System Clock Switch Enable bit (Oscillator system clock switch option is disabled (main oscillator is source))

// CONFIG2L
#pragma config PWRT = OFF       // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOR = ON         // Brown-out Reset Enable bit (Brown-out Reset enabled)
#pragma config BORV = 25        // Brown-out Reset Voltage bits (VBOR set to 2.5V)

// CONFIG2H
#pragma config WDT = OFF        // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
#pragma config WDTPS = 128      // Watchdog Timer Postscale Select bits (1:128)

// CONFIG4L
#pragma config STVR = ON        // Stack Full/Underflow Reset Enable bit (Stack Full/Underflow will cause Reset)
#pragma config LVP = OFF        // Low-Voltage ICSP Enable bit (Low-Voltage ICSP disabled)

// CONFIG5L
#pragma config CP0 = OFF        // Code Protection bit (Block 0 (000200-001FFFh) not code protected)
#pragma config CP1 = OFF        // Code Protection bit (Block 1 (002000-003FFFh) not code protected)
#pragma config CP2 = OFF        // Code Protection bit (Block 2 (004000-005FFFh) not code protected)
#pragma config CP3 = OFF        // Code Protection bit (Block 3 (006000-007FFFh) not code protected)

// CONFIG5H
#pragma config CPB = OFF        // Boot Block Code Protection bit (Boot Block (000000-0001FFh) not code protected)
#pragma config CPD = OFF        // Data EEPROM Code Protection bit (Data EEPROM not code protected)

// CONFIG6L
#pragma config WRT0 = OFF       // Write Protection bit (Block 0 (000200-001FFFh) not write protected)
#pragma config WRT1 = OFF       // Write Protection bit (Block 1 (002000-003FFFh) not write protected)
#pragma config WRT2 = OFF       // Write Protection bit (Block 2 (004000-005FFFh) not write protected)
#pragma config WRT3 = OFF       // Write Protection bit (Block 3 (006000-007FFFh) not write protected)

// CONFIG6H
#pragma config WRTC = OFF       // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write protected)
#pragma config WRTB = OFF       // Boot Block Write Protection bit (Boot Block (000000-0001FFh) not write protected)
#pragma config WRTD = OFF       // Data EEPROM Write Protection bit (Data EEPROM not write protected)

// CONFIG7L
#pragma config EBTR0 = OFF      // Table Read Protection bit (Block 0 (000200-001FFFh) not protected from Table Reads executed in other blocks)
#pragma config EBTR1 = OFF      // Table Read Protection bit (Block 1 (002000-003FFFh) not protected from Table Reads executed in other blocks)
#pragma config EBTR2 = OFF      // Table Read Protection bit (Block 2 (004000-005FFFh) not protected from Table Reads executed in other blocks)
#pragma config EBTR3 = OFF // Table Read Protection bit (Block 3 (006000-007FFFh) not protected from Table Reads executed in other blocks)
// CONFIG7H #pragma config EBTRB = OFF void interrupt high_isr (void) { char c; if (PIR1bits.RC1IF== 1) { c = getcUSART(); putcUSART(c); } } void main() { int i=0; char c; TRISC = 0x00; PIE1bits.RCIE = 1; //enable USART interrupt INTCONbits.PEIE = 1; INTCONbits.GIE = 1; OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE &USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 129); // 9600 putrsUSART( "Hello World!\n" ); while (1) ; }

Hello world
0 1 2 3 4 5 6 7 8 9

LCD 2x16 car. (HD44780)




RTC





Liens

Tuto1

Lib USB

Les interruction USART sous XC8

USART sous XC8

Lien1

Liens

Les interruction USART sous XC8

USART sous XC8

Lien1