;***************************************************************************** list p=16f877 ;Typ-Wahl PIC16F877 #include ;Bezeichnungen von PIC16F877 verwenden ;Errorlevel -302 ;***************************************************************************** ;Konfiguration festlegen __CONFIG 0xA82 ;***************************************************************************** GOTO Init ;***************************************************************************** ORG 0x0004 ;Programmstart bei 0x0004 ;***************************************************************************** ;Registerbezeichnungen ;***************************************************************************** Balken_LED Equ PORTB ;Balken_LED als Portbezeichnung verwenden Sender Equ 0x20 ;Senderegister Empfaenger Equ 0x90 ;Empfangsregister wait Equ 0x21 ;Register für den Ausgabewert ;***************************************************************************** Init ;Initialisierung der verwendeten Bausteine ;***************************************************************************** ;PORTA vorbereiten, ADC initialisieren ;Analog-Port konfigurieren BCF ADCON1, PCFG3 ;PCFG3 BCF ADCON1, PCFG2 ;PCFG2 BCF ADCON1, PCFG1 ;PCFG1 BCF ADCON1, PCFG0 ;PCFG0 ;ADC-Eingang AN0 auswählen BCF ADCON0, CHS2 ;CHS2=0 BCF ADCON0, CHS1 ;CHS1=0 BCF ADCON0, CHS0 ;CHS0=0 ;ADC speed für 20 MHz einstellen BSF ADCON0, ADCS1 ;ADCS1=1 BCF ADCON0, ADCS0 ;ADCS0=0 ;Daten linksbündig BSF STATUS, RP0 ;Bank1 BCF ADCON1, ADFM ;ADFM=0 BCF STATUS, RP0 ;Bank0 ;ADC einschalten BSF ADCON0, ADON ;ADON=1 ;***************************************************************************** ;RS 232 Einstellungen Konfiguration und Baudrateneinstellung BSF STATUS, RP0 ;Bank 1 MOVLW Sender ;Sender RS-232 MOVWF TXSTA BCF STATUS, RP0 ;Bank 0 MOVLW Empfaenger ;Empfänger; RS-232 MOVWF RCSTA ;Baudrate einstellen BSF STATUS, RP0 ;Bank 1 MOVLW D'129' ;Baudrate 9,6 KBPS bei 20 MHz MOVWF SPBRG BSF TXSTA, BRGH ;BRGH=1 BCF STATUS, RP0 ;Bank 0 ;***************************************************************************** ;PORTB vorbereiten (LED) BSF STATUS, RP0 ;auf Bank 1 umschalten MOVLW D'0' ;PortD alle Output MOVWF TRISB BCF STATUS, RP0 ;auf Bank 0 zurückschalten CLRF PORTB ;***************************************************************************** ;***************************************************************************** Main CALL ADW CALL LED ;***************************************************************************** GOTO Main ;***************************************************************************** ;Unterprogramm ADW (Analog/Digital-Wandlung) ;***************************************************************************** ADW ;Eingangsspannung wandeln BSF ADCON0, GO_DONE ;ADC starten loop BTFSC ADCON0, GO_DONE ;ist ADC fertig? GOTO loop ;nein, weiter warten ;Warten, damit der ADC sich erholen kann CLRF wait warten DECFSZ wait,F GOTO warten RETURN ;***************************************************************************** ;Unterprogramm LED ;***************************************************************************** LED LED0_an MOVLW D'32' SUBWF ADRESH,W SKPC GOTO LED0_aus BSF Balken_LED,0 GOTO LED1_an ;***************************************************************************** LED0_aus BCF Balken_LED,0 LED1_an MOVLW D'64' SUBWF ADRESH,W SKPC GOTO LED1_aus BSF Balken_LED,1 GOTO LED2_an ;***************************************************************************** LED1_aus BCF Balken_LED,1 LED2_an MOVLW D'96' SUBWF ADRESH,W SKPC GOTO LED2_aus BSF Balken_LED,2 GOTO LED3_an ;***************************************************************************** LED2_aus BCF Balken_LED,2 LED3_an MOVLW D'127' SUBWF ADRESH,W SKPC GOTO LED3_aus BSF Balken_LED,3 GOTO LED4_an ;***************************************************************************** LED3_aus BCF Balken_LED,3 LED4_an MOVLW D'160' SUBWF ADRESH,W SKPC GOTO LED4_aus BSF Balken_LED,4 GOTO LED5_an ;***************************************************************************** LED4_aus BCF Balken_LED,4 LED5_an MOVLW D'192' SUBWF ADRESH,W SKPC GOTO LED5_aus BSF Balken_LED,5 GOTO LED6_an ;***************************************************************************** LED5_aus BCF Balken_LED,5 LED6_an MOVLW D'224' SUBWF ADRESH,W SKPC GOTO LED6_aus BSF Balken_LED,6 GOTO LED7_an ;***************************************************************************** LED6_aus BCF Balken_LED,6 LED7_an MOVLW D'255' SUBWF ADRESH,W SKPC GOTO LED7_aus BSF Balken_LED,7 GOTO Balken LED7_aus BCF Balken_LED,7 Balken RETURN END