;******************************************************************* ; Dateiname: Voltmeter.asm ; PIC 16F884, f = 4 MHz ; Autor: D.Kohtz ; Datum: Januar 2024 ;******************************************************************* ; Analoger Eingang RA0, Spannungsmessung bis max. 5,00 V ; Segmente an RD1 bis 7, Dezimalpkt. Dig2: RD0, Katoden an RC4,5,6 ; Taster an RA4, aktiv low ;******************************************************************** List p=16f884 #include ; Einbinden von Datei *.inc __CONFIG _CONFIG1, b'10000011100100' __CONFIG _CONFIG2, _WRT_OFF & _BOR40V ;b'00011110000000' ERRORLEVEL -302 ; Unterdrücken BANK SELECTION MESSAGES ; Zahlenbasis ohne Angabe: Dezimal ; 0x4B hexadezimal ; b'10101011' binär ;******************************************************************** ; Deklaration der Variablen und Konstanten ;********************************************************************* cblock 0x20 ZAEHL ; Allg. Zähler in pause ZAEHLS ; Schleifenzähler WERTLO WERTHI EINER ZEHN HUND TAUS R0 R1 R2 DIGIT ZWISCH0 ZWISCH1 ZWISCH2 ALO AHI endc STAT equ 03 OPTREG equ 01 ; bank1 bank0 macro bcf STATUS,RP0 bcf STATUS,RP1 endm bank1 macro bsf STATUS,RP0 bcf STATUS,RP1 endm bank2 macro bcf STATUS,RP0 bsf STATUS,RP1 endm bank3 macro bsf STATUS,RP0 bsf STATUS,RP1 endm org 0 ;******************************************************************** goto main nop nop nop nop ;******************************************************************** init movlw b'10000001' movwf ADCON0 ; ADW ein, Kanal 0, Fosz/32 bank3 movlw b'00000001' movwf ANSEL ; Nur PORTA,0 = Analog clrf ANSELH bank1 movlw b'01111111' ; RA0..6 = Eing. RA7 = Ausg. movwf TRISA clrf TRISB ; PORTB = Ausgang movlw b'11111111' movwf TRISC ; PORTC = Eingang(Open Koll.) movlw b'00000000' movwf TRISD ; PORTD = Ausgang movlw b'11111111' movwf TRISE ; PORTE = Eingang movlw b'00000111' movwf OPTREG ; TMR0 intern, Vorteiler 256 clrf ADCON1 ; ADW links ausgerichtet bank2 clrf CM1CON0 clrf CM2CON0 bank0 clrf SSPCON return ;****************************************************************** main call init loop clrf PORTB movlw 0xFF movwf PORTB goto loop ;********************************************************************* end