Moyin, tienes razón!!!
Ahi va el codigo, tiene un cristal de 20 mhz.
program taco
dim txt as char[20]
dim xtx as char[20]
dim Freq as word
dim Tmp_Freq as word
dim Freqs as word
dim Tmp_Freqs as word
dim Voltajebateria, bateria as word
dim Porcentbateria as word
dim Volbateriatest as string[16]
dim Porbateriatest as string[16]
dim T0Count as byte
sub procedure Voltbateria
bateria = adc_read(0)
voltajebateria = (bateria*10/65)
Porcentbateria = (voltajebateria*100/12)
WordToStr(voltajebateria, volbateriatest)
WordToStr(Porcentbateria, Porbateriatest)
Lcd_Chr(3, 17, volbateriatest[2])
Lcd_Chr(3, 18, volbateriatest[3])
Lcd_Chr(3, 19, 46)
Lcd_Chr(3, 20, volbateriatest[4])
Lcd_Chr(4, 16, Porbateriatest[2])
Lcd_Chr(4, 17, Porbateriatest[3])
Lcd_Chr(4, 18, 46)
Lcd_Chr(4, 19, Porbateriatest[4])
Lcd_Chr(4, 20, "%")
end sub
sub procedure albat
If adc_read(0) > 746 then
Lcd_out(4,1,"VOLTAJE OPTI.")
else
Lcd_out(4,1,"VOLTAJE BAJO ")
delay_ms(300)
end if
end sub
sub procedure Interrupt
if TestBit(INTCON, T0IF) = 1 then
inc(T0Count)
if T0Count = 1 then
Freq = Tmp_Freq*40
Freqs = Tmp_Freqs*40/60
Tmp_Freq = 0
Tmp_Freqs = 0
T0Count = 0
TMR0H = $0c
TMR0L = $0c
end if
ClearBit(INTCON, TMR0IF)
else
Inc(Tmp_Freq)
Inc(Tmp_Freqs)
ClearBit(INTCON, INT0IF)
end if
end sub
sub procedure iniciolcd
Lcd_Config(PORTC,2,3,0,1, PORTC,4,6,5)
Lcd_Cmd(LCD_CURSOR_OFF)
Lcd_Cmd(LCD_CLEAR)
LCD_CMD(128)
LCD_CMD(192)
LCD_CMD(148)
LCD_CMD(212)
end sub
sub procedure visualizacion
Lcd_out(1,1,"TACOMETRO RPM")
Lcd_out(2,1,"TACOMETRO RPS")
Lcd_out(3,1,"VOLTAJE BATERIA")
WordToStr(Freq, txt)
WordToStr(Freqs, xtx)
Lcd_Out(1, 16, txt)
Lcd_Out(2, 16, xtx)
Voltbateria
albat
end sub
main:
T0CON = $00
INTCON2.INTEDG0 = 0
T0CON.TMR0ON = 1
INTCON = $01D5
iniciolcd
Interrupt
while true
Visualizacion
wend
end.