Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- INDF EQU 0x00 ; Indirect File Reg. Address
- PCL EQU 0x02 ; PCL :)
- STATUS EQU 0x03 ; Status Register
- FSR EQU 0x04 ; File Select Register
- PORTA EQU 0x05
- PORTB EQU 0x06
- TRISA EQU 0x85
- TRISB EQU 0x86
- ;===================== STATUS BITS =====================;
- C EQU 0x0 ; Carry Flag
- DC EQU 0x1 ; Digit Carry Flag
- Z EQU 0x2 ; Zero Flag
- PD EQU 0x3 ; Power Down Bit
- TO EQU 0x4 ; WDT Time-out Bit
- RP0 EQU 0x5 ; Bank Select
- RP1 EQU 0x6 ; Bank Select, unused
- IRP EQU 0x7 ; Unused
- ;===================== DELAY PARAM ======================;
- DLY_N1 EQU 0x10
- ;===================== LCD PARAM ====================;
- LCD_CMD EQU 0x11 ; For LCD commands
- LCD_DLY EQU 0x12 ; For 40us or 1sec?
- SHO_TBL_CN EQU 0x13 ; Counter for short table
- __CONFIG 0x3FF2
- ORG 0x00 ; Reset vector
- GOTO START
- ORG 0x04
- RETFIE
- START
- ; configure PORTA & PORTB
- BSF STATUS,RP0 ; Select Bank 1
- BCF STATUS,RP1 ;
- ;MOVLW B'00001111' ; (!) might not be correct?
- ;MOVWF TRISA ; INPUT
- ;CLRF TRISB ; OUTPUT
- CLRF TRISA
- CLRF TRISB
- BCF STATUS,RP0 ; SELECT BANK 0
- ; other initialization
- CALL OpenLCD
- ;GOTO $
- MOVLW D'33' ; size of string
- MOVWF SHO_TBL_CN
- ;GOTO LOOP
- GOTO HARDCORE_STRATS
- SECRET_ROUTE
- ;MOVF PORTA,W
- ;ANDLW B'00000111'
- MOVLW 'T'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'H'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'E'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'G'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'A'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'M'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'E'
- MOVWF LCD_CMD
- CALL DAT2LCD
- GOTO $
- ;GOTO SECRET_ROUTE
- LOOP
- ;MOVF PORTA,W
- ;ANDLW B'00000111'
- CALL SHORT_TABLE
- MOVWF LCD_CMD
- CALL DAT2LCD
- DECFSZ SHO_TBL_CN
- GOTO LOOP
- GOTO $
- OpenLCD
- MOVLW B'00111100'
- MOVWF LCD_CMD
- MOVLW 1
- MOVWF LCD_DLY
- CALL CMD2LCD
- MOVLW B'00111100'
- MOVWF LCD_CMD
- MOVLW 1
- MOVWF LCD_DLY
- CALL CMD2LCD
- MOVLW B'00001111'
- MOVWF LCD_CMD
- MOVLW 1
- MOVWF LCD_DLY
- CALL CMD2LCD
- MOVLW B'00000110'
- MOVWF LCD_CMD
- MOVLW 1
- MOVWF LCD_DLY
- CALL CMD2LCD
- MOVLW B'00000001'
- MOVWF LCD_CMD
- MOVLW D'41'
- MOVWF LCD_DLY
- CALL CMD2LCD
- RETURN
- CMD2LCD
- MOVLW B'000'
- MOVWF PORTA
- MOVF LCD_CMD,W
- MOVWF PORTB
- NOP
- MOVLW B'11111001'
- MOVWF PORTA
- NOP
- NOP
- MOVLW B'11111000'
- MOVWF PORTA
- CALL S_DLY40
- DECFSZ LCD_DLY
- GOTO $-2
- RETURN
- DAT2LCD
- MOVLW B'11111100'
- MOVWF PORTA
- MOVF LCD_CMD,W
- MOVWF PORTB
- NOP
- MOVLW B'11111101'
- MOVWF PORTA
- NOP
- NOP
- MOVLW B'11111100'
- MOVWF PORTA
- CALL S_DLY40
- RETURN
- S_DLY40
- MOVLW D'66'
- MOVWF DLY_N1
- DECFSZ DLY_N1
- GOTO $-1
- RETURN
- SHORT_TABLE
- ADDWF PCL,F ; PC=PC+Offset
- RETLW B'10110010' ; i
- RETLW B'11000001' ; chi
- RETLW B'11001010' ; ba
- RETLW B'11011110' ; ''
- RETLW B'11011101' ; n
- RETLW B'10100101' ; [dot]
- RETLW B'11001100' ; fu
- RETLW B'10101011' ; kawaii o
- RETLW B'10110000' ; -
- RETLW B'10100101' ; [dot]
- RETLW B'10111011' ; za
- RETLW B'11011110' ; ''
- RETLW B'10100101' ; [dot]
- RETLW B'11000001' ; chi
- RETLW B'10110000' ; -
- RETLW B'11010001' ; mu
- RETLW B'00100001' ; !
- RETLW B'00100000' ;
- RETLW B'01111110' ; ->
- RETLW B'00101000' ; (
- RETLW B'01010100' ; T
- RETLW B'01101000' ; h
- RETLW B'01100101' ; e
- RETLW B'00100000' ;
- RETLW B'01100010' ; b
- RETLW B'01100101' ; e
- RETLW B'01110011' ; s
- RETLW B'01110100' ; t
- RETLW B'00100001' ; !
- RETLW B'00101001' ; )
- RETLW B'00100000' ;
- RETLW B'11011111' ; o
- RETLW B'11011100' ; V
- RETLW B'11011111' ; o
- HARDCORE_STRATS
- MOVLW B'10110010'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'11000001'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'11001010'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'11011110'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'11011101'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'10100101'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'11001100'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'10101011'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'10110000'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'10100101'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'10111011'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'11011110'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'10100101'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'11000001'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'10110000'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'11010001'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'00100001'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'00100000'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'01111110'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'00101000'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'T'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'h'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'e'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW ' '
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'b'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'e'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 's'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 't'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW '!'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW ')'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW ' '
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'11011111'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'11011100'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW B'11011111'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW ' '
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'T'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'h'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'i'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 's'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW ' '
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'm'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'e'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 's'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 's'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'a'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'g'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'e'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW ' '
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'i'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 's'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW ' '
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'a'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'l'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 's'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'o'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW ' '
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'i'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'n'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW ' '
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'S'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'w'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'a'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'h'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'i'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'l'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW 'i'
- MOVWF LCD_CMD
- CALL DAT2LCD
- MOVLW '.'
- MOVWF LCD_CMD
- CALL DAT2LCD
- GOTO $
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement