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: