Wednesday, September 29, 2021

Using Digital I/O of PIC18F1220

 

Introduction

PIC18F1220 has two 8-bit digital I/O ports – Port A and Port B. They are bi-directional readable and writable. Their data directions are controlled by their TRIS registers.

Using Digital I/O of PIC18F1220

Port A

Port A data direction is controlled by TRISA. Setting this registers allowing this port to accept input data, otherwise outputting digital data.

PORTA is considered as an input buffer. LATA is an output buffer. These two registers must be cleared before configuring its data direction.

Using Digital I/O of PIC18F1220
Pin diagram of PIC18F1220

Port B

Port B data direction is controlled by TRISB. Setting this register allowing this port to accept input data, otherwise outputting digital data.

PORTB is considered as an input buffer. LATB is an output buffer. These two registers must be cleared before configuring its data direction.

Port B Programming Example

Since Port A and Port B are multiplexed with analog input function. I decided to select some pin of Port B that are solely digital I/O pin.

Schematic Diagram

RB6 of Port B is selected as a digital input pin connecting to a push button. RB7 connects to an output LED. Whenever push button is pressed the controller toggle output LED.

Using Digital I/O of PIC18F1220
Schematic Diagram

External crystal oscillator has a frequency of 4MHz.

MPLABX XC8 Programming

This introductory tutorial is written in XC8 in MPLABX IDE. Overall program made of a dozen of lines.

C

Configuration bit of PIC18F1220 putted separately in “config.h” file.

C

Click here to download zip file of this programming example.

Search This Blog

Labels

25AA010A (1) 8051 (7) 93AA46B (1) ADC (30) Analog Comparator (1) Arduino (15) ARM (6) AT89C52 (7) ATMega32 (56) AVR (57) CCS PICC (28) DAC (1) DHT11 (2) Display (105) Distance Sensor (3) DS18B20 (3) dsPIC (2) dsPIC30F1010 (2) EEPROM (5) Environment Sensor (4) esp8266 (1) I2C (29) Input/Output (67) Interrupt (19) Keil (5) Keypad (10) LCD (47) Master/Slave (1) MAX7221 (1) MCP23017 (5) MCP23S17 (4) Meter (3) MikroC (2) Motor (15) MPLABX (71) Nokia 5110 LCD (3) OLED (2) One-Wire (6) Oscillator (8) PCB (6) PCD8544 (3) PCF8574 (5) PIC (107) PIC12F (2) PIC16F628A (2) PIC16F630 (1) PIC16F716 (3) PIC16F818 (10) PIC16F818/819 (2) PIC16F84A (15) PIC16F876A (1) PIC16F877A (9) PIC16F88 (1) PIC16F887 (60) PIC18 (19) PIC18F1220 (4) PIC18F2550 (3) PIC18F4550 (12) PWM (11) RTC (8) Sensor (10) SH1106 (1) Shift Register (11) Shift Registers (3) SPI (24) STM32 (6) STM32 Blue Pill (6) STM32CubeIDE (6) STM32F103C8T6 (6) SysTick (3) temperature sensor (11) Thermometer (21) Timer/Counter (31) TM1637 (2) UART (7) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (94)