Advertisement
reo101

Gaden Assembler

Apr 29th, 2020
2,764
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         list        p=16F84A
  2.         #include    <p16F84A.inc>
  3.         __CONFIG    _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
  4.  
  5. w           EQU     0
  6. f           EQU     1
  7. Begin_value EQU     D'96'
  8.  
  9.             CBLOCK  H'0C'
  10.             Counter_1
  11.             Counter_10
  12.             Counter_100
  13.             Counter_1000
  14.             Cycle_counter
  15.             Temp_PORTA
  16.             ENDC
  17.  
  18. #define     Dig_1       PORTA,0
  19. #define     Dig_10      PORTA,1
  20. #define     Dig_100     PORTA,2
  21. #define     Dig_1000    PORTA,3
  22.  
  23.  
  24.     ORG     H'0000'
  25.     goto    start
  26.  
  27.     ORG     H'0004'
  28.     goto    Int_Service
  29.  
  30.  
  31.  
  32. start   bcf     STATUS,RP0
  33.         clrf    PORTA
  34.         clrf    PORTB
  35.         bsf     STATUS,RP0
  36.         movlw   B'11110000'
  37.         movwf   TRISA
  38.         clrf    TRISB
  39.         bcf     STATUS,RP0
  40.         goto    main
  41.        
  42.  
  43.  
  44.  
  45. Int_Service
  46.         btfss   INTCON,T0IF
  47.         goto    end_int
  48. TMR0_int
  49.         movlw   Begin_value
  50.         movwf   TMR0
  51.         call    Inc_timer
  52.         call    Update_disp
  53. end_int
  54.         bcf     INTCON,T0IF
  55.         retfie
  56.        
  57. Inc_timer
  58.         incf    Cycle_counter,w
  59.         xorlw   D'200'
  60.         btfsc   STATUS,Z
  61.         goto    inc_counters
  62.         incf    Cycle_counter,f
  63.         return
  64. inc_counters
  65.         clrf    Cycle_counter
  66.         incf    Counter_1,f
  67.         movlw   D'10'
  68.         xorwf   Counter_1,w
  69.         btfss   STATUS,Z
  70.         return
  71.         clrf    Counter_1
  72. inc_10
  73.         incf    Counter_10,f
  74.         movlw   D'10'
  75.         xorwf   Counter_10,w
  76.         btfss   STATUS,Z
  77.         return
  78.         clrf    Counter_10
  79. inc_100
  80.         incf    Counter_100,f
  81.         movlw   D'10'
  82.         xorwf   Counter_100,w
  83.         btfss   STATUS,Z
  84.         return
  85.         clrf    Counter_100
  86. inc_1000
  87.         incf    Counter_1000,f
  88.         movlw   D'10'
  89.         xorwf   Counter_1000,w
  90.         btfss   STATUS,Z
  91.         return
  92.         clrf    Counter_1000
  93.         return
  94.        
  95. Update_disp
  96.         movf    Temp_PORTA,w
  97.         movwf   PORTA
  98.         btfsc   Dig_1
  99.         goto    update_dig1
  100.         btfsc   Dig_10
  101.         goto    update_dig10
  102.         btfsc   Dig_100
  103.         goto    update_dig100
  104. update_dig1000
  105.         movf    Counter_1000,w
  106.         call    Table
  107.         movwf   PORTB
  108.         goto    end_update
  109. update_dig1
  110.         movf    Counter_1,w
  111.         call    Table
  112.         movwf   PORTB
  113.         goto    end_update
  114. update_dig10
  115.         movf    Counter_10,w
  116.         call    Table
  117.         movwf   PORTB
  118.         goto    end_update
  119. update_dig100
  120.         movf    Counter_100,w
  121.         call    Table
  122.         movwf   PORTB
  123. end_update
  124.         bcf     STATUS,C
  125.         rlf     Temp_PORTA,f
  126.         btfss   Temp_PORTA,4
  127.         return
  128.         movlw   B'00000001'
  129.         movwf   Temp_PORTA
  130.         return
  131.        
  132.  
  133. Table   addwf   PCL,f
  134.         retlw   B'00111111' ;0
  135.         retlw   B'00000110' ;1
  136.         retlw   B'01011011' ;2
  137.         retlw   B'01001111' ;3
  138.         retlw   B'01100110' ;4
  139.         retlw   B'01101101' ;5
  140.         retlw   B'01111101' ;6
  141.         retlw   B'00000111' ;7
  142.         retlw   B'01111111' ;8
  143.         retlw   B'01101111' ;9
  144.        
  145. Timer_config
  146.         bsf     STATUS,RP0
  147.         movlw   B'10000100'
  148.         movwf   OPTION_REG
  149.         bcf     STATUS,RP0
  150.         clrf    Counter_1
  151.         clrf    Counter_10
  152.         clrf    Counter_100
  153.         clrf    Counter_1000
  154.         clrf    Cycle_counter
  155.         movlw   B'00000001'
  156.         movwf   Temp_PORTA
  157.         movlw   Begin_value
  158.         movwf   TMR0
  159.         return
  160.  
  161.  
  162.  
  163. main    call    Timer_config
  164.         movlw   B'10100000'
  165.         movwf   INTCON
  166. loop    nop
  167.         goto    loop
  168.         END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement