Input/Output Ports and Interfacing: Digital Systems Engineering
Input/Output Ports and Interfacing: Digital Systems Engineering
330_09 2
I/O Interfacing
330_09 3
Interfacing and Addressing
I/O ports
Buffers and latches on the MCU chip
Assigned binary addresses by decoding the address bus
Generally bidirectional
Internal data direction registers
To read binary data from an input peripheral
MPU places the address of an input port on the address bus
Enables the input port by asserting the RD signal
Reads data using the data bus
To write binary data to an output peripheral
MPU places the address of an output port on the address bus
Places data on data bus
Asserts the WR signal to enable the output port
330_09 4
PIC18F452/4520 I/O Ports
MCU includes five I/O ports
PORTA, PORTB, PORTC, PORTD, PORTE
Ports are multiplexed
Can be set up to perform various functions
Each I/O port is associated with several SFRs
PORT
Functions as a latch or a buffer
TRIS
Data direction register
Logic 0 sets up the pin as an output
Logic 1 sets up the pin as an input
LAT
Output latch similar to PORT
330_09 5
PIC18F452/4520 I/O Ports
PORTA: Example of Multiple Fns
Digital I/O: RA6-RA0
Analog Input: AN0-AN4
V REF+ : A/D Reference Plus V
V REF- : A/D Reference Minus V
TOCK1: Timer0 Ext. Clock
SS: SPI Slave Select Input
LVDIN: Low V Detect Input
330_09 6
PIC18F452/4520 I/O Ports
PORTB
330_09 7
I/O Example
Write instructions to set up pins RB7-RB4 of
PORTB as inputs and pins RB3-RB0 as outputs
330_09 8
Interfacing Output Peripherals
Commonly used output peripherals in embedded systems
LEDs
Seven-Segment Displays
LCDs
330_09 9
Interfacing Output Peripherals
330_09 11
Seven-Segment Display
Common Anode
All anodes are connected together to a power supply
Cathodes are connected to data lines
Logic 0 turns on a segment
Example: To display the digit 1
All segments except b and c should be off
11111001 = F9H
Common Anode
330_09 12
Seven-Segment Display
Common Cathode
All cathodes are connected together to ground
Anodes are connected to data lines
Logic 1 turns on a segment
Example: To display digit 1
All segments except b and c should be off
00000110 = 06H
330_09 13
Example 9.4
Interfacing Seven-Segment Display to PORTB
Common Anode
Table Look-Up
330_09 14
Illustrative Program
Problem Statement
Interface two common-anode seven-segment
displays to PORTD and PORTC of the PIC18F
Write instructions to implement an up-counter,
counting from 00 to 59
Display the count on the two seven-segment
displays
330_09 15
Interfacing Input Peripherals
Commonly used input peripherals
DIP switches, push-button keys, keyboards, and A/D converters
DIP switch
One side of the switch is tied high
To a power supply through a resistor called a pull-up resistor
The other side is grounded
The logic level changes when the position is switched
Push-button key
Same as the DIP switch except that contact is momentary
330_09 16
Interfacing Dip Switches
330_09 17
Reading from an I/O Port
Read input switches on PORTB (RB7-RB4)
RB0 set HI (1)
Switches Open = LOW (0)
Switches Closed = HIGH (1)
Display on PORTC
Opcode Operands Comments
MOVLW 0xF0 ;Load B’11110000’ into WREG
MOVWF TRISB ;Set PORTB TRIS Reg
CLRF TRISC ;Set PORTC as Output
BSF PORTB,0 ;Set RB0 High
MOVF PORTB,W ;Read PORTB
MOVWF PORTC ;Display on PORTC
330_09 18
Interfacing LCD
Software
To write into the LCD
Send the initial instructions to set up the LCD
4-bit or 8-bit mode
Continue to check DB7 until it goes low
Write instructions to IR to set up LCD parameters
Number of display lines and cursor status
Write data to display a message
330_09 19