0% found this document useful (0 votes)
9 views36 pages

Final Codes WM

This document contains assembly code for the PIC18F452 microcontroller, focusing on initializing a 2x16 LCD display and handling various interrupts. It includes routines for displaying messages and managing Timer 0 interrupts. The code is structured with multiple interrupt service routines (ISRs) for handling external interrupts and timer events.

Uploaded by

ibrahimabbas8899
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)
9 views36 pages

Final Codes WM

This document contains assembly code for the PIC18F452 microcontroller, focusing on initializing a 2x16 LCD display and handling various interrupts. It includes routines for displaying messages and managing Timer 0 interrupts. The code is structured with multiple interrupt service routines (ISRs) for handling external interrupts and timer events.

Uploaded by

ibrahimabbas8899
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

#INCLUDE<P18F452.

INC>

LIST P=PIC18F452, F=INHX32, N=0, ST=OFF, R=HEX

config OSC=HS, OSCS=OFF, WDT=OFF, BORV=45, PWRT=ON, BOR=ON, DEBUG=OFF, LVP=OFF,


STVR=OFF

ORG 0X00 ; Origin of the code at address 0x00

GOTO MAIN ; Jump to the MAIN routine

ORG 0X08

BTFSC INTCON,INT0IF ; Origin of the code at address 0x08 (interrupt vector for external interrupt 0)

GOTO ISR_MACHINE ; Test if external interrupt 0 flag is set

BTFSC INTCON3,INT1IF ; Jump to ISR_MACHINE if the flag is set

GOTO ISR_MIX ; Test if external interrupt 1 flag is set

BTFSC INTCON,TMR0IF ; Jump to ISR_MIX if the flag is set

GOTO ISR_COUNT ; Test if Timer 0 overflow flag is set

BTFSC INTCON3,INT2IF ; Jump to ISR_COUNT if the flag is set

GOTO ISR_ALERT ; Test if external interrupt 2 flag is set

RETFIE ; Jump to ISR_ALERT if the flag is set

MAIN

ORG 150H ; Origin of the code at address 0x150

; Initialization code for a 2x16 LCD display!

MOVLW 07H

MOVWF T0CON

CLRF TRISD

CLRF TRISC

BCF LCD_CTRL,EN

MOVLW 38H

CALL COMNWRT

CALL LDELAY

MOVLW 0EH
CALL COMNWRT

CALL DELAY

MOVLW 01H

CALL COMNWRT

CALL DELAY

MOVLW 06H

CALL COMNWRT

CALL DELAY

MOVLW 80H

CALL COMNWRT

CALL DELAY

MOVLW A'P'

CALL DATAWRT

CALL DELAY

MOVLW A'R'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

MOVLW A'S'

CALL DATAWRT

CALL DELAY

MOVLW A'S'

CALL DATAWRT

CALL DELAY

MOVLW D'32'

CALL DATAWRT

CALL DELAY

MOVLW A'B'

CALL DATAWRT
CALL DELAY

MOVLW A'U'

CALL DATAWRT

CALL DELAY

MOVLW A'T'

CALL DATAWRT

CALL DELAY

MOVLW A'T'

CALL DATAWRT

CALL DELAY

MOVLW A'O'

CALL DATAWRT

CALL DELAY

MOVLW A'N'

CALL DATAWRT

CALL DELAY

MOVLW 0C0H

CALL COMNWRT

CALL DELAY

MOVLW A'T'

CALL DATAWRT

CALL DELAY

MOVLW A'O'

CALL DATAWRT

CALL DELAY

MOVLW D'32'

CALL DATAWRT

CALL DELAY

MOVLW A'S'

CALL DATAWRT

CALL DELAY
MOVLW A'T'

CALL DATAWRT

CALL DELAY

MOVLW A'A'

CALL DATAWRT

CALL DELAY

MOVLW A'R'

CALL DATAWRT

CALL DELAY

MOVLW A'T'

CALL DATAWRT

CALL DELAY

BSF INTCON,TMR0IE ; Enable Timer 0 overflow interrupt

BSF INTCON,INT0IE ; Enable external interrupt 0

BSF INTCON,GIE ; Enable global interrupt

IBRAHIM BRA IBRAHIM ; Infinite loop

ISR_MACHINE

ORG 400H

LCD_DATA EQU PORTD

LCD_CTRL EQU PORTC

RS EQU RC0

RW EQU RC1

EN EQU RC2

MOVLW 07H

MOVWF T0CON

CLRF TRISD

CLRF TRISC

BCF LCD_CTRL,EN

MOVLW 38H

CALL COMNWRT
CALL LDELAY

MOVLW 0EH

CALL COMNWRT

CALL DELAY

MOVLW 01H

CALL COMNWRT

CALL DELAY

MOVLW 06H

CALL COMNWRT

CALL DELAY

MOVLW 80H

CALL COMNWRT

CALL DELAY

MOVLW A'W'

CALL DATAWRT

CALL DELAY

MOVLW A'A'

CALL DATAWRT

CALL DELAY

MOVLW A'T'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

MOVLW A'R'

CALL DATAWRT

CALL DELAY

MOVLW D'32'

CALL DATAWRT

CALL DELAY
MOVLW A'I'

CALL DATAWRT

CALL DELAY

MOVLW A'S'

CALL DATAWRT

CALL DELAY

MOVLW 0C0H

CALL COMNWRT

CALL DELAY

MOVLW A'C'

CALL DATAWRT

CALL DELAY

MOVLW A'H'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

MOVLW A'C'

CALL DATAWRT

CALL DELAY

MOVLW A'K'

CALL DATAWRT

CALL DELAY

MOVLW A'I'

CALL DATAWRT

CALL DELAY

MOVLW A'N'

CALL DATAWRT

CALL DELAY

MOVLW A'G'
CALL DATAWRT

CALL DELAY

BCF INTCON,INT0IF

BSF INTCON3,INT1IE

BSF INTCON3,INT2IE

RETFIE

ISR_MIX

ORG 600H

MOVLW 07H

MOVWF T0CON

CLRF TRISD

CLRF TRISC

BCF LCD_CTRL,EN

MOVLW 38H

CALL COMNWRT

CALL LDELAY

MOVLW 0EH

CALL COMNWRT

CALL DELAY

MOVLW 01H

CALL COMNWRT

CALL DELAY

MOVLW 06H

CALL COMNWRT

CALL DELAY

MOVLW 80H

CALL COMNWRT

CALL DELAY

MOVLW A'P'

CALL DATAWRT
CALL DELAY

MOVLW A'O'

CALL DATAWRT

CALL DELAY

MOVLW A'W'

CALL DATAWRT

CALL DELAY

MOVLW A'D'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

MOVLW A'R'

CALL DATAWRT

CALL DELAY

MOVLW D'32'

CALL DATAWRT

CALL DELAY

MOVLW A'U'

CALL DATAWRT

CALL DELAY

MOVLW A'S'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

BCF INTCON3,INT1IF

MOVLW 0D2H

MOVWF TMR0H
MOVLW 035H

MOVWF TMR0L

BCF INTCON,TMR0IF

BSF T0CON,TMR0ON

RETFIE

ISR_COUNT

ORG 800H

BCF T0CON,TMR0ON

MOVLW 07H

MOVWF T0CON

CLRF TRISD

CLRF TRISC

BCF LCD_CTRL,EN

MOVLW 38H

CALL COMNWRT

CALL LDELAY

MOVLW 0EH

CALL COMNWRT

CALL DELAY

MOVLW 01H

CALL COMNWRT

CALL DELAY

MOVLW 06H

CALL COMNWRT

CALL DELAY

MOVLW 80H

CALL COMNWRT

CALL DELAY

MOVLW A'S'

CALL DATAWRT
CALL DELAY

MOVLW A'P'

CALL DATAWRT

CALL DELAY

MOVLW A'I'

CALL DATAWRT

CALL DELAY

MOVLW A'N'

CALL DATAWRT

CALL DELAY

MOVLW A'N'

CALL DATAWRT

CALL DELAY

MOVLW A'I'

CALL DATAWRT

CALL DELAY

MOVLW A'N'

CALL DATAWRT

CALL DELAY

MOVLW A'G'

CALL DATAWRT

CALL DELAY

MOVLW 0D2H

MOVWF TMR0H

MOVLW 035H

MOVWF TMR0L

BCF INTCON,TMR0IF

BSF T0CON,TMR0ON

RETFIE

ISR_ALERT
ORG 1150H

CLRF TRISD

CLRF TRISC

BCF LCD_CTRL,EN

MOVLW 38H

CALL COMNWRT

CALL LDELAY

MOVLW 0EH

CALL COMNWRT

CALL DELAY

MOVLW 01H

CALL COMNWRT

CALL DELAY

MOVLW 06H

CALL COMNWRT

CALL DELAY

MOVLW 80H

CALL COMNWRT

CALL DELAY

MOVLW A'*'

CALL DATAWRT

CALL DELAY

MOVLW A'*'

CALL DATAWRT

CALL DELAY

MOVLW A'*'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY
MOVLW A'M'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

MOVLW A'R'

CALL DATAWRT

CALL DELAY

MOVLW A'G'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

MOVLW A'N'

CALL DATAWRT

CALL DELAY

MOVLW A'C'

CALL DATAWRT

CALL DELAY

MOVLW A'Y'

CALL DATAWRT

CALL DELAY

MOVLW A'*'

CALL DATAWRT

CALL DELAY

MOVLW A'*'

CALL DATAWRT

CALL DELAY

MOVLW A'*'
CALL DATAWRT

CALL DELAY

BCF INTCON,INT0IE

BCF INTCON3,INT1IE

BCF INTCON3,INT2IE

BCF INTCON,TMR0IE

BCF INTCON,INT0IF

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 .10

MOVWF 00H

LMN MOVLW .10


MOVWF 01H

ABC MOVLW .10

MOVWF 02H

MNO NOP

DECFSZ 02H

BRA MNO

DECFSZ 01H

BRA ABC

DECFSZ 00H

BRA LMN

RETURN

DELAY

MOVLW .10

MOVWF 00H

LMN1 MOVLW .10

MOVWF 01H

ABC1 MOVLW .100

MOVWF 02H

MNO1 NOP

DECFSZ 02H

BRA MNO1

DECFSZ 01H

BRA ABC1

DECFSZ 00H

BRA LMN1

RETURN

LDELAY

MOVLW .20

MOVWF 00H
LMN2 MOVLW .100

MOVWF 01H

ABC2 MOVLW .100

MOVWF 02H

MNO2 NOP

DECFSZ 02H

BRA MNO2

DECFSZ 01H

BRA ABC2

DECFSZ 00H

BRA LMN2

RETURN

END
Code with Dryer

#INCLUDE<[Link]>

LIST P=PIC18F452, F=INHX32, N=0, ST=OFF, R=HEX

config OSC=HS, OSCS=OFF, WDT=OFF, BORV=45, PWRT=ON, BOR=ON, DEBUG=OFF, LVP=OFF,


STVR=OFF

ORG 0X00 ; Origin of the code at address 0x00

GOTO MAIN ; Jump to the MAIN routine

ORG 0X08

BTFSC INTCON,INT0IF ; Origin of the code at address 0x08 (interrupt vector for external interrupt 0)

GOTO ISR_MACHINE ; Test if external interrupt 0 flag is set

BTFSC INTCON3,INT1IF ; Jump to ISR_MACHINE if the flag is set

GOTO ISR_MIX ; Test if external interrupt 1 flag is set

BTFSC INTCON,TMR0IF ; Jump to ISR_MIX if the flag is set

GOTO ISR_COUNT ; Test if Timer 0 overflow flag is set

BTFSC INTCON3,INT2IF ; Jump to ISR_COUNT if the flag is set

GOTO ISR_ALERT ; Test if external interrupt 2 flag is set

RETFIE ; Jump to ISR_ALERT if the flag is set

MAIN

ORG 150H ; Origin of the code at address 0x150

; Initialization code for a 2x16 LCD display!

MOVLW 07H

MOVWF T0CON

CLRF TRISD

CLRF TRISC

BCF LCD_CTRL,EN

MOVLW 38H

CALL COMNWRT
CALL LDELAY

MOVLW 0EH

CALL COMNWRT

CALL DELAY

MOVLW 01H

CALL COMNWRT

CALL DELAY

MOVLW 06H

CALL COMNWRT

CALL DELAY

MOVLW 80H

CALL COMNWRT

CALL DELAY

MOVLW A'P'

CALL DATAWRT

CALL DELAY

MOVLW A'R'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

MOVLW A'S'

CALL DATAWRT

CALL DELAY

MOVLW A'S'

CALL DATAWRT

CALL DELAY

MOVLW D'32'

CALL DATAWRT

CALL DELAY
MOVLW A'B'

CALL DATAWRT

CALL DELAY

MOVLW A'U'

CALL DATAWRT

CALL DELAY

MOVLW A'T'

CALL DATAWRT

CALL DELAY

MOVLW A'T'

CALL DATAWRT

CALL DELAY

MOVLW A'O'

CALL DATAWRT

CALL DELAY

MOVLW A'N'

CALL DATAWRT

CALL DELAY

MOVLW 0C0H

CALL COMNWRT

CALL DELAY

MOVLW A'T'

CALL DATAWRT

CALL DELAY

MOVLW A'O'

CALL DATAWRT

CALL DELAY

MOVLW D'32'

CALL DATAWRT

CALL DELAY

MOVLW A'S'
CALL DATAWRT

CALL DELAY

MOVLW A'T'

CALL DATAWRT

CALL DELAY

MOVLW A'A'

CALL DATAWRT

CALL DELAY

MOVLW A'R'

CALL DATAWRT

CALL DELAY

MOVLW A'T'

CALL DATAWRT

CALL DELAY

BSF INTCON,TMR0IE ; Enable Timer 0 overflow interrupt

BSF INTCON,INT0IE ; Enable external interrupt 0

BSF INTCON,GIE ; Enable global interrupt

IBRAHIM BRA IBRAHIM ; Infinite loop

ISR_MACHINE

ORG 400H

LCD_DATA EQU PORTD

LCD_CTRL EQU PORTC

RS EQU RC0

RW EQU RC1

EN EQU RC2

MOVLW 07H

MOVWF T0CON

CLRF TRISD

CLRF TRISC

BCF LCD_CTRL,EN
MOVLW 38H

CALL COMNWRT

CALL LDELAY

MOVLW 0EH

CALL COMNWRT

CALL DELAY

MOVLW 01H

CALL COMNWRT

CALL DELAY

MOVLW 06H

CALL COMNWRT

CALL DELAY

MOVLW 80H

CALL COMNWRT

CALL DELAY

MOVLW A'W'

CALL DATAWRT

CALL DELAY

MOVLW A'A'

CALL DATAWRT

CALL DELAY

MOVLW A'T'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

MOVLW A'R'

CALL DATAWRT

CALL DELAY

MOVLW D'32'
CALL DATAWRT

CALL DELAY

MOVLW A'I'

CALL DATAWRT

CALL DELAY

MOVLW A'S'

CALL DATAWRT

CALL DELAY

MOVLW 0C0H

CALL COMNWRT

CALL DELAY

MOVLW A'C'

CALL DATAWRT

CALL DELAY

MOVLW A'H'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

MOVLW A'C'

CALL DATAWRT

CALL DELAY

MOVLW A'K'

CALL DATAWRT

CALL DELAY

MOVLW A'I'

CALL DATAWRT

CALL DELAY

MOVLW A'N'

CALL DATAWRT
CALL DELAY

MOVLW A'G'

CALL DATAWRT

CALL DELAY

BCF INTCON,INT0IF

BSF INTCON3,INT1IE

BSF INTCON3,INT2IE

RETFIE

ISR_MIX

ORG 600H

MOVLW 07H

MOVWF T0CON

CLRF TRISD

CLRF TRISC

BCF LCD_CTRL,EN

MOVLW 38H

CALL COMNWRT

CALL LDELAY

MOVLW 0EH

CALL COMNWRT

CALL DELAY

MOVLW 01H

CALL COMNWRT

CALL DELAY

MOVLW 06H

CALL COMNWRT

CALL DELAY

MOVLW 80H

CALL COMNWRT

CALL DELAY
MOVLW A'P'

CALL DATAWRT

CALL DELAY

MOVLW A'O'

CALL DATAWRT

CALL DELAY

MOVLW A'W'

CALL DATAWRT

CALL DELAY

MOVLW A'D'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

MOVLW A'R'

CALL DATAWRT

CALL DELAY

MOVLW D'32'

CALL DATAWRT

CALL DELAY

MOVLW A'U'

CALL DATAWRT

CALL DELAY

MOVLW A'S'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

BCF INTCON3,INT1IF
MOVLW 0D2H

MOVWF TMR0H

MOVLW 035H

MOVWF TMR0L

BCF INTCON,TMR0IF

BSF T0CON,TMR0ON

RETFIE

ISR_COUNT

ORG 800H

BCF T0CON,TMR0ON

MOVLW 07H

MOVWF T0CON

CLRF TRISD

CLRF TRISC

BCF LCD_CTRL,EN

MOVLW 38H

CALL COMNWRT

CALL LDELAY

MOVLW 0EH

CALL COMNWRT

CALL DELAY

MOVLW 01H

CALL COMNWRT

CALL DELAY

MOVLW 06H

CALL COMNWRT

CALL DELAY

MOVLW 80H

CALL COMNWRT

CALL DELAY
MOVLW A'S'

CALL DATAWRT

CALL DELAY

MOVLW A'P'

CALL DATAWRT

CALL DELAY

MOVLW A'I'

CALL DATAWRT

CALL DELAY

MOVLW A'N'

CALL DATAWRT

CALL DELAY

MOVLW A'N'

CALL DATAWRT

CALL DELAY

MOVLW A'I'

CALL DATAWRT

CALL DELAY

MOVLW A'N'

CALL DATAWRT

CALL DELAY

MOVLW A'G'

CALL DATAWRT

CALL DELAY

MOVLW 0D2H

MOVWF TMR0H

MOVLW 035H

MOVWF TMR0L

BCF INTCON,TMR0IF

BSF T0CON,TMR0ON
BCF T0CON,TMR0ON

MOVLW 07H

MOVWF T0CON

CLRF TRISD

CLRF TRISC

BCF LCD_CTRL,EN

MOVLW 38H

CALL COMNWRT

CALL LDELAY

MOVLW 0EH

CALL COMNWRT

CALL DELAY

MOVLW 01H

CALL COMNWRT

CALL DELAY

MOVLW 06H

CALL COMNWRT

CALL DELAY

MOVLW 80H

CALL COMNWRT

MOVLW A'D'

CALL DATAWRT

CALL DELAY

MOVLW A'R'

CALL DATAWRT

CALL DELAY

MOVLW A'Y'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT
CALL DELAY

MOVLW A'R'

CALL DATAWRT

CALL DELAY

MOVLW A'_'

CALL DATAWRT

CALL DELAY

MOVLW A'O'

CALL DATAWRT

CALL DELAY

MOVLW A'N'

CALL DATAWRT

CALL DELAY

MOVLW 0D2H

MOVWF TMR0H

MOVLW 035H

MOVWF TMR0L

BCF INTCON,TMR0IF

BSF T0CON,TMR0ON

RETFIE

ISR_ALERT

ORG 1150H

CLRF TRISD

CLRF TRISC

BCF LCD_CTRL,EN

MOVLW 38H

CALL COMNWRT

CALL LDELAY

MOVLW 0EH
CALL COMNWRT

CALL DELAY

MOVLW 01H

CALL COMNWRT

CALL DELAY

MOVLW 06H

CALL COMNWRT

CALL DELAY

MOVLW 80H

CALL COMNWRT

CALL DELAY

MOVLW A'*'

CALL DATAWRT

CALL DELAY

MOVLW A'*'

CALL DATAWRT

CALL DELAY

MOVLW A'*'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

MOVLW A'M'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

MOVLW A'R'

CALL DATAWRT
CALL DELAY

MOVLW A'G'

CALL DATAWRT

CALL DELAY

MOVLW A'E'

CALL DATAWRT

CALL DELAY

MOVLW A'N'

CALL DATAWRT

CALL DELAY

MOVLW A'C'

CALL DATAWRT

CALL DELAY

MOVLW A'Y'

CALL DATAWRT

CALL DELAY

MOVLW A'*'

CALL DATAWRT

CALL DELAY

MOVLW A'*'

CALL DATAWRT

CALL DELAY

MOVLW A'*'

CALL DATAWRT

CALL DELAY

BCF INTCON,INT0IE

BCF INTCON3,INT1IE

BCF INTCON3,INT2IE

BCF INTCON,TMR0IE

BCF INTCON,INT0IF
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 .10

MOVWF 00H

LMN MOVLW .10

MOVWF 01H

ABC MOVLW .10

MOVWF 02H

MNO NOP

DECFSZ 02H

BRA MNO

DECFSZ 01H

BRA ABC
DECFSZ 00H

BRA LMN

RETURN

DELAY

MOVLW .10

MOVWF 00H

LMN1 MOVLW .10

MOVWF 01H

ABC1 MOVLW .100

MOVWF 02H

MNO1 NOP

DECFSZ 02H

BRA MNO1

DECFSZ 01H

BRA ABC1

DECFSZ 00H

BRA LMN1

RETURN

LDELAY

MOVLW .20

MOVWF 00H

LMN2 MOVLW .100

MOVWF 01H

ABC2 MOVLW .100

MOVWF 02H

MNO2 NOP

DECFSZ 02H

BRA MNO2

DECFSZ 01H
BRA ABC2

DECFSZ 00H

BRA LMN2

RETURN

END

You might also like