list p=16f628a #include radix dec ;I have added these two lines. errorlevel -302 , -207 CONF_WORD = 0x3F10 ; Compiled with: PIC Simulator IDE v6.85 ; Microcontroller model: PIC16F628A ; Clock frequency: 4.0 MHz ; ; The address of 'cnt1' (byte) (global) is 0x2C cnt1 EQU 0x2C ; The address of 'temp1' (byte) (global) is 0x2D temp1 EQU 0x2D ; Begin R0L EQU 0x20 R0H EQU 0x21 R1L EQU 0x22 R1H EQU 0x23 R2L EQU 0x24 R2H EQU 0x25 R3L EQU 0x26 R3H EQU 0x27 R4L EQU 0x28 R4H EQU 0x29 R5L EQU 0x2A R5H EQU 0x2B ORG 0x0000 BCF PCLATH,3 BCF PCLATH,4 GOTO L0002 ORG 0x0004 RETFIE ; Begin of program L0002: ; 1: ; 2: AllDigital MOVLW 0x07 MOVWF 0x1F ; 3: Define SIMULATION_WAITMS_VALUE = 1 ; 4: ; 5: Dim cnt1 As Byte ; 6: Dim temp1 As Byte ; 7: ; 8: ; 9: Define LCD_LINES = 2 ; 10: Define LCD_CHARS = 16 ; 11: Define LCD_BITS = 4 ; 12: Define LCD_DREG = PORTA ; 13: Define LCD_DBIT = 0 ; 14: Define LCD_RSREG = PORTA ; 15: Define LCD_RSBIT = 4 ; 16: Define LCD_EREG = PORTA ; 17: Define LCD_EBIT = 7 ; 18: Define LCD_RWREG = PORTA ; 19: Define LCD_RWBIT = 6 ; 20: ; 21: TRISA = %00000000 BSF STATUS,RP0 CLRF 0x05 ; 22: TRISB = %00001111 MOVLW 0x0F MOVWF 0x06 BCF STATUS,RP0 ; 23: ; 24: ; 25: CMCON = 0x07 MOVLW 0x07 MOVWF 0x1F ; 26: ; 27: Hseropen 9600 ; Exact baud rate: 9615 ; Baud rate error: 15 (.156%) BSF STATUS,RP0 MOVLW 0x19 MOVWF SPBRG BSF TRISB,1 BSF TRISB,2 MOVLW 0x24 MOVWF TXSTA BCF STATUS,RP0 MOVLW 0x90 MOVWF RCSTA ; 28: ; 29: 'use the ' symbol to REM out unused commands ; 30: Lcdinit 'no cursor BCF 0x05,7 BCF 0x05,4 BCF 0x05,6 BSF STATUS,RP0 BCF 0x05,7 BCF 0x05,4 BCF 0x05,6 MOVLW 0xF0 ANDWF 0x05,F BCF STATUS,RP0 MOVLW 0x64 MOVWF R0L MOVLW 0x00 MOVWF R0H CALL W001 MOVLW 0x33 CALL LC02 MOVLW 0x33 CALL LC02 MOVLW 0x33 CALL LC02 MOVLW 0x22 CALL LC02 MOVLW 0x28 CALL LC02 MOVLW 0x0C CALL LC02 MOVLW 0x01 CALL LC02 ; 31: 'Lcdinit 2 'cursor on LCD ; 32: 'Lcdinit 3 'cursor and flashing ; 33: ; 34: Hserout "Hello Transistorman.!", CrLf MOVLW 0x48 CALL HS01 MOVLW 0x65 CALL HS01 MOVLW 0x6C CALL HS01 MOVLW 0x6C CALL HS01 MOVLW 0x6F CALL HS01 MOVLW 0x20 CALL HS01 MOVLW 0x54 CALL HS01 MOVLW 0x72 CALL HS01 MOVLW 0x61 CALL HS01 MOVLW 0x6E CALL HS01 MOVLW 0x73 CALL HS01 MOVLW 0x69 CALL HS01 MOVLW 0x73 CALL HS01 MOVLW 0x74 CALL HS01 MOVLW 0x6F CALL HS01 MOVLW 0x72 CALL HS01 MOVLW 0x6D CALL HS01 MOVLW 0x61 CALL HS01 MOVLW 0x6E CALL HS01 MOVLW 0x2E CALL HS01 MOVLW 0x21 CALL HS01 MOVLW 0x0D CALL HS01 MOVLW 0x0A CALL HS01 ; 35: ; 36: main: L0001: ; 37: Lcdcmdout LcdLine1Home MOVLW 0x80 CALL LC02 ; 38: Lcdout "Send a String" MOVLW 0x53 CALL LC01 MOVLW 0x65 CALL LC01 MOVLW 0x6E CALL LC01 MOVLW 0x64 CALL LC01 MOVLW 0x20 CALL LC01 MOVLW 0x61 CALL LC01 MOVLW 0x20 CALL LC01 MOVLW 0x53 CALL LC01 MOVLW 0x74 CALL LC01 MOVLW 0x72 CALL LC01 MOVLW 0x69 CALL LC01 MOVLW 0x6E CALL LC01 MOVLW 0x67 CALL LC01 ; 39: ; 40: WaitMs 1 MOVLW 0x01 MOVWF R0L CLRF R0H CALL W001 ; 41: Lcdcmdout LcdLine2Home MOVLW 0xC0 CALL LC02 ; 42: cnt1 = 0 CLRF 0x2C ; 43: ; 44: For cnt1 = 0 To 15 'max string length CLRF 0x2C L0003: MOVF 0x2C,W SUBLW 0x0F BTFSS STATUS,C GOTO L0004 ; 45: Hserin temp1 CALL HS10 MOVWF 0x2D ; 46: Lcdout temp1 MOVF 0x2D,W CALL LC01 ; 47: ; 48: If temp1 = "." Then 'end of text terminator MOVF 0x2D,W SUBLW 0x2E BTFSS STATUS,Z GOTO L0005 ; 49: Goto main GOTO L0001 ; 50: Endif L0005: ; 51: ; 52: Next cnt1 MOVLW 0x01 ADDWF 0x2C,F BTFSS STATUS,C GOTO L0003 L0004: ; 53: ; 54: Goto main GOTO L0001 ; 55: ; 56: End L0006: GOTO L0006 ; End of program L0007: GOTO L0007 ; Waitms Routine W001: MOVF R0L,F BTFSC STATUS,Z GOTO W002 CALL W003 DECF R0L,F NOP NOP NOP NOP NOP GOTO W001 W002: MOVF R0H,F BTFSC STATUS,Z RETURN CALL W003 DECF R0H,F DECF R0L,F GOTO W001 W003: MOVLW 0x0C MOVWF R2H W004: DECFSZ R2H,F GOTO W004 NOP NOP MOVLW 0x12 MOVWF R1L W005: DECFSZ R1L,F GOTO W006 CALL W007 CALL W007 NOP NOP RETURN W006: CALL W007 GOTO W005 W007: MOVLW 0x0D MOVWF R2L W008: DECFSZ R2L,F GOTO W008 NOP RETURN ; Waitus Routine - Byte Argument X001: MOVLW 0x0A SUBWF R4L,F BTFSS STATUS,C RETURN GOTO X002 X002: MOVLW 0x06 SUBWF R4L,F BTFSS STATUS,C RETURN GOTO X002 ; Waitus Routine - Word Argument Y001: MOVLW 0x10 SUBWF R4L,F CLRW BTFSS STATUS,C ADDLW 0x01 SUBWF R4H,F BTFSS STATUS,C RETURN GOTO Y002 Y002: MOVLW 0x0A SUBWF R4L,F CLRW BTFSS STATUS,C ADDLW 0x01 SUBWF R4H,F BTFSS STATUS,C RETURN GOTO Y002 ; Lcdout Routine LC01: MOVWF R4L BSF 0x05,4 BCF 0x05,6 SWAPF R4L,F MOVLW 0xF0 ANDWF 0x05,F MOVF R4L,W ANDLW 0x0F IORWF 0x05,F CALL LCX1 SWAPF R4L,F MOVLW 0xF0 ANDWF 0x05,F MOVF R4L,W ANDLW 0x0F IORWF 0x05,F CALL LCX1 MOVLW 0x64 MOVWF R4L CALL X001 RETURN LCX1: BSF 0x05,7 NOP BCF 0x05,7 NOP RETURN ; Lcdcmdout Routine LC02: MOVWF R4L BCF 0x05,4 BCF 0x05,6 SWAPF R4L,F MOVLW 0xF0 ANDWF 0x05,F MOVF R4L,W ANDLW 0x0F IORWF 0x05,F CALL LCX1 SWAPF R4L,F MOVLW 0xF0 ANDWF 0x05,F MOVF R4L,W ANDLW 0x0F IORWF 0x05,F CALL LCX1 MOVLW 0x88 MOVWF R4L MOVLW 0x13 MOVWF R4H CALL Y001 RETURN ; Hardware Serial Communication Routines HS01: BTFSC PIR1,TXIF GOTO HS02 GOTO HS01 HS02: MOVWF TXREG RETURN HS10: BTFSC PIR1,RCIF GOTO HS11 GOTO HS10 HS11: MOVF RCREG,W RETURN ; End of listing END