Ajudinha.

Olá Amigos preciso de uma ajudinha num código Basic, ele é minha tentativa de conversão de um outro em C, apesar de não estar dando erro na compilação, também não está funcionando, será que alguém consegue perceber alguma coisa errada.
Obrigado desde já.
program FIA_Ctrol
'Variáveis Globais
dim recebido as string[16]
dim texto0 as string[6]
dim texto1 as string[6]
dim trans_ini as bit
sub procedure comando()
'Verifica se comando de leitura ou escrita
if recebido[0]="W" then
select case recebido[1]
case "A"
if recebido[2] = "0" then portb.rb0 = 0 else portb.rb0 = 1 end if
case "B"
if recebido[2] = "0" then portb.rb1 = 0 else portb.rb1 = 1 end if
case "C"
if recebido[2] = "0" then portb.rb2 = 0 else portb.rb2 = 1 end if
case "D"
if recebido[2] = "0" then portb.rb3 = 0 else portb.rb3 = 1 end if
case "E"
if recebido[2] = "0" then portb.rb4 = 0 else portb.rb4 = 1 end if
case "F"
if recebido[2] = "0" then portb.rb5 = 0 else portb.rb5 = 1 end if
case "G"
if recebido[2] = "0" then portb.rb6 = 0 else portb.rb6 = 1 end if
case "H"
if recebido[2] = "0" then portb.rb7 = 0 else portb.rb7 = 1 end if
case "I"
if recebido[2] = "0" then portb = 0 else portb = 255 end if
end select
end if
if recebido[0]="R" then
select case recebido[1]
case "J"
'Converter canal AN0
wordtostr(adc_read(0),texto0)
uart1_write("{")
uart1_write("J")
uart1_write_text(texto0)
uart1_write("}")
case "K"
'Converter canal AN1
wordtostr(adc_read(1),texto1)
uart1_write("{")
uart1_write("K")
uart1_write_text(texto1)
uart1_write("}")
end select
end if
end sub
'Rotina tratamento interrupções de alto nível
sub procedure interrupt
'Verifica se interrupção é de recepção
if pir1.rcif = 1 then
'recebe apenas dados entre chaves
if uart1_read = "{" then trans_ini = 1 else trans_ini = 0
if trans_ini = 1 then
'recebe dados pela serial
uart1_read_text(recebido, "}", 11)
comando()
trans_ini = 0 'deixa sistema pronto para receber outro comando
end if
end if
' x = UART1_read 'lê UART
'portb = x
'UART1_write(x) 'ecoa
end if
pir1.rcif = 0 'Limpa flag de recepção
end sub
main:
' Main program
'Configurações de IO
trisb = 0 'PortB como saída
trisd = 0 'PortD como saída
trise = 0 'PortE como saída
trisa.ra0 = 1 'Entrada analógica 0
trisa.ra1 = 1 'Entrada analógica 1
portb = 0 'Todos pinos em nível lógico 0
'Inicialização comunicação serial UART
UART1_init(9600) 'Inicializa UART c/ 9600BPS
'Configuração registradores das Interrupções
pir1.rcif = 0 'Limpa flag de interrupção recepção serial
pie1.rcie = 1 'Habilita interrupção de recepção serial
pir1.rcip = 1 'Define interrupção de recepção com alta prioridade
rcon.ipen = 1 'Habilita vetores de alta e baixa prioridade familia 18F
intcon.gie = 1'Habilita alta prioridade das interrupções
intcon.giel = 1'Habilita as baixas prioridades de interrupção (não usa neste exemplo)
'Entradas analógicas
cmcon = cmcon or 7 'Config entradas analogicas (ou lógico)
adcon1 = %00001101 'Configura AN0 e AN1 e demais como IO
'Zera flag transmissão iniciada
trans_ini = 0
'Laço While infinito
While TRUE
Wend
end.
Obrigado desde já.
program FIA_Ctrol
'Variáveis Globais
dim recebido as string[16]
dim texto0 as string[6]
dim texto1 as string[6]
dim trans_ini as bit
sub procedure comando()
'Verifica se comando de leitura ou escrita
if recebido[0]="W" then
select case recebido[1]
case "A"
if recebido[2] = "0" then portb.rb0 = 0 else portb.rb0 = 1 end if
case "B"
if recebido[2] = "0" then portb.rb1 = 0 else portb.rb1 = 1 end if
case "C"
if recebido[2] = "0" then portb.rb2 = 0 else portb.rb2 = 1 end if
case "D"
if recebido[2] = "0" then portb.rb3 = 0 else portb.rb3 = 1 end if
case "E"
if recebido[2] = "0" then portb.rb4 = 0 else portb.rb4 = 1 end if
case "F"
if recebido[2] = "0" then portb.rb5 = 0 else portb.rb5 = 1 end if
case "G"
if recebido[2] = "0" then portb.rb6 = 0 else portb.rb6 = 1 end if
case "H"
if recebido[2] = "0" then portb.rb7 = 0 else portb.rb7 = 1 end if
case "I"
if recebido[2] = "0" then portb = 0 else portb = 255 end if
end select
end if
if recebido[0]="R" then
select case recebido[1]
case "J"
'Converter canal AN0
wordtostr(adc_read(0),texto0)
uart1_write("{")
uart1_write("J")
uart1_write_text(texto0)
uart1_write("}")
case "K"
'Converter canal AN1
wordtostr(adc_read(1),texto1)
uart1_write("{")
uart1_write("K")
uart1_write_text(texto1)
uart1_write("}")
end select
end if
end sub
'Rotina tratamento interrupções de alto nível
sub procedure interrupt
'Verifica se interrupção é de recepção
if pir1.rcif = 1 then
'recebe apenas dados entre chaves
if uart1_read = "{" then trans_ini = 1 else trans_ini = 0
if trans_ini = 1 then
'recebe dados pela serial
uart1_read_text(recebido, "}", 11)
comando()
trans_ini = 0 'deixa sistema pronto para receber outro comando
end if
end if
' x = UART1_read 'lê UART
'portb = x
'UART1_write(x) 'ecoa
end if
pir1.rcif = 0 'Limpa flag de recepção
end sub
main:
' Main program
'Configurações de IO
trisb = 0 'PortB como saída
trisd = 0 'PortD como saída
trise = 0 'PortE como saída
trisa.ra0 = 1 'Entrada analógica 0
trisa.ra1 = 1 'Entrada analógica 1
portb = 0 'Todos pinos em nível lógico 0
'Inicialização comunicação serial UART
UART1_init(9600) 'Inicializa UART c/ 9600BPS
'Configuração registradores das Interrupções
pir1.rcif = 0 'Limpa flag de interrupção recepção serial
pie1.rcie = 1 'Habilita interrupção de recepção serial
pir1.rcip = 1 'Define interrupção de recepção com alta prioridade
rcon.ipen = 1 'Habilita vetores de alta e baixa prioridade familia 18F
intcon.gie = 1'Habilita alta prioridade das interrupções
intcon.giel = 1'Habilita as baixas prioridades de interrupção (não usa neste exemplo)
'Entradas analógicas
cmcon = cmcon or 7 'Config entradas analogicas (ou lógico)
adcon1 = %00001101 'Configura AN0 e AN1 e demais como IO
'Zera flag transmissão iniciada
trans_ini = 0
'Laço While infinito
While TRUE
Wend
end.