Powsosoftulica0000
-
Upload
guestcf1d35 -
Category
Automotive
-
view
85 -
download
0
Transcript of Powsosoftulica0000
Anexă
Anexă
PROGRAMUL ÎNSCRIS ÎN MEMORIA
MICROCONTROLERULUI
#include<p16f84.inc>__CONFIG b'00111101000001'
;---------------------------------------------------;aloc adrese in memoria RAM;---------------------------------------------------LCDDATA EQU PORTDLCDCTRL EQU PORTC ;variabila LCDCTRL o asociez portului CE EQU H'5' ;din care bitul 5 repr. Enable LCD RS EQU H'7' ;şi bitul 7 repr. RS (intstr/date)PAUZA1 EQU 0X21PAUZA2 EQU 0X22PAUZA3 EQU 0x23POW EQU 0X24POW EQU 0X25W_POW EQU 0x26S_POW EQU 0x27REZAD EQU 0x28pow1 EQU 0x29H_RAD EQU 0x2CL_RAD EQU 0x2DB1 EQU 0x2EB2 EQU 0x2FContor EQU 0x30pow EQU 0x31H_byte EQU 0x32L_byte EQU 0x33R0 EQU 0x34R1 EQU 0x35R2 EQU 0x36count EQU 0x37
56
Anexă
index EQU 0x38flag EQU 0x39
C1 EQU 0x3AC2 EQU 0x3Bpan EQU 0x3CL_1 EQU 0x41L_2 EQU 0x42L_3 EQU 0x43L_4 EQU 0x44A_A EQU 0x3DB_B EQU 0x3ELByte EQU 0x3FHByte EQU 0x40;-----------------------------------------------------;initializare program;-----------------------------------------------------
ORG 0x0000GOTO Inc
IncBCF STATUS,RP1 ;bank1BSF STATUS,RP0CLRF TRISC ;iesiriCLRF TRISDCLRF TRISBMOVLW 0xFF ;portul A intrari.MOVWF TRISACLRF TRISEBANKSEL ADCON1MOVLW 0x04MOVWF ADCON1BCF STATUS,RP0 ;bank0BCF INTCON,5 ;dezactivez TMR0IE.BCF INTCON,4 ;dezactivez INTE.BCF INTCON,0 ;initial nu am schimbare pe PORTB.BCF INTCON,2 ;dezactivez TMR0IF.BCF INTCON,1 ;dezactivez INTF.CLRF PORTCCLRF PORTDBCF PORTB,0BSF PORTB,1CLRF PORTE
Lcdinit ;initializare LCD.CALL Mare2MOVLW 0x30CALL Putcmd2MOVLW 0x30
57
Anexă
CALL Putcmd2MOVLW 0x30
CALL Putcmd2MOVLW 0x38 ;interfata 8 biti, 2 linii si font 5x7.CALL Putcmd2MOVLW 0x08 ;display OFF, cursor OFF no blink.CALL Putcmd2MOVLW 0x01 ;sterge display.CALL Putcmd2MOVLW 0x0F ;seteaza mod de lucru, incrementeaza cursorul dupa
afişare.CALL Putcmd2MOVLW 0x0C ;display on, cursor off, no blink.CALL Putcmd2
;------------------------------------------------;Program principal;------------------------------------------------Start
MOVLW 0x02 ;cursor pe prima linie.CALL Putcmd2MOVLW 0x54 ;"T"CALL Putdata2MOVLW 0x10 ;"_"CALL Putdata2MOVLW 0x46 ;"F"CALL Putdata2MOVLW 0x72 ;"r"CALL Putdata2MOVLW 0x65 ;"e"CALL Putdata2MOVLW 0x73 ;"s"CALL Putdata2MOVLW 0x68 ;"h"CALL Putdata2MOVLW 0x10 ;"_"CALL Putdata2MOVLW 0x46 ;"F"CALL Putdata2MOVLW 0x6F ;"o"CALL Putdata2MOVLW 0x6F ;"o"CALL Putdata2MOVLW 0x64 ;"d"CALL Putdata2MOVLW 0x10 ;"_"CALL Putdata2
58
Anexă
BSF STATUS,RP0 ;bank1
MOVLW 0x04 ;valoarea 0x04.MOVWF ADCON1 ;o pune în reg. ADCON1.BCF STATUS,RP0 ;bank0BCF ADCON0,CHS2BCF ADCON0,CHS1 ;canal activ de conversie AN0.BCF ADCON0,CHS0BSF ADCON0,ADCS1 ;Fosc/32BCF ADCON0,ADCS0CALL Mic2CALL Mic2BSF ADCON0,ADONCALL Mic2CALL Mic2BSF ADCON0,GOCALL Mic2CALL Mic2BCF ADCON0,ADONMOVFADRESH,0MOVWF H_RAD ;în H_RAD am tensiunea pe AN0CALL ActMOVLW 0xDF ;"grade"CALL Putdata2MOVLW 0x43 ;"C"CALL Putdata2
Second_lineMOVLW H'A8' ;mutam cursorul pe cea de-a doua linie.CALL Putcmd2MOVLW 0x54 ;"T"CALL Putdata2MOVLW 0x10 ;"_"CALL Putdata2MOVLW 0x46 ;"F"CALL Putdata2MOVLW 0x72 ;"r"CALL Putdata2MOVLW 0x65 ;"e"CALL Putdata2MOVLW 0x65 ;"e"CALL Putdata2MOVLW 0x7A ;"z"CALL Putdata2MOVLW 0x65 ;"e"CALL Putdata2MOVLW 0x72 ;"r"CALL Putdata2
59
Anexă
MOVLW 0x10 ;"_"
CALL Putdata2BSF STATUS,RP0 ;bank1MOVLW 0x04 ;AN7 <-> AN5 digitale, restul analogiceMOVWF ADCON1BCF STATUS,RP0 ;bank0BCF ADCON0,CHS2BCF ADCON0,CHS1 ;canal activ de conversie AN1.BSF ADCON0,CHS0BSF ADCON0,ADCS1 ;Fosc/32BCF ADCON0,ADCS0CALL Mic2CALL Mic2BSF ADCON0,ADONCALL Mic2CALL Mic2BSF ADCON0,GOCALL Mic2CALL Mic2BCF ADCON0,ADONMOVFADRESH,0MOVWF H_RAD ;in H_RAD am tensiunea pe AN1CALL ActsMOVLW 0xDF ;"grade"CALL Putdata2MOVLW 0x43 ;"C"CALL Putdata2CALL Mare2GOTO Start
Putcmd2BCF LCDCTRL,RS ;setează RS pe 0 pentru a indica o
instrucţiune.
BSF LCDCTRL,E ;enable pe 1 logic.MOVWF LCDDATABCF LCDCTRL,E ;enable pe 0 logic.CALL Mic2 ;rutina pentru comanda display.RETURN
Putdata2BSF LCDCTRL,RS ;rutina pentru date display.BSF LCDCTRL,EMOVWF LCDDATACALL Mic2BCF LCDCTRL,ECALL Mic2RETURN
60
Anexă
Mare2MOVLW 0XBFMOVWF PAUZA2
JETI22MOVLW 0XBFMOVWF PAUZA1
JETI2DECFSZ PAUZA1,1GOTO JETI2DECFSZ PAUZA2,1GOTO JETI22RETURN
Mic2MOVLW 0X10MOVWF PAUZA2
XET22MOVLW 0X10MOVWF PAUZA1
XET2DECFSZ PAUZA1,1GOTO XET2DECFSZ PAUZA2,1GOTO XET22RETURN
Sec_2MOVLW 0X60 ;rutina care asteapta 2 secunde.MOVWF PAUZA3
AAET2MOVLW 0X60MOVWF PAUZA2
AAET1MOVLW 0X60MOVWF PAUZA1
AAETDECFSZ PAUZA1,1GOTO AAETDECFSZ PAUZA2,1GOTO AAET1DECFSZ PAUZA3,1GOTO AAET2RETURN
;------------------------------------------------------Act ;rutina pentru conversia puterii.
MOVFH_RAD,0SUBLW 0x7FBTFSC STATUS,C
61
Anexă
GOTO Putere_micaMOVFH_RAD,0SUBLW 0x81BTFSC STATUS,CGOTO Putere _0MOVFH_RAD,0SUBLW 0x86BTFSC STATUS,CGOTO Putere _1MOVFH_RAD,0SUBLW 0x89BTFSC STATUS,CGOTO Putere _2MOVFH_RAD,0SUBLW 0x8DBTFSC STATUS,CGOTO Putere _3MOVFH_RAD,0SUBLW 0x8FBTFSC STATUS,CGOTO Putere _4MOVFH_RAD,0SUBLW 0x91BTFSC STATUS,CGOTO Putere _5MOVFH_RAD,0SUBLW 0x94BTFSC STATUS,CGOTO Putere _6MOVFH_RAD,0SUBLW 0x98BTFSC STATUS,CGOTO Putere _7GOTO Putere_mare
Putere_micaBCF PORTB,0MOVLW 0x10MOVWF L_1GOTO Disp_Tpow
Putere_0BSF PORTB,0MOVLW 0x30MOVWF L_1GOTO Disp_Tpow
Putere_1BSF PORTB,0
62
Anexă
MOVLW 0x31MOVWF L_1GOTO Disp_Tpow
Putere_2BSF PORTB,0MOVLW 0x32MOVWF L_1GOTO Disp_Tpow
Putere_3BSF PORTB,0MOVLW 0x33MOVWF L_1GOTO Disp_Tpow
Tensiune_4BSF PORTB,0MOVLW 0x34MOVWF L_1GOTO Disp_Tpow
Putere_5BSF PORTB,0MOVLW 0x35MOVWF L_1GOTO Disp_Tpow
Putere_6BSF PORTB,0MOVLW 0x36MOVWF L_1GOTO Disp_Tpow
Putere_7BSF PORTB,0MOVLW 0x37MOVWF L_1GOTO Disp_Tpow
Putere_mareBCF PORTB,0MOVLW 0x10MOVWF L_1GOTO Disp_Tpow
Disp_TpowMOVFL_1,0CALL Putdata2RETURN
;-------------------------------------------Acts
MOVFH_RAD,0SUBLW 0x39
63
Anexă
BTFSC STATUS,CGOTO Pow_mareMOVFH_RAD,0SUBLW 0x3EBTFSC STATUS,CGOTO Pow _24MOVFH_RAD,0SUBLW 0x40BTFSC STATUS,CGOTO Pow _23MOVFH_RAD,0SUBLW 0x4BBTFSC STATUS,CGOTO Pow _22MOVFH_RAD,0SUBLW 0x4DBTFSC STATUS,CGOTO Pow _21MOVFH_RAD,0SUBLW 0x4FBTFSC STATUS,CGOTO Pow _20MOVFH_RAD,0SUBLW 0x51BTFSC STATUS,CGOTO Pow _19MOVFH_RAD,0SUBLW 0x53BTFSC STATUS,CGOTO Pow _18MOVFH_RAD,0SUBLW 0x55BTFSC STATUS,CGOTO Pow _17MOVFH_RAD,0SUBLW 0x57BTFSC STATUS,CGOTO Pow _16MOVFH_RAD,0SUBLW 0x5ABTFSC STATUS,CGOTO Pow _15MOVFH_RAD,0SUBLW 0x5DBTFSC STATUS,CGOTO Pow _14
64
Anexă
MOVFH_RAD,0SUBLW 0x60BTFSC STATUS,CGOTO Pow _13MOVFH_RAD,0SUBLW 0x63BTFSC STATUS,CGOTO Pow _12GOTO Pow_mica
Pow _micaBCF PORTB,1MOVLW 0x10MOVWF L_1MOVLW 0x10MOVWF L_2MOVLW 0x10MOVWF L_3GOTO Disp_T Pow
Pow _12BSF PORTB,1MOVLW 0x2D ;"-"MOVWF L_1MOVLW 0x31MOVWF L_2MOVLW 0x32MOVWF L_3GOTO Disp_T Pow
Pow _13BSF PORTB,1MOVLW 0x2D ;"-"MOVWF L_1MOVLW 0x31MOVWF L_2MOVLW 0x33MOVWF L_3GOTO Disp_T Pow
Pow _14BSF PORTB,1MOVLW 0x2D ;"-"MOVWF L_1MOVLW 0x31MOVWF L_2MOVLW 0x34MOVWF L_3GOTO Disp_T Pow
65
Anexă
Pow _15BSF PORTB,1MOVLW 0x2D ;"-"MOVWF L_1MOVLW 0x31MOVWF L_2MOVLW 0x35MOVWF L_3GOTO Disp_T Pow
Pow _16BSF PORTB,1MOVLW 0x2D ;"-"MOVWF L_1MOVLW 0x31MOVWF L_2MOVLW 0x36MOVWF L_3GOTO Disp_T Pow
Pow _17BSF PORTB,1MOVLW 0x2D ;"-"MOVWF L_1MOVLW 0x31MOVWF L_2MOVLW 0x37MOVWF L_3GOTO Disp_T Pow
Pow _18BSF PORTB,1MOVLW 0x2D ;"-"MOVWF L_1MOVLW 0x31MOVWF L_2MOVLW 0x38MOVWF L_3GOTO Disp_T Pow
Pow _19BSF PORTB,1MOVLW 0x2D ;"-"MOVWF L_1MOVLW 0x31MOVWF L_2MOVLW 0x39MOVWF L_3GOTO Disp_T Pow
66
Anexă
Pow _20BSF PORTB,1MOVLW 0x2D ;"-"MOVWF L_1MOVLW 0x32MOVWF L_2MOVLW 0x30MOVWF L_3GOTO Disp_T Pow
Pow _21BSF PORTB,1MOVLW 0x2D ;"-"MOVWF L_1MOVLW 0x32MOVWF L_2MOVLW 0x31MOVWF L_3GOTO Disp_T Pow
Pow _22BSF PORTB,1MOVLW 0x2D ;"-"MOVWF L_1MOVLW 0x32MOVWF L_2MOVLW 0x32MOVWF L_3GOTO Disp_T Pow
Pow _23BSF PORTB,1MOVLW 0x2D ;"-"MOVWF L_1MOVLW 0x32MOVWF L_2MOVLW 0x33MOVWF L_3GOTO Disp_T Pow
Pow _24BSF PORTB,1MOVLW 0x2D ;"-"MOVWF L_1MOVLW 0x32MOVWF L_2MOVLW 0x34MOVWF L_3GOTO Disp_T Pow
67
Anexă
Pow _mareBCF PORTB,1MOVLW 0x10 ;"-"MOVWF L_1MOVLW 0x10MOVWF L_2MOVLW 0x10MOVWF L_3GOTO Disp_T Pow
Disp_T PowMOVFL_1,0CALL Putdata2MOVFL_2,0CALL Putdata2MOVFL_3,0CALL Putdata2RETURNEND
68