Hola
Aqui va el codigo
program Aspirador
sub procedure interrupt
TMR0 = 96
INTCON = $20
GOTO tickint
end sub
main:
dim text as char[20]
dim tiempo,seg as byte 'Error= Identifier DIM was not declare
dim moneda as word 'moneda var word
dim hour1,dhour,minute1,second1,ticks as byte 'hour var byte ' Define hour variable
dim update as byte ' Define variable to indicate update of LCD
dim i,b,cc,dd,e as byte 'i var byte ' Debounce loop variable
dim base1 as word
dim aspira as word
dim addr1, addr2,addr3,addr4 as word
dim mon1,mon2,mon3,mon4 as word
dim mon1_1,mon2_2,mon3_3,mon4_4,seg_1 as string[5]
OPTION_REG = $55 ' Set TMR0 configuration and enable PORTB pullups
TMR0 = 96
INTCON = $A0
TRISA = 0
TRISB = 0
ADCON1 = 6 ' PORTA and E digital
Lcd8_Init(PORTB, 7, 6, 5, 4, 3, 2, 1, 0, PORTA, 0, 1, 2)
Lcd8_Cmd(Lcd_CURSOR_OFF)
Lcd8_Out(1, 1,"hola") ' Print text at LCD
addr1 = 0x0430
addr2 = addr1 + 1
addr3 = addr2 + 1
addr4 = addr3 + 1
mon1 = Flash_Read(addr1)
mon2 = Flash_Read(addr2)
mon3 = Flash_Read(addr3)
mon4 = Flash_Read(addr4)
i = 0
b = 0
cc = 0
PORTA.2=0 ' LCD R/W low = write low no existe
delay_ms (1000) ' Wait for LCD to startup no hay pause
' tiempos de reglaje de la aspiradora
IF PORTA.3 = 1 then'AND PORTA.4 = 1 AND PORTA.5 = 1 THEN
BASE1 = 120
END IF
IF PORTA.3 = 1 then'AND PORTA.4 = 1 AND PORTA.5 = 0 THEN
base1 = 150
END IF
IF PORTA.3 = 1 then'AND PORTA.4 = 0 AND PORTA.5 = 1 THEN
BASE1 = 180
END IF
IF PORTA.3 = 0 then'AND PORTA.4 = 1 AND PORTA.5 = 1 THEN
BASE1 = 210
END IF
IF PORTA.3 = 0 then'AND PORTA.4 = 1 AND PORTA.5 = 0 THEN
BASE1 = 240
END IF
IF PORTA.3 = 0 then'AND PORTA.4 = 0 AND PORTA.5 = 0 THEN
BASE1 = 300
END IF
tiempo = 0
ASPIRA = 0
hour1 = 0 ' Set initial time to 00:00:00
minute1 = 0
second1 = 0
ticks = 0
update = 1 ' Force first display
OPTION_REG = $55 ' Set TMR0 configuration and enable PORTB pullups
INTCON = $a0 ' Enable TMR0 interrupts
mainloop:
PORTC.3 = 0
PORTD.4 = 0 ' PORTB lines low to read buttons
PORTD.5 = 0
PORTD.6 = 0
PORTD.7 = 0
TRISD = 0 ' Enable all buttons
If PORTD.7 = 1 Then
goto MONEDA4
end if
If PORTD.6 = 1 Then
goto MONEDA3
end if
If PORTD.5 = 1 Then
goto MONEDA2
end if
If PORTD.4 = 1 Then
goto MONEDA1
end if
IF PORTE.0 = 1 THEN
Lcd8_Cmd(Lcd_Clear)
' PRIMERA FILA DE CONTADORES
LCD8_OUT (1,1,"M1:")
WORDTOSTR(MON1,MON1_1)
LCD8_OUT (1,4,MON1_1)
LCD8_OUT (1,11,"M2:")
WORDTOSTR (MON2,MON2_2)
LCD8_OUT (1,14,MON2_2)
' SEGUNDA FILA DE CONTADORES
LCD8_OUT (2,1,"M3:")
WORDTOSTR(MON3,MON3_3)
LCD8_OUT (2,4,MON3_3)
LCD8_OUT (2,11,"M4:")
WORDTOSTR (MON4,MON4_4)
LCD8_OUT (2,14,MON4_4)
delay_ms (9000)
delay_ms (9000)
END IF
chkup:
If update = 1 Then '*********************************
if tiempo>0 then
Lcd8_Cmd(Lcd_Clear)
Lcd8_out (2,1,"TIEMPO: ")
wordtostr (seg,seg_1)
lcd8_out (2,10,seg_1)
else
Lcd8_Cmd(Lcd_Clear)
Lcd8_out (1,1," BIENVENIDOS")
LCD8_OUT (2,1," INTRODUZCA MONEDAS")
PORTD.1=0
end if
update = 0 ' Screen updated
End if
Goto mainloop
' Incremento moneda 1
moneda1:
MON1=MON1+1
' Flash_write(addr1, mon1)
PORTD.1=1
PORTC.3=1
Lcd8_Cmd(Lcd_Clear)
LCD8_OUT (1,1,"MONEDA: 0,50 EURO")
tiempo = tiempo + base1
PORTC.2=1
Goto debounce
' Incremento moneda 2
moneda2:
MON2=MON2+2
'write 3,mon2
PORTD.1=1
PORTC.3=1
Lcd8_Cmd(Lcd_Clear)
LCD8_OUT (1,1,"MONEDA: 1,00 EURO")
tiempo = tiempo + (base1*2)
FOR B = 1 TO 2
PORTC.2=1
delay_ms (50)
NEXT B
Goto debounce
' Incremento moneda 3
moneda3:
MON3=MON3+4
'write 5,mon3
PORTD.1=1
PORTC.3=1
FOR C = 1 TO 4
PORTC.2=1
delay_ms (50)
NEXT C
PORTD.0=1
Lcd8_Cmd(Lcd_Clear)
LCD8_OUT (1,1,"MONEDA: 2,00 EURO")
tiempo = tiempo + (base1*4)
Goto debounce
' Incremento moneda 4
moneda4:
MON4=MON4+2
'write 7,mon4
PORTD.1=1
PORTC.3=1
PORTC.2=1
Lcd8_Cmd(Lcd_Clear)
LCD8_OUT (1,1,"MONEDA: FICHA ")
tiempo = tiempo + (base1*2)
debounce: For i = 1 to 25
delay_ms(10)
Next i
update = 1 ' Set to update screen
Goto chkup
tickint: ticks = ticks + 1 ' Count pieces of seconds
If ticks < 61 Then goto tiexit ' 61 ticks per second (16.384ms per tick)
ticks = 0
second1 = second1 + 1
if tiempo > 0 then
tiempo = tiempo - 1
end if
update = 1 ' Set to update LCD
end if
tiexit: INTCON.2 = 0 ' Reset timer interrupt flag
end.
Saludos