Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LIST P=18F4520
- #include <P18F4520.INC>
- CONFIG OSC = XT
- CONFIG WDT = OFF
- CONFIG LVP = OFF
- CBLOCK 0x000
- DELAY_H
- DELAY_L
- input
- d4
- d3
- d2
- d1
- d3b
- tmrh
- tmrl
- clock
- ENDC
- ORG 0x0000
- goto Main
- ORG 0008H
- BTFSS INTCON,TMR0IF
- RETFIE
- GOTO TIMER
- ORG 0x0100
- Main
- movlw 0x0F
- movwf ADCON1
- clrf TRISD
- clrf TRISB
- clrf PORTD
- clrf PORTB
- setf TRISC
- movlw b'0100'
- movwf d4
- movlw b'0011'
- movwf d3
- movlw b'0010'
- movwf d2
- movlw b'0001'
- movwf d1
- movlw 0x05
- movwf d3b
- movlw 0x0b
- movwf tmrh
- movlw 0xdc
- movwf tmrl
- movlw 0x01
- movwf clock
- movlw b'00000011'
- movwf T0CON
- movlw 0x0B
- movwf TMR0H
- movlw 0xDC
- movwf TMR0L
- BCF INTCON,TMR0IF
- BSF T0CON,TMR0ON
- BSF INTCON,TMR0IE
- BSF INTCON,GIE
- Loop
- call LED
- call button
- goto Loop
- button
- btfss PORTC,0
- incf d4
- call digit
- btfss PORTC,1
- call pause
- btfss PORTC,2
- call mode
- btfss PORTC,3
- call resett
- btfss PORTC,7
- call demo
- return
- clear
- movlw 0x00
- movwf d1
- movwf d2
- movwf d3
- movwf d4
- return
- resett:
- call clear
- BCF T0CON,TMR0ON
- call Delay
- again2 btfsc PORTC,3
- goto up2
- call LED
- goto again2
- up2 call Delay
- return
- pause:
- BTG T0CON,TMR0ON
- call Delay
- again btfsc PORTC,1
- goto up
- call LED
- goto again
- up call Delay
- return
- mode: call clear
- BCF T0CON,TMR0ON
- movf clock,w
- BZ fast
- movlw 0xFD
- movwf tmrh
- movlw 0x8F
- movwf tmrl
- movlw 0x09
- movwf d3b
- movlw 0x00
- movwf clock
- goto done
- fast: movlw 0x0B
- movwf tmrh
- movlw 0xDC
- movwf tmrl
- movlw 0x05
- movwf d3b
- movlw 0x01
- movwf clock
- done: call Delay
- again3 btfsc PORTC,2
- goto up3
- call LED
- goto again3
- up3 call Delay
- return
- digit:
- movf d4,w
- sublw 0x09
- btfsc STATUS,N
- goto equal
- goto notequal
- equal: movlw 0x00
- movwf d4
- incf d3
- notequal:
- movf d3,w
- subwf d3b,w
- btfsc STATUS,N
- goto equal2
- goto notequal2
- equal2: movlw 0x00
- movwf d3
- incf d2
- notequal2:
- movf d2,w
- sublw 0x09
- btfsc STATUS,N
- goto equal3
- goto notequal3
- equal3: movlw 0x00
- movwf d2
- incf d1
- notequal3:
- movf d1,w
- sublw 0x05
- btfsc STATUS,N
- goto equal4
- goto notequal4
- equal4: movlw 0x00
- movwf d1
- notequal4:
- return
- demo
- movlw 0x05
- movwf d1
- movlw 0x00
- movwf d2
- movwf d3
- movwf d4
- return
- LED
- movff d1,input
- CALL bcd_7seg
- movwf PORTD
- movlw 0x00
- movwf PORTB
- CALL Delay
- movff d2,input
- CALL bcd_7seg
- movwf PORTD
- incf PORTB,F
- CALL Delay
- movff d3,input
- CALL bcd_7seg
- movwf PORTD
- incf PORTB,F
- CALL Delay
- movff d4,input
- CALL bcd_7seg
- movwf PORTD
- incf PORTB,F
- CALL Delay
- return
- bcd_7seg
- MOVLW low bcd_table
- MOVWF TBLPTRL
- MOVLW high bcd_table
- MOVWF TBLPTRH
- MOVLW upper bcd_table
- MOVWF TBLPTRU
- MOVF input, W
- ADDWF TBLPTRL, F
- MOVLW 0
- ADDWFC TBLPTRH
- ADDWFC TBLPTRU
- TBLRD*
- MOVF TABLAT, W
- RETURN
- bcd_table
- db 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
- Delay:
- MOVLW 0x07
- MOVWF DELAY_H
- LOP_1: MOVLW 0
- MOVWF DELAY_L
- LOP_2: DECF DELAY_L, F
- BNZ LOP_2
- DECF DELAY_H, F
- BNZ LOP_1
- return
- TIMER:
- movf tmrh,w
- movwf TMR0H
- movf tmrl,w
- movwf TMR0L
- incf d4
- BCF INTCON,TMR0IF
- RETFIE
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement