SchemaTheek
 
Home Nieuws Forum Schema's Artikelen Magazine Downloads Links Shops Zoeken
 
Controle Paneel
Gebruikersnaam
Wachtwoord
  Onthoud mij
» Wachtwoord?
» Registreren
Site info
» Het Team
» Contact
» FAQ
» Leden
» Upload Archief
Stats
Totaal online: 10
10 gasten
0 leden:
[PIC] Pulsenteller.
Artikel informatie
Stynus
Moeilijkheidsgraad: Normaal Aantal punten:
Hits: 3172 Aantal stemmen: 56
Gepost op: 05-10-2008 Stem:
» 0 reacties    

Het artikel
Pulsen tellen op PORT1.0 en op PORTB op een 7 segment display weergeven.


Code
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   

Active Topics

» Werkplaatsinrichting
» Subaru Outback 2016
» De tuin.
» ? => Mini kerstlan...
» ATSAMD21J18A-AU backupen
» De gevolgen van een kl...
» Afstandsbediening plaf...
» Virtual Chemist probleem
» Probleem met Toyota Av...
» Whirlpool kookplaat

» Meer actieve topics

Advertenties

PCBway

© 2004-2023 SchemaTheek
Laadtijd: 0.08654 sec.