- LiFePO4 Speicher Test         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 26 von 26

Thema: Digitaluhr mit Segmentanzeigen

  1. #21
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.01.2008
    Beiträge
    155
    Anzeige

    LiFePo4 Akku selber bauen - Video
    kann mir jemand das programm posten den rest, hardware mäßig schafe ich schon

  2. #22
    Benutzer Stammmitglied
    Registriert seit
    02.03.2008
    Alter
    44
    Beiträge
    38
    hmm ich kann dir das nur für n PIC und LCD geben. aber im anschluss dran ist noch was fürs multiplexen:

    Code:
    	list p=16f628
    ;**************************************************************
    ;*
    ;*  	Pinbelegung
    ;*	----------------------------------	
    ;*	PORTA: 	0 -
    ;*		1 -
    ;*		2 -
    ;*		3 -
    ;*		4 -
    ;*		5 -
    ;*		6 -
    ;*		7 -
    ;*
    ;*	PORTB:	0 > LCD Display E
    ;*		1 < Rücksetz_Taster für Uhrzeit
    ;*		2 > LCD Display RS
    ;*		3 > LCD Display R/W
    ;*		4 - LCD Display D4
    ;*		5 - LCD Display D5
    ;*		6 - LCD Display D6
    ;*		7 - LCD Display D7
    ;*
    ;**************************************************************
    ;
    ; sprut (zero) Bredendiek 02/2004  mod 06/2005
    ;
    ; Uhr mit LCD-Display 
    ;  Anzeige hh:mm:ss
    ;  Takt : 32768Hz
    ;
    ;
    ;**************************************************************
    ; Includedatei für den 16F84 einbinden
    
    	#include <P16f628.INC>
    
    	ERRORLEVEL      -302    	;SUPPRESS BANK SELECTION MESSAGES
    
    ; Configuration festlegen
    ; 32768Hz: Power on Timer, kein Watchdog, LP-Oscillator
    
    	__CONFIG	_PWRTE_ON & _WDT_OFF & _LP_OSC & _BODEN_OFF & _LVP_OFF
    
    ;**************************************************************
    ; Konstanten
    
    ; Variablennamen vergeben
    
    w_copy		Equ	0x20		; Backup für Akkuregister
    s_copy		Equ	0x21		; Backup für Statusregister
    
    Flags		Equ	0x22
    loops		equ	0x23		; timer für wait
    LcdStatus	equ	0x24		;
    LcdDaten	equ	0x25		;
    ES		equ	0x26		; Einer  Sekunden
    ZS		equ	0x27		; Zehner Sekunden
    EM		equ	0x28		; Einer  Minuten
    ZM		equ	0x29		; Zehner Minuten
    EH		equ	0x2A		; Einer  Stunden
    ZH		equ	0x2B		; Zehner Stunden
    
    ; für LCD-Pins
    #define	LcdE		PORTB,0		; enable Lcd
    #define	LcdRw		PORTB,3		; read Lcd
    #define	LcdRs		PORTB,2		; Daten Lcd (nicht control)	
    #define LcdPort		PORTB		; Datenbus des LCD (obere 4 Bit)
    
    #define	neu		Flags,0
    
    Ini_con		Equ	B'00000000'	; TMR0 -> Interupt disable
    Ini_opt		Equ	B'00000010'	; pull-up
    
    ;**************************************************************
    ; los gehts mit dem Programm
    
    	org 	0
    	goto	Init	
    
    ;**************************************************************
    ; die Interuptserviceroutine
    
    	org 	4 	
    intvec
    	movwf	w_copy		; w retten
    	swapf	STATUS, w 	; STATUS retten
    	bcf	STATUS, RP0	; Bank 0
    	movwf	s_copy		;
    
    ; Intrupt servic routine
    Int_serv 
    	bsf	neu
    
    	incf	ES, f		; 1 Sekunden erhöhen
    	movlw	D'10'
    	subwf	ES, w
    	btfss	STATUS, Z	
    	goto	Int_end		; 1 Sekunden <> 10	
    
    	clrf	ES
    	incf	ZS, f		; 10 Sekunden erhöhen
    	movlw	D'6'
    	subwf	ZS, w
    	btfss	STATUS, Z	
    	goto	Int_end		; 10 Sekunden <> 6	
    
    	clrf	ZS
    	incf	EM, f		; 1 Minuten erhöhen
    	movlw	D'10'
    	subwf	EM, w
    	btfss	STATUS, Z	
    	goto	Int_end		; 1 Minuten <> 10
    
    	clrf	EM
    	incf	ZM, f		; 10 Minuten erhöhen
    	movlw	D'6'
    	subwf	ZM, w
    	btfss	STATUS, Z	
    	goto	Int_end		; 10 Minuten <> 6
    
    	clrf	ZM
    	incf	EH, f		; 1 Stunden erhöhen
    	movlw	D'10'
    	subwf	EH, w
    	btfss	STATUS, Z	
    	goto	Test24		; 1 Stunden <> 10
    
    	clrf	EH
    	incf	ZH, f		; 10 Stunden erhöhen
    	goto	Int_end
    
    Test24
    	movlw	D'2'
    	subwf	ZH, w
    	btfss	STATUS, Z	
    	goto	Int_end		; 10 Stunden <> 2
    	movlw	D'4'
    	subwf	EH, w
    	btfss	STATUS, Z	
    	goto	Int_end		; 1 Stunden <> 4
    	clrf	EH		; Mitternacht
    	clrf	ZH
    	goto	Int_end
    
    Int_end	
    	bcf	INTCON, T0IF	; Interupt-Flag löschen
    
    	swapf	s_copy, w	; STATUS zurück
    	movwf	STATUS 
    	swapf	w_copy, f	; w zurück mit flags
    	swapf	w_copy, w
    	retfie
    
    ;**************************************************************
    
    ; Port B auf Ausgabe stellen
    
    Init	bsf     STATUS, RP0	; Bank 1
    	movlw   Ini_opt     	; pull-up on
    	movwf   OPTION_REG 
    	movlw	B'00000010'	; PortB alle outputs außer RB1
    	movwf	TRISB
    	bcf     STATUS, RP0	; Bank 0
    	clrf	PORTB
    	movlw   Ini_con     	; Interupt disable
    	movwf   INTCON   
    
    ;Display initialisieren
    	call	InitLcd
    
    	clrf	Flags
    
    ; Zeit 0 einstellen
    	call	Zeit_Null
    
    ; 1 Hz-Timer-Interupt einstellen
    	bsf     STATUS, RP0	; auf Bank 1 umschalten
    	movlw	B'10000100'	; internen Takt zählen, Vorteiler zum Timer0, 32:1
    	movwf	OPTION_REG
    	bcf     STATUS, RP0	; auf Bank 0 zurückschalten
    	clrf	TMR0		; ((32,768 kHz : 32 ): 256 = 1 Hz)
    
    	bsf	INTCON, T0IE	; Timer0 interupt erlauben
    	bsf	INTCON, GIE	; Interupt erlauben
    
    loop
    	btfss	PORTB,1
    	call	Zeit_Null	; wenn Taste gedrückt, dann Zeit=0
    	btfss	neu
    	goto	loop		; eine Endlosschleife
    
    	; Kursor home
    	movlw	B'10000000'	; 1. Zeile
    	call	OutLcdControl
    
    	movfw	ZH
    	iorlw	'0'		;wandeln in ASCCI
    	call	OutLcdDaten
    	movfw	EH
    	iorlw	'0'		;wandeln in ASCCI
    	call	OutLcdDaten
    
    	movlw	':'		; Lücke
    	call	OutLcdDaten
    
    	movfw	ZM
    	iorlw	'0'		;wandeln in ASCCI
    	call	OutLcdDaten
    	movfw	EM
    	iorlw	'0'		;wandeln in ASCCI
    	call	OutLcdDaten
    
    	movlw	':'		; Lücke
    	call	OutLcdDaten
    
    	movfw	ZS
    	iorlw	'0'		;wandeln in ASCCI
    	call	OutLcdDaten
    	movfw	ES
    	iorlw	'0'		;wandeln in ASCCI
    	call	OutLcdDaten
    
    	bcf	neu
    	goto	loop		; eine Endlosschleife
    
    Zeit_Null
    	clrf	TMR0
    	bsf	neu
    	clrf	ES
    	clrf	ZS
    	clrf	EM
    	clrf	ZM
    	clrf	EH
    	clrf	ZH
    	return
    
    
    ;*****************************************************
    ;+++LCD-Routinen**************************************
    ;*****************************************************
    ;LCD initialisieren
    
    InitLcd
    	movlw	D'255'		; 250 ms Pause nach dem Einschalten
    	movwf	loops	
    	call	WAIT		
    
    	movlw	B'00110000'	; 1
    	movwf	LcdPort
    	bsf	LcdE
    	nop	
    	bcf	LcdE
    	
    	movlw	D'50'		; 50 ms Pause
    	movwf	loops
    	call	WAIT
    	
    	movlw	B'00110000'	; 2
    	call	Control8Bit
    	movlw	B'00110000'	; 3
    	call 	Control8Bit
    	movlw	B'00100000'	; 4
    	call 	Control8Bit
    
    	movlw	B'00000001'	; löschen und cusor home
    	call	OutLcdControl	
    	movlw	B'00101000'	; 5 function set, 4-bit  2-zeilig,  5x7
    	call	OutLcdControl	
    	movlw	B'00001000'	; 6 display off
    	call	OutLcdControl
    	movlw	B'00000110'	; 7 entry mode, increment, disable display-shift
    	call	OutLcdControl
    	movlw	B'00000011'	; 8 cursor home, cursor home
    	call	OutLcdControl
    	movlw	B'00001100'	; 9 display on, Kursor aus , Blinken aus
    	call	OutLcdControl
    	return
    
    ;*****************************************************
    ; ein Steuerbyte 8-bittig übertragen
    Control8Bit
    	movwf	LcdPort
    	bsf	LcdE
    	nop
    	bcf	LcdE
    	movlw	D'10'
    	movwf	loops
    	call 	WAIT
    	return
    
    ;*****************************************************
    ; darauf warten, daß das Display bereit zur Datenannahme ist
    LcdBusy
            bsf     STATUS, RP0	; make Port B4..7 input
    	movlw	B'11110000'
    	iorwf   TRISB, f 
            bcf     STATUS, RP0
    BusyLoop		
    	bcf	LcdRs
    	bsf	LcdRw		; Lesen
    	bsf	LcdE
    	nop
    	movf	LcdPort, w
    	movwf	LcdStatus
    	bcf	LcdE
    	nop
    	bsf	LcdE		; Enable
    	nop
    	bcf	LcdE
    	btfsc	LcdStatus, 7	; teste bit 7
    	goto	BusyLoop
    	bcf	LcdRw
            bsf     STATUS, RP0	; make Port B4..7 output
    	movlw	B'00001111'
    	andwf   TRISB, f    
            bcf     STATUS, RP0
    	return	
    
    ;*****************************************************
    ; aus W ein Byte mit Steuerdaten zum Display übertragen
    OutLcdControl
    	movwf	LcdDaten
    	call	LcdBusy
    	movf	LcdDaten, w
    	andlw	H'F0'
    	movwf	LcdPort		; Hi-teil Daten schreiben
    	bsf	LcdE
    	nop
    	bcf	LcdE		; Disable LcdBus
    	swapf	LcdDaten, w
    	andlw	H'F0'
    	movwf	LcdPort		; Lo-teil Daten schreiben
    	bsf	LcdE
    	nop
    	bcf	LcdE		; Disable LcdBus
    	return
    
    ;*****************************************************
    ; aus W ein Datenbyte zum Display übertragen
    OutLcdDaten
    	movwf	LcdDaten
    	call	LcdBusy
    	movf	LcdDaten, w
    	andlw	H'F0'
    	movwf	LcdPort		; Hi-teil Daten schreiben
    	bsf	LcdRs		; Daten
    	bsf	LcdE		; Enable LcdBus
    	nop
    	bcf	LcdE		; Disable LcdBus	
    	swapf	LcdDaten, w
    	andlw	H'F0'
    	movwf	LcdPort		; Lo-teil Daten schreiben
    	bsf	LcdRs		; Daten
    	bsf	LcdE
    	nop
    	bcf	LcdE		; Disable LcdBus	
    	bcf	LcdRs		;
    	return
    
    ;*****************************************************
    ;Zeitverzögerung um loops * 1 ms
    ; 32768Hz externer Takt bedeutet ca 8 kHz interner Takt
    ; also dauert 1 ms etwa 8 Befehle
    
    WAIT
    top
            nop
            nop
    	nop
            nop
            nop
            decfsz  loops, F       ; outer loops complete?
            goto    top            ; no, go again
            retlw   0              ; yes, return from WAIT
    
    ;*****************************************************
    
    	end
    hier multiplexen:
    Code:
    	list p=16f84
    ;**************************************************************
    ;*
    ;* Pinbelegung
    ;*	----------------------------------	
    ;*	PORTA: 	0 Ziffer	-----------------------------------------------------+
    ;*		1 Ziffer	-------------------------------------+               I
    ;*		2 Ziffer	---------------------+               I               I
    ;*		3 Ziffer	-----+               I               I               I
    ;*		4 Eingang	     I               I               I               I  
    ;*	PORTB:	0 Segment B	   AAAAA	   AAAAA	   AAAAA	   AAAAA
    ;*		1 Segment F	  F     B	  F     B	  F     B	  F     B
    ;*		2 Segment A	  F     B	  F     B	  F     B	  F     B
    ;*		3 Segment G	   GGGGG  	   GGGGG  	   GGGGG  	   GGGGG  
    ;*		4 Segment H	  E     C	  E     C	  E     C	  E     C
    ;*		5 Segment C	  E     C	  E     C	  E     C	  E     C
    ;*		6 Segment E	   DDDDD  HH	   DDDDD  HH	   DDDDD  HH	   DDDDD  HH
    ;*		7 Segment D    
    ;*
    ;**************************************************************
    ;
    ; sprut (zero) Bredendiek 06/2000 (mod. 15.01.2002)
    ;
    ; 4-stellige LED-Anzeige
    ;
    ; Tektquelle: 4 MHz
    ; es wird probehalber die Zahl "1234" angezeigt
    ;
    ;**************************************************************
    ; Includedatei für den 16F84 einbinden
    
    	#include <P16f84.INC>
    
    
    ; Configuration festlegen
    ; bis 4 MHz: Power on Timer, kein Watchdog, XT-Oscillator
    
    	__CONFIG	_PWRTE_ON & _WDT_OFF & _XT_OSC
    
    ;**************************************************************
    
    ; Variablennamen vergeben
    
    w_copy	Equ	0x20		; Backup für Akkuregister
    s_copy	Equ	0x21		; Backup für Statusregister
    Ziffer1	Equ	0x22		; Wert des LSD
    Ziffer2	Equ	0x23		; Wert der zweitkleinsten Stelle
    Ziffer3	Equ	0x24		; Wert der zweitgrößten Stelle
    Ziffer4	Equ	0x25		; Wert des MSD
    Digit	Equ	0x26		; Ziffernzähler
    ar	Equ	0x27
    
    ;**************************************************************
    ; los gehts mit dem Programm
    
    	org 	0
    	goto	Init	
    
    ;**************************************************************
    ; die Interuptserviceroutine
    
    	org 	4 	
    intvec	bcf	INTCON, GIE	; disable Interupt 
    
    	movwf	w_copy		; w retten
    	swapf	STATUS, w 	; STATUS retten
    	movwf	s_copy		;
    
    	movlw	D'131'		; 256-125=131 ((1MHz : 32 ): 125 = 250 Hz)
    	movwf	TMR0
    
    ; Intrupt servic routine
    Int_serv 
    
    	bsf	PORTA, 0	; Ziffer1 aus
    	bsf	PORTA, 1	; Ziffer2 aus
    	bsf	PORTA, 2	; Ziffer3 aus
    	bsf	PORTA, 3	; Ziffer4 aus
    
    	decf	Digit,f		; Ziffernzähler verringern
    ;Digit=4: anzeigen Ziffer 4
    ;Digit=3: anzeigen Ziffer 3
    ;Digit=2: anzeigen Ziffer 2
    ;Digit=1: anzeigen Ziffer 1
    ;Digit=0: andere Aktionen, keine Anzeige
    
    	btfsc	STATUS, Z
    	goto	Int_0		; Z-Flag=1 ergo Digit=0
    	movfw	Digit
    	movwf	ar
    	decf	ar, f
    	btfsc	STATUS, Z
    	goto	Int_1		; Digit=1
    	decf	ar, f
    	btfsc	STATUS, Z
    	goto	Int_2		; Digit=2
    	decf	ar, f
    	btfsc	STATUS, Z
    	goto	Int_3		; Digit=3
    	goto	Int_4		; Digit=4
    
    Int_0
    	movlw	5
    	movwf	Digit
    	goto	Int_end
    
    Int_1
    	movfw	Ziffer1		; Wert der 1. Ziffer
    	call	Segmente
    	movwf	PORTB		; Segmente einschalten
    	bcf	PORTA, 0	; 1. Ziffer einschalten
    	goto	Int_end
    
    Int_2
    	movfw	Ziffer2		; Wert der 2. Ziffer
    	call	Segmente
    	movwf	PORTB		; Segmente einschalten
    	bcf	PORTA, 1	; 2. Ziffer einschalten
    	goto	Int_end
    
    Int_3
    	movfw	Ziffer3		; Wert der 3. Ziffer
    	call	Segmente
    	movwf	PORTB		; Segmente einschalten
    	bcf	PORTA, 2	; 3. Ziffer einschalten
    	goto	Int_end
    
    Int_4
    	movfw	Ziffer4		; Wert der 4. Ziffer
    	call	Segmente
    	movwf	PORTB		; Segmente einschalten
    	bcf	PORTA, 3	; 4. Ziffer einschalten
    	goto	Int_end
    
    
    Int_end	swapf	s_copy, w	; STATUS zurück
    	movwf	STATUS 
    	swapf	w_copy, f	; w zurück mit flags
    	swapf	w_copy, w
    
    	bcf	INTCON, T0IF	; Interupt-Flag löschen
    	bsf	INTCON, GIE	; enable Interupt
    
    	retfie
    
    ; 7-Segment-Tabelle
    Segmente
    	addwf	PCL, f
    	retlw	B'00011000'	; 0
    	retlw	B'11011110'	; 1
    	retlw	B'00110010'	; 2
    	retlw	B'01010010'	; 3
    	retlw	B'11010100'	; 4
    	retlw	B'01010001'	; 5
    	retlw	B'00010001'	; 6
    	retlw	B'11011010'	; 7
    	retlw	B'00010000'	; 8
    	retlw	B'01010000'	; 9
    
    ;**************************************************************
    
    ; Port A/B auf Ausgabe stellen
    
    Init
    	movlw	B'11111111'
    	movwf	PORTA
    	movwf	PORTB		; Anzeige dunkel
    	bsf     STATUS, RP0	; auf Bank 1 umschalten
    	movlw	B'11110000'	; PortA RA0-RA3 output
    	movwf	TRISA
    	movlw	B'00000000'	; PortB alle output
    	movwf	TRISB
    	bcf     STATUS, RP0	; auf Bank 0 zurückschalten
    
    
    ; eine beliebige Zahl einstellen (hier: 1234)
    	movlw	4
    	movwf	Ziffer1
    	movlw	3
    	movwf	Ziffer2
    	movlw	2
    	movwf	Ziffer3
    	movlw	1
    	movwf	Ziffer4
    
    	movlw	5
    	movwf	Digit
    
    ; 250 Hz-Timer-Interupt einstellen
    	bsf     STATUS, RP0	; auf Bank 1 umschalten
    	movlw	B'10000100'	; internen Takt zählen, Vorteiler zum Timer0, 32:1
    	movwf	OPTION_REG
    	movlw	D'131'		; 256-125=131 ((1MHz : 32 ): 125 = 250 Hz)
    	bcf     STATUS, RP0	; auf Bank 0 zurückschalten
    	movwf	TMR0
    	bsf	INTCON, T0IE	; Timer0 interupt erlauben
    	bsf	INTCON, GIE	; Interupt erlauben
    
    loop	goto	loop		; eine Endlosschleife
    
    ;**********************************************************
    
    
    	end
    ich bezweifle, dasses hilfreich ist aber wie du meinst

  3. #23
    Benutzer Stammmitglied
    Registriert seit
    02.03.2008
    Alter
    44
    Beiträge
    38
    neee du hab auch ned vor dich lächerlich zu machen. aber timer interrupts & anfänger ? naja ok ich muss zugeben damit hab ich noch nie gearbeitet. aber mei ....

  4. #24
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    aber timer interrupts & anfänger ?
    Warum nicht ?
    Es gibt wohl nichts schlimmeres, als wenn man feststellt, die Uhr geht zwar, läuft aber Täglich 5 Minuten nach oder so.
    Besser ist es ja von Anfang an richtig zu machen.

    Jetzt stellt sich die Frage, was will Superfreak...

    Ich würde das in kleinere Teilaufgaben zerschlagen:
    1. 6 7-Segment Anzeigen an einem µC anschliessen und einfach nur eine Zahl darstellen lassen.

    2. Die Zahl einfach mal inkrementieren und darstellen.

    3. Eine Uhr implementieren und darstellen

    4. Ein paar Tasten mit in das Projekt nehmen um die Uhr zu stellen.

    So jetzt die Frage, welchen µC ? AVR oder PIC ?
    Bei AVR könnte ich helfen, PIC leider nicht aber karlmonster sicherlich.
    Welche Sprache ?

    Das sind Sachen, die geklärt werden müssen...

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  5. #25
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.01.2008
    Beiträge
    155
    habejetzt ein programm was ich verstehe

    und nun brauch ich den schlatplan, welche ics bräuchte ich dafür am besten???

    so habe jetzt ein programm was ich auch verstehe

    ;************************************************* **********
    ;* Name : UHR_Binär_BCD (für 4 MHz) Datum: 12.02.2006 *
    ;* -------- *
    ;* Funktion : Dimensionierbare Verzögerungsschleifen *
    ;* - Verzögerung_1s (lang) *
    ;* - Verzögerung_Xms (mittel), mit X *
    ;* X = 1,5,10,20,30,50,100,200,500 *
    ;* - Verzögerung_100us (kurz) *
    ;* Lernziele : Programmanalyse verschachtelter Algorithmen*
    ;* Hinleitung zu: -> Modularer Programmaufbau *
    ;* Autor : *
    ;************************************************* **********


    LIST p=16F877A ; list directive to define processor
    #include <p16F877A.inc>; processor specific variable defs
    __CONFIG H'3F39' ; _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC
    ERRORLEVEL -302 ; unterdrücke Warnungen zur Bank-Auswahl
    ERRORLEVEL -203

    W_Kopie EQU H'35'
    STATUS_Kopie EQU H'36'

    Speicher EQU H'37'
    Speicher_STD EQU H'38'
    Speicher_Min EQU H'39'
    Speicher_Sek EQU H'3A'


    org 0x0000
    goto Main_Start

    org 0x0004

    Interrupt_Beginn

    btfss INTCON, T0IF
    retfie
    movwf W_Kopie
    swapf STATUS,W
    movwf STATUS_Kopie

    Interrupt_Aktion

    incf Speicher,F

    _sekunden:

    movlw D'20'
    subwf Speicher,W
    btfss STATUS,Z
    goto weiter

    incf Speicher_Sek,F
    clrf Speicher

    Abfrage_Sekunden

    movlw D'60'
    subwf Speicher_Sek,W
    btfss STATUS,Z
    goto weiter

    ;----------------------------- Minuten ---------------------------------------------------------

    Minuten
    clrf Speicher_Sek
    incf Speicher_Min,F

    Abfrage_Min
    movlw D'60'
    subwf Speicher_Min,W
    btfss STATUS,Z
    goto weiter

    ;----------------------------- Stunden -----------------------------------------------------

    Stunden
    clrf Speicher_Min
    incf Speicher_STD,F
    Abfrage_STD
    movlw D'24'
    subwf Speicher_STD,W
    btfss STATUS,Z
    goto weiter

    clrf Speicher_STD

    weiter:
    movlw D'61'
    movwf TMR0

    Interrupt_Ende

    bcf INTCON, T0IF
    swapf STATUS_Kopie, W
    movwf STATUS
    swapf W_Kopie,F
    swapf W_Kopie,W
    retfie

    Main_Start

    bsf STATUS,RP0

    clrf TRISD
    clrf TRISC
    clrf TRISB

    movlw B'00000111'
    movwf OPTION_REG

    movlw B'10100000'
    movwf INTCON


    bcf STATUS,RP0

    clrf Speicher
    clrf Speicher_Sek
    clrf Speicher_Min
    clrf Speicher_STD
    clrf PORTD
    clrf PORTC
    clrf PORTB

    ;bsf INTCON, T0IF
    ;bsf INTCON, GIE
    ;bsf INTCON, T0IE

    movlw D'61'
    movwf TMR0

    ;--------------------------------- Ausgabe -------------------------------------------------------------

    Hauptprogramm

    movf Speicher_Sek,W
    call Hex_2_BCD__8bit
    ;swapf Zehner,W
    ;iorwf Einer,W
    movwf PORTD

    movf Speicher_Min,W
    call Hex_2_BCD__8bit
    movwf PORTC

    movf Speicher_STD,W
    call Hex_2_BCD__8bit
    movwf PORTB

    goto Hauptprogramm




    END

  6. #26
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.01.2008
    Beiträge
    155
    hier ein möglicher schaltplan``??

    das Programm funktioniert auch
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken suhr.jpg  

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

Solar Speicher und Akkus Tests