Ir ao conteúdo

PIC - Iniciando pelo basico atraves do BASIC


cavalodf

Posts recomendados

Postado

Alguem poderia me explicar realmente quais sÃo os passos para fazer o programa e gravar um pic 12f675, estou comeÇando agora e os arquivos encontrados nÃo estÃo muitos claros, tenho vÁrio programas que veio junto com o gravador que comprei, tipo mplab;icprog, mais estou confuso em que programa devo comeÇar e tambem nestes passos de arquivos .hex.

Se alguem puder me ajudar eu agradeÇo.

Postado
Alguem poderia me explicar realmente quais sÃo os passos para fazer o programa e gravar um pic 12f675, estou comeÇando agora e os arquivos encontrados nÃo estÃo muitos claros, tenho vÁrio programas que veio junto com o gravador que comprei, tipo mplab;icprog, mais estou confuso em que programa devo comeÇar e tambem nestes passos de arquivos .hex.

Se alguem puder me ajudar eu agradeÇo.

você já programou?

se sim configure o ICprog como o manual do gravador fala, e depois grave o .hex...

Postado

Pessoal, mudando um pouco (ou voltando?) de assunto, pro pessoal que disse ou acha que o C tem pouca documentação... Ao meu ver dá para aprender C completo na internet, só tem que saber procurar, e é claro que um livro ajuda pra caramba, como eu pretendo comprar o meu este mês.

Mas aqui, para quem quer uma ótima apostila de C, quando comecei a programar nem tinha estudado a lógica da programação e essa apostila me passava tudo de forma muito fácil, recomendo nota 10: http://www.scribd.com/doc/15122623/Apostila-de-C-da-UFMG

ou quem quiser me adiciona no msn ([email protected]) que eu passo ela.

  • mês depois...
Postado

Olá a todos os participantes do forum,sempre consegui

tirar todas as minhas dúvidas por este meio,

mas testa vez estou com um problema e gostaria de pedir

a ajuda dos mais experientes em mikrobasic.

Este codigo abaixo executa com precisão a conversão AD nos

canais selecionados, porém eu só consigo utilizar com o PIC16f887,

eu gostaria de usar o PIC16f877a , o qual eu já possuo.

Eu já tentei configurar mas sempre da erros com esse pic16f877a,

esse código é um voltimetro e amperimetro com um GLCD t6963,

eu já possuo o display e estou montando uma fonte simetrica ajustavel.

Só falta o voltimetro a parte de controle e potencia ja está ok.

Se alguem puder me ajudar a configurar para usar o Pic16F877A.

program T6963C_240x128

include __Lib_T6963C_Consts
include __Lib_T6963C
' T6963C module connections
dim T6963C_dataPort as byte at PORTD ' DATA port

dim T6963C_ctrlwr as sbit at RC2_bit ' WR write signal
dim T6963C_ctrlrd as sbit at RC1_bit ' RD read signal
dim T6963C_ctrlcd as sbit at RC0_bit ' CD command/data signal
dim T6963C_ctrlrst as sbit at RC4_bit ' RST reset signal
dim T6963C_ctrlwr_Direction as sbit at TRISC2_bit ' WR write signal direction
dim T6963C_ctrlrd_Direction as sbit at TRISC1_bit ' RD read signal direction
dim T6963C_ctrlcd_Direction as sbit at TRISC0_bit ' CD command/data signal direction
dim T6963C_ctrlrst_Direction as sbit at TRISC4_bit ' RST reset signal direction

' Signals not used by library, they are set in main sub function
dim T6963C_ctrlce as sbit at RC3_bit ' CE signal
dim T6963C_ctrlfs as sbit at RC6_bit ' FS signal
dim T6963C_ctrlmd as sbit at RC5_bit ' MD signal
dim T6963C_ctrlce_Direction as sbit at TRISC3_bit ' CE signal direction
dim T6963C_ctrlfs_Direction as sbit at TRISC6_bit ' FS signal direction
dim T6963C_ctrlmd_Direction as sbit at TRISC5_bit ' MD signal direction
' End T6963C module connections

dim panel as byte ' current panel
i as word ' general purpose register
curs as byte ' cursor visibility
cposx,
cposy as word ' cursor x-y position
txtcols as byte ' number of text coloms
valor1 as word
valor2 as word
valor3 as word
valor4 as word
valor1send as string[3]
valor2send as string[3]
valor3send as string[3]
valor4send as string[3]

main:
OPTION_REG = $80
ANSEL = 0
ANSELH = 0
C1ON_bit = 0 ' Disable comparators
C2ON_bit = 0
INTCON = %10000000
ADCON1 = 0 ' Set AN2 channel pin as analog
TRISA = $FF ' input
TRISB = 1
PORTB = 0
T6963C_ctrlce_Direction = 0
T6963C_ctrlce = 0 ' Enable T6963C
T6963C_ctrlfs_Direction = 0
T6963C_ctrlfs = 0 ' Font Select 8x8
T6963C_ctrlmd_Direction = 0
T6963C_ctrlmd = 0 ' Column number select

panel = 0
i = 0
curs = 0
cposx = 0
cposy = 0

T6963C_init(240, 128, 8)' Initialize T6369C

T6963C_graphics(1) ' * Enable both graphics and text display at the same time
T6963C_text(1)
' * Text messages
T6963C_write_text("VOLTS:",2 , 2, T6963C_ROM_MODE_XOR)
T6963C_write_text("VOLTS:", 22 , 2, T6963C_ROM_MODE_XOR)
T6963C_write_text("AMPERES:",1 , 10, T6963C_ROM_MODE_XOR)
T6963C_write_text("AMPERES:",21 , 10, T6963C_ROM_MODE_XOR)
' *
' * Cursor
' *
T6963C_cursor_height(8) ' 8 pixel height
T6963C_set_cursor(0, 0) ' Move cursor to top left
T6963C_cursor(0) ' Cursor off

' * Dezenho dos frames
T6963C_line(8, 8, 8 ,120, T6963C_WHITE)
T6963C_line(8, 8, 72 , 8, T6963C_WHITE)
T6963C_line(72, 8, 72 ,120, T6963C_WHITE)
T6963C_line(72,120, 8 ,120, T6963C_WHITE)

T6963C_line(168,8, 168,120, T6963C_WHITE)
T6963C_line(168,8, 232 ,8, T6963C_WHITE)
T6963C_line(232,8, 232,120, T6963C_WHITE)
T6963C_line(232,120, 168,120, T6963C_WHITE)

'T6963C_rectangle(75, 18, 165, 62, T6963C_Black)
'T6963C_box(10, 50, 71, 10, T6963C_WHITE)
'T6963C_box(10, 75, 71, 118, T6963C_WHITE)
'T6963C_box(170, 10, 231, 50, T6963C_WHITE)
'T6963C_box(170, 75, 231, 118, T6963C_WHITE)
'T6963C_box(77, 20, 164, 60, T6963C_WHITE)

T6963C_write_text("Voltimetro Digital",6 ,0, T6963C_ROM_MODE_XOR)

while true
Valor1 = (ADC_Read(0)/0.4) 'le volt porta 0 E TRASNFORMA 8 BYTE
WordToStr(Valor1 ,Valor1send)
T6963C_write_text(Valor1send, 1, 4, T6963C_ROM_MODE_XOR)
T6963C_write_text("+",2, 4, T6963C_ROM_MODE_XOR)

Valor2 =(ADC_Read(1)/4) 'le volt porta 1 E TRASNFORMA 8 BYTE
WordToStr(Valor2 ,Valor2send)
T6963C_write_text(Valor2send, 22, 4, T6963C_ROM_MODE_XOR)
T6963C_write_text("-", 22 , 4, T6963C_ROM_MODE_XOR)

Valor3 = (ADC_Read(2)/4) 'le volt porta 2 E TRASNFORMA 8 BYTE
WordToStr(Valor3 ,Valor3send)
T6963C_write_text(Valor3send, 1, 12, T6963C_ROM_MODE_XOR)
T6963C_write_text("+",2 , 12, T6963C_ROM_MODE_XOR)

Valor4 = ADC_Read(3) 'le volt porta 0 E TRASNFORMA 8 BYTE
WordToStr(Valor4 ,Valor4send)
T6963C_write_text(Valor4send, 22, 12, T6963C_ROM_MODE_XOR)
T6963C_write_text("-",22 , 12, T6963C_ROM_MODE_XOR)
wend
end.

  • mês depois...
Postado

Oi pessoal estou voltando, depois de uma sumida grande.

Estava envolvido num projeto comercial que já leva quase um ano.

Finalmente terminamos e vai ser lançado no próximo ano.

Estou a usar o novo programa basic "mikrobasic PRO" muito mais fácil

e com muito mais recursos (99% = ao micro C PRO, sem os { que pra mim é uma tremenda chatura...).

Só pra lembrar o fórum oficial da mikroe (em inglês) tem muita gente pra tirar

duvidas e grande parte deles são brasileiros.

Amigo julianoezequiel , seu compilador difere do meu e fica difícil

achar as mudanças necessárias, verifique os includes se são compatíveis com o novo PIC.

Abraços.

  • 3 meses depois...
Postado

sou novoa qui no etanto estou precisando de uma ajudinha dos amigos, meu nome é marcos, estou escrevendo o seguinte programa em basic.esse programa quando precionado o botao o led acende, quando solto o botao o led se apaga, gostaria de que quando eu precionasse tres botões, acionasse o led, quando eu soltasse o botao oled se apagaria, mais só acende quando precionado os tres botões juntos, por favor me ajude vja joguei a toalha. obrigado, meu e-mail é [email protected]

program led

symbol botao=portb,o

symbol led =portb,1

main:

cmcon=7

trisb=%00000001

if testbit(botao)=0 then

setbit(led)

else

clearbit(led)

end if

goto main

end.

Postado

Sim o que eu estou querendo dizer e que com tres botões precionados ao mesmo tempo asenda um led, quando solto apague o mesmo led, estou usando a linguagem basic, e um pic 16f628a, por favor, al guem do forum me ajude.

Postado

Isso é fácil, não vou te dar o cógido por que senão o conceito de aprendizado vai para o espaço, direi como podes fazer isso,

configure o seu PORTB com tres entradas primeiramente, e em seu loop principal faça a leitura do portb inteiro e nao botao por botao, lendo o portb verifique se os tres pinos que você pos como entrada encontram- se em '1' acenda o led somente se essa condição for verdadeira, caso contrario o led fica apagado.

esta é uma maneira elementar de se fazer é claro podendo ser melhorada!

abs.

Postado

fiz o seguinte:

program texte0

symbol led=portb,3

main:

cmcon=7

trisb=%00000111

if testbit(portb,1)=0 then

setbit(led)

else

clearbit(led)

goto main

end if

end.

passei o copilador nao deu erro, mais textei no proteus nao funcionou

Postado

Tenta assim:



main:
temp = portb
clearbit(temp,3)

if temp = %00000111 'verifica se os tres botões estão pressionados
setbit (led)
else
clearbit (led)
endif
goto main

end.

coloque os valores do trisb e do cmcon fora do main sempre!

veja se isso ajuda.

abs.

Postado

fiz O SEGUINTE:

program texte0

symbol led=portb,3

cmcon=7

trisb=%00000111

main:

temp = portb

clearbit(temp,3)

if temp = %00000111 'verifica se os tres botões estão pressionados

setbit (led)

else

clearbit (led)

end if

goto main

end.

MAIS porém DA SEGUINTE ERRO:

0 1 mBPic.exe -DBG -pP16F628A -MSF -Y -DL -O11111114 -fo4 -N"C:\Arquivos de programas\PIC\texte0.mbppi" -SP"C:\Arquivos de programas\Mikroelektronika\mikroBasic PRO for PIC\defs\" -SP"C:\Arquivos de programas\Mikroelektronika\mikroBasic PRO for PIC\Uses\P16\" -SP"C:\Arquivos de programas\PIC\" "__Lib_Math.mcl" "__Lib_MathDouble.mcl" "__Lib_System.mcl" "__Lib_Delays.mcl" "__Lib_CType.mcl" "__Lib_String.mcl" "__Lib_Conversions.mcl" "__Lib_Time.mcl" "__Lib_Trigon.mcl" "__Lib_Trigonometry.mcl" "__Lib_Button.mcl" "__Lib_Keypad4x4.mcl" "__Lib_Manchester.mcl" "__Lib_OneWire.mcl" "__Lib_PS2.mcl" "__Lib_Sound.mcl" "__Lib_SoftI2C.mcl" "__Lib_SoftSPI.mcl" "__Lib_SoftUART.mcl" "__Lib_EEPROM.mcl" "__Lib_PWM_b3.mcl" "__Lib_UART_b21.mcl" "__Lib_CF.mcl" "__Lib_GlcdFonts.mcl" "__Lib_Glcd.mcl" "__Lib_LcdConsts.mcl" "__Lib_Lcd.mcl" "__Lib_RS485.mcl" "__Lib_T6963C.mcl" "texte0.mbas"

0 154 Available RAM: 208 [bytes], Available ROM: 2048 [bytes]

0 132 Compilation Started C:\Arquivos de programas\PIC\texte0.mbas

1 1015 Hint: Compiling unit "C:\Arquivos de programas\PIC\texte0.mbas" texte0.mbas

6 303 Identifier "temp" was not declared texte0.mbas

6 303 Identifier "temp" was not declared texte0.mbas

6 304 Syntax error: Expected "end" but "temp" found texte0.mbas

6 304 Syntax error: Expected "." but "=" found texte0.mbas

0 102 Finished (with errors): 05 mar 2010, 09:51:14 texte0.mbppi

Postado

a gora apresentou o seguinte erro:

0 1 mBPic.exe -DBG -pP16F628A -MSF -Y -DL -O11111114 -fo4 -N"C:\Arquivos de programas\PIC\texte0.mbppi" -SP"C:\Arquivos de programas\Mikroelektronika\mikroBasic PRO for PIC\defs\" -SP"C:\Arquivos de programas\Mikroelektronika\mikroBasic PRO for PIC\Uses\P16\" -SP"C:\Arquivos de programas\PIC\" "__Lib_Math.mcl" "__Lib_MathDouble.mcl" "__Lib_System.mcl" "__Lib_Delays.mcl" "__Lib_CType.mcl" "__Lib_String.mcl" "__Lib_Conversions.mcl" "__Lib_Time.mcl" "__Lib_Trigon.mcl" "__Lib_Trigonometry.mcl" "__Lib_Button.mcl" "__Lib_Keypad4x4.mcl" "__Lib_Manchester.mcl" "__Lib_OneWire.mcl" "__Lib_PS2.mcl" "__Lib_Sound.mcl" "__Lib_SoftI2C.mcl" "__Lib_SoftSPI.mcl" "__Lib_SoftUART.mcl" "__Lib_EEPROM.mcl" "__Lib_PWM_b3.mcl" "__Lib_UART_b21.mcl" "__Lib_CF.mcl" "__Lib_GlcdFonts.mcl" "__Lib_Glcd.mcl" "__Lib_LcdConsts.mcl" "__Lib_Lcd.mcl" "__Lib_RS485.mcl" "__Lib_T6963C.mcl" "texte0.mbas"

0 154 Available RAM: 208 [bytes], Available ROM: 2048 [bytes]

0 132 Compilation Started C:\Arquivos de programas\PIC\texte0.mbas

1 1015 Hint: Compiling unit "C:\Arquivos de programas\PIC\texte0.mbas" texte0.mbas

4 337 Unknown type "a" texte0.mbas

4 301 "byte"is not valid identifier texte0.mbas

4 301 "byte"is not valid identifier texte0.mbas

4 304 Syntax error: Expected "end" but "byte" found texte0.mbas

5 304 Syntax error: Expected "." but "cmcon" found texte0.mbas

0 102 Finished (with errors): 05 mar 2010, 10:27:43 texte0.mbppi

Postado

apresentou o seguinte erro:

0 1 mBPic.exe -DBG -pP16F628A -MSF -Y -DL -O11111114 -fo4 -N"C:\Arquivos de programas\PIC\texte0.mbppi" -SP"C:\Arquivos de programas\Mikroelektronika\mikroBasic PRO for PIC\defs\" -SP"C:\Arquivos de programas\Mikroelektronika\mikroBasic PRO for PIC\Uses\P16\" -SP"C:\Arquivos de programas\PIC\" "__Lib_Math.mcl" "__Lib_MathDouble.mcl" "__Lib_System.mcl" "__Lib_Delays.mcl" "__Lib_CType.mcl" "__Lib_String.mcl" "__Lib_Conversions.mcl" "__Lib_Time.mcl" "__Lib_Trigon.mcl" "__Lib_Trigonometry.mcl" "__Lib_Button.mcl" "__Lib_Keypad4x4.mcl" "__Lib_Manchester.mcl" "__Lib_OneWire.mcl" "__Lib_PS2.mcl" "__Lib_Sound.mcl" "__Lib_SoftI2C.mcl" "__Lib_SoftSPI.mcl" "__Lib_SoftUART.mcl" "__Lib_EEPROM.mcl" "__Lib_PWM_b3.mcl" "__Lib_UART_b21.mcl" "__Lib_CF.mcl" "__Lib_GlcdFonts.mcl" "__Lib_Glcd.mcl" "__Lib_LcdConsts.mcl" "__Lib_Lcd.mcl" "__Lib_RS485.mcl" "__Lib_T6963C.mcl" "texte0.mbas"

0 154 Available RAM: 208 [bytes], Available ROM: 2048 [bytes]

0 132 Compilation Started C:\Arquivos de programas\PIC\texte0.mbas

1 1015 Hint: Compiling unit "C:\Arquivos de programas\PIC\texte0.mbas" texte0.mbas

12 304 Syntax error: Expected "then" but "setbit" found texte0.mbas

12 301 "("is not valid identifier texte0.mbas

12 304 Syntax error: Expected "else" but "(" found texte0.mbas

12 304 Syntax error: Expected "end" but "," found texte0.mbas

12 304 Syntax error: Expected "if" but "3" found texte0.mbas

12 304 Syntax error: Expected "end" but ")" found texte0.mbas

13 304 Syntax error: Expected "." but "else" found texte0.mbas

0 102 Finished (with errors): 05 mar 2010, 10:39:15 texte0.mbppi

Postado




program texte0
symbol led=portb,3
dim temp As byte


cmcon=7
trisb=%00000111
main:
cmcon=7
trisb=%00000111
main2:
temp = portb
clearbit(temp,3)

if temp = %00000111 then 'verifica se os tres botões estão pressionados
setbit (led)
else
clearbit (led)
end if
goto main2
End.

veja se agora funciona!

abs.

Postado

APRESENTOU O SEGUINTE ERR0:

0 1 mBPic.exe -DBG -pP16F628A -MSF -Y -DL -O11111114 -fo4 -N"C:\Arquivos de programas\PIC\texte0.mbppi" -SP"C:\Arquivos de programas\Mikroelektronika\mikroBasic PRO for PIC\defs\" -SP"C:\Arquivos de programas\Mikroelektronika\mikroBasic PRO for PIC\Uses\P16\" -SP"C:\Arquivos de programas\PIC\" "__Lib_Math.mcl" "__Lib_MathDouble.mcl" "__Lib_System.mcl" "__Lib_Delays.mcl" "__Lib_CType.mcl" "__Lib_String.mcl" "__Lib_Conversions.mcl" "__Lib_Time.mcl" "__Lib_Trigon.mcl" "__Lib_Trigonometry.mcl" "__Lib_Button.mcl" "__Lib_Keypad4x4.mcl" "__Lib_Manchester.mcl" "__Lib_OneWire.mcl" "__Lib_PS2.mcl" "__Lib_Sound.mcl" "__Lib_SoftI2C.mcl" "__Lib_SoftSPI.mcl" "__Lib_SoftUART.mcl" "__Lib_EEPROM.mcl" "__Lib_PWM_b3.mcl" "__Lib_UART_b21.mcl" "__Lib_CF.mcl" "__Lib_GlcdFonts.mcl" "__Lib_Glcd.mcl" "__Lib_LcdConsts.mcl" "__Lib_Lcd.mcl" "__Lib_RS485.mcl" "__Lib_T6963C.mcl" "texte0.mbas"

0 154 Available RAM: 208 [bytes], Available ROM: 2048 [bytes]

0 132 Compilation Started C:\Arquivos de programas\PIC\texte0.mbas

1 1015 Hint: Compiling unit "C:\Arquivos de programas\PIC\texte0.mbas" texte0.mbas

2 301 "program"is not valid identifier texte0.mbas

2 301 "program"is not valid identifier texte0.mbas

2 304 Syntax error: Expected "end" but "program" found texte0.mbas

2 304 Syntax error: Expected "." but "texte0" found texte0.mbas

0 102 Finished (with errors): 05 mar 2010, 11:20:37 texte0.mbppi

eu tambem estou tentando escrever o programa tambem, mais ainda nao consegui. vou almoçar agora, volto as 14:00 até lá.

amigo felipe__eletronic eu tambem continuo tentanto, só que até agora nada

ja estou em casa vou varar a noite estudando esse assunto, por favor não deiche de me ajudar, se por acaso tiver alguem tambem do forum que queira

nos ajudar tambem sou grato, estou por aqui a noite toda,beleza?

Postado

amigo filipe__eletronic bom dia.

cara fui dormir as tantas da madrugada, no etanto não evolui muito não,

mas consegui escrever esse códico:

program texte0

symbol botao0=portb,0

symbol botao1=portb,1

symbol led3=portb,3

main:

cmcon:7

trisb=%00000111

if testbit(botao0)=0 then

setbit(led3)

else

ift estbit(botao1)=0 then

setbit(led3)

else

end if

clearbit(led3)

end if

goto main

end.

mais tambem foi por agua abaicho, continuo tentando

poxa sumiu todo mundo, cade?vocês

Postado

caros amigos do forum meu bom dia a todos:

estou escrevendo um códico em basic com o microcontrolador pic 16f628a

o projeto é o seguinte:

nome: segurança para o altomovel.

como funciona?

1/.interruptor porta direita do motorista

2/.interuptor porta esquerda do carona

3/.alavanca de neutro(marchas)

caso esses tres estiverem mandando o mesmo sinal ou seja:

1/.porta direita do motorista fechada =1

2/.porta esquerda do carona fechada=1

3/.cambio em neutro=1

a/.partida do motor liberada. setbit(led)

essa é a logica do códico.

peço a ajuda do forum para me ajudar, pois sou iniciante nesse mundo maravilhoso da programção em basic. no etanto estou dando a partida

com o seguinte códico, pois esse só faz acender um led, e apaga-lo

mesmo assim foi tudo o que eu consegui.

program texte1

symbol led=portb,3

symbol botao=portb,0

main:

cmcon=7

trisb=%00000001

if testbit(botao)=0 then

setbit(led)

else

clearbit(led)

end if

goto main

end.

certo da conpreenção de todos, com alegria no coração de paricipar deste forum, com pessoas tão umildes, como eu peço help. obrigado.

Postado
estbit

não seria testbit? qual o erro que da?

O ultimo código que postou funcionou?Senão qual o erro que da (inflezmente minha praia é assembly, estou meio enferrujado em Basic) mas não posso deixar de ajudar pode ter certeza que lendo isso aqui:

http://forum.clubedohardware.com.br/microcontroladores-circuitos-linguagens/594329

Tem o super tutorial do mestre Paulo que ensina de modo pratico como funciona o basic (muitos ja leram e pegaram o jeito em poucas semanas).

E veja esse tópico o pessoal fera em basic está aqui:

http://forum.clubedohardware.com.br/tutorial-introducao-ao/692629

aqui o pessoal fera no basic vai te ajudar melhor do que eu.

Mas duvidas a respeito do microcontrolador e suas configurações pode perguntar que a gente resolve.

abs.

  • 3 meses depois...
Postado

aphawk amigo ve se pode me ajudar, estou postando esse codico:

program logica

symbol botao=portb,o

symbol botao1=portb,1

symbol led =portb,2

main:

cmcon=7

trisb=%00000011

if portb.0 and portb.1=0 then

setbit (portb,2)

else

clearbit(portb,2)

goto main

end if

end.

quero fazer o seguinte, somente quando eu apertar os dois botões juntos que o led acende, tem como?

ja joguei a toalha.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!