0% found this document useful (0 votes)
64 views13 pages

Assignment 3

This document is a group assignment submission for a microcontroller systems course. It includes: 1) The names of the three students submitting the assignment. 2) The question being answered is to analyze on-chip peripherals and implement a 4-bit calculator using a PIC18F microcontroller in Proteus. 3) The code for the 4-bit calculator implementation is provided. It uses port pins to receive input and display output on an LCD.

Uploaded by

abdullah
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
64 views13 pages

Assignment 3

This document is a group assignment submission for a microcontroller systems course. It includes: 1) The names of the three students submitting the assignment. 2) The question being answered is to analyze on-chip peripherals and implement a 4-bit calculator using a PIC18F microcontroller in Proteus. 3) The code for the 4-bit calculator implementation is provided. It uses port pins to receive input and display output on an LCD.

Uploaded by

abdullah
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 13

COMSATS University Islamabad-Abbottabad Campus

ASSIGNMENT NO: 03
TITLE:
GROUP ASSIGNMENT

SUBMITTED:
 ASIM KHAN FA19-EPE-035

 MUHAMMAD HAMZA SHAUKAT FA19-EPE-009

 ABDULLAH FA20-EPE-002

CLASS:
EPE-5A

SUBJECT:
MSI

SUBMITTED TO:
SIR NAVEED SEIKH
QUESTION:NO:01
Analyze the on-chip peripherals and implement the 4-bit Calculator using
PIC18F in Proteus as per following specifications.

PORTB is used to receive two 4-bit numbers. First number is received through four
most significant bits (RB7-RB4) and Second Number is Received four least significant
bits (RB3-RB0).

RC0 and RC1 are connected to two different switches.

Status of switches dictates operation to be


performed in calculator. Results must be shown
using LCD.

RC RC Operation Result
0 1
0 0 Addition First Number +Second
Number
0 1 Subtraction First Number- Second
Number
1 0 Multiplicati First Number x Second
on Number
1 1 Division First Number / second
Number

CODE:
LIST P=PIC18F452,F=INHX32,N=0,ST=OFF,R=HEX
#INCLUDE P18F452.INC
config
OSC=HS,OSCS=OFF,WDT=OFF,BORV=45,PWRT=ON,BOR=ON,DEBUG=OFF,LVP=OFF,ST
VR=OFF
ORG 2AH

ANS EQU 08H


A1 EQU 02H
A2 EQU 03H
QUOTIENT EQU 04H
REMAINDER EQU 05H

LCD_DATA EQU PORTD


LCD_CTRL EQU PORTC
RS EQU RC3
RW EQU RC4
EN EQU RC5

V EQU 20H
B EQU 21H
M EQU 22H

SETF TRISB
CLRF TRISD
BSF TRISC,0
BSF TRISC,1
BCF TRISC,3
BCF TRISC,4
BCF TRISC,5

BCF LCD_CTRL,EN

MOVLW 38H
CALL COMNWRT
CALL LDELAY
MOVLW 0CH
CALL COMNWRT
CALL DELAY
MOVLW 01H
CALL COMNWRT
CALL DELAY
MOVLW 06H
CALL COMNWRT
CALL DELAY

REP
MOVLW 01H
CALL COMNWRT
CALL DELAY

MOVFF PORTB,00H
MOVLW B'00001111'
ANDWF 00H,W
MOVWF A2

MOVFF PORTB,00H
SWAPF 00H
MOVLW B'00001111'
ANDWF 00H,W
MOVWF A1

MOVLW B'00000011'
ANDWF PORTC,W

CLRF 00H
CPFSEQ 00H
BRA QW
CALL ADDITION
BRA REP

QW
BSF 00H,0
CPFSEQ 00H
BRA QW1
CALL SUBTRACT
BRA REP
QW1
BCF 00H,0
BSF 00H,1
CPFSEQ 00H
BRA QW2
CALL MULTIPLY
BRA REP

QW2
BSF 00H,0
CPFSEQ 00H
BRA REP
CALL DIVISION
BRA REP

ADDITION
MOVF A1,W
ADDWF A2,W
MOVWF ANS

MOVLW 80H
CALL COMNWRT
CALL DELAY
MOVF A1,W
CALL NUM
MOVF V,W
CALL DATAWRT
CALL DELAY
MOVF B,W
CALL DATAWRT
CALL DELAY
MOVF M,W
CALL DATAWRT
CALL DELAY
MOVLW A'+'
CALL DATAWRT
CALL DELAY
MOVF A2,W
CALL NUM
MOVF V,W
CALL DATAWRT
CALL DELAY
MOVF B,W
CALL DATAWRT
CALL DELAY
MOVF M,W
CALL DATAWRT
CALL DELAY
MOVLW A'='
CALL DATAWRT
CALL DELAY
MOVF ANS,W
CALL NUM
MOVF V,W
CALL DATAWRT
CALL DELAY
MOVF B,W
CALL DATAWRT
CALL DELAY
MOVF M,W
CALL DATAWRT
CALL LDELAY
RETURN

SUBTRACT
MOVF A2,W
SUBWF A1,W
MOVWF ANS

MOVLW 80H
CALL COMNWRT
CALL DELAY
MOVF A1,W
CALL NUM
MOVF V,W
CALL DATAWRT
CALL DELAY
MOVF B,W
CALL DATAWRT
CALL DELAY
MOVF M,W
CALL DATAWRT
CALL DELAY
MOVLW A'-'
CALL DATAWRT
CALL DELAY
MOVF A2,W
CALL NUM
MOVF V,W
CALL DATAWRT
CALL DELAY
MOVF B,W
CALL DATAWRT
CALL DELAY
MOVF M,W
CALL DATAWRT
CALL DELAY
MOVLW A'='
CALL DATAWRT
CALL DELAY
MOVF ANS,W
CALL NUM
MOVF V,W
CALL DATAWRT
CALL DELAY
MOVF B,W
CALL DATAWRT
CALL DELAY
MOVF M,W
CALL DATAWRT
CALL LDELAY
RETURN

MULTIPLY
MOVF A1,W
MULWF A2

MOVLW 80H
CALL COMNWRT
CALL DELAY
MOVF A1,W
CALL NUM
MOVF V,W
CALL DATAWRT
CALL DELAY
MOVF B,W
CALL DATAWRT
CALL DELAY
MOVF M,W
CALL DATAWRT
CALL DELAY
MOVLW A'*'
CALL DATAWRT
CALL DELAY
MOVF A2,W
CALL NUM
MOVF V,W
CALL DATAWRT
CALL DELAY
MOVF B,W
CALL DATAWRT
CALL DELAY
MOVF M,W
CALL DATAWRT
CALL DELAY
MOVLW A'='
CALL DATAWRT
CALL DELAY
MOVF PRODL,W
CALL NUM
MOVF V,W
CALL DATAWRT
CALL DELAY
MOVF B,W
CALL DATAWRT
CALL DELAY
MOVF M,W
CALL DATAWRT
CALL LDELAY
RETURN

DIVISION
MOVFF A1,06H
MOVF A2,W
CLRF QUOTIENT
ABC
INCF QUOTIENT
SUBWF 06H,F
BNN ABC
DECF QUOTIENT
ADDWF 06H,F
MOVFF 06H,REMAINDER

MOVLW 80H
CALL COMNWRT
CALL DELAY
MOVF A1,W
CALL NUM
MOVF V,W
CALL DATAWRT
CALL DELAY
MOVF B,W
CALL DATAWRT
CALL DELAY
MOVF M,W
CALL DATAWRT
CALL DELAY
MOVLW A'/'
CALL DATAWRT
CALL DELAY
MOVF A2,W
CALL NUM
MOVF V,W
CALL DATAWRT
CALL DELAY
MOVF B,W
CALL DATAWRT
CALL DELAY
MOVF M,W
CALL DATAWRT
CALL DELAY
MOVLW A'='
CALL DATAWRT
CALL DELAY
MOVF QUOTIENT,W
CALL NUM
MOVF V,W
CALL DATAWRT
CALL DELAY
MOVF B,W
CALL DATAWRT
CALL DELAY
MOVF M,W
CALL DATAWRT
CALL LDELAY
MOVLW D'32'
CALL DATAWRT
CALL DELAY
MOVLW A'R'
CALL DATAWRT
CALL DELAY
MOVLW A'='
CALL DATAWRT
CALL DELAY
MOVF REMAINDER,W
CALL NUM
MOVF M,W
CALL DATAWRT
CALL LDELAY
RETURN

COMNWRT
MOVWF LCD_DATA
BCF LCD_CTRL,RS
BCF LCD_CTRL,RW
BSF LCD_CTRL,EN
CALL SDELAY
BCF LCD_CTRL,EN
RETURN

DATAWRT
MOVWF LCD_DATA
BSF LCD_CTRL,RS
BCF LCD_CTRL,RW
BSF LCD_CTRL,EN
CALL SDELAY
BCF LCD_CTRL,EN
RETURN

SDELAY
MOVLW 8H
MOVWF T0CON
MOVLW 0C1H
MOVWF TMR0L
BCF INTCON,TMR0IF
BSF T0CON,7
ABC1
BTFSS INTCON,TMR0IF
BRA ABC1
BCF T0CON,7
RETURN

DELAY
MOVLW 48H
MOVWF T0CON
MOVLW 0F6H
MOVWF TMR0H
MOVLW 03CH
MOVWF TMR0L
BCF INTCON,TMR0IF
BSF T0CON,7
ABC2
BTFSS INTCON,TMR0IF
BRA ABC2
BCF T0CON,7
RETURN

LDELAY
MOVLW 45H
MOVWF T0CON
MOVLW 67H
MOVWF TMR0H
MOVLW 69H
MOVWF TMR0L
BCF INTCON,TMR0IF
BSF T0CON,7
ABC3
BTFSS INTCON,TMR0IF
BRA ABC3
BCF T0CON,7
RETURN

NUM
MOVWF 05H
MOVLW D'199'
CPFSGT 05H
BRA XY
MOVLW 32H
MOVWF V
MOVLW D'200'
SUBWF 05H,F
BRA DFG
XY
MOVLW D'99'
CPFSGT 05H
BRA XY1
MOVLW 31H
MOVWF V
MOVLW D'100'
SUBWF 05H,F
BRA DFG
XY1
MOVLW 30H
MOVWF V
DFG
MOVLW D'89'
CPFSGT 05H
BRA XY2
MOVLW 39H
MOVWF V
MOVLW D'90'
SUBWF 05H,F
BRA DFG1
XY2
MOVLW D'79'
CPFSGT 05H
BRA XY3
MOVLW 38H
MOVWF B
MOVLW D'80'
SUBWF 05H,F
BRA DFG1
XY3
MOVLW D'69'
CPFSGT 05H
BRA XY4
MOVLW 37H
MOVWF B
MOVLW D'70'
SUBWF 05H,F
BRA DFG1
XY4
MOVLW D'59'
CPFSGT 05H
BRA XY5
MOVLW 36H
MOVWF B
MOVLW D'60'
SUBWF 05H,F
BRA DFG1
XY5
MOVLW D'49'
CPFSGT 05H
BRA XY6
MOVLW 35H
MOVWF B
MOVLW D'50'
SUBWF 05H,F
BRA DFG1
XY6
MOVLW D'39'
CPFSGT 05H
BRA XY7
MOVLW 34H
MOVWF B
MOVLW D'40'
SUBWF 05H,F
BRA DFG1
XY7
MOVLW D'29'
CPFSGT 05H
BRA XY8
MOVLW 33H
MOVWF B
MOVLW D'30'
SUBWF 05H,F
BRA DFG1
XY8
MOVLW D'19'
CPFSGT 05H
BRA XY9
MOVLW 32H
MOVWF B
MOVLW D'20'
SUBWF 05H,F
BRA DFG1
XY9
MOVLW D'09'
CPFSGT 05H
BRA XY10
MOVLW 31H
MOVWF B
MOVLW D'10'
SUBWF 05H,F
BRA DFG1
XY10
MOVLW 30H
MOVWF B
DFG1
MOVLW 30H
ADDWF 05H,W
MOVWF M
RETURN

END

SCREENSHOT:
FOR ADDITION:
FOR SUBSTRACTION:

FOR MULTIPLICATION:
FOR DIVISION:

You might also like