'**************************************************************** '* Name : Semi-Redonda SR * '* Author : Luciano Gibim * '* Notice : Copyright (c) 2011 Tudela Ind. e Com.Ltda * '* : All Rights Reserved * '* Date : 20/9/2011 * '* Version : 1.0 * '* Notes : * '* : * '**************************************************************** Device 16F887 Asm CONFIG_REQ __CONFIG _CONFIG1, xt_osc & WDT_OFF & DEBUG_OFF & FCMEN_OFF & IESO_OFF & BOR_OFF & LVP_off & CPD_OFF & CP_OFF & MCLRE_ON & PWRTE_OFF __CONFIG _CONFIG2, WRT_OFF & BOR21V EndAsm Declare Xtal 4 On_Hardware_Interrupt GoTo pulso Declare LCD_DTPort PORTD Declare LCD_DTPin PORTD.4 Declare LCD_ENPin PORTC.5 Declare LCD_RSPin PORTC.4 Declare LCD_Interface 4 Declare LCD_Lines 2 Dim botao As Byte Dim FREQ As Word Dim FREQ2 As Word Dim FREQ_GIRO As Float Dim freq2_hi As FREQ2.HighByte Dim freq2_lo As FREQ2.LowByte Dim temp As Word Dim x As Byte Dim VARI As Byte Dim WVARI As Word Dim dut As Word Dim i As Byte Dim vel As Byte Dim var1 As Byte Dim Vel_cab[5] As Byte Dim VFrasco[5] As Byte Dim Tretardo[5] As Word Dim Tdatador[5] As Word Dim Tgarfo[5] As Word Dim T As Dword Dim D[5] As Byte Dim total As Dword Dim pre As Byte Dim post As Byte Dim LOOP As Byte Symbol PIN = PORTD.1 Symbol PIN2= PORTB.7 Symbol sobe= PORTD.0 Symbol desce=PORTC.0 Symbol funcao=PORTC.3 Symbol partida=PORTA.2 Symbol fim_curso=PORTA.4 Symbol parada=PORTA.1 Symbol datador=PORTB.1 'para o pause da impressora Symbol solenoide = PORTB.2 Symbol TMR1IF PIR1.0 Symbol TMR1IE PIE1.0 Symbol GIE INTCON.7 Symbol TMR1ON T1CON.0 Symbol TMR2ON T2CON.2 Symbol PEIE INTCON.6 Symbol T0IF INTCON.2 Symbol T0IE INTCON.5 Symbol tmr2if PIR1.1 Symbol tmr2ie PIE1.1 Symbol tmr1cs T1CON.1 Symbol PS0 OPTION_REG.0 Symbol PS1 OPTION_REG.1 Symbol PS2 OPTION_REG.2 'SETUP DOS REGISTRADORES INTCON=%00000000 ADCON0= 0 ADCON1=0 ANSEL=0 'desabilita analogico' ANSELH=0 'desabilita analogico' IOCB=%00000000 'interrupção individual portb desabilitada' CM1CON0=0 ' desliga comparador analogico digital 1' CM2CON0=0 ' desliga comparador analogico digital 2' CM2CON1=$02 CCP1CON=0 OPTION_REG=7 TRISC=%11001001 TRISD=%00000001 TRISB=%00000001 TRISA=%00111111 TRISE=%001 T1CON=%00010000 GIE=1 Low PORTB Low PORTD.1 EData 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 som: For temp=1 To 3 Sound PIN,[124,5,127,10] : Low PIN: DelayMS 100 Next High datador ' aciona pause impressora DelayMS 200 Low datador apresentacao: Cls Cursor 1,1 Print "Tudela Ind e Com" Cursor 2,1 Print "F: (11)2941-6930" GoSub le_eepron DelayMS 2000 calculos: FREQ_GIRO= (71.3 * VFrasco[i])/10 'correção 63.16*1,111=70.17 FREQ2=65536-(250000/FREQ_GIRO) ' calculo velocidade giro correção FREQ =((102 *Vel_cab[i])/10)' micropasso 1/1600 T=((602*D[i])/Vel_cab[i]) ' calculo do tempo para uma distancia D com certa velocicade TMR1L=freq2_lo TMR1H=freq2_hi TMR1IF=0 TMR1IE=1 TMR1ON=1 tmr1cs=0 PEIE=1 TMR1IF=0 Cls Cursor 1,1 Print "Total=" Cursor 1,7 Print Dec6 total GoTo inicio ajuste: Cls ajuste1: i=ERead 0 total= ERead 1 Cursor 1,1 Print "Progr. Num.: P",Dec2 i GoSub teclado Cls Vel_cab[i]=ERead (i+5) Cursor 1,1 Print "Vel.Rotulo:" Cursor 2,1 Print Dec3 Vel_cab[i] var1=Dig Vel_cab[i],0 Cursor 2,3 Print ",",@var1," m/min." Cursor 2,13 Print "(P",@i,")" x= 5 VARI=Vel_cab[i] GoSub teclado2 Cls Cursor 1,1 Tdatador[i]=ERead((i*2)+20) Print "Temp.Datador:" Cursor 2,1 Print Dec3 Tdatador[i]," ms." Cursor 2,13 Print "(P",@i,")" x=20 WVARI =Tdatador[i] GoSub teclado22 Cls Cursor 1,1 Tretardo[i]=ERead((i*2)+30) Print "Temp.Retardo" Cursor 2,1 Print Dec3 Tretardo[i]," ms." Cursor 2,13 Print "(P",@i,")" x=30 WVARI =Tretardo[i] GoSub teclado22 Cls Cursor 1,1 Tgarfo[i]=ERead((i*2)+40) Print "Temp.Massagem:" Cursor 2,1 Print Dec3 Tgarfo[i]," ms." Cursor 2,13 Print "(P",@i,")" x=40 WVARI =Tgarfo[i] GoSub teclado22 Cls Cursor 1,1 VFrasco[i]=ERead(i+10) Print "Vel.Frasco:" Cursor 2,1 Print Dec3 VFrasco[i] var1=Dig VFrasco[i],0 Cursor 2,3 Print ",",@var1," m/min." Cursor 2,13 Print "(P",@i,")"' x=10 VARI=VFrasco[i] GoSub teclado2 Cls Cursor 1,1 D[i]=ERead((i*2)+50) Print "Posicao Rotulo" Cursor 2,1 Print Dec3 D[i]," mm." Cursor 2,13 Print "(P",@i,")" x=50 WVARI =D[i] GoSub teclado22 Cls Cursor 1,1 Print "'F' 1 toque sai" Cursor 2,1 Print "'F' 2seg total=0" TECLA: If funcao=0 Then DelayMS 2000 If funcao=0 Then GoSub zera GoTo apresentacao Else GoTo TECLA EndIf zera: total =0 EWrite 1,[total] Sound PIN,[127,10] : Low PIN: DelayMS 100 Sound PIN,[ 126,10] : Low PIN Return teclado: If sobe=0 Then GoSub soma If desce=0 Then GoSub subtrai If funcao=0 Then DelayMS 150:Return GoTo teclado soma: If sobe=0 Then GoTo soma i=i+1 If i>=5 Then i=0 EWrite 0,[i] Cursor 1,15 Print Dec2 i Return subtrai: If desce=0 Then GoTo subtrai i=i-1 If i>=5 Then i=4 EWrite 0,[i] Cursor 1,15 Print Dec2 i Return teclado2: If sobe=0 Then DelayMS 250:GoSub soma2 If desce=0 Then DelayMS 250:GoSub subtrai2 If funcao=0 Then DelayMS 150 aguarda: If funcao=0 Then GoTo aguarda Return EndIf GoTo teclado2 soma2: While sobe=0 GoSub somas2 Wend somas2: VARI=VARI+1 If VARI>=250 Then VARI=30 EWrite(i+x),[VARI] Cursor 2,1 Print Dec3 VARI var1= Dig VARI,0 Cursor 2,3 Print ",", @var1 DelayMS 50 Return subtrai2: While desce=0 GoSub subtrais2 Wend subtrais2: VARI=VARI-1 If VARI<30 Then VARI=250 EWrite(i+x),[VARI] Cursor 2,1 Print Dec3 VARI var1= Dig VARI,0 Cursor 2,3 Print ",", @var1 DelayMS 50 Return teclado22: If sobe=0 Then DelayMS 250:GoSub soma22 If desce=0 Then DelayMS 250:GoSub subtrai22 If funcao=0 Then DelayMS 150 aguarda2: If funcao=0 Then GoTo aguarda2 Return EndIf GoTo teclado22 soma22: While sobe=0 GoSub somas22 Wend somas22: WVARI=WVARI+1 If WVARI>=1000 Then WVARI=0 EWrite((i*2)+x),[WVARI] Cursor 2,1 Print Dec3 WVARI DelayMS 50 Return subtrai22: While desce=0 GoSub subtrais22 Wend subtrais22: WVARI=WVARI-1 If WVARI>=65535 Then WVARI=999 EWrite((i*2)+x),[WVARI] Cursor 2,1 Print Dec3 WVARI DelayMS 50 Return '*********leitura da eeprom ********** le_eepron: i=ERead 0 total= ERead 1 Vel_cab[i]=ERead(i+5) VFrasco[i]=ERead (i+10) Tretardo[i]=ERead((i*2)+ 30) Tdatador[i]=ERead((i*2)+20) Tgarfo[i]=ERead ((i*2)+40) D[i]= ERead ((i*2)+50) Return contador: Inc total EWrite 1,[total] Cursor 1,7 Print Dec6 total Return inicio: If partida=0 Then If fim_curso=0 Then GoSub fim_rotulo High datador ' pulso desabilita pause impressora DelayMS 100 Low datador DelayMS 100 DelayMS Tretardo[i] HPWM 2,127,FREQ High datador 'pulso habilita pause impressora DelayMS 100 Low datador GoTo gera_pulso EndIf If funcao=0 Then DelayMS 200 segura: If funcao=0 Then segura GoTo ajuste1 Else GoTo inicio EndIf gera_pulso: para: If parada=0 Then para1: If fim_curso=0 Then GoSub fim_rotulo DelayMS T GoTo inter EndIf If fim_curso=0 Then GoSub fim_rotulo GoTo para fim_rotulo: HPWM 2,0,FREQ TMR1ON=0 Aviso: Sound PIN,[127,10] : Low PIN: DelayMS 100 Cls Cursor 1,1 Print "FALTA DE ROTULO" Cursor 2,1 Print "Imprimir rotulo" If fim_curso=0 Then GoTo Aviso Cls Cursor 1,1 Print "Acione tecla 'F'" Cursor 2,1 Print " para continuar" religa: If funcao=0 Then TMR1ON=1 DelayMS 500 Cls Cursor 1,1 Print "Total=" Cursor 1,7 Print Dec6 total HPWM 2,127,FREQ Return EndIf GoTo religa inter: HPWM 2,0,FREQ DelayMS Tgarfo[i] High solenoide DelayMS 100 Low solenoide GoSub contador inter2: If partida=0 Then inter2 GoTo inicio pulso: Context Save If TMR1IF=1 Then PULSO2 GoTo SAIDA PULSO2: TMR1ON=0 If PORTC.2=1 Then LIGA GoTo DESLIGA LIGA: Low PORTC.2 TMR1L=freq2_lo TMR1H=freq2_hi TMR1IF=0 TMR1ON=1 GoTo SAIDA DESLIGA: High PORTC.2 TMR1L=freq2_lo TMR1H=freq2_hi TMR1IF=0 TMR1ON=1 GoTo SAIDA SAIDA: Context Restore