#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