; Compiled with: PIC Simulator IDE v7.15 ; Microcontroller model: PIC16F648A ; Clock frequency: 4.0MHz ; R0L EQU 0x020 R0H EQU 0x021 R3H EQU 0x027 R4L EQU 0x028 R4H EQU 0x029 R0HL EQU 0x020 R4HL EQU 0x028 ORG 0x0000 BCF PCLATH,4 BCF PCLATH,3 GOTO L0002 ORG 0x0004 RETFIE ; User code start L0002: ; 1: '16f684A xtl ; 2: ; 3: Define CONF_WORD = 0x3f41 'XTL ; 4: Define CLOCK_FREQUENCY = 4 'Changed from 12 ; 5: AllDigital MOVLW 0x07 MOVWF CMCON ; 6: ; 7: 'Define SIMULATION_WAITMS_VALUE = 1 'SIMULATION ONLY ; 8: ; 9: Define LCD_BITS = 8 ; 10: Define LCD_DREG = PORTB ; 11: Define LCD_DBIT = 0 ; 12: Define LCD_RSREG = PORTA ; 13: Define LCD_RSBIT = 2 ; 14: Define LCD_RWREG = PORTA ; 15: Define LCD_RWBIT = 3 ; 16: Define LCD_EREG = PORTA ; 17: Define LCD_EBIT = 4 ; 18: Define LCD_READ_BUSY_FLAG = 1 ; 19: Lcdinit BCF PORTA,4 BCF PORTA,2 BCF PORTA,3 BSF STATUS,RP0 BCF TRISA,4 BCF TRISA,2 BCF TRISA,3 CLRF TRISB BCF STATUS,RP0 MOVLW 0x64 MOVWF R0L CLRF R0H CALL W001 MOVLW 0x33 CALL LC02 MOVLW 0x33 CALL LC02 MOVLW 0x33 CALL LC02 MOVLW 0x38 CALL LC02 MOVLW 0x0C CALL LC02 MOVLW 0x01 CALL LC02 ; 20: ; 21: 'Dim an0 As Word ; 22: ; 23: loop: L0001: ; 24: Lcdcmdout LcdClear MOVLW 0x01 CALL LC02 ; 25: Lcdout "WORKING!?" MOVLW 0x57 CALL LC01 MOVLW 0x4F CALL LC01 MOVLW 0x52 CALL LC01 MOVLW 0x4B CALL LC01 MOVLW 0x49 CALL LC01 MOVLW 0x4E CALL LC01 MOVLW 0x47 CALL LC01 MOVLW 0x21 CALL LC01 MOVLW 0x3F CALL LC01 ; 26: Lcdcmdout LcdLine2Home MOVLW 0xC0 CALL LC02 ; 27: Lcdout "TEST" MOVLW 0x54 CALL LC01 MOVLW 0x45 CALL LC01 MOVLW 0x53 CALL LC01 MOVLW 0x54 CALL LC01 ; 28: Toggle RA1 MOVLW 0x02 XORWF PORTA,F BSF STATUS,RP0 BCF TRISA,1 BCF STATUS,RP0 ; 29: WaitMs 100 MOVLW 0x0E MOVWF R4L MOVLW 0x27 MOVWF R4H CALL DL02 ; 30: Goto loop GOTO L0001 ; End of user code L0003: GOTO L0003 ; Delay Routine Byte ; minimal routine execution time: 8µs ; routine execution time step: 3µs ; maximal routine execution time: 770µs DL01: DECFSZ R4L,F GOTO DL01 RETURN ; Delay Routine Word ; minimal routine execution time: 15µs ; routine execution time step: 10µs ; maximal routine execution time: 655365µs DL02: MOVLW 0x01 SUBWF R4L,F CLRW BTFSS STATUS,C ADDLW 0x01 SUBWF R4H,F BTFSS STATUS,C RETURN GOTO DL02 ; Waitms Routine W001: MOVLW 0x01 SUBWF R0L,F CLRW BTFSS STATUS,C ADDLW 0x01 SUBWF R0H,F BTFSS STATUS,C RETURN MOVLW 0x61 MOVWF R4L MOVLW 0x00 MOVWF R4H CALL DL02 GOTO W001 ; Lcdout Routine LC01: BSF PORTA,2 BCF PORTA,3 MOVWF PORTB CALL LCX1 BCF PORTA,2 BSF PORTA,3 BSF STATUS,RP0 MOVLW 0xFF MOVWF TRISB BCF STATUS,RP0 LC10: CALL LCX2 BTFSC R3H,7 GOTO LC10 BSF STATUS,RP0 CLRF TRISB BCF STATUS,RP0 RETURN LCX1: BSF PORTA,4 NOP BCF PORTA,4 NOP RETURN LCX2: BSF PORTA,4 NOP MOVF PORTB,W MOVWF R3H BCF PORTA,4 NOP RETURN ; Lcdcmdout Routine LC02: BCF PORTA,2 BCF PORTA,3 MOVWF PORTB CALL LCX1 BCF PORTA,2 BSF PORTA,3 BSF STATUS,RP0 MOVLW 0xFF MOVWF TRISB BCF STATUS,RP0 LC11: CALL LCX2 BTFSC R3H,7 GOTO LC11 BSF STATUS,RP0 CLRF TRISB BCF STATUS,RP0 RETURN ; ; ; ; ; Configuration settings ORG 0x2007 DW 0x3F41 ; End of listing END