Available output pins:
- PORTA: RA0 through RA6 gives 7 outputs
- PORTB: RB0 through RA7 gives 8 outputs
- PORTC: RC0 through RC2, RC6 & RC7 gives 5 outputs
Configure options:
- FOSC = INTOSCIO_EC //using the internal oscillator will free pins RA5 and RA6
- LVP = OFF //you don't have to ground RB5 anymore
- PBADEN = OFF //disable the analog inputs on RB0 through RB4
- DEBUG = OFF //disable debug output, free RB6 and RB7
- ADCON1 = 0x0F; //disable analog inputs on RA0 through RA3
One comment on using RB6 & RB7: You'll have to interface these pins over at least 10k resistors to be able to do ICSP programming on these pins. If you can avoid it, don't use these pins for I/O in your circuit.
Testing code:
#include <p18cxxx.h>
#pragma config MCLRE = ON //MCLR pin enabled; RE3 digital input disabled
#pragma config WDT = OFF //HW Disabled - SW Controlled
#pragma config BOR = OFF //Brown-out Reset disabled in hardware and software
#pragma config FOSC = INTOSCIO_EC //Internal oscillator, port function on RA6, EC used by USB
#pragma config LVP = OFF //Single-Supply ICSP disabled, free RB5
#pragma config PBADEN = OFF //RB0 through RB4 pins are configured as digital I/O on reset
#pragma config DEBUG = OFF //Background debugger disabled, RB6 and RB7 configured as I/O pins on reset
void main ( void );
void init ( void );
void init (void)
{
OSCCON = 0xFF; //8MHz internal clock
//1ms = 2000000 Instructions
ADCON1 = 0x0F; //Set multiplexed pins on PORTA to digital
TRISA = 0x00; //Configure RA0 through RA6 as output
TRISB = 0x00; //Configure PORTB as output
TRISC = 0x00; //Configure RC0:RC3, RC6:RC7 as output
LATA = 0x00; //Reset Pins
LATB = 0x00;
LATC = 0x00;
}
void main (void)
{
init();
LATA = 0x7F; //01111111
LATB = 0x3F; //00111111
LATC = 0xC7; //11000111
while (1) {}
}Result
My PIC18F2550 controlling 18 low-current (!) LED independently. RC6 and RC7 were needed for ICSP.The maximum rated current per Pin is 20mA, Vss (Ground) can only handle 200mA. Caution: Using standard LED would fry the ports!
Keine Kommentare:
Kommentar veröffentlichen