LIST P=16F88 INCLUDE ; __CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC CBLOCK H'20' TMP0 TMP1 TMP2 ZNAK ADL ADH ENDC #define E PORTA,0 #define RS PORTA,1 movlw b'00000' movwf PORTA ; přednastavení PORTu A movlw b'00000000' movwf PORTB ; přednastavení PORTu B ; ------------------------ bsf STATUS,RP0 ; nastavení BANKY 1 movlw b'11100' ; portA 1-0 vystupy movwf TRISA movlw b'11110000' ; portB 7-0, 4vstupy, 4vystupy movwf TRISB movlw b'01000000' ;PIN RB7 analog. vstup movwf ANSEL CLRF ADRESL bcf STATUS,RP0 CLRF ADRESH ;------inicializace displeje-------- INI_LCD CALL CEK15m BCF RS BSF E MOVLW B'0011' MOVWF PORTB BCF E CALL CEK4m1 BSF E NOP BCF E CALL CEK100us BSF E NOP BCF E CALL CEK40us BSF E BCF PORTB,0 BCF E CALL CEK40us MOVLW B'00101000' MOVWF ZNAK CALL WRLCD MOVLW B'00001110' MOVWF ZNAK CALL WRLCD MOVLW B'00000001' MOVWF ZNAK CALL WRLCD CALL CEK4m1 MOVLW B'00000110' MOVWF ZNAK CALL WRLCD CALL CEK100us ;-------NASTAVENI AD PREVODNIKU------ MAIN BSF STATUS,RP0 MOVLW B'11000000' ;RIGHT JUSTIF.,A/D CLOCK SOURCE MOVWF ADCON1 ;REFERENCE +5V, 0V BCF STATUS,RP0 MOVLW B'00110000' ;A/D CLOCK, pin PR7-VSTUP MOVWF ADCON0 BSF ADCON0,ADON ;ZAPNUTÍ A/D PŘEVODNÍKU CALL CEK40us ;Čekání na nabití kondenzátoru START BSF ADCON0,2 ;zapnutí převodu BTFSC ADCON0,2 ;čekání na ukončení převodu GOTO $-1 ;------- MOVLW B'10000000' ;nastavení pozice NULA na LCD MOVWF ZNAK CALL ADRESA BANKSEL 1 MOVF ADRESL,W ;PŘESUN VÝSLEDKU A/D LOW BYTE DO PAM. BUNKY MOVWF ADL ; BANKSEL 0 MOVF ADRESH,W ;PŘESUN VÝSLEDKU A/D HIGH BYTE DO PAM. BUNKY MOVWF ADH ;------VYPIS AD PŘEVODU NA LCD V BINÁRNÍM STAVU---------- MOVLW A'1' MOVWF ZNAK BTFSS ADH,7 ;NEJVYŠŠÍ BIT MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADH,6 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADH,5 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADH,4 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADH,3 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADH,2 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADH,1 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADH,0 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'_' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADL,7 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADL,6 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADL,5 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADL,4 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADL,3 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADL,2 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADL,1 MOVLW A'0' MOVWF ZNAK CALL ZAPIS MOVLW A'1' MOVWF ZNAK BTFSS ADL,0 MOVLW A'0' MOVWF ZNAK CALL ZAPIS GOTO START ;-----KONEC PROGRAMU SKOK NA OPAKOVÁNÍ PŘEVODU-------- ;------PODPROGRAM PRO ZÁPIS NA LCD---------- ZAPIS BSF RS ADRESA BSF E SWAPF ZNAK,W MOVWF PORTB BCF E CALL CEK40us BSF E MOVF ZNAK,W MOVWF PORTB BcF E CALL CEK40us BCF RS RETURN ;---------------------------------------- ;----PODPROGRAM PRO PRVOTNÍ INICIALIZACI LCD---- WRLCD BSF E SWAPF ZNAK,W MOVWF PORTB BCF E CALL CEK40us BSF E MOVF ZNAK,W MOVWF PORTB BcF E CALL CEK40us RETURN ;-----ČEKACÍ SMYČKY------------------------ CEK15m MOVLW 0x35 ;53 DEC MOVWF TMP1 MOVLW 0x5D ;93 DEC MOVWF TMP0 DECFSZ TMP0,F GOTO $-1 DECFSZ TMP1,F GOTO $-5 RETURN ; ------------------------ CEK4m1 MOVLW 0x14 ;20 DEC MOVWF TMP1 MOVLW 0x43 ;67 DEC MOVWF TMP0 DECFSZ TMP0,F GOTO $-1 DECFSZ TMP1,F GOTO $-5 RETURN ; ------------------------ CEK1s ;Delay 999998 cycles MOVLW 0x06 ;6 DEC MOVWF TMP2 MOVLW 0x13 ;19 DEC MOVWF TMP1 MOVLW 0x0AD ;173 DEC MOVWF TMP0 DECFSZ TMP0,F GOTO $-1 DECFSZ TMP1,F GOTO $-3 DECFSZ TMP2,F GOTO $-5 RETURN ;----------------------------------- CEK100us MOVLW 0x21 ;33 DEC MOVWF TMP1 DECFSZ TMP1,F GOTO $-1 RETURN ;--------------------------------------- CEK25us ;Delay 25 cycles MOVLW 0x08 ;8 DEC MOVWF TMP0 DECFSZ TMP0,F GOTO $-1 RETURN ; ------------------------ CEK40us ;Delay 40 cycles MOVLW 0x0D ;13 DEC MOVWF TMP0 DECFSZ TMP0,F GOTO $-1 RETURN ; ------------------------ ZPOZD50us MOVLW 0x10 ;16 DEC ;Delay 50us MOVWF TMP0 DECFSZ TMP0,F GOTO $-1 RETURN END