miyago icon

Labb32

miyago | PRO | 02/07/18 05:33:56 PM UTC | 0 ⭐ | 10590 👁️ | Never ⏰ | []
ASM (NASM) |

0 B

|

None

|

0 👍

/

0 👎

#include "p18F4520.inc"
    
    CONFIG OSC = HS
    CONFIG PWRT = OFF
    CONFIG WDT = OFF
    CONFIG PBADEN = OFF
    CONFIG LVP = OFF
    
    org 0x000000
 
PORST   GOTO    MAIN
    org 0x00020
 
;******* TABLE POINTER SUBROUTINE************
    org 0x000200        ; Ser till att vi använda de första minnescellerna
NAMN        DB  "Magnus Roos"
            ; Pekar på adress Hex: 00 02 00
            MOVLW   upper(NAMN)
            MOVWF   TBLPTRU
            MOVLW   high(NAMN)
            MOVWF   TBLPTRH
            MOVLW   low(NAMN)
            MOVWF   TBLPTRL
            RETURN
 
;*******************
              ;
            
            
;****************************************************************************   
;*** LCD toolbox ************************************************************
;*** Needs PORTD,RB1 EN,RB3 RS *** RS = 1 DATA, RS = 0 INSTRUCTION **********
;****************************************************************************
        
    
LCDINIT CLRF    TRISD       ;LCD data bus
        BCF     TRISB,1     ;LCD enable
        BCF     TRISB,3     ;LCD reg select
        BCF     PORTB,1     ;enable low
        RETURN
    
WRTCMD  BCF     PORTB,3     ;instruction write
        MOVWF   PORTD       ;the instruction
        BSF     PORTB,1     ;enable 1
        NOP
        BCF     PORTB,1     ;enable 0
        RETURN
    
WRTCHR  BSF     PORTB,3     ;data write
        MOVWF   PORTD       ;the data
        BSF     PORTB,1     ;enable 1
        NOP
        BCF     PORTB,1     ;enable 0
        RETURN
;*** END LCD toolbox ********************************************************   
 
;*** DELAY ROUTINE **********************************************************
COUNTER equ 0x07D           ; För loopen i huvudprogrammet
IDSHORT equ 0x07E
IDLONG  equ 0x07F
 
    
ED10MS  CLRF    IDSHORT     ; 1
        MOVLW   0X20        ; 1
        MOVWF   IDLONG      ; 1
LDLOOP  DECFSZ  IDSHORT     ; 1
        GOTO    LDLOOP      ; 2
        DECFSZ  IDLONG      ; 1
        GOTO    LDLOOP      ; 2
        RETURN
;*** END OF DELAY ROUTINE*[1+1+1+(256x3)x(256)+256*x3]**************************
;****DISPLAY SETTINGS***********************************************************     
SETTIN  MOVLW   0x38            ; Hosta igång displayen
        CALL    WRTCMD
        CALL    ED10MS
        MOVLW   0x38            ; IGEN
        CALL    WRTCMD
        CALL    ED10MS
        MOVLW   0x38            ; OK NU
        CALL    WRTCMD
        CALL    ED10MS
        MOVLW   0x0C            ; Display on, cursor off
        CALL    WRTCMD
        CALL    ED10MS
        MOVLW   0x01            ; Clear display screen
        CALL    WRTCMD
        CALL    ED10MS  
        RETURN
;******NO MORE SETTINGS********************************************************        
        
;*******************************************************************************
;********START OF MAIN PROGRAM**************************************************
MAIN        CALL    LCDINIT     ; Initiera displayen
            CALL    SETTIN      ; Lite displaysettings
            CALL    NAMN       ; 
            
DISPLAY     TBLRD*+             ; Läser in värdet och pekar på nästa
            MOVF    TABLAT,W    ; Lägger in värdet från ROM i WREG, Z blir 1 om ingen char
            BZ      NOBLNK      ; Branch om STATUS, Z=1
            CALL    WRTCHR      ; Skriv ut på LCD
            CALL    ED10MS      ; Vänta
            BRA     DISPLAY     ; nästa bokstav
        
NOBLNK      BTG     PORTB,0     ; Ser till att displayen inte blinkar
            BRA     NOBLNK
    
    END

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎