Pulsen tellen op PORT1.0 en op PORTB op een 7 segment display weergeven.
list p=16f84 #include <P16f84.inc> count equ 20h RA0 equ 00 RA3 equ 03 ;---------------------------------------------------------- ;PORTA = input, PORTB = output ;---------------------------------------------------------- org 5 start bsf STATUS,RP0 ;bank1 movlw b'00000111' ;PORTA.0 .1 en .2 als input declareren movwf TRISA clrf TRISB ;PORTB declareren als output bcf STATUS,RP0 ;Bank0 bsf PORTA,RA3 ;---------------------------------------------------------- ;main ;---------------------------------------------------------- main clrf count loop btfss PORTA,RA0 ;Als A.0 goto InCount ;hoog is naar incount gaan goto loop ;laag is naar loop gaan ; InCount incf count,F ;Count + 1 => Count movlw 0x10 ;10 in het werkregister zetten xorwf count,w ;Xor met count, w btfsc STATUS,Z ;Als dit goto plus6 ;1 is naar plus6 gaan ; out movf count,w ;Nul is dan count naar het werkregister call optbl ;Ophalen hoe uitgang moet staan bij dit getal movwf PORTB ;Wegschrijven naar portB ; inlaag btfss PORTA,RA0 ;Hier blijven tot dat portA.0 laag is goto inlaag goto loop ;Naar loop gaan als portA.0 laag is ; plus6 movlw 0x06 ;6 in het werkregister zetten addwf count,F ;6 bij count optellen bcf count,4 ;bit 4 clearen xxx0xxxx goto out ;naar out gaan ;---------------------------------------------------------- optbl addwf PCL,F retlw b'11000000' ;0 retlw b'11111001' ;1 retlw b'10100100' ;2 retlw b'10110000' ;3 retlw b'10011001' ;4 retlw b'10010010' ;5 retlw b'10000010' ;6 retlw b'11111000' ;7 retlw b'10000000' ;8 retlw b'10010000' ;9 ; dpgfedcba end