Powsosoftulica0000

15
Anexă Anexă PROGRAMUL ÎNSCRIS ÎN MEMORIA MICROCON TROLERULUI #include<p16f84.inc> __CONFIG b'00111101000001' ;--------------------------------------------------- ;aloc adrese in memoria RAM ;--------------------------------------------------- LCDDATA EQU PORTD LCDCTRL EQU PORTC ;variabila LCDCTRL o asociez portului C E EQU H'5' ;din care bitul 5 repr. Enable LCD RS EQU H'7' ;şi bitul 7 repr. RS (intstr/date) PAUZA1 EQU 0X21 PAUZA2 EQU 0X22 PAUZA3 EQU 0x23 POW EQU 0X24 POW EQU 0X25 W_POW EQU 0x26 S_POW EQU 0x27 REZAD EQU 0x28 56

Transcript of Powsosoftulica0000

Page 1: 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

Page 2: Powsosoftulica0000

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

Page 3: Powsosoftulica0000

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

Page 4: Powsosoftulica0000

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

Page 5: Powsosoftulica0000

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

Page 6: Powsosoftulica0000

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

Page 7: Powsosoftulica0000

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

Page 8: Powsosoftulica0000

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

Page 9: Powsosoftulica0000

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

Page 10: Powsosoftulica0000

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

Page 11: Powsosoftulica0000

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

Page 12: Powsosoftulica0000

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

Page 13: Powsosoftulica0000

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