            LIST        P=PIC16F628A
            #include    P16F628A.INC
            __CONFIG    _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _MCLRE_OFF & _LVP_OFF & DATA_CP_OFF & _CP_OFF

PC          EQU         0x0002
Reg_1       EQU         0x000C
Reg_2       EQU         0x000F
Reg_3       EQU         0x000E
Reg_4       EQU         0x0011


            org         0           ;            

   			BCF			INTCON,GIE  ;  
			BCF			RCSTA,7     ; USART off
			BCF			CCP1CON,3	; CCP off
			BCF			CCP1CON,2	; CCP off
			BCF			CCP1CON,1	; CCP off
			BCF			CCP1CON,0	; CCP off
			MOVLW   	007h       	;  A   
            MOVWF   	CMCON  
            bsf         STATUS,5    ;    1 
			movlw		b'0000001'  ;   W 
			movwf		TRISB       ;    ,  RB0   
            clrf        TRISA       ;    
            bcf         STATUS,5    ;     0
			clrf        Reg_4       ;   
          	movlw       0x38        ;  3    (5,4,3)
			movwf       PORTB       ;
			movlw       0xd         ;    (3,2,0)
			movwf       PORTA       ;

;   

m1          btfss       PORTB,0      ; -  RB0
            goto        m1		     ;  ,  RB0=1,   m2
m2          btfsc       PORTB,0      ; -  RA2
            goto        m2           ;   
			Call		Pause

  ;   9 (  )    
m12          bcf         STATUS,C    ;     
            movlw       .247         ; (255-9)+1 = 247 -> W
            addwf       Reg_4,0      ; (Reg_4)+W
            btfss       STATUS,C     ;         m11
            goto        m11          ;    
            goto        m14          ;   ,  

m11         incf        Reg_4,1      ;    1  

m14			Movf        Reg_4,W 		 ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movf        Reg_4,W		 ;   W   
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   

;    9
			BCF			STATUS,Z     ;   Z 
			MOVF		Reg_4		 ;   W   4
			XORLW		0x9			 ;    9
			BTFSS		STATUS,Z	 ;  ,     .   -   
            goto        m1 			 ;    
			CLRF		Reg_4		 ;   
			Call        Miganie		 ; .    (.9)
          	movlw       0x38         ;  3    (5,4,3)
			movwf       PORTB        ;  0
			movlw       0xd          ;    (3,2,0)
			movwf       PORTA        ;  0
			goto        m1 			 ;    			


;delay = 250000 machine cycles
Pause       movlw       .169
             movwf       Reg_1
             movlw       .69
             movwf       Reg_2
             movlw       .2
             movwf       Reg_3
wr          decfsz      Reg_1, 1
             goto        wr
             decfsz      Reg_2, 1
             goto        wr
             decfsz      Reg_3, 1
             goto        wr
             return




Miganie		Movlw       .10 	     ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movlw       .10		     ;   W   
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   
			Call		Pause1


			Movlw       .1 	         ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movlw       .1 	         ;   W  A
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   
			Call		Pause1


			Movlw       .9 	         ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movlw       .9 	         ;   W  A
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   
			Call		Pause1



			Movlw       .10 	     ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movlw       .10 	     ;   W  A
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   
			Call		Pause1


			Movlw       .13 	     ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movlw       .13 	     ;   W  A
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   
			Call		Pause1



			Movlw       .5 	         ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movlw       .5 	         ;   W  A
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   
			Call		Pause1



			Movlw       .11 	     ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movlw       .11	         ;   W  A
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   
			Call		Pause1



			Movlw       .0 	         ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movlw       .0 	         ;   W  A
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   
			Call		Pause1



			Movlw       .14	         ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movlw       .14	         ;   W  A
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   
			Call		Pause1



			Movlw       .12	         ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movlw       .12	         ;   W  A
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   
			Call		Pause1



			Movlw       .13	         ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movlw       .13	         ;   W  A
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   
			Call		Pause1




			Movlw       .0 	         ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movlw       .0 	         ;   W  A
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   
			Call		Pause1




			Movlw       .13	         ;   W  
			call        TABLEB 		 ;       
            movwf       PORTB 		 ;         
									 ;    
			Movlw       .13	         ;   W  A
			call        TABLEA 		 ;       
            movwf       PORTA 		 ;   W   
			Call		Pause1
			Return

;delay = 2'000'000 machine cycles
Pause1       movlw       .13
            movwf       Reg_1
            movlw       .57
            movwf       Reg_2
            movlw       .16
            movwf       Reg_3
wr1         decfsz      Reg_1, F
            goto        wr1
            decfsz      Reg_2, F
            goto        wr1
            decfsz      Reg_3, F
            goto        wr1
            nop
            nop

			Return


;====================================
TABLEB       addwf      PC,F       ;    PC = PC + W
             retlw      0x38 	   ; 0     B
             retlw      b'011000'  ; 1     B
             retlw      b'110000'  ; 2     B
             retlw      b'111000'  ; 3     B
             retlw      b'011000'  ; 4     B
             retlw      b'101000'  ; 5     B
             retlw      b'101000'  ; 6     B 
             retlw      b'111000'  ; 7     B
             retlw      b'111000'  ; 8     B
             retlw      b'111000'  ; 9     B
             retlw      b'011000'  ; H     B
             retlw      b'100000'  ; C     B
             retlw      b'110000'  ; E     B
             retlw      b'000000'  ; -     B
             retlw      b'100000'  ; r     B
;====================================

;====================================
TABLEA       addwf      PC,F       ;    PC = PC + W
			 retlw      0xD 	   ; 0     A
             retlw      0x0        ; 1     A
             retlw      b'1110'    ; 2     A
             retlw      b'1010'    ; 3     A
             retlw      b'11'      ; 4     A
             retlw      b'1011'    ; 5     A
             retlw      b'1111'    ; 6     A
             retlw      b'00'      ; 7     A
             retlw      b'1111'    ; 8     A
             retlw      b'1011'    ; 9     A
             retlw      b'0111'    ; H     A
             retlw      b'1101'    ; C     A
             retlw      b'1111'    ; E     A
             retlw      b'0010'    ; -     A
             retlw      b'0101'    ; r     A
 ;====================================






            end                     ;  