Die Grundlagen der
Referenzspannungsquelle
sind bereits an anderer Stelle erläuter worden. In diesem
Beispiel
wird mit der Referenzspannungsquelle des 16F628 eine langsame (0,25 Hz)
Sägezahnspannung (0 V ... 3,125 V) erzeugt.
Schaltung
![]()  | 
      Die Schaltung besteht lediglich aus einem PIC16F628 und einer
10-MHz
Taktquelle für den PIC. Am Port B sind 4 Leuchtdioden
angeschlossen.
Am Pin RA2 ist ein hochohmiges Voltmeter angeschlossen. 
       (Die LEDs sind für die Sägezahnfunktion nicht unbedingt erforderlich.) Zum Aufbau eignet sich z.B. die 16F84-Testplatine. oder die 16F84-Minitestplatine mit einer LED-Platine. Beim Brennen des PIC ist der HS-Oszillator auszuwählen. Bitte darauf achten, dass beim Brennen LV-Programming-Enable nicht aktiv ist.  | 
    
Programmablauf
Ich habe aber einen anderen Prozessor
Programmlisting
|        
list p=16f628 
       ;************************************************************** ;* Pinbelegung ;* ---------------------------------- ;* PORTA: 0 - ;* 1 - ;* 2 > Spannungsausgang ;* 3 - ;* 4 - ;* 5 < MCLR ;* 6 > OSC2 ;* 7 < OSC1 ;* ;* PORTB: 0 > LED ;* 1 > LED ;* 2 > LED ;* 3 > LED ;* 4 - ;* 5 - ;* 6 - ;* 7 - ;* ;************************************************************** ; ;sprut (zero) Bredendiek 01/2003 ; ; Sägezahn mit der Referenzsspannungsquelle am Port RA2 ; Spannung steigt in 4 Sekunden von 0V auf 3,125 V ; ; Prozessor 16F628 ; ; Prozessor-Takt 10 MHz ; ; LED-Zeile am PortB ; ;************************************************************** ; Includedatei für den 16F628 einbinden #include <P16f628.INC>         
ERRORLEVEL     
-302           
; SUPPRESS BANK SELECTION MESSAGES 
        ; Configuration
festlegen: 
        ; Constanten festlegen 
        ; Variable festlegen 
        ;************************************************************** 
       org 0  ;************************************************************** 
        init 
       clrf counter  ;Hauptprogrammschleife 
               
movlw   B'11100000' 
               
movlw  
D'255'                 
; 250 ms Pause 
               
incf    counter, f 
               
goto    mainloop 
        ;***************************************************** 
        WAIT 
       end  |