; list p=16c84, f=inhx8m ;Enter device name ;printed on the probe ;connected to your pod. include FALSE EQU 0 TRUE EQU 1 LCD_DATA EQU PORTB LCD_DATA_TRIS EQU TRISB LCD_CNTL EQU PORTA E EQU 2 RW EQU 1 RS EQU 0 TEMP1 EQU H'0030' Count EQU H'000C' Count2 EQU H'000D' CHAR EQU H'000E' TEMP EQU H'000F' MSD EQU H'0010' LSD EQU H'0011' DEBOUNCE EQU H'0012' org 0 BCF STATUS, RP0 CLRF PORTA CLRF PORTB BSF STATUS, RP0 MOVLW B'01000' MOVWF TRISA CLRF TRISB BCF STATUS, RP0 ; Init LCD ; Clear port CLRF LCD_CNTL MOVLW D'150' MOVWF Count2 DLOOP1 CALL WAIT_1MS DECFSZ Count2, f GOTO DLOOP1 MOVLW B'0010' MOVWF LCD_DATA NOP NOP BSF LCD_CNTL, E BCF LCD_CNTL, E CALL WAIT_1MS CALL WAIT_1MS MOVLW B'0010' MOVWF LCD_DATA BSF LCD_CNTL, E BCF LCD_CNTL, E MOVLW B'1000' MOVWF LCD_DATA BSF LCD_CNTL, E BCF LCD_CNTL, E CALL WAIT_1MS CALL WAIT_1MS MOVLW B'00001000' CALL SEND_CMD MOVLW B'00000001' CALL SEND_CMD MOVLW B'00000110' CALL SEND_CMD ; BIG E letter MOVLW B'01000000' CALL SEND_CMD MOVLW B'11111' CALL SEND_CHAR MOVLW B'11111' CALL SEND_CHAR MOVLW B'11000' CALL SEND_CHAR MOVLW B'11111' CALL SEND_CHAR MOVLW B'11111' CALL SEND_CHAR MOVLW B'11000' CALL SEND_CHAR MOVLW B'11111' CALL SEND_CHAR MOVLW B'11111' CALL SEND_CHAR ;Drawing MOVLW B'00000' CALL SEND_CHAR MOVLW B'00000' CALL SEND_CHAR MOVLW B'01010' CALL SEND_CHAR MOVLW B'00000' CALL SEND_CHAR MOVLW B'00100' CALL SEND_CHAR MOVLW B'00100' CALL SEND_CHAR MOVLW B'10001' CALL SEND_CHAR MOVLW B'01110' CALL SEND_CHAR MOVLW B'10000000' CALL SEND_CMD MOVLW 'E' CALL SEND_CHAR MOVLW 'r' CALL SEND_CHAR MOVLW 'i' CALL SEND_CHAR MOVLW 'c' CALL SEND_CHAR MOVLW B'00100111' CALL SEND_CHAR MOVLW 's' CALL SEND_CHAR MOVLW ' ' CALL SEND_CHAR MOVLW 'L' CALL SEND_CHAR MOVLW 'C' CALL SEND_CHAR MOVLW 'D' CALL SEND_CHAR CLRF Count LOOP MOVLW B'11000000' CALL SEND_CMD movlw D'16' movwf DEBOUNCE LOOPE MOVFW Count CALL SEND_CHAR INCF Count, 1 DECFSZ DEBOUNCE, 1 GOTO LOOPE movlw D'200' movwf DEBOUNCE LOOPC BTFSC PORTA, 3 GOTO LOOPC LOOPCA decfsz DEBOUNCE, 1 GOTO LOOPCA BTFSC PORTA, 3 GOTO LOOPC movlw D'200' movwf DEBOUNCE LOOPD BTFSS PORTA, 3 GOTO LOOPD LOOPDA decfsz DEBOUNCE, f GOTO LOOPDA BTFSS PORTA, 3 GOTO LOOPD GOTO LOOP SEND_CHAR MOVWF CHAR CALL BUSY_CHECK SWAPF CHAR, w ANDLW 0x0F MOVWF LCD_DATA BCF LCD_CNTL, RW BSF LCD_CNTL, RS BSF LCD_CNTL, E BCF LCD_CNTL, E MOVF CHAR,W ANDLW 0x0F MOVWF LCD_DATA BSF LCD_CNTL, E BCF LCD_CNTL, E return SEND_CMD MOVWF CHAR CALL BUSY_CHECK SWAPF CHAR, w ANDLW 0x0F MOVWF LCD_DATA BCF LCD_CNTL, RW BCF LCD_CNTL, RS BSF LCD_CNTL, E BCF LCD_CNTL, E MOVF CHAR, w ANDLW 0x0F MOVWF LCD_DATA BSF LCD_CNTL, E BCF LCD_CNTL, E return BUSY_CHECK BSF STATUS, RP0 MOVLW 0xFF MOVWF LCD_DATA_TRIS BCF STATUS, RP0 BCF LCD_CNTL, RS BSF LCD_CNTL, RW BSF LCD_CNTL, E BCF LCD_CNTL, E SWAPF LCD_DATA, w ANDLW 0x0F MOVWF TEMP BSF LCD_CNTL, E BCF LCD_CNTL, E MOVF LCD_DATA, w ANDLW 0x0F IORWF TEMP, f BTFSC TEMP, 7 GOTO BUSY_CHECK BCF LCD_CNTL, RW BSF STATUS, RP0 MOVLW 0x00 MOVWF LCD_DATA_TRIS BCF STATUS, RP0 RETURN WAIT_1MS ;at 10mhz wait 2,500 cycles MOVLW D'250' MOVWF Count WAITLOOP GOTO $+1 ;1-2 GOTO $+1 ;3-4 GOTO $+1 ;5-6 NOP ;7 DECFSZ Count, f ;8 GOTO WAITLOOP ;9-10 RETURN end