0% found this document useful (0 votes)
6 views50 pages

MIC323 - Class 3

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 50

CLASS 3

CLASS 3

 Review INTRODUCTION TO ASSEMBLY


LANGUAGE
 ADDING AND SUBSTRACTING VALUES
 REGISTERS AND OPERATIONS
 TRIS AND PORT REGISTERS
 LED BLINK
what is a “Assembly
Language”?
ASSEMBLY LANGUAGE IS AN EXTREMELY
LOW-LEVEL PROGRAMMING LANGUAGE
THAT HAS A 1-TO-1 CORRESPONDENCE TO
MACHINE CODE — THE SERIES OF BINARY
INSTRUCTIONS WHICH MOVE VALUES IN
AND OUT OF REGISTERS IN A CPU
GENERAL OPERATIONS
MOVLW 0xFF
MOVWF PORTA
ADDLW b101
SUBLW 25
BCF RP1
BSF RP0
ADDING AND SUBSTRACTING
A+B

MOVLW A A w

ADDLW B A+B
w
LET’S PRACTICE

0xF0 + 0x01
A-B

MOVLW B B w

SUBLW A A-B
w
SUBLW subtract W from Literal Operation: k-(W)->W
LET’S PRACTICE

0xFF - 0xAA
REGISTERS AND OPERATIONS
STATUS

To change from Bank 0 to Bank 1 we talk


to the STATUS register. We do this by
setting the RP0 and RP1 bits. In most
cases we’ll be moving only between Bank
0 and Bank 1, thus we can just modify the
value of the bit 5 of the STATUS register.
TRISD is in BANK 1
BCF STATUS, RP1
BSF STATUS, RP0

PORTD is in BANK 0
BCF STATUS, RP1
BCF STATUS, RP0
TRISD is in BANK 1
BCF STATUS, RP1
BSF STATUS, RP0

PORTD is in BANK 0
BCF STATUS, RP1
BCF STATUS, RP0
STATUS
IRP RP1 RP0 TO PD Z DC C
7 6 5 4 3 2 1 0

0: BANK0 1: BANK1
BANK1 0: BANK0
STATUS, 5
IRP RP1 RP0 TO PD Z DC C
7 6 5 4 3 2 1 0

0: BANK0 1: BANK1
BANK1 0: BANK0
TRISD is in BANK 1
BSF STATUS, 5

PORTD is in BANK 0
BCF STATUS, 5
BANK SELECTION
BANK SELECTION
BANK SELECTION
W REGISTER

The W register is a general register in


which you can put any value that you
wish. Once you have assigned a value to
W, you can add it to another value, or
move.
MOVLW

The MOVLW command means ‘Move Literal


Value Into W’, which in English means put
the value that follows directly into the W
register.

MOVLW 0xAA
MOVWF

This instruction means “Move The


Contents Of W Into The Register Address
That Follows”.

MOVWF TRISB
TRIS AND PORT REGISTERS
TRIS

We use the TRIS Register to program a pin


to be an output or an input by simply
sending a 0 or a 1 to the relevant bit in
the register.
MOVLW 0xFF
MOVWF TRISB
TRIS
USE PORT
TO WRITE

USE PORT
TO READ
PORT

To send one of our output pins high, we


simply send a ‘1’ to the corresponding bit
in our PORTx register.

MOVLW 0xFF
MOVWF PORTx
PORTB
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
PORTB
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
PORTB
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
TRISB
PORTB
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
TRISx

PBO MCU PC5


input output
1 0
PORTB.0 = 1
BSF TRISB, 0

PORTC.5 = 0
BCF TRISC, 5
TRISx

PORTB MCU PORTC


input output
TRISx

0xFF -> TRISB

0x00 -> TRISC


TRISx

MOVLW 0xFF
MOVWF TRISB
CLRF TRISC
TURN LEDs ON AND OFF
PORTB
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
ORG 0x00
BSF STATUS, 5
CLRF TRISB
MAIN
BCF STATUS, 5
MOVLW 0xFF
MOVWF PORTB
END
PORTB
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
ORG 0x00
BSF STATUS, 5
CLRF TRISB
MAIN
BCF STATUS, 5
MOVLW 0xAA
MOVWF PORTB
END
PORTC
PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0

1
PORTA
PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0

2
PORTE
PE7 PE6 PE5 PE4 PE3 PE2 PE1 PE0

3
WRITE AN ASSEMBLY PROGRAM IN
ORDER TO TURN ON ONLY
THE FIRST THREE LEDS OF PORTB

4
WRITE AN ASSEMBLY PROGRAM IN
ORDER TO TURN ON
THE EVEN BITS OF PORTA

5
WRITE AN ASSEMBLY PROGRAM IN
ORDER TO TURN ON
THE ODD BITS OF PORTD

6
WRITE AN ASSEMBLY PROGRAM IN
ORDER TO TURN ON ONLY
THE LAST TWO LEDS OF PORTC

7
WRITE AN ASSEMBLY PROGRAM IN
ORDER TO TURN ON
THE EVEN BITS OF PORTB
AND THE ODD BITS OF PORTC

8
THANK YOU

You might also like