-         

Ergebnis 1 bis 2 von 2

Thema: Frequenzzähler mit LPH2673-1 (zum Nachbauen)

  1. #1
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969

    Frequenzzähler mit LPH2673-1 (zum Nachbauen)

    Anzeige

    Hallo!

    Zuletzt habe ich mir einen kleinen (80x40x28 mm) einfachen mit einem 2,4 V / 140 mAh (Varta 110) betriebenen Frequenzzähler mit dem LPH2673-1 Display von Pollin gebaut. Ich habe wegen minimalsten Stromverbrauch keinen Eingangsverstärker eingebaut. Die Skizze der Hardware und der ASM Quellcode befinden sich im Code.

    Das Programm basiert auf dem in unserem Wiki erklärtem, wo die leere Schleife durch eine endlose Schleife fürs Display ersetzt wurde.

    Der Frequenzzähler misst 1 s und als Ergebnis werden max. 6 Ziffer ohne führenden Nullen in zwei Bereichen angezeigt. Ohne Doppelpunkt wird die Frequenz in Hz dargestellt und der sichtbare Doppelpunkt zeigt, dass die gemessene Frequenz mindestens 1 MHz ist und trent die zwei MHz stellen von den anderen. Für einen Uhrenquarz wird 32768 und für 16 MHz 16:0000 gezeigt.

    Das Display wurde "auf dem Kopf gestellt" damit sich der Doppelpunkt auf der richtiger Stelle befindet. Genauere Beschreibung der Funktionsweise ist in: http://www.roboternetz.de/community/...%BCr-LPH2673-1 . Zum Laden des Akkus wurde an die Spitze und GND Krokoklemme durch Zeitschaltuhr angeschlossenes stabiliesiertes Netzgerät +5 V vorgesehen. Der Stromverbrauch bei 2,4V beträgt ca. 2,7 mA.

    Weil das Programm ziemlich groß ist, musste ich es auf zwei Beiträge verteilen. Die beide Teile muss man in eine Datei nacheinander kopieren.

    MfG
    Code:
          Ziffer   1    2         3    4      5    6
                --------------------------------------------	 a
                |  --   --        --   --     --   --        |      ---
                | |  | |  | PROG |  | |  | o |  | |  | STOP  |    f| g |b
                |  --   --        --   --     --   --        |      ---
                | |  | |  | DATE |  | |  | o |  | |  | START |    e|   |c
                |  --   --        --   --     --   --        |      ---
                 --------------------------------------------	 d
                Pin1| | | | | | | | | | | | | | | | | | |Pin19
    
    
    
          --------------------------------------------------------------------------
          |Seg1|Sg2|Sg3|Sg4|Sg5|Seg6|Sg7|Sg8|Sg9|S10|Sg11|Sg12|Sg13|Sg14|Sg15|Seg16|
     -------------------------------------------------------------------------------
     |Com3|STOP| a1| b1| a2| b2|DATE| a3| b3| a4| b4| dp | a5 | b5 | a6 | b6 |START|Pin19
     -------------------------------------------------------------------------------
     |Com2| -  | f1| g1| f2| g2| c2 | f3| g3| f4| g4| c4 | f5 | g5 | f6 | g6 | c6  |Pin18
     -------------------------------------------------------------------------------
     |Com1|PROG| e1| d1| c1| e2| d2 | e3| d3| c3| e4| d4 | e5 | d5 | c5 | e6 | d6  |Pin17
     -------------------------------------------------------------------------------
           Pin1 P2 Pin3 Pin4 P5 Pin6 Pin7 P8 P9  P10 P11  Pin12 P13 Pin14 P15 Pin16
    
                                                   VCC
                                                    +
                                                    |  ___
                                                10k +-|___|-+
                                                            |
                                                       ___  |
                                                10k +-|___|-+
                                                    |       |
                                                    |  \]   |
                                               100µ +--|]---+
                                                    |  /]+  |
                                                   ===     .-.
                                                   GND  Rs*| |
                                                        6k8| |
                                                           '-'
      18x150k (2 Netzwerke 9x150k)                          |
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
      |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
      | .-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-..-.
      | | || || || || || || || || || || || || || || || || || |
      | | || || || || || || || || || || || || || || || || || |
      | '-''-''-''-''-''-''-''-''-''-''-''-''-''-''-''-''-''-'
      |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
      V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V  V Display
      1                                                     19
    
                                                  220
                                                  ___
                         +-----------------------|___|--+
                         |       .----U----.            |
                         |      -|VPP    B7|-           |
                         |  D19<-|A0     B6|->D2        o
                         |  D18<-|A1     B5|->D3        __--o-+
                         |  D17<-|A2     B4|->D4      +-o     |
                         |  ___ -|A3     B3|->D5      |       |+
            Spitze <-----+-|___|-|A4     B2|->D6      |       -
                            470 -|A5     B1|->D7   +--+      ---
             +--+----------------|VDD    B0|->D8   |  |       | Akku
             |  | ||  /----------|OSC1  VCC|-------+ ---      - 2,4V
            === +-||-+22p+-------|OSC2  VDD|-------+ --- µ1  ---
            GND | || |   |  D16<-|C0     C7|->D9   |  |       |-
                |   _-_  |  D15<-|C1     C6|->D10  +--+-------+
                |  |___| |  D14<-|C2     C5|->D11     |
                |    -   |  D13<-|C3     C4|->D12     |
                | || |   |       '---------'          |
                +-||-+---+        PIC16F870           |
                  ||  7,3728 MHz                     \|/
                                                      X
                  22p                                / \
                                                    /   \
             D2...D19 - Displaypins                  GND
    
    
    ;	Programm zum Messen der Frequenz am T0CKI Pin mit 7,3728 MHz Quarz und Display LPH2673-1
    	LIST      P=16F870
    	include "P16F870.inc"
    	__CONFIG	_CP_OFF & _DEBUG_OFF & _WRT_ENABLE_ON & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
    ;	TOCKI	PORTA,4				;I Frequenzeingang
    #define	_C	STATUS,C
    #define	_Z	STATUS,Z
    #define	_DC	STATUS,DC
    #define	_RP0	STATUS,RP0
    #define	_Fcra	Flags,0
    #define	_Fcrp	Flags,1
    #define	_Fdca	Flags,2
    #define	_Ferr	Flags,3				;Überlauf (Fehler)
    #define	_Frs	Flags,4
    #define	_Fnz	Flags,5
    #define	_Flow	Flags,6
    #define	_Ftmp	Flags,7				;Zwischenspeicher
    #define	DATE	TB3,2				;Segmentszuweisung	
    #define	START	TC3,0
    #define	dp	TC3,5				;Doppelpunkt
    #define	a1	TB3,6
    #define	b1	TB3,5
    #define	c1	TB1,4
    #define	d1	TB1,5
    #define	e1	TB1,6
    #define	f1	TB2,6
    #define	g1	TB2,5
    #define	a2	TB3,4
    #define	b2	TB3,3
    #define	c2	TB2,2
    #define	d2	TB1,2
    #define	e2	TB1,3
    #define	f2	TB2,4
    #define	g2	TB2,3
    #define	a3	TB3,1
    #define	b3	TB3,0
    #define	c3	TC1,7
    #define	d3	TB1,0
    #define	e3	TB1,1
    #define	f3	TB2,1
    #define	g3	TB2,0
    #define	a4	TC3,7
    #define	b4	TC3,6
    #define	c4	TC2,5
    #define	d4	TC1,5
    #define	e4	TC1,6
    #define	f4	TC2,7
    #define	g4	TC2,6
    #define	a5	TC3,4
    #define	b5	TC3,3
    #define	c5	TC1,2
    #define	d5	TC1,3
    #define	e5	TC1,4
    #define	f5	TC2,4
    #define	g5	TC2,3
    #define	a6	TC3,2
    #define	b6	TC3,1
    #define	c6	TC2,0
    #define	d6	TC1,0
    #define	e6	TC1,1
    #define	f6	TC2,2
    #define	g6	TC2,1
    ;Com1		PORTA,2				;Portszuweisung
    ;Com2		PORTA,1
    ;Com3		PORTA,0
    ;Seg1		PORTB,7
    ;Seg2		PORTB,6
    ;Seg3		PORTB,5
    ;Seg4		PORTB,4
    ;Seg5		PORTB,3
    ;Seg6		PORTB,2
    ;Seg7		PORTB,1
    ;Seg8		PORTB,0
    ;Seg9		PORTC,7
    ;Seg10		PORTC,6
    ;Seg11		PORTC,5
    ;Seg12		PORTC,4
    ;Seg13		PORTC,3
    ;Seg14		PORTC,2
    ;Seg15		PORTC,1
    ;Seg16		PORTC,0
    A3		equ	20			;Register fürs Rechnen Hex_Dec
    A2		equ	21
    A1		equ	22
    A0		equ	23
    B3		equ	24
    B2		equ	25
    B1		equ	26
    B0		equ	27
    C3		equ	28
    C2		equ	29
    C1		equ	2A
    C0		equ	2B
    D3		equ	2C
    D2		equ	2D
    D1		equ	2E
    D0		equ	2F
    Flags		equ	30
    Tmp		equ	31			;vorläufige Register
    ATmp		equ	32
    HTmp		equ	33			;Zwischenspeicher
    RTmp		equ	34
    DTmp		equ	35			;temporary (temp) für Display 
    DTmp1		equ	36
    PA		equ	37			;temp für PORTA
    PB		equ	38			;temp für PORTB
    PC		equ	39			;temp für PORTC
    TA1		equ	3A			;temp für TRISA bei Com1
    TA2		equ	3B			;temp für TRISA bei Com2
    TA3		equ	3C			;temp für TRISA bei Com3
    TB1		equ	3D			;temp für TRISB bei Com1
    TB2		equ	3E			;temp für TRISB bei Com2
    TB3		equ	3F			;temp für TRISB bei Com3
    TC1		equ	40			;temp für TRISC bei Com1
    TC2		equ	41			;temp für TRISC bei Com2
    TC3		equ	42			;temp für TRISC bei Com3
    SWR		equ	43			;sicherung vom W-Register 
    SSR		equ	44			;Sicherung vom STATUS-Register
     		ORG	0
    		call	Init			;alles initialisieren
    Main		goto	DispLoop		;und in die endlose Schleife springen 
    		ORG	4			;hier fängt ISR (interrupt service routine) an
    		bcf	INTCON,GIE		;alle interrupts sperren
    		movwf	SWR			;W-Register sichern
    		movf	STATUS,0		;STATUS Register
    		movwf	SSR			;sichern
    		btfss	INTCON,T0IF		;ist Timer0 überlaufen ?
    		goto	CheckTMR1		;nein, dann prüfe Timer1
    		bcf	INTCON,T0IF		;ja, Timer0 interrupt flag löschen und bearbeiten
    	 	movlw	1
    		addwf	A2,1			;erhöhe A2 durch Addition
    		btfsc	_C			;um Überlauf von A2 zu erkennen und
    		incf	A3,1			;increment A3, wenn A2 überlaufen ist
    CheckTMR1	btfss	PIR1,TMR1IF		;ist Timer1 überlaufen ?
    		goto	ISREnd			;nein, dann ISR beenden und interrupts erlauben
    		bcf	PIR1,TMR1IF		;Timer1 interrupt flag löschen
    		call	Multip			;Interrupts vom Timer1 im UP "Multip" zählen
    ISREnd		movf	SSR,0			;STATUS Register
    		movwf	STATUS  		;wiederherstellen
    		movf	SWR,0			;W-Register wiederherstellen
    		retfie				;ISR beenden und interrupts erlauben
    Multip		incf	Tmp,1			;Interruptszähler von Timer1 erhöhen
    		btfss	Tmp,2			;schon 4.interrupt?
    		return				;nein, dann zurück
    		bsf	_RP0			;ja, weiter
    		movf	TRISA,0			;stopp Timer 0 usw.
    		andlw	0xEF
    		movwf	TRISA			;TOCKI Pin (A4) als Ausgang
    		bcf	_RP0
    		bcf	T1CON,TMR1ON		;stopp Timer1
    GetFreq		movf	TMR0,0			;Prescaler ins Register A0 kopieren
    		movwf	A1
    		movwf	RTmp
    		clrf	ATmp
    		incf	ATmp,1
    		bsf	_RP0
    		bsf	OPTION_REG,T0SE
    		bcf	OPTION_REG,T0SE
    		bcf	_RP0
    		movf	TMR0,0
    		subwf	RTmp,0
    		btfsc	_Z
    		goto	$-8
    		comf	ATmp,1
    		incf	ATmp,0
    		movwf	A0
    GetFreq1	call	Hex_Dec			;Messergebnis auf Decimal wandeln
    		call	DispSet			;und auf das Display übergeben
    		call	AClr
    		clrf	Tmp
    		call	TMRStart		;beide Timer starten
    		return
    AClr		clrf	A0			;Register A löschen
    		clrf	A1
    		clrf	A2
    		clrf	A3
    		return
    TMRStart	clrf	TMR0			;TMR0 und Prescaler löschen
    		movlw	30			;Timer1 konfigurieren
    		movwf	T1CON			;(Psc=8) und laden
    		movlw	7B			;berechneter Wert: TMR1H=7Ch
    		movwf	TMR1H
    		movlw	0xF8			;berechneter Wert: TMR1L=0
    		movwf	TMR1L
    		bsf	_RP0			;start Timer0
    		movf	TRISA,0
    		iorlw	10
    		movwf	TRISA			;TOCKI Pin (A4)als Eingang
    		bcf	_RP0
    		bsf	T1CON,TMR1ON		;start Timer1
    		return
    Hex_Dec 	call	DClr			;Hex>A, D>Dec
    		movlw	1
    		movwf	C0
    		movlw	20			;32 bit Hex > 32 bit Dec (8 Stellen)
    		movwf	HTmp
    		btfsc	A0,0
    		call	AddDC
    		call	CopyCB
    		call	AddCB
    		call	ARotRb
    		decfsz	HTmp,1
    		goto	$-6
    		return
    DClr		clrf	D0
    		clrf	D1
    		clrf	D2
    		clrf	D3
    		clrf	C0
    		clrf	C1
    		clrf	C2
    		clrf	C3
     		return
    CopyCB		movf	C0,0
    		movwf	B0
    		movf	C1,0
    		movwf	B1
    		movf	C2,0
    		movwf	B2
    		movf	C3,0
    		movwf	B3
    		return
    AddCB		movlw	B0			;C+B>C
    		movwf	FSR
    		goto	AddR
    AddDC		movlw	C0			;D+C>D
    		movwf	FSR
    AddR		bcf	_Ferr			;Addiere zwei Register
    		bcf	_Fcrp
    		movlw	4			;X=4 Bytes lang
    		movwf	ATmp
    		bcf	_Fdca
    		bcf	_Fcra
    		movf	INDF,0
    		movwf	RTmp
    		movlw	4			;X=4 
    		addwf	FSR,1
    		btfss	_Fcrp
    		goto	$+4
    		movlw	1
    		addwf	INDF,1
    		call	DecCor
    		movf	RTmp,0
    		addwf	INDF,1
    		call	DecCor
    		btfss	_Fdca
    		goto	$+3
    		movlw	6
    		addwf	INDF,1
    		btfss	_Fcra
    		goto	$+5
    		movlw	60
    		addwf	INDF,1
    		btfsc	_C
    		bsf	_Fcra
    		movf	INDF,0
    		andlw	0xF0
    		sublw	0xA0
    		btfss	_Z
    		goto	$+6
    		movf	INDF,0
    		andlw	0x0F
    		clrf	INDF
    		addwf	INDF,1
    		bsf	_Fcra
    		bcf	_Fcrp
    		btfsc	_Fcra
    		bsf	_Fcrp
    		movlw	5			;X+1=5
    		subwf	FSR,1
    		decfsz	ATmp,1
    		goto	$-28
    		btfsc	_Fcra
    		bsf	_Ferr
    		return
    DecCor		btfsc	_DC			;dezimale Korrektur (equ "DAW" bei PIC18FXXX)
    		bsf	_Fdca
    		btfsc	_C
    		bsf	_Fcra
    		movf	INDF,0
    		andlw	0F
    		sublw	9
    		btfss	_C
    		bsf	_Fdca
    		movf	INDF,0
    		andlw	0xF0
    		sublw	90
    		btfss	_C
    		bsf	_Fcra
    		return
    ARotRb		movlw	A3			;rotiere A Register 1 Bit rechts
    		movwf	FSR			
    RRotRb		movlw	4			;rotiere X=4 Bytes
    		movwf	ATmp
    		bcf	_Fcrp
    		btfsc	A0,0
    		bsf	_Fcrp
    		bcf	_Fcra
    		btfsc	INDF,0
    		bsf	_Fcra
    		bcf	_C
    		btfsc	_Fcrp
    		bsf	_C
    		rrf	INDF,1
    		bcf	_Fcrp
    		btfsc	_Fcra
    		bsf	_Fcrp
    		incf	FSR,1
    		decfsz	ATmp,1
    		goto	$-0C			;RRotRbL
    		return
    Geändert von PICture (02.12.2014 um 17:46 Uhr)

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.969
    Und hier das zweite Teil des Codes.

    Die Laufzeit ist für jede Ziffer fast gleich. Das kaum bemerkbare Kurzblinken der Anzeige ist normal, da das Display kein Kontroller und damit kein eigener Speicher besitzt. Deswegen während Ausführung der ISR erlischt es kurz, da die endlose Displayschleife durch ISR kurz für "GetFreq", "Hex_Dec", usw. angehalten wird.

    MfG
    Code:
    DispSet		clrf	TB1			;alle Segmente an
    		clrf	TB2
    		clrf	TB3
    		clrf	TC1
    		clrf	TC2
    		clrf	TC3
    		bcf	_Fnz
    		bsf	DATE			;diese Segmente aus
    		bsf	START
    		movlw	D3			;alle Segmente für Display festlegen
    		movwf	FSR
    		movf	INDF,0
    		movwf	DTmp
    		movf	DTmp,1
    		btfss	_Z
    		goto	$+3
    		bsf	dp
    		incf	FSR,1
    		movlw	7
    		movwf	PCLATH
    		swapf	INDF,0
    		andlw	0F
    		movwf	DTmp
    		movf	DTmp,1
    		btfss	_Z
    		bsf	_Fnz
    		btfsc	_Fnz
    		goto	SetDig6
    		goto	Dig6A
    Digit5		movlw	7
    		movwf	PCLATH
    		movf	INDF,0
    		andlw	0F
    		movwf	DTmp
    		movf	DTmp,1
    		btfss	_Z
    		bsf	_Fnz
    		btfsc	_Fnz
    		goto	SetDig5
    		goto	Dig5A
    Digit4		incf	FSR,1
    		movlw	7
    		movwf	PCLATH
    		swapf	INDF,0
    		andlw	0F
    		movwf	DTmp
    		movf	DTmp,1
    		btfss	_Z
    		bsf	_Fnz
    		btfsc	_Fnz
    		goto	SetDig4
    		goto	Dig4A
    Digit3		movlw	7
    		movwf	PCLATH
    		movf	INDF,0
    		andlw	0F
    		movwf	DTmp
    		movf	DTmp,1
    		btfss	_Z
    		bsf	_Fnz
    		btfsc	_Fnz
    		goto	SetDig3
    		goto	Dig3A
    Digit2		incf	FSR,1
    		movlw	7
    		movwf	PCLATH
    		swapf	INDF,0
    		andlw	0F
    		movwf	DTmp
    		movf	DTmp,1
    		btfss	_Z
    		bsf	_Fnz
    		btfsc	_Fnz
    		goto	SetDig2
    		goto	Dig2A
    Digit1		movlw	7
    		movwf	PCLATH
    		movf	INDF,0
    		andlw	0F
    		goto	SetDig1
    Dig60		bsf	g6
    		goto	Digit5
    Dig61		bsf	a6
    		bsf	b6
    		bsf	c6
    		bsf	d6
    		bsf	g6
    		goto	Digit5
    Dig62		bsf	c6
    		bsf	f6
    		goto	Digit5
    Dig63		bsf	b6
    		bsf	c6
    		goto	Digit5
    Dig64		bsf	a6
    		bsf	b6
    		bsf	d6
    		goto	Digit5
    Dig65		bsf	b6
    		bsf	e6
    		goto	Digit5
    Dig66		bsf	e6
    		goto	Digit5
    Dig67		bsf	a6
    		bsf	b6
    		bsf	c6
    		bsf	g6
    		goto	Digit5
    Dig68		goto	Digit5
    Dig69		bsf	b6
    		goto	Digit5
    Dig6A		bsf	a6
    		bsf	b6
    		bsf	c6
    		bsf	d6
    		bsf	e6
    		bsf	f6
    		bsf	g6
    		goto	Digit5
    Dig50		bsf	g5
    		goto	Digit4
    Dig51		bsf	a5
    		bsf	b5
    		bsf	c5
    		bsf	d5
    		bsf	g5
    		goto	Digit4
    Dig52		bsf	c5
    		bsf	f5
    		goto	Digit4
    Dig53		bsf	b5
    		bsf	c5
    		goto	Digit4
    Dig54		bsf	a5
    		bsf	b5
    		bsf	d5
    		goto	Digit4
    Dig55		bsf	b5
    		bsf	e5
    		goto	Digit4
    Dig56		bsf	e5
    		goto	Digit4
    Dig57		bsf	a5
    		bsf	b5
    		bsf	c5
    		bsf	g5
    		goto	Digit4
    Dig58		goto	Digit4
    Dig59		bsf	b5
    		goto	Digit4
    Dig5A		bsf	a5
    		bsf	b5
    		bsf	c5
    		bsf	d5
    		bsf	e5
    		bsf	f5
    		bsf	g5
    		goto	Digit4
    Dig40		bsf	g4
    		goto	Digit3
    Dig41		bsf	a4
    		bsf	b4
    		bsf	c4
    		bsf	d4
    		bsf	g4
    		goto	Digit3
    Dig42		bsf	c4
    		bsf	f4
    		goto	Digit3
    Dig43		bsf	b4
    		bsf	c4
    		goto	Digit3
    Dig44		bsf	a4
    		bsf	b4
    		bsf	d4
    		goto	Digit3
    Dig45		bsf	b4
    		bsf	e4
    		goto	Digit3
    Dig46		bsf	e4
    		goto	Digit3
    Dig47		bsf	a4
    		bsf	b4
    		bsf	c4
    		bsf	g4
    		goto	Digit3
    Dig48		goto	Digit3
    Dig49		bsf	b4
    		goto	Digit3
    Dig4A		bsf	a4
    		bsf	b4
    		bsf	c4
    		bsf	d4
    		bsf	e4
    		bsf	f4
    		bsf	g4
    		goto	Digit3
    Dig30		bsf	g3
    		goto	Digit2
    Dig31		bsf	a3
    		bsf	b3
    		bsf	c3
    		bsf	d3
    		bsf	g3
    		goto	Digit2
    Dig32		bsf	c3
    		bsf	f3
    		goto	Digit2
    Dig33		bsf	b3
    		bsf	c3
    		goto	Digit2
    Dig34		bsf	a3
    		bsf	b3
    		bsf	d3
    		goto	Digit2
    Dig35		bsf	b3
    		bsf	e3
    		goto	Digit2
    Dig36		bsf	e3
    		goto	Digit2
    Dig37		bsf	a3
    		bsf	b3
    		bsf	c3
    		bsf	g3
    		goto	Digit2
    Dig38		goto	Digit2
    Dig39		bsf	b3
    		goto	Digit2
    Dig3A		bsf	a3
    		bsf	b3
    		bsf	c3
    		bsf	d3
    		bsf	e3
    		bsf	f3
    		bsf	g3
    		goto	Digit2
    Dig20		bsf	g2
    		goto	Digit1
    Dig21		bsf	a2
    		bsf	b2
    		bsf	c2
    		bsf	d2
    		bsf	g2
    		goto	Digit1
    Dig22		bsf	c2
    		bsf	f2
    		goto	Digit1
    Dig23		bsf	b2
    		bsf	c2
    		goto	Digit1
    Dig24		bsf	a2
    		bsf	b2
    		bsf	d2
    		goto	Digit1
    Dig25		bsf	b2
    		bsf	e2
    		goto	Digit1
    Dig26		bsf	e2
    		goto	Digit1
    Dig27		bsf	a2
    		bsf	b2
    		bsf	c2
    		bsf	g2
    		goto	Digit1
    Dig28		goto	Digit1
    Dig29		bsf	b2
    		goto	Digit1
    		return
    Dig2A		bsf	a2
    		bsf	b2
    		bsf	c2
    		bsf	d2
    		bsf	e2
    		bsf	f2
    		bsf	g2
    		goto	Digit1
    Dig10		bsf	g1
    		return
    Dig11		bsf	a1
    		bsf	b1
    		bsf	c1
    		bsf	d1
    		bsf	g1
    		return
    Dig12		bsf	c1
    		bsf	f1
    		return
    Dig13		bsf	b1
    		bsf	c1
    		return
    Dig14		bsf	a1
    		bsf	b1
    		bsf	d1
    		return
    Dig15		bsf	b1
    		bsf	e1
    		return
    Dig16		bsf	e1
    		return
    Dig17		bsf	a1
    		bsf	b1
    		bsf	c1
    		bsf	g1
    		return
    Dig18		return
    Dig19		bsf	b1
    		return
    DispLoop	movf	PA,0			;endlose Displayschleife
    		movwf	PORTA
    		movf	PB,0
    		movwf	PORTB
    		movf	PC,0
    		movwf	PORTC
    		movf	TA1,0			;Com1
    		andlw	0xFB
    		bsf	_RP0
    		movwf	TRISA
    		bcf	_RP0
    		movf	TB1,0
    		bsf	_RP0
    		movwf	TRISB
    		bcf	_RP0
    		movf	TC1,0
    		bsf	_RP0
    		movwf	TRISC
    		bcf	_RP0
    		call	Del			;Dauer vom Com1	
    		movf	TA2,0			;Com2
    		andlw	0xFD
    		bsf	_RP0
    		movwf	TRISA
    		bcf	_RP0
    		movf	TB2,0
    		bsf	_RP0
    		movwf	TRISB
    		bcf	_RP0
    		movf	TC2,0
    		bsf	_RP0
    		movwf	TRISC
    		bcf	_RP0
    		call	Del			;Dauer vom Com2	
    		movf	TA3,0			;Com3
    		andlw	0xFE
    		bsf	_RP0
    		movwf	TRISA
    		bcf	_RP0
    		movf	TB3,0
    		bsf	_RP0
    		movwf	TRISB
    		bcf	_RP0
    		movf	TC3,0
    		bsf	_RP0
    		movwf	TRISC
    		bcf	_RP0
    		call	Del			;Dauer vom Com3
    		bcf	_Ftmp			;alle Signale invertieren
    		btfss	PA,4
    		bsf	_Ftmp
    		comf	PA,1
    		bcf	PA,4
    		btfss	_Ftmp
    		bsf	PA,4
    		comf	PB,1
    		comf	PC,1
    		goto	DispLoop
    Del		movlw	0C			;Verzögerungsschleife ca. 5ms
    		movwf	DTmp1
    		clrf	DTmp
    		decfsz	DTmp,1
    		goto	$-1
    		decfsz	DTmp1,1
    		goto	$-4 
    		return
    Init		clrf	ADCON0			;schalte ADC aus
    		movlw	7			;sperre ADC
    		movwf	ADCON1			;und definiere A0-A7 als digitale I/Os	
    		clrf	PORTA			;Registerwerte vorm Start festlegen 
    		clrf	PORTB
    		clrf	PORTC
    		clrf	Flags
    		call    AClr 
    		movlw	7
    		movwf	PA
    		clrf	PB
    		clrf	PC
    		movlw	0xFB
    		movwf	TA1
    		movlw	0xFD
    		movwf	TA2
    		movlw	0xFE
    		movwf	TA3
    		bsf	_RP0			;Bank 1
    		movlw	7			;sperre ADC
    		movwf	ADCON1			;und definiere A0-A7 als digitale I/Os	
    		movlw	0xFF
    		movwf	TRISA			;alle PORTA Pins als Eingänge
    	        movlw	27			;Takt für Timer0 vom T0CKI Pin usw.
    		movwf	OPTION_REG		;Timer0 konfigurieren
    		bsf	PIE1,TMR1IE		;TMR1 interrupt erlauben
    		bcf	_RP0			;Bank 0
    		movlw	0xE0			;GIE, PEIE & TMR0IE erlauben
    		movwf	INTCON
    		goto	TMRStart		;beide Timer starten
    		org	7A0
    SetDig6		addwf	PCL,1
    		goto	Dig60
    		goto	Dig61
    		goto	Dig62
    		goto	Dig63
    		goto	Dig64
    		goto	Dig65
    		goto	Dig66
    		goto	Dig67
    		goto	Dig68
    		goto	Dig69
    		org	7B0
    SetDig5		addwf	PCL,1
    		goto	Dig50
    		goto	Dig51
    		goto	Dig52
    		goto	Dig53
    		goto	Dig54
    		goto	Dig55
    		goto	Dig56
    		goto	Dig57
    		goto	Dig58
    		goto	Dig59
    		org	7C0
    SetDig4		addwf	PCL,1
    		goto	Dig40
    		goto	Dig41
    		goto	Dig42
    		goto	Dig43
    		goto	Dig44
    		goto	Dig45
    		goto	Dig46
    		goto	Dig47
    		goto	Dig48
    		goto	Dig49
    		org	7D0
    SetDig3		addwf	PCL,1
    		goto	Dig30
    		goto	Dig31
    		goto	Dig32
    		goto	Dig33
    		goto	Dig34
    		goto	Dig35
    		goto	Dig36
    		goto	Dig37
    		goto	Dig38
    		goto	Dig39
    		org	7E0
    SetDig2		addwf	PCL,1
    		goto	Dig20
    		goto	Dig21
    		goto	Dig22
    		goto	Dig23
    		goto	Dig24
    		goto	Dig25
    		goto	Dig26
    		goto	Dig27
    		goto	Dig28
    		goto	Dig29
    		org	7F0
    SetDig1		addwf	PCL,1
    		goto	Dig10
    		goto	Dig11
    		goto	Dig12
    		goto	Dig13
    		goto	Dig14
    		goto	Dig15
    		goto	Dig16
    		goto	Dig17
    		goto	Dig18
    		goto	Dig19
    		end

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •