Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- list p=16F84A
- #include <p16F84A.inc>
- __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
- w EQU 0
- f EQU 1
- Begin_value EQU D'96'
- CBLOCK H'0C'
- Counter_1
- Counter_10
- Counter_100
- Counter_1000
- Cycle_counter
- Temp_PORTA
- ENDC
- #define Dig_1 PORTA,0
- #define Dig_10 PORTA,1
- #define Dig_100 PORTA,2
- #define Dig_1000 PORTA,3
- ORG H'0000'
- goto start
- ORG H'0004'
- goto Int_Service
- start bcf STATUS,RP0
- clrf PORTA
- clrf PORTB
- bsf STATUS,RP0
- movlw B'11110000'
- movwf TRISA
- clrf TRISB
- bcf STATUS,RP0
- goto main
- Int_Service
- btfss INTCON,T0IF
- goto end_int
- TMR0_int
- movlw Begin_value
- movwf TMR0
- call Inc_timer
- call Update_disp
- end_int
- bcf INTCON,T0IF
- retfie
- Inc_timer
- incf Cycle_counter,w
- xorlw D'200'
- btfsc STATUS,Z
- goto inc_counters
- incf Cycle_counter,f
- return
- inc_counters
- clrf Cycle_counter
- incf Counter_1,f
- movlw D'10'
- xorwf Counter_1,w
- btfss STATUS,Z
- return
- clrf Counter_1
- inc_10
- incf Counter_10,f
- movlw D'10'
- xorwf Counter_10,w
- btfss STATUS,Z
- return
- clrf Counter_10
- inc_100
- incf Counter_100,f
- movlw D'10'
- xorwf Counter_100,w
- btfss STATUS,Z
- return
- clrf Counter_100
- inc_1000
- incf Counter_1000,f
- movlw D'10'
- xorwf Counter_1000,w
- btfss STATUS,Z
- return
- clrf Counter_1000
- return
- Update_disp
- movf Temp_PORTA,w
- movwf PORTA
- btfsc Dig_1
- goto update_dig1
- btfsc Dig_10
- goto update_dig10
- btfsc Dig_100
- goto update_dig100
- update_dig1000
- movf Counter_1000,w
- call Table
- movwf PORTB
- goto end_update
- update_dig1
- movf Counter_1,w
- call Table
- movwf PORTB
- goto end_update
- update_dig10
- movf Counter_10,w
- call Table
- movwf PORTB
- goto end_update
- update_dig100
- movf Counter_100,w
- call Table
- movwf PORTB
- end_update
- bcf STATUS,C
- rlf Temp_PORTA,f
- btfss Temp_PORTA,4
- return
- movlw B'00000001'
- movwf Temp_PORTA
- return
- Table addwf PCL,f
- retlw B'00111111' ;0
- retlw B'00000110' ;1
- retlw B'01011011' ;2
- retlw B'01001111' ;3
- retlw B'01100110' ;4
- retlw B'01101101' ;5
- retlw B'01111101' ;6
- retlw B'00000111' ;7
- retlw B'01111111' ;8
- retlw B'01101111' ;9
- Timer_config
- bsf STATUS,RP0
- movlw B'10000100'
- movwf OPTION_REG
- bcf STATUS,RP0
- clrf Counter_1
- clrf Counter_10
- clrf Counter_100
- clrf Counter_1000
- clrf Cycle_counter
- movlw B'00000001'
- movwf Temp_PORTA
- movlw Begin_value
- movwf TMR0
- return
- main call Timer_config
- movlw B'10100000'
- movwf INTCON
- loop nop
- goto loop
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement