miyago icon

Untitled

miyago | PRO | 02/19/18 08:34:25 PM UTC | 0 ⭐ | 11023 👁️ | 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 0x000020
;----Quick DELAY------------------
IDONCE  equ 0x7F
 
QDELAY  CLRF    IDONCE
QLOOP   DECFSZ  IDONCE
        GOTO    QLOOP
        RETURN
;----END OF QUICK DELAY------------------
        
;*********SYMBO
    ;*****************************************************
    ;**************8x8 display 7-segment INIT*************
    IC8COL  equ 0x07F
    ;*****************************************************
    EC8INIT     BCF     TRISA,1
                BCF     TRISA,2
                BCF     TRISA,3
                BCF     TRISA,5
                BCF     TRISE,0     ; E0 Out for Col 5
                BCF     TRISE,1     ; E1 Out for Col 6
                BCF     TRISE,2     ; E2 Out for Col 7
                BCF     TRISC,0     ; C0 Out for Col 8
                CLRF    IC8COL
                CALL    EC8FREE
                RETURN
 
    EC8COLQ     MOVF    IC8COL,W
                RETURN
              
    EC8NXTQ     INCF    IC8COL,W
                BTFSC   WREG,3      ; Om 0000 0100 = 4
                CLRF    WREG        ; Börja om om från 0 ( vi har bara 0-3 )
                RETURN
                
    EC8FREE     BCF     PORTA,1
                BCF     PORTA,2
                BCF     PORTA,3
                BCF     PORTA,5
                BCF     PORTE,0
                BCF     PORTE,1
                BCF     PORTE,2
                BCF     PORTC,0
                RETURN 
                
    EC8NEXT     CALL    EC8NXTQ     ; Gå till nästa column
                MOVWF   IC8COL
 
                RLNCF   WREG
                RLNCF   WREG
                ADDWF   PCL
                BSF     PORTA,1
                RETURN
                BSF     PORTA,2
                RETURN
                BSF     PORTA,3
                RETURN
                BSF     PORTA,5
                RETURN         
                BSF     PORTE,0
                RETURN
                BSF     PORTE,1
                RETURN
                BSF     PORTE,2
                RETURN
                BSF     PORTC,0
                RETURN
            
    ;**************END OF*********************************
    ;**************8x8 display 7-segment INIT*************
    ;*****************************************************
 
;*****************************************************
;**************KEYBOARD*******************************
;******************************************************************************
IKTEMP  equ 0x003
IKPREV  equ 0x004
IKTIME  equ 0x005
 
EKINIT      BSF     TRISB,0
            BSF     TRISB,2
            BSF     TRISB,4
            BSF     TRISB,5
            SETF    IKPREV
            CLRF    IKTIME
            RETURN
                
EKDOWNQ     CALL    EC8COLQ
            DECFSZ  WREG
            GOTO    LKDOWNQ
            DCFSNZ  IKTIME
            INCF    IKTIME
LKDOWNQ     SETF    WREG            ;Anta att ingen knappt är tryckt
            BTFSS   PORTB,0         ;Är en knapp på kolumn 0 tryckt?
            CLRF    WREG            ; Spara 0 i WREG
            BTFSS   PORTB,2         ;Är en knapp på kolumn 1 tryckt?
            MOVLW   0x01            ; Spara 1 i WREG
            BTFSS   PORTB,4         ;Är en knapp på kolumn 2 tryckt?
            MOVLW   0x02            ; Spara 2 i WREG
            BTFSS   PORTB,5         ;Är en knapp på kolumn 3 tryckt?
            MOVLW   0x03            ; Spara 3 i WREG
            BTFSC   WREG,7          ; 
            RETURN
            MOVWF   IKTEMP          ; Spara kolumnen för knappen tryckt 0000 0001
            CALL    EC8COLQ          ; Kolla raden den var i             0000 0001
            RLNCF   WREG
            RLNCF   WREG            ; 0000 0100
            IORWF   IKTEMP          ; Spara den!                0000 0101
            MOVF    IKPREV,W
            XORWF   IKTEMP,W        ; Är det samma knapp igen?
            BNZ     LKNEW           ; Ny knapp = branch!
            
            MOVF    IKTEMP,W        ; Om det är samma knapp så spara den här
            DECFSZ  IKTIME
            SETF    WREG
            RETURN
            
LKNEW       MOVF    IKTEMP,W        ; Ny knapp är tryckt!
            MOVWF   IKPREV          ; Spara det!
            CLRF    IKTIME          ; Återställä räknare
            RETURN
;*************END KEY TOOLBOX*************
;*****************************************************
    CURSYM  equ     0x071        
;******************0-9, A-F****************************     
    ELDFSR      LFSR    0, 0x020
                
                MOVLW   0x3F            ;Siffran 0  
                MOVWF   POSTINC0
                MOVLW   0x06            ;Siffran 1
                MOVWF   POSTINC0
                MOVLW   0x5B            ;Siffran 2
                MOVWF   POSTINC0
                MOVLW   0x4F            ;Siffran 3
                MOVWF   POSTINC0
                MOVLW   0x66            ;Siffran 4
                MOVWF   POSTINC0
                MOVLW   0x6D            ;Siffran 5
                MOVWF   POSTINC0
                MOVLW   0x7D            ;Siffran 6
                MOVWF   POSTINC0
                MOVLW   0x07            ;Siffran 7
                MOVWF   POSTINC0
                MOVLW   0x7F            ;Siffran 8
                MOVWF   POSTINC0
                MOVLW   0x6F            ;Siffran 9
                MOVWF   POSTINC0
                MOVLW   0x77            ;Bokstaven A
                MOVWF   POSTINC0
                MOVLW   0x7C            ;Bokstaven b
                MOVWF   POSTINC0
                MOVLW   0x39            ;Bokstaven c
                MOVWF   POSTINC0
                MOVLW   0x5E            ;Bokstaven d
                MOVWF   POSTINC0
                MOVLW   0x79            ;Bokstaven E
                MOVWF   POSTINC0
                MOVLW   0x71            ;Bokstaven F  
                MOVWF   INDF0           ; Adress 0x02F
                LFSR    0, 0x020
                RETURN
        
        EGETNR  MOVFF   PLUSW0, CURSYM
                RETURN
;********************************************************
;******************************************************
 
               
                
                
                
                
                
;********************************************************
;********************************************************
 
        MAIN    CALL    EC8INIT
                CALL    EKINIT
                CLRF    CURSYM
                             
        MLOOP   CALL    EC8NXTQ
                CALL    E88VIEW
        
                CALL    EC8NEXT         ; Kollar nästa rad..
                CALL    EKDOWNQ            ; ..om en knapp är tryckt
                BTFSS   WREG,7          ; Är en tryckt?
                CALL    EGETNR
                MOVLW   PORTD
                BSF     PORTA,1
                CALL    QDELAY          ; Lys
                CALL    EC8FREE         ; Släck
                
                GOTO    MLOOP           ; en gång till!
            end

Comments

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

    0 B

    |

    👍

    /

    👎