Manual PICBasic-PRO Portugues

  • Upload
    marciel

  • View
    82

  • Download
    3

Embed Size (px)

Citation preview

  • For i = 1 To 10Gosub nextcharSerout 0,N2400,[#Ccount = count * 2Next iDtmfout 1,[1,2,3,4]I2cread cont,addr,[idata]If PORTA.1 = 0 Then pbpressed * slip + count + 1 loop

    0

    100

    11

    PicBasic Pro Compiler

    microEngineering Labs, Inc.

  • Copyrights e Marcas Registradas

    Copyright 1999 microEngineering Labs, Inc.Todos os direitos reservados.

    EPIC e PicBasic Pro so marcas registradas da microEngineering Labs, Inc.BASIC Stamp marca registrada da Parallax, Inc.PICmicro marca registrada da Microchip Technology Inc.

    2/99

  • PicBasic Pro Compiler

    microEngineering Labs, Inc.

  • PicBasic Pro Compiler

    i

    CONTEDO

    1. Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1. Os PICmicros . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Sobre Este Manual . . . . . . . . . . . . . . . . . . . . . . . . 3

    2. I n i c i a n d o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1. Instalao do Software. . . . . . . . . . . . . . . . . . . . . . . 52.2. Seu Primeiro Programa. . . . . . . . . . . . . . . . . . . . . . . . 52.3. Programe Este PicMicro . . . . . . . . . . . . . . . . . . . . 72.4. Ele Vive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.5. Eu Tive Problemas . . . . . . . . . . . . . . . . . . . . . . . . 102.6. Estilos de Cdigo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2.6.1. Comentrios . . . . . . . . . . . . . . . . . . . . . . 112.6.2. Nomes de Pinos e Variveis . . . . . . . . . . . 122.6.3. Rtulos . . . . . . . . . . . . . . . . . . . . . . . . . 122.6.4. GOTO . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3. Opes de Linha de Comando. . . . . . . . . . . . . . . . . . . . . . . . . . . 153.1. Utilizao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2. Opes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    3.2.1. Opo -A . . . . . . . . . . . . . . . . . . . . . . . 163.2.2. Opo -C . . . . . . . . . . . . . . . . . . . . . . . 163.2.3. Opo -H ou -? . . . . . . . . . . . . . . . . . . 173.2.4. Opo -I . . . . . . . . . . . . . . . . . . . . . . . 173.2.5. Opo -L . . . . . . . . . . . . . . . . . . . . . . . 173.2.6. Opo -O . . . . . . . . . . . . . . . . . . . . . . 173.2.7. Opo -P . . . . . . . . . . . . . . . . . . . . . . . 183.2.8. Opo -S . . . . . . . . . . . . . . . . . . . . . . . 183.2.9. Opo -V . . . . . . . . . . . . . . . . . . . . . . . 18

    4. O Bsico do PicBasic Pro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.1. Identificadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.2. Rtulos de Linha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.3. Variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.4. Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.5. Conjuntos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.6. Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.7. Smbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.8. Constantes Numricas . . . . . . . . . . . . . . . . . . . . . . . 234.9. Constantes Alfanum. . . . . . . . . . . . . . . . . . . . . . . . . . 234.10. Pinos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.11. Comentrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

  • PicBasic Pro Compiler

    ii

    4.12. Linhas c/ Decl. Mltiplas . . . . . . . . . . . . . . . . . . . . 264.13. Caractere de Extenso de Linha. . . . . . . . . . . . . . . . . 264.14. INCLUDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.15. DEFINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.16. Op. Matemticos. . . . . . . . . . . . . . . . . . . . . . . . . 28

    4.16.1. Multiplicao . . . . . . . . . . . . . . . . . . . 304.16.2. Diviso . . . . . . . . . . . . . . . . . . . . . . . 304.16.3. Desl. . . . . . . . . . . . . . . . . . . . . . . . . . . 304.16.4. ABS . . . . . . . . . . . . . . . . . . . . . . . . . . 314.16.5. COS . . . . . . . . . . . . . . . . . . . . . . . . . 314.16.6. DCD . . . . . . . . . . . . . . . . . . . . . . . . . 314.16.7. DIG . . . . . . . . . . . . . . . . . . . . . . . . . . 314.16.8. MAX e MIN . . . . . . . . . . . . . . . . . . 314.16.9. NCD . . . . . . . . . . . . . . . . . . . . . . . . . 324.16.10. REV . . . . . . . . . . . . . . . . . . . . . . . . . 324.16.11. SIN . . . . . . . . . . . . . . . . . . . . . . . . . 324.16.12. SQR . . . . . . . . . . . . . . . . . . . . . . . . 324.16.13. Operadores a Bit . . . . . . . . . . . . . . 32

    4.17. Operadores de Comparao. . . . . . . . . . . . . . . . . . . 334.18. Operadores Lgicos. . . . . . . . . . . . . . . . . . . . . . . 33

    5. Referncia de Declaraes do PicBasic Pro. . . . . . . . . . . . . . . . . . 355.1. @ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.2. ASM..ENDASM . . . . . . . . . . . . . . . . . . . . . . . . . . 385.3. BRANCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.4. BRANCHL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.5. BUTTON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.6. CALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435.7. CLEAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445.8. COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455.9. DATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465.10. DEBUG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475.11. DISABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.12. DTMFOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.13. EEPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515.14. ENABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525.15. END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535.16. FOR..NEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545.17. FREQOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555.18. GOSUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565.19. GOTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575.20. HIGH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.21. HSERIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

  • PicBasic Pro Compiler

    iii

    5.22. HSEROUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615.23. I2CREAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.24. I2CWRITE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665.25. IF..THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.26. INPUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.27. {LET} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.28. LCDOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725.29. LOOKDOWN . . . . . . . . . . . . . . . . . . . . . . . . . . 755.30. LOOKDOWN2 . . . . . . . . . . . . . . . . . . . . . . . . . 765.31. LOOKUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775.32. LOOKUP2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785.33. LOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795.34. NAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805.35. ON INTERRUPT . . . . . . . . . . . . . . . . . . . . . . . . 815.36. OUTPUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.37. PAUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845.38. PAUSEUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.39. PEEK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.40. POKE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875.41. POT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885.42. PULSIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895.43. PULSOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905.44. PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915.45. RANDOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925.46. RCTIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935.47. READ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945.48. RESUME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955.49. RETURN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965.50. REVERSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975.51. SERIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985.52. SERIN2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005.53. SEROUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045.54. SEROUT2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075.55. SHIFTIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115.56. SHIFTOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125.57. SLEEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135.58. SOUND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145.59. STOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1155.60. SWAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1165.61. TOGGLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175.62. WHILE..WEND . . . . . . . . . . . . . . . . . . . . . . . . 1185.63. WRITE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195.64. XIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

  • PicBasic Pro Compiler

    iv

    5.65. XOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

    6. Estrutura de Um Programa Compilado . . . . . . . . . . . . . . . . . . . 1256.1. Cabealhos de Alvo Especfico . . . . . . . . 1256.2. Os Arq. de Bibliotecas. . . . . . . . . . . . . . . . . . . . . . . . 1256.3. Cdigo Gerado pelo PBP . . . . . . . . . . . . . . . . . . . . 1266.4. Estrutura do Arq. .ASM. . . . . . . . . . . . . . . . . . . . . . 126

    7. Outras Consideraes do PicBasic Pro . . . . . . . . . . . . . . . . . 1277.1. Quo Rpido Bastante Rpido?. . . . . . . . . . . . . . . . 1277.2. Ajustes de Configurao . . . . . . . . . . . . . . . . . . . 1297.3. Utiliz. da RAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297.4. Pal. Reservadas . . . . . . . . . . . . . . . . . . . . . . . . 1317.5. Vida Aps 2K . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

    8. Programao em Linguagem Assembly . . . . . . . . . . . . . . . . . 1338.1. Dois Assemblers - S/ Espera . . . . . . . . . . . . . 1338.2. Programando em Linguagem Assembly . . . . . . . 1348.3. Insero do Assembly Em-Linha . . . . . . . . . . . . . 1358.4. Outro Detalhe do Assembly . . . . . . . . . . . . . . . . . . 137

    9. Interrupes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1399.1. Interrupes em Geral . . . . . . . . . . . . . . . . . . . . . 1399.2. Interrupes em BASIC. . . . . . . . . . . . . . . . . . . . . . 1409.3. Interrupes em Assembler. . . . . . . . . . . . . . . . . . . 142

    10. Diferenas do PicBasic Pro / PicBasic / Stamp . . . . . . . . . 14710.1. Veloc. de Execuo . . . . . . . . . . . . . . . . . . . . . . . 14710.2. I/O Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14710.3. Instrues p/ Baixo Consumo. . . . . . . . . . . . . . . . . . 14810.4. Interface PC Faltante . . . . . . . . . . . . . . . . . . . . 14810.5. S/ Variveis Automticas . . . . . . . . . . . . . . . . . 14910.6. S/ Variveis do Tipo Nibble . . . . . . . . . . . . . . . . 14910.7. Op. Matemticos. . . . . . . . . . . . . . . . . . . . . . . . 14910.8. [ ] Versus ( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 15110.9. DATA, EEPROM, READ e WRITE . . . . . . . 15110.10. DEBUG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15110.11. GOSUB e RETURN . . . . . . . . . . . . . . . . . 15210.12. I2CREAD e I2CWRITE . . . . . . . . . . . . . . . 15210.13. IF..THEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15210.14. MAX e MIN . . . . . . . . . . . . . . . . . . . . . . . . 15210.15. SERIN e SEROUT . . . . . . . . . . . . . . . . . . 15310.16. SLEEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

  • PicBasic Pro Compiler

    v

    Apndice ASumrio do Conj. de Instrues do Microchip Assembly. . . 155

    Apndice BInformao Para Contato. . . . . . . . . . . . . . . . . . . . . . . . . 157

  • PicBasic Pro Compiler

    vi

  • PicBasic Pro Compiler

    1

    1. Introduo

    O PicBasic Pro Compiler (ou PBP) nossa linguagem de programaode prxima gerao que torna mais rpido e fcil para voc programaros poderosos microcontroladores PICmicro da Microchip Technology.A linguagem BASIC semelhante ao ingls mais fcil de ler e escrever que aa ardilosa linguagem Microchip Assembly.

    O PicBasic Pro Compiler "igual ao BASIC Stamp II" e tem a maioria das biblio-tecas e funes do BASIC Stamp I e II. Sendo ele um verdadeiro compilador,os programas rodam mais rpido e podem ser maiores do que em seusequivalentes Stamp.

    O PBP no to compatvel c/ os BASIC Stamps como nosso PicBasicCompiler original c/ o BS1. Foram tomadas decises que esperamosmelhorem a linguagem em geral. Uma delas foi adicionar umIF..THEN..ELSE..ENDIF real em vez de IF..THEN(GOTO) dosStamps. Estas diferenas sero detalhadas mais adiante neste manual.

    O PBP cria por padro arquivos que rodam em um PIC16F84-04/P de clock4Mhz. Apenas um mnimo de outras peas necessrio: 2 capacitores de 22pfp/ o cristal de 4Mhz, um resistor pull-up de 4.7K ligado ao pino /MCLR e umafonte apropriada de 5 volts. Vrios PICmicros que no o 16F84, bemcomo osciladores de freqncias diferentes de 4Mhz, podem ser usados c/ oPicBasic Pro Compiler.

    1.1. Os PICmicros

    O PicBasic Pro Compiler produz cdigo que pode ser programado emuma variedade de microcontroladores PICmicro tendo de 8 a 68 pinose vrias caractersticas em-chip incluindo conversores A/D, timers de hardwaree portas seriais.

    H alguns PICmicros que no iro funcionar c/ o PicBasic ProCompiler, notavelmente a srie PIC16C5x, incluindo o PIC16C54 e oPIC16C58. Estes PICmicros baseiam-se no antigo ncleo de 12 bits ao invsdo ncleo mais atual de 14 bits. O PicBasic Pro Compiler requer algumasdas caractersticas apenas disponveis com o ncleo de 14 bits, sendo a maisdestacada a pilha de 8 nveis.

    H vrios, vrios PICmicros, alguns compatveis em pinagem c/ a srie'5x, que podem ser usados com o PicBasic Pro Compiler. Atualmente, a

  • PicBasic Pro Compiler

    2

    lista inclui o PIC16C554, 556, 558, 61, 62(AB), 620(A), 621(A),622(A), 63(A), 64(A), 65(AB), 66, 67, 71, 710, 711, 715, 72(A), 73(AB),74(AB), 76, 77, 773, 774, 84, 923, 924, o PIC16F83, 84, 873, 874,876, 877, o PIC12C671 e 672 e o PIC14C000, c/ a Microchipadicionando mais a uma taxa rpida. Para substituio direta de um PIC16C54 ou58, o PIC16C554, 558, 620 e 622 trabalham bem c/ o compilador etm preos muito prximos.*

    Para projetos de uso geral em PICmicro utilizando o PicBasic ProCompiler, o PIC16F84 (ou PIC16C84 se o 'F84 no estiver disponvel) o PICmicro atual p/ se escolher. Este microcontrolador de 18 pinos usa tecnologiaflash (ou EEPROM) p/ permitir rpido apagamento e reprogramao p/uma rpida depurao. Com o clique do mouse no software deprogramao, o PIC16F84 pode ser instantaneamente apagado e ento re-programado por vrias e vrias vezes. Outros PICmicros nas sries 12C67x,16C55x, 16C6xx, 16C7xx e 16C9xx tanto podem ser programveis umanica vez (OTP) ou ter uma janela de quartzo no topo (JW) p/ permitirapagamento por exposio luz ultravioleta por vrios minutos.

    O PIC16F84 (e 'C84) contm tambm 64 bytes de memria de dadosque pode ser usada p/ armazenar dados de programa e outros parmetrosmesmo quando a fora estiver desligada. Esta rea de dados pode ser acessadasimplesmente usando-se os comandos READ e WRITE do PicBasicPro Compiler. (O cdigo estar sempre permanentemente guardado noespao de cdigo do PICmicro estando a fora ligada ou no.

    Usando-se o 'F84 p/ teste inicial de um programa, o processo de depurao poderser acelerado. Uma vez que as rotinas principais estejam operandosatisfatoriamente, um PICmicro c/ mais capacidades ou caractersticas expandidasdo compilador poder ser usado.

    Enquanto muitas caractersticas do PICmicro sero discutidas neste manual, p/total informao sobre o PICmicro necessrio obter-se as folhas de dados doPICmicro apropriadas ou o CD-ROM da Microchip Technology. Refira-seao Apndice B p/ informao de contato.

    *O preo de venda ditado pela Microchip Technology Inc. e seusdistribuidores.

  • PicBasic Pro Compiler

    3

    1.2. Sobre Este Manual

    Este manual no pode ser um tratado completo na linguagem BASIC. Eledescreve o conj. de instrues do PicBasic Pro e prov exemplos emcomo us-lo. Se voc no est familiarizado c/ programao BASIC, vocdeve adquirir um livro sobre o tema. Ou apenas mergulhe de cabea. O BASIC projetado p/ ser uma linguagem fcil de usar e h programas de exemploadicionais no disco que podem ajud-lo a comear.

    A prxima seo deste manual cobre a instalao do PicBasic ProCompiler e voc escrever seu primeiro programa. A seguir h uma seo quedescreve diferentes opes p/ compilar programas.

    A seguir, ser coberto o bsico de programao, seguido por uma seo de referncialistando cada comando do PicBasic Pro em detalhe. A seo de refernciamostra cada prottipo do comando, uma descrio do comando ealguns exemplos. As chaves, { }, indicam parmetros opcionais.

    O resto do manual prov informao p/ programadoresavanados - todo o funcionamento interno do compilador.

  • PicBasic Pro Compiler

    4

  • PicBasic Pro Compiler

    5

    2. I n i c i a n d o

    2.1. Instalao do Software

    Os arquivos do PicBasic Pro esto compactados em um arquivo auto-extravel nodisquete. Eles precisam ser descompactados antes do uso. Para descompactar osarquivos, crie um sub-diretrio no seu disco rgido chamado PBP ou outronome de sua escolha, digitando:

    md PBP

    no prompt do DOS. Mude p/ o diretrio:

    cd PBP

    Assumindo que o disquete de distribuio est no drive a:, descompacte osarquivos no diretrio PBP:

    a:\pbpxxx -d

    No esquea da opo -d ao final do comando. Isto assegura que ossub-diretrios apropriados dentro de PBP sejam criados.

    Certifique-se de que FILES e BUFFERS estejam ajustados p/ ao menos 50 noseu arquivo CONFIG.SYS. Dependendo de quantos FILES e BUFFERS jestiverem em uso pelo seu sistema, poder ser necessrio alocar um nme-ro maior.

    2.2. Seu Primeiro Programa

    Para a operao do PicBasic Pro Compiler voc precisar de um editor de texto ouprocessador de texto p/ a criao do arquivo fonte do seu programa, algum tipode programador de PICmicro como o nosso EPIC Plus Pocket PICmicroProgrammer, e o PicBasic Pro Compiler propriamente dito. Claro que voctambm precisar de um PC p/ rodar tudo isso.

    A seqncia de eventos mais ou menos a seguinte:

    Primeiro crie o arq. fonte em BASIC p/ o programa usando o seu editor de textoou processador de texto favorito. Se voc no tem um favorito, o EDIT do DOS(incluso no MS-DOS) ou o NOTEPAD do Windows (incluso no Windows

  • PicBasic Pro Compiler

    6

    e Windows 95/98) podem substituir. O nome do arq. fonte deve termi-nar c/ (mas no requerido) a extenso .BAS.

    O arquivo texto criado precisa ser texto ASCII puro. Ele no pode conter quais-quer cdigos especiais que possam ser inseridos por processadores de texto p/seus propsitos. Normalmente lhe dada a opo de salvar o arquivo comoDOS puro ou texto ASCII pela maioria dos processadores.

    O seguinte programa prov um bom teste inicial de um PICmicro no mundoreal. Voc pode digit-lo ou simplesmente peg-lo do sub-diretrioSAMPLES incluso no disquete de distribuio do PicBasicPro Compiler. O nome do arq. BLINK.BAS. O arq. fonte BASICdeve ser criado ou movido p/ o mesmo diretrio onde o arquivoPBP.EXE estiver.

    ' Programa exemplo p/ piscar um LED ligado ao PORTB.0 aprox.uma vez por segundo

    loop: High PORTB.0 Liga o LEDPause 500 Atraso de .5 segundos

    Low PORTB.0 Desliga o LEDPause 500 Atraso de .5 segundos

    Goto loop Voltar ao loop e piscaro LED indefinidamente

    End

    Uma vez satisfeito que o programa que voc escreveu funcionar s/falhas, voc pode executar o PicBasic Pro Compiler entrando PBPseguido pelo nome do seu arquivo texto no prompt do DOS. Por exemplo, seo arquivo texto que voc criou chama-se BLINK.BAS, no prompt de comandodo DOS entre:

    PBP blink

    O compilador ir mostrar uma mensagem de inicializao (copyright) eprocessar seu arq. Se ele gostar do seu arq., ele ir criar um arq. de cd. fonteassembler (nesse caso chamado BLINK.ASM) e automaticamente invocar seumontador p/ completar a tarefa. Se tudo correr bem, o arq. final de cdigodo PICmicro ser criado (nesse caso, BLINK.HEX). Se voc tiver deixado ocompilador infeliz, ele enviar uma srie de erros que precisaro sercorrigidos no seu arq. fonte BASIC antes de voc tentar compilar novamente.

  • PicBasic Pro Compiler

    7

    P/ ajudar a ter certeza de que seu arq. original no tem erros, melhor comearescrevendo e testando um pequeno pedao de seu programa, ao invs de escreverum bloco inteiro de 100.000 linhas de uma s vez e ento tentar depur-lo de pontaa ponta.

    Se voc no especificar de outra maneira, o PicBasic Pro Compiler ircriar cdigo p/ o PIC16F84 por padro. Para compilar cdigos p/ PICmicros queno o 'F84, simplesmente use a opo de linha de comando -p descrita maistarde no manual p/ especificar um processador alvo diferente. Por exemplo, se vocpretende rodar o programa acima, BLINK.BAS, em um PIC16C74, compile-o usando o comando:

    PBP -p16c74 blink

    2.3. Programe Este PicMicro

    H ainda duas etapas a fazer - colocar seu programa compilado nomicrocontrolador PICmicro e test-lo.

    O PicBasic Pro Compiler gera arquivos padro de 8 bits Merged Intel HEX(.HEX) que podem ser usados c/ qualquer programador PICmicro incluindonosso EPIC Plus Pocket PICmicro Programmer. Os PICmicros no podem serprogramados c/ cabos de programao do BASIC Stamp.

    O seguinte um exemplo de como um PICmicro pode ser programado usandonosso EPIC Programmer c/ o software de programao DOS. Se oWindows95/98/NT estiver disponvel, recomendado usar a verso Win-dows do EPIC.

    Certifique-se de que no haja PICmicros instalados no soquete de programaodo EPIC Programmer ou quaisquer adaptadores.

    Conecte o EPIC Programmer porta de impressora paralela do PC usando umcabo de extenso DB25 macho p/ DB25 fmea.

    Plugue o adaptador CA na parede e ento no EPIC Programmer(ou encaixe 2 baterias novas de 9 volts no programador e conecte ojumper Batt ON).

    O LED no EPIC Programmer poder estar aceso ou no neste ponto. Noinsira um PICmicro no soquete de programao quando o LED estiver acesoou antes do software de programao ter sido iniciado.

  • PicBasic Pro Compiler

    8

    Entre:

    EPIC

    no prompt de comando do DOS p/ iniciar o software de programao. Osoftware EPIC deve ser rodado de uma sesso DOS pura ou de uma seode tela cheia do DOS sob Windows ou OS/2. (Desencorajamosrodar sob Windows. O Windows (todas as variantes) altera o tempo do sis-tema e brinca c/ a porta quando voc no est olhando, o que pode causarerros de programao).

    O software EPIC ir dar uma olhada ao redor p/ encontrar onde o EPICProgrammer est ligado e prepar-lo p/ programar um PICmicro. Se o EPICProgrammer no for encontrado, cheque todas as conexes acima e veri-fique que no haja nenhum PICmicro ou adaptador conectado aoprogramador. Digitando:

    EPIC /?

    no prompt de comando do DOS ir mostrar uma lista de opes disponveisp/ o software EPIC.

    Uma vez que a tel de programao mostrada, use o mouse p/ clicar emOpen file ou pressione Alt-O no seu teclado. Use o mouse (outeclado) p/ selecionar BLINK.HEX ou qualquer outro arq. que voc quiserprogramar no PICmicro a partir da caixa de dilogo.

    O arquivo ir carregar e voc dever ver uma lista de nmeros na janela es-querda. Este seu programa em cdigo PICmicro. direita da tela hum mostrador da informao de configurao que ir serprogramada no PICmicro. Verifique que isto esteja correto antes deprosseguir.

    Em geral, o Oscillator dever ser ajustado p/ XT p/ um cristal de 4Mhz e oWatchdog Timer dever ser ajustado p/ ON p/ programas PicBasic Pro. Maisimportante, Code Protect dever estar em OFF quando for programarqualquer PICmicro c/ janela (JW). Voc no conseguir apagar um PICmicroc/ janela qu tenha sido protegido contra cpia.

    Quando tudo parecer maravilhoso, hora de inserir um PICmicro no soquetede programao e clicar em Program ou pressionar Alt-P noteclado. O PICmicro ser primeiramente checado p/ ter certeza que est apagadoe ento seu cdigo ser programado nele. Se o PICmicro no estiver

  • PicBasic Pro Compiler

    9

    LED

    470

    +5V +5V

    22pf 22pf

    4Mhz4.7K

    .1ufPIC16F84

    1

    MCLR

    Vss

    OSC1

    OSC2

    Vdd

    4

    5 14

    15

    16

    17

    18

    RA0

    RA1RA2

    RA3

    RA4

    RB0

    RB1

    RB2

    RB3 RB4

    RB5

    RB6

    RB7

    2

    3

    6

    7

    8

    9 10

    11

    12

    13

    apagado e for um 16F84 ou 16C84, voc pode simplesmente escolher progra-mar por cima s/ apagar antes.

    Uma vez que a programao esteja completa e o LED esteja apagado, horade testar seu programa.

    2.4. Ele Vive

    O esquema de amostra abaixo lhe d uma idia do pouco que precisaser ligado ao PICmicro p/ faz-lo funcionar. Basicamente tudo que vocprecisa um resistor de pull-up na linha /MCLR, um cristal de 4Mhz c/ 2capacitores, e algum tipo de fonte de alimentao de 5 volts. Ns acrescen-tamos um LED e um resistor p/ prover a sada p/ o programa BLINK.

    Monte e cheque duplamente este simples circuito em um breadboard e encaixeo PICmicro que voc acabou de programar. Nossa linha PICProto de placas deprototipagem perfeita p/ este tipo de coisa.

    Conecte uma fonte de alimentao. Seu PICmicro dever ganhar vida e comeara piscar o LED cerca de uma vez por segundo. Se ele no piscar, cheque todasas conexes e certifique-se de que os 5 volts esto presentes nos pinos apropri-ados no PICmicro.

    Partindo destas simples iniciaes, voc poder criar sua prpria apli-cao que conquistar o mundo.

  • PicBasic Pro Compiler

    10

    2.5. Eu Tive Problemas

    Os problemas mais comuns em fazer rodar os PICmicros envolvem tercerteza de que os poucos componentes externos so de valor apropriado eesto corretamente ligados ao PICmicro. A seguir esto algumas sugestesp/ ajudar a conseguir que as coisas funcionem.

    Certifique-se de que o pino /MCLR esteja ligado aos 5 volts atravs de algum tipode circuito de reset protegido contra tenso ou simplesmente c/ um resistor de 4,7K.Se voc deixar o pino s/ ligao, seu nvel flutuar e algumas vezes oPICmicro funcionar mas normalmente no. O PICmicro tem um circuito depower-on-reset em-chip assim em geral apenas um resistor de pull-up externo adequado. Mas em alguns casos o PICmicro poder no se ligar cor-retamente e um circuito externo poder ser necessrio. Veja os PICmicrodata books da Microchip p/ mais informaes.

    Esteja certo de que voc tem um bom cristal c/ capacitores de valores corretosligados a ele. Valores de capacitores podem ser difceis de ler. Se os valores esti-verem muito fora, o oscilador no partir e rodar corretamente. Um cristalde 4MHz c/ 2 capacitores de disco cermico de 22pf (picofarads) um bom comeo p/a maioria dos PICmicros. Mais uma vez, confirme nos data books da Micro-chip p/ detalhes adicionais no assunto.

    Certifique-se de que sua fonte de alim. apta p/ a tarefa. Enquanto que oPICmicro consome muito pouca potncia, a fonte deve ser bastante bem fil-trada. Se o PICmicro est controlando dispositivos que puxam muita corrente dasua fonte, medida em que se ligam e desligam eles podem pr rudo sufi-ciente nas linhas de alimentao p/ fazer o PICmicro parar de funcionarcorretamente. At mesmo um mostrador a LED pode criar dreno instantneo sufi-ciente p/ derrubar momentneamente uma fonte pequena (como uma bateria de9 volts) e fazer o PICmicro perder a cabea.

    Cheque as folhas de dados do PICmicro. Alguns dispositivos tm caractersticas quepodem interferir c/ operaes de pinos esperadas. As peas PIC16C62x (os16C620, 621 e 622) so um bom exemplo disto. Estes PICmicros tmcomparadores analgicos no PORTA. Quando estes chips iniciam-se,PORTA ajustado p/ o modo analgico. Isto faz c/ que as funes dos pinos no PORTAtrabalhem numa maneira inesperada. Para mudar os pinos p/ digital, simplesmenteadicione a linha:

    CMCON = 7

  • PicBasic Pro Compiler

    11

    prximo do incio do seu programa. Qualquer PICmicro c/ entradas analgicas,tal como os da srie PIC16C7xx ir ligar-se em modo analgico. Vocdeve fix-las p/ digital se assim que voc pretende us-las:

    ADCON1 = 7

    Um outro exemplo de desastre em potencial que o pino 4 de PORTA, mostraum comportamento incomum quando usado como sada. Isto porque o pino temuma sada em coletor aberto ao invs do habitual estgio bipolar do resto dospinos de sada. Isto significa que ele pode ser puxado ao terra quando fixado em 0, mas simplesmente flutuar quando fixado em 1, ao invs de ir p/ nvel alto. P/ fazer estepino agir da maneira esperada, adicione um resistor pull-up entre o pino e os5 volts. O valor do resistor poder estar entre 1K e 33K,dependendo da excitao necessria p/ a entrada conectada. Este pino agecomo qualquer outro pino quando usado como entrada.

    Todos os pinos do PICmicro esto fixados como entradas ao ligar-se. Se voc precisaque um pino seja uma sada, fixe-o como sada antes de us-lo, ou use um comandodo PicBasic Pro que o faa p/ voc. Mais uma vez, revise as folhas de dadosdo PICmicro p/ familiarizar-se c/ as idiossincrasias de uma pea espec-fica.

    Comece pequeno. Escreva programas curtos p/ testar caractersticas c/ as quais vocesteja incerto ou tendo problemas. Uma vez que estes programas menores estejamfuncionando corretamente, voc poder trabalh-los mais.

    Tente fazer as coisas de outra maneira. s vezes o que voc est tentando fazerparece que deveria funcionar mas no o faz, no importa o quanto voc batanele. Normalmente h mais de uma maneira de se descascar um programa. Tenteabordar o problema de um ngulo diferente e talvez istoresulte num esclarecimento.

    2.6. Estilos de Cdigo

    Escrever programas legveis e preservveis uma arte. H algumastcnicas simples que voc pode seguir que podem ajud-lo a tornar-se um artista.

    2.6.1. Comentrios

    Use muitos comentrios. Mesmo que seja perfeitamente bvio p/ voc o que ocdigo est fazendo medida que voc o escreve, outra pessoa que esteja olhandop/ o programa (ou mesmo voc quando tornar-se outra pessoa mais tarde na vida) pode

  • PicBasic Pro Compiler

    12

    no ter qualquer idia do que voc estava tentando conseguir. Enquanto que oscomentrios tomam espao no seu arq. fonte BASIC, eles no tomam nenhumespao adicional no PICmicro portanto use-os livremente.

    Faa os comentrios dizerem-lhe algo til sobre o que o programa estfazendo. Um comentrio do tipo "Fixa o Pin0 em 1" somente explica a sintaxe dalinguagem mas no faz nada p/ dizer-lhe por qu voc tem a necessidade de fazeristo. Algo do tipo "Liga o LED de Bateria Fraca" pode ser muito maist i l .

    Um bloco de comentrios no incio do programa e antes de cada seode cdigo pode descrever o que est para acontecer em mais detalhesdo que s o espao restante aps cada declarao. Mas no inclua um blocode comentrios ao invs de comentros de linha individuais - use ambos.

    No comeo do programa descreva o que o programa pretende fazer,quem o escreveu e quando. Pode tambm ser til listar informaode reviso e datas. Especificar a que cada pino est ligado pode ser deajuda p/ se lembrar em qual hardware este programa foi projetadop/ rodar. Se for pretendido que ele rode c/ um cristal fora de padro ouopes especiais do compilador, esteja certo de list-las.

    2.6.2. Nomes de Pinos e Variveis

    Faa do nome de um pino ou varivel algo mais coerente do que Pino0ou B1. Em acrscimo ao uso liberal de comentrios, nomes descritivos de pinose variveis podem melhorar grandemente a legibilidade. O seguinte fragmentode cdigo demonstra:

    BatLED var PORTB.0 LED de bateria fracanivel var byte A varivel ir conter o

    nvel da bateria

    If nivel < 10 Then Se o nvel estiver baixoHigh BatLED Acenda o LED

    Endif

    2.6.3. Rtulos

    Rtulos tambm devem ser mais significativos do que "rotulo1:" ou "aqui:". At mesmoum rtulo como "loop:" mais descritivo (embora apenas levemente). Normal- mente a linha ou rotina p/ a qual voc est pulando far algo nico. Tente e d

  • PicBasic Pro Compiler

    13

    pelo menos uma pista de sua funo c/ o rtulo, ento prossiga c/ umcomentrio.

    2.6.4. GOTO

    Finalmente, tente no usar muitos GOTOS. Enquanto GOTOS podem ser ummal necessrio, tente minimizar seu uso o mximo possvel. Tente escreverseu cdigo em sees lgicas e no ficar pulando muito por a.GOSUBS podem ajud-lo a conseguir isto.

  • PicBasic Pro Compiler

    14

  • PicBasic Pro Compiler

    15

    3. Opes de Linha de Comando

    3.1. Utilizao

    O PicBasic Pro Compiler pode ser invocado a partir da linha de comando do DOSusando o seguinte formato de comando:

    PBP Opes Nome_de_Arquivo

    Zero ou mais Opes podem ser usadas p/ modificar a maneira na qual o PBPcompila o arq. especificado. Opes comeam c/ um sinal de menos ( - ) ou umabarra normal (/). O caractere seguinte ao sinal de menos ou barra uma letraque seleciona a Opo. Caracteres adicionais podero vir a seguir se aOpo requerer mais informao. Cada Opo deve ser separada por por um espao, embora nenhum espao poder ocorrer de dentro de uma Opo.

    Mltiplas Opes podem ser usadas ao mesmo tempo. Por exemplo, a linhade comando:

    PBP -p16c71 -ampasm blink

    ir fazer c/ que o arq. BLINK.BAS seja compilado usando MPASM comomontador e direcionado p/ um processador PIC16C71.

    O primeiro tem a no iniciar-se c/ um sinal de menos assumido como Nome_de_Arquivo.Se nenhuma extenso especificada a extenso padro .BAS usada. Se for espe-cificado um caminho, o arq. denominado procurado naquele diretrio. Independente-mente de onde o arq. fonte encontrado, os arq. gerados pelo PBP so colocadosno diretrio atual.

    Por padro, o PBP lana automaticamente o montador (PM.EXE) se a compi-lao executada s/ erro. O PBP espera encontrar PM.EXE nomesmo diretrio que PBP.EXE. Se a compilao tem erros ou a opo -s usada, o montador no lanado.

    Se o PBP invocado s/ parmetros ou nome de arquivo, uma breve tela de ajuda mostrada.

  • PicBasic Pro Compiler

    16

    3.2. Options

    Opo Descrio

    A Usa um Montador diferente

    C Insere linhas de fonte como Comentrios no arq. montador

    H(?) Mostra tela de Ajuda

    I Usa um caminho de Incluso diferente

    L Usa um arq. de Biblioteca diferente

    O Passa Opo p/ montador

    P Especifica Processador alvo

    S Pula execuo do montador quando terminado

    V Modo Verboso

    3.2.1. Opo -A

    O PBP tem a capacidade de usar tanto o PM, que includo c/ o PBP, como oMPASM da Microchip e seu montador. Para especificar o MPASM (que deveser adquirido da Microchip), use -ampasm na linha de comando:

    PBP -ampasm nome_de_arquivo

    Se nenhum montador especificado na linha de comando, o PM usado. Veja a seo sobre programao em linguagem assembly p/ mais informao.

    3.2.2. Opo -C

    A opo -C faz c/ que o PBP insira linhas do arq. fonte PicBasic Pro comocomentrios no arq. fonte em linguagem assembly. Isto pode ser til comoferramenta de depurao ou aprendizado j que ela mostra a instruodo PicBasic Pro seguida pelas instrues em linguagem assembly que ela gera.

    PBP -c nome_de_arquivo

  • PicBasic Pro Compiler

    17

    3.2.3. Opto -H ou -?

    A opo -H ou -? faz c/ que o PBP mostre uma breve tela de ajuda. Estatela de ajuda tambm mostrada se nenhuma opo e nome de arq. so espe-cificados na linha de comando.

    3.2.4. Opo -I

    A opo -I lhe permite selecionar o caminho de incluso p/ arq. usados peloPicBasic Pro.

    3.2.5. Opo -L

    A opo -L lhe permite selecionar a biblioteca usada pelo PicBasic Pro. Estaopo geralmente desnecessria j que o arq. de biblioteca padro est fixado emum arq. de configurao p/ cada microcontrolador. Para mais informao sobreas bibliotecas do PicBasic Pro, veja as sees avanadas mais tarde neste manual.

    PBP -lpbpps2 nome_de_arquivo

    Este exemplo diz ao PBP p/ compilar nome_de_arquivo usando a bibl. PicStic2.

    3.2.6. Opo -O

    A opo -O faz c/ que as letras que se seguem sejam passadas aomontador em sua linha de comando como opes. Algumas opes pertinentes ao PMesto listadas na seguinte tabela:

    Opo PM Descrio

    OD Gera Listagem, Tabela Simblica e Arq. de Mapa

    OL Gera apenas Listagem

    PBP -ol nome_de_arquivo

    Este exemplo diz ao PBP p/ gerar um nome_de_arquivo.1st aps umacompilao bem-sucedida.

    Mais de uma opo -O pode ser passada ao montador de uma vez.

  • PicBasic Pro Compiler

    18

    O PICmicro Macro Assembler's manual em disco contm maisinformao sobre o montador e suas opes.

    3.2.7. Opo -P

    Se no for dito de outra maneira, o PBP compila programas p/ o PIC16F84. Se oprograma requer um processador diferente p/ seu alvo, seu nome deve serespecificado na linha de comando usando a opo -P.

    Por exemplo, se o processador alvo desejado p/ o programa PBP umPIC16C74, a linha de comando dever parecer algo como o seguinte:

    PBP -p16c74 nome_de_arquivo

    3.2.8. Opo -S

    Normalmente, quando o PBP compila um programa c/ sucesso, ele lanaautomaticamente o montador. Isto feito p/ converter a sada do montadordo PBP p/ uma imagem executvel. A opo -S previne isso, deixando asada do PBP no arquivo .ASM gerado.

    J que -S previne o montador de ser invocado, as opes que sosimplesmente passadas ao montador usando a opo -O so efetivamenteanuladas.

    PBP -s nome_de_arquivo

    3.2.9. Opo -V

    A opo -V liga o modo verboso do PBP o qual apresenta maisinformao durante a compilao do programa.

    PBP -v nome_de_arquivo

  • PicBasic Pro Compiler

    19

    4. O Bsico do PicBasic Pro

    4.1. Identificadores

    Um identificador , bem simplesmente, um nome. Identificadores so usados no PBP p/rtulos e nomes de variveis. Um identificador qualquer seqncia de letras,dgitos e sublinhas, embora ele no deva comear c/ um dgito. Identificadoresno so sensveis a caixa, assim rtulo, RTULO e Rtulo so todos tratados comoequivalentes. E enquanto rtulos podem ter qualquer nmero de caracteres decomprimento, o PBP reconhece apenas os primeiros 32.

    4.2. Rtulos de Linha

    De forma a marcar declaraes que o programa pode desejar referenciarc/ os comandos GOTO ou GOSUB, o PBP usa rtulos de linha. Ao contrrio de muitosBASICs antigos, o PBP no permite nmeros de linha e no requer que cadalinha seja rotulada. Ao invs disso, qualquer linha do PBP pode comear c/ um rtulo de linha,que simplesmente um identificador seguido por dois pontos (:).

    aqui: Serout 0,N2400,["Olah, Mundo!",13,10]Goto aqui

    4.3. Variveis

    Variveis so onde dados temporrios so guardados num programa do PicBasic Pro.Elas so criadas usando a palavra-chave VAR. Variveis podem ser bits, bytes oupalavras. O espao p/ cada varivel alocado automaticamente naRAM do microcontrolador pelo PBP. O formato p/ se criar uma varivel oseguinte:

    Rtulo VAR Tamanho{.Modificadores}

    Rtulo qualquer identificador, excluindo palavras-chave, como descrito acima. Tamanho BIT, BYTE ou WORD. Modificadores opcionais adicionam maior controle sobrecomo a varivel criada. Alguns exemplos de criao de varivel so:

    cao var bytegato var bitw0 var word

    No h variveis de usurio predefinidas no PicBasic Pro. Para o bemda compatibilidade, foram providos dois arquivos que criam as variveis

  • PicBasic Pro Compiler

    20

    padro usadas c/ os BASIC Stamps: bs1defs.bas ebs2defs.bas. Para usar um destes arquivos, adicione a linha:

    Include bs1defs.basou

    Include bs2defs.bas

    prximo ao topo do programa do PicBasic Pro. Estes arq. contm numerosasdeclaraes VAR que criam todas as variveis do BASIC Stamp e definiesde pinagem.

    Entretanto, ao invs de usar estes arquivos "enlatados", ns recomendamos quevoc crie suas prprias variveis usando nomes que tenham significado p/ voc.

    O nmero de variveis disponvel depende da quantidade de RAM em umdispositivo em particular e o tamanho das variveis e conjuntos. O PBP reservaaproximadamente 24 posies da RAM p/ seu prprio uso. Ele pode tambm criarvariveis temporrias adicionais p/ uso na ordenao de equaes complexas.

    4.4. Aliases

    VAR pode tambm ser usado p/ criar um alias (um outro nome) p/ uma varivel.Isto mais til p/ acessar-se as vsceras de uma varivel.

    fido var cao fido eh um outro nomep/ cao

    b0 var w0.byte0 b0 eh o primeiro byteda palavra w0

    b1 var w0.byte1 b1 eh o segundo byteda palavra w0

    pulga var cao.0 pulga eh o bit0 de cao

  • PicBasic Pro Compiler

    21

    Modificador Descrio

    BIT0 ou 0 Cria alias p/ o bit 0 do byte ou palavra

    BIT1 ou 1 Cria alias p/ o bit 1 do byte ou palavra

    BIT2 ou 2 Cria alias p/ o bit 2 do byte ou palavra

    BIT3 ou 3 Cria alias p/ o bit 3 do byte ou palavra

    BIT4 ou 4 Cria alias p/ o bit 4 do byte ou palavra

    BIT5 ou 5 Cria alias p/ o bit 5 do byte ou palavra

    BIT6 ou 6 Cria alias p/ o bit 6 do byte ou palavra

    BIT7 ou 7 Cria alias p/ o bit 7 do byte ou palavra

    BIT8 ou 8 Cria alias p/ o bit 8 da palavra

    BIT9 ou 9 Cria alias p/ o bit 9 da palavra

    BIT10 ou 10 Cria alias p/ o bit 10 da palavra

    BIT11 ou 11 Cria alias p/ o bit 11 da palavra

    BIT12 ou 12 Cria alias p/ o bit 12 da palavra

    BIT13 ou 13 Cria alias p/ o bit 13 da palavra

    BIT14 ou 14 Cria alias p/ o bit 14 da palavra

    BIT15 ou 15 Cria alias p/ o bit 15 da palavra

    BYTE0 ou LOWBYTE Cria alias p/ o bit inferior da palavra

    BYTE1 ou HIGHBYTE Cria alias p/ o bit superior da palavra

    4.5. Conjuntos

    Conjuntos de variveis podem ser criados de maneira similar s variveis.

    Rotulo VAR Tamanho(Numero de elementos)

    Rotulo qualquer identificador, excluindo palavras-chave, como descrito acima. Tamanho BIT, BYTE ou WORD. Numero de elementos so quantas posies dedo conjunto se deseja. Alguns exemplos de criao de conjuntos so:

    tubaroes var byte[10]peixe var bit[8]

  • PicBasic Pro Compiler

    22

    A primeira posio do conjunto o elemento 0. No conjunto peixe definido acima,os elementos so numerados peixe[0] a peixe[7] rendendo 8 elementosno total.

    Por causa da maneira c/ que os conjuntos so alocados na memria, h limites de tama-nho p/ cada tipo:

    Tam. Nmero Mximo de elementos

    BIT 128

    BYTE 64

    WORD 32

    Veja a seo sobre alocao de memria p/ mais informao.

    4.6. Constantes

    Constantes nomeadas podem ser criadas numa maneira similar s variveis.Pode ser mais conveniente usar um nome de constante ao invs de um nmerode constante. Se o nmero precisa ser trocado, ele pode ser trocado em apenasum lugar no programa; onde a constante definida. Dados de variveis nopodem ser guardados em uma constante.

    Rotulo CON Expressao constante

    Alguns exemplos de constantes so:

    ratos con 3ratoeiras con ratos * 1000

    4.7. Smbolos

    SYMBOL prov ainda um outro mtodo p/ se dar aliases a variveis econstantes. SYMBOL no pode ser usado p/ criar uma varivel. Use VAR p/criar uma varivel.

    SYMBOL leao = gato gato foi criado anteriormenteusando VAR

    SYMBOL rato = 1 O mesmo que rato con 1

  • PicBasic Pro Compiler

    23

    4.8. Constantes Numricas

    O PBP permite que constantes numricas sejam definidas nas trs bases: decimal,binria e hexadecimal. Valores binrios so definidos usando o prefixo '%'e valores hexadecimais usando o prefixo '$'. Valores decimais so opadro e no requerem prefixo.

    100 Valor decimal 100%100 Valor binario p/ o decimal 4$100 Valor hexadecimal p/ o decimal 256

    Para facilidade de programao, caracteres nicos so convertidos p/ seus equi-valentes ASCII. Constantes de caractere devem ser quoteadas usando aspase devem conter apenas um caractere (de outra forma, elas so cons-tantes alfanumricas).

    "A" Valor ASCII p/ o decimal 65"d" Valor ASCII p/ o decimal 100

    4.9. Constantes Alfanumricas

    O PBP no prov capacidades de manuseio de sries de caracteres, mas elas podemser usadas c/ alguns comandos. Uma srie contm um ou mais caracteres e delimitada por aspas. No so suportadas seqncias de escape p/caracteres no-ASCII (embora a maioria dos comandos do PBP tmembutido este manuseio).

    "Olah" String (Abrev. p/ "O","l","a","h")

    Sries so normalmente tratadas como uma lista de valores de caractere individuais.

    4.10. Pinos

    Pinos podem ser acessados em um nmero de maneiras diferentes. O melhor jeitop/ especificar um pino p/ uma operao simplesmente usar seu nome PORTe nmero de bit:

    PORTB.1 = 1 Fixa PORTB, bit 1 p/ 1

    Para tornar mais fcil de se lembrar p/ que um pino usado, a ele deve-seatribuir um nome usando o comando VAR. Desta maneira, o nome podeento ser usado em qualquer operao:

  • PicBasic Pro Compiler

    24

    led var PORTA.0 Renomeia PORTA.0 como ledHigh led Fixa led (PORTA.0) p/ alto

    Para compatibilidade c/ o BASIC Stamp, os pinos usados nos comandos doPicBasic Pro Compiler podem tambm ser referenciados por nmero, 0 - 15. Estespinos so fisicamente mapeados sobre portas de hardware do PICmicro diferentesdependendo de quantos pinos tem o microcontrolador.

    N de pinos do PICmicro 0 - 7 8 - 15

    8 pinos GPIO* GPIO*

    18 pinos PORTB PORTA*

    28 pinos (exceto 14C000) PORTB PORTC

    28 pinos (14C000) PORTC PORTD

    40 pinos PORTB PORTC*GPIO e PORTA no tm 8 pinos de I/O.

    Se uma porta no tem 8 pinos, tal como PORTA, s os nmeros dos pinosque existem podem ser usados, por exemplo 8 - 12. O uso dos pinos de nmero 13 - 15no causar efeito visvel.

    Esta numerao dos pinos, 0 - 15, nada tem a ver c/ a numerao fsica dos pinosde um PICmicro. Dependendo do PICmicro em particular, o pino nmero 0poderia ser o pino fsico 6, 21 ou 33, mas em cada caso ele mapeia-se ao PORTB.0(ou GPIO.0 p/ dispositivos de 8 pinos, ou PORTC.0 p/ um PIC14C000) .

    Os pinos podem ser referenciados por nmeros (0 - 15), nome (ex. Pino0, se umdos arquivos bsdefs.bas esto inclusos ou voc mesmo os definiu), ou onome do bit completo (ex. PORTA.1). Qualquer pino ou bit do microcontrolador podeser acessado usando o ltimo mtodo.

    Os nomes dos pinos (ex. Pino0) no so automaticamente inclusos no seuprograma. Na maioria dos casos, voc iria definir os nomes dos pinos como achar melhorusando o comando VAR:

    led var PORTB.3

    Entretanto, foram fornecidos dois arq. de definio p/ melhorar a compatibili-dade c/ o BASIC Stamp. O arq. bs1defs.bas ou bs2defs.bas pode serincluso no programa do PicBasic Pro p/ prover nomes de pinos e bit quecombinem c/ os nomes BASIC Stamp.

  • PicBasic Pro Compiler

    25

    Include bs1defs.basou

    Include bs2defs.bas

    O BS1DEFS.BAS define Pins, B0-B13, W0-W6 e a maioria dos outros nomes depinos e variveis do BS1.

    BS2DEFS.BAS define Ins, Outs, B0-B25, W0-W12 e a maioria dos outrosnomes de pinos e variveis do BS2.

    Quando um PICmicro ligado, todos os pinos so fixados como entradas. P/ usarum pino como sada, o pino ou porta deve ser fixado como uma sada ou deve ser usadoum comando que automaticamente fixa um pino como sada.

    Para fixar um pino ou porta como sada (ou entrada), fixe o seu registrador TRIS. Fixandoum bit TRIS em 0 torna seu pino uma sada. Fixando um bit TRIS em 1 torna seupino uma entrada. Por exemplo:

    TRISA = %00000000 Ou TRISA = 0

    fixa todos os pinos em PORTA como sadas.

    TRISB = %11111111 Ou TRISB = 255

    fixa todos os pinos em PORTB como entradas.

    TRISC = %10101010

    Fixa todos os pinos pares em PORTC como sadas e os pinos mpares como entradas.Direes individuais de bit podem ser fixadas da mesma maneira.

    TRISA.0 = 0

    fixa PORTA, pino 0 como uma sada. Todas as demais direes de pinosem PORTA permanecem inalteradas.

    Os nomes de variveis do BASIC Stamp Dirs, Dirh, Dirl e Dir0-Dir15no esto definidas e no devem ser usadas c/ o PicBasic Pro Compiler.O TRIS dever ser usado no lugar, mas tem o estado oposto a Dirs.

    Isto no d certo c/ o PicBasic Pro:

    Dir0 = 1 No fixa o pino PORTB.0 como sada

  • PicBasic Pro Compiler

    26

    Em lugar daquilo, faa isto:

    TRISB.0 = 0 Fixa o pino PORTB.0 como sada

    ou simplesmente use um comando que fixa automaticamente a direo do pino.

    4.11. Comentrios

    Um comentrio do PBP comea c/ a palavra-chave REM ou o apstrofe(). Todos os caracteres seguintes nesta linha so ignorados.

    Ao contrrio de vrios BASICs, REM uma palavra-chave nica e no uma abreviaop/ REMark. Assim, nomes de variveis podem comear c/ REM (embora REMpor si s no seja vlido).

    4.12. Linhas c/ Declaraes Mltiplas

    De maneira a permitir programas mais compactos e agrupamento lgico de co-mandos relacionados, o PBP suporta o uso de dois pontos (:) p/ separardeclaraes colocadas na mesma linha. Assim, os dois exemplos seguintesso equivalentes:

    W2 = W0W0 = W1W1 = W2

    o mesmo que:

    W2 = W0 : W0 = W1 : W1 = W2

    Isto, entretanto, no altera o tamanho do cdigo gerado.

    4.13. Caractere de Extenso de Linha

    O nmero mximo de caracteres que podem aparecer em uma linha do PBP 256. Declaraes mais longas podem ser estendidas at a linha seguinte usando ocaractere de extenso de linha (_) ao final de cada linha a ser continuada.

    Branch B0,[rotulo0,rotulo1,rotulo2,_rotulo3,rotulo4]

  • PicBasic Pro Compiler

    27

    4.14. INCLUDE

    Outros arq. fonte BASIC podem ser adicionados a um programa do PBP usandoINCLUDE. Voc pode ter sub-rotinas padronizadas, definies ou outros ar-quivos que voc deseje manter em separado. Os Stamp e arq. de definiode modo serial so exemplos disso. Estes arquivos podem ser includos emprogramas onde eles sejam necessrios, mas deixados fora de programasonde eles no sejam precisos.

    As linhas de cdigo fonte do arq. includo so inseridas no programaexatamente onde o INCLUDE colocado.

    INCLUDE modedefs.bas

    4.15. DEFINE

    Alguns elementos, como a freqncia de clock do oscilador e as posies dos pi-nos do LCD, so predefinidas no PBP. DEFINE permite que um programa doPBP altere estas definies, se desejado.

    DEFINE pode ser usado p/ mudar o valor predefinido do oscilador, ospinos de DEBUG e baud rate, e as posies dos pinos do LCD, entre outrascoisas. Estas definies devem estar todas em maisculas. Veja assees apropriadas do manual p/ informao especfica sobre estasdefinies.

    DEFINE PAUSA_BOTAO 10 'Atraso p/ repiquedo botao em ms

    DEFINE PASSO_CARAC 1000 passo do caractereserout em us

    DEFINE REG_DEPURA PORTB 'Porta do pino de depuracaoDEFINE BIT_DEPURA 0 'Bit pino depura.DEFINE BAUD_DEPURA 2400 'Baud rate depura.DEFINE MODO_DEPURA 1 'Modo depura.: 0 =

    Verd., 1 = InvertidoDEFINE PASSO_DEPURA 1000 'Passo caractere

    depura. em us

    DEFINE HSER_BAUD 2400 'Fixa baud rateDEFINE HSER_RCSTA 90h 'Fixa reg. rec.DEFINE HSER_TXSTA 20h 'Fixa reg. transm.

  • PicBasic Pro Compiler

    28

    DEFINE HSER_PAR 1 'Use somente se dese-jar paridade par

    DEFINE HSER_IMP 1 'Use somente se de-sejar parid. impar

    DEFINE I2C_INTERNO 1 'Use p/ EEPROM in-terna em 16CExxxe 12CExxx

    DEFINE I2C_LENTO 1 'Use p/ OSC >8mHzc/ dispositivosde veloc. padrao

    DEFINE LCD_DREG PORTA 'Porta dados LCDDEFINE LCD_DBIT 0 'Bit de inicio

    LCD 0 ou 4DEFINE LCD_RSREG PORTA 'Porta de selec.

    registro LCDDEFINE LCD_RSBIT 4 'Bit de selec.

    registro LCDDEFINE LCD_EREG PORTB 'Porta hab. LCDDEFINE LCD_EBIT 3 'Bit hab. LCDDEFINE LCD_BITS 4 'Tam. barram. LCD 4 ou

    8DEFINE LCD_LINHAS 2 'Linhas numericas no

    LCD

    DEFINE OSC 4 '3 4 8 10 12 16 20

    DEFINE OSCCAL_1K 1 'Fixa OSCCAL p/PIC12C671

    DEFINE OSCCAL_2K 1 'Fixa OSCCAL p/PIC12C672

    4.16. Operadores Matemticos

    Ao contrrio do BASIC Stamp, o PicBasic Pro Compiler executa todas as operaesmatemticas em ordem completamente hierrquica. Isto quer dizer que h precednciap/ os operadores. Multiplicaes e divises so feitas antes das somas esubtraes, por exemplo. Para assegurar que as operaes sejam levadas a cabo naordem que voc quiser, use parnteses p/ agrupar as operaes:

    A = (B + C) * (D - E)

  • PicBasic Pro Compiler

    29

    As operaes matemticas no so assinadas e so executadas c/ preciso de 16 bits.Os operadores suportados so:

    Op. Matemticos Descrio

    + Adio

    - Subtrao

    * Multiplicao

    ** 16 Bits superiores da multiplicao

    */ 16 Bits do meio da multiplicao

    / Diviso

    // Resto (Mdulo)

    > Desl. Dir.

    ABS Valor Absoluto

    COS Coseno

    DCD Decodif. 2n

    DIG Dgito

    MAX Mx imo*

    MIN Mn imo*

    NCD Codifica

    REV Inverte Bits

    SIN Seno

    SQR Raiz Quadrada

    & AND Lgico

    | OR Lgico

    ^ OR Exclusivo Lgico

    ~ NOT Lgico

    &/ NOT AND Lgico

    |/ NOT OR Lgico

    ^/ NOT OR Exclusivo Lgico

    *Implementao difere do BASIC Stamp.

  • PicBasic Pro Compiler

    30

    4.16.1. Multiplication

    O PBP executa multiplicao 16x16. O operador '*' retorna os 16 bitsinferiores do resultado de 32 bits. Esta a multiplicao tpica encontrada namaioria das linguagens de programao. O operador '**' retorna os 16 bitssuperiores do resultado de 32 bits. Estes dois operadores podem ser usados em conjuntop/ executar multiplicaes 16x16 que produzam resultados de 32 bits.

    W1 = W0 * 1000 Multiplicar o valor em W0 por 1000e guardar o resultado em W1

    W2 = W0 ** 1000 ultiplicar W0 por 1000guardar os 16 bits de maior ordem(que podem ser 0) em W2

    O operador */ retorna os 16 bits do meio do resultado de 32 bits.

    W3 = W1 */ W0 Multiplicar W1 por W0 e guardaros 16 bits do meio em W3

    4.16.2. Diviso

    O PBP executa diviso 16x16. O operador '/' retorna o resultado de 16 bits.O operador '//' retorna o resto. Isto s vezes referenciado comoo mdulo do nmero.

    W1 = W0 / 1000 Dividir o valor em W0 por 1000e guardar o resultado em W1

    W2 = W0 // 1000 Dividir o valor em W0 por 1000e guardar o resto em W2

    4.16.3. Deslocamento

    Os operadores '' deslocam um valor p/ esquerda ou p/ direita, respectivamente,1 a 15 vezes. Os bits j deslocados so fixados em 0.

    B0 = B0 > 1 Desloca W0 1 posicao p/ direitae guarda o resultado em W1 (o mesmoque dividir por 2)

  • PicBasic Pro Compiler

    31

    4.16.4. ABS

    ABS retorna o valor absoluto de um nmero. Se um byte maior que127 (bit alto ligado), ABS ir retornar 256 - valor. Se uma palavra maior que32767 (bit alto ligado), ABS ir retornar 65536 - valor.

    B1 = ABS B0

    4.16.5. COS

    COS retorna o coseno de 8 bits de um valor. O resultado est na formade complemento de dois (ex. -127 p/ 127). Ele usa uma tabela de referncia de quarto de ondap/ encontrar o resultado. O coseno inicia c/ um valor em radianos binrios, 0 a 255,em oposio ao habitual 0 a 359 graus.

    B1 = COS B0

    4.16.6. DCD

    DCD retorna o valor decodificado de um nmero de bit. Ele altera o nmero de bit(0 - 15) p/ um nmero binrio c/ apenas aquele bit fixado em 1. Todos os demais bits sofixados em 0.

    B0 = DCD 2 Fixa B0 p/ %00000100

    4.16.7. DIG

    DIG retorna o valor de um dgito decimal. Simplesmente diga a ele o nmero do dgito(0 - 4 c/ 0 sendo o dgito mais direita) do qual voc gostaria de saber o valor, evoila.

    B0 = 123 Fixa B0 em 123B1 = B0 DIG 1 Fixa B1 em 2 (dgito 1 de

    123)

    4.16.8. MAX e MIN

    MAX e MIN retorna o mximo e mnimo, respectivamente, de doisnmeros. Ele normalmente usado p/ limitar nmeros p/ um valor.

  • PicBasic Pro Compiler

    32

    B1 = B0 MAX 100 Fixa B1 p/ o maior de B0e 100 (B1 estar entre100 & 255)

    B1 = B0 MIN 100 Set B1 to the smaller of B0and 100 (B1 cant be biggerthan 100)

    4.16.9. NCD

    NCD retorna o nmero de bit codificado prioritrio (1 - 16) de um valor. Ele usadop/ achar o bit mais alto ligado em um valor. Ele retorna 0 se nenhum bit estiver ligado.

    B0 = NCD %01001000 Fixa B0 p/ 7

    4.16.10. REV

    REV inverte a ordem dos bits inferiores em um valor. O nmero de bitsa serem invertidos de 1 a 16.

    B0 = %10101100 REV 4 Fixa B0 em %10100011

    4.16.11. SIN

    SIN retorna o seno de 8 bits de um valor. O resultado na forma de complemento dedois (ex. -127 a 127). Ele usa uma tabela de referncia de quarto de onda p/ achar oresultado. O seno inicia c/ um valor em radianos binrios, 0 a 255, em oposioao habitual 0 a 359 graus.

    B1 = SIN B0

    4.16.12. SQR

    SQR retorna a raiz quadrada de um valor. J que o PicBasic Pro s trabalhac/ inteiros, o resultado ser sempre um inteiro de 8 bits no maior do que oresultado real.

    B0 = SQR W1 Fixa B0 p/ a raiz quadrada de W1

    4.16.13. Operadores a Bit

    Operadores a bit agem em cada bit de um valor de maneira booleana. Elespodem ser usados p/ isolar bits ou adicionar bits a um valor.

  • PicBasic Pro Compiler

    33

    B0 = B0 & %00000001 Isola o bit 0 de B0B0 = B0 | %00000001 Liga o bit 0 de B0B0 = B0 ^ %00000001 Inverte o estado do bit 0

    de B0

    4.17. Operadores de Comparao

    Operadores de comparao so usados em declaraes IF..THEN p/ compararuma expresso c/ outra. Os operadores suportados so:

    Operador de Comparao Descrio

    = ou == Igual

    ou != No Igual

    < Menor que

    > Maior que

    = Maior ou Igual a

    If i > 10 Then loop

    4.18. Operadores Lgicos

    Operadores lgicos diferem dos operadores a bit. Eles produzem um resultadoverdadeiro/falso de sua operao. Valores de 0 so tratados como falso. Qualquer outrovalor tratado como verdadeiro. Eles so mais usados em conjunto c/ os operadoresde comparao em uma declarao IF..THEN. Os operadoressuportados so:

  • PicBasic Pro Compiler

    34

    Operador Lgico Descrio

    AND ou && AND Lgico

    OR ou || OR Lgico

    XOR ou ^^ OR Exclusivo Lgico

    NOT AND NAND Lgico

    NOT OR NOR Lgico

    NOT XOR NXOR Lgico

    If (A == maior) AND (B > medio) Then run

    Esteja certo de usar parnteses p/ dizer ao PBP a ordem exata em que voc querque as operaes sejam executadas.

  • PicBasic Pro Compiler

    35

    5. Referncia de Declaraes do PicBasic Pro

    @ Insere uma linha de cdigo em linguagem assembly.ASM..ENDASM Insere uma seo de cdigo em ling. assembly.BRANCH GOTO computado (equiv. a ON..GOTO).BRANCHL BRANCH fora de pgina (BRANCH longo).BUTTON Tira o repique e auto-repete a entrada de um pino especfico.CALL Chama subrotina em ling. assembly.CLEAR Zera todas as variveis.COUNT Conta o nmero de pulsos em um pino.DATA Define contedo inicial da EEPROM no-chip.DEBUG Sada serial assncrona p/ um pino fixo e baud.DISABLE Desabilita processamento ON INTERRUPT.DTMFOUT Produz tons de discagem em um pino.EEPROM Define contedo inicial p/ a EEPROM no-chip.ENABLE Habilita processamento ON INTERRUPT.END Para a execuo e entra no modo baixo consumo.FOR..NEXT Executa declaraes repetidamente.FREQOUT Produz at 2 freqncias em um pino.GOSUB Chama subrotina BASIC em um rtulo especfico.GOTO Continua execuo em um rtulo especfico.HIGH Torna a sada do pino alta.HSERIN Entrada serial assncrona de hardware.HSEROUT Sada serial assncrona de hardware.I2CREAD L os bytes de um dispositivo I2C.I2CWRITE Escreve bytes em um dispositivo I2C.IF..THEN..ELSE..ENDIF Executa declaraes condicionalmente.INPUT Torna o pino uma entrada.{LET} Atribui o resultado de uma expresso a uma varivel.LCDOUT Mostra caracteres em um LCD.LOOKDOWN Procura por valor na tabela de constantes.LOOKDOWN2 Procura por valor na tabela de constantes / variveis.LOOKUP Busca valor da constante da tabela.LOOKUP2 Busca valor da constante / varivel da tabela.LOW Torna a sada do pino baixa.NAP Desliga o processador por um curto perodo de tempo.ON INTERRUPT Executa subrotina BASIC em uma interrupo.OUTPUT Torna o pino uma sada.PAUSE Atraso (resoluo de 1mSeg).PAUSEUS Atraso (resoluo de 1uSeg).

  • PicBasic Pro Compiler

    36

    PEEK L o byte do registrador.POKE Escreve um byte no registrador.POT L o potencimero em um pino especfico.PULSIN Mede a largura do pulso em um pino.PULSOUT Gera pulso em um pino.PWM Coloca um trem de pulsos modulado por largura no pino.RANDOM Gera um nmero pseudo-aleatrio.RCTIME Mede a largura do pulso em um pino.READ L o byte da EEPROM no-chip.RESUME Continua execuo aps tratar uma interrupo.RETURN Continua na declarao seguinte ao ltimo GOSUB.REVERSE Torna pino de sada uma entrada ou pino de entrada uma sada.SERIN Entrada serial assncrona (estilo BS1).SERIN2 Entrada serial assncrona (estilo BS2).SEROUT Sada serial assncrona (estilo BS1).SEROUT2 Sada serial assncrona (estilo BS2).SHIFTIN Entrada serial sncrona.SHIFTOUT Sada serial sncrona.SLEEP Desliga o processador por um perodo de tempo.SOUND Gera tom ou rudo branco em um pino especfico.STOP Para a execuo de um programa.SWAP Troca os valores de duas variveis.TOGGLE Torna o pino uma sada e muda o estado.WHILE..WEND Executa decl. enquanto a condio for verdadeira.WRITE Escreve byte na EEPROM no-chip.XIN Entrada X-10.XOUT Sada X-10.

  • PicBasic Pro Compiler

    37

    5.1. @

    @ Declarao

    Quando usado no incio de uma linha, @ prov um atalho p/ a inserode uma Declarao em ling. assembly no seu programa PBP. Voc podeusar este atalho p/ misturar livremente cdigo em ling. assembly c/ declaraesdo PicBasic Pro.

    i var byterole-me var byte

    For i = 1 to 4@ rlf _role-me, F ; Gira o bit uma vez p/ esq.

    Next i

    O atalho @ tambm pode ser usado p/ incluir rotinas em ling. assemblyem um outro arquivo. Por exemplo:

    @ Include fp.asm

    @ reinicializa a pgina do registrador p/ 0 antes de executar a instruo em ling.assembly. A pgina do registrador no deve ser alterada usando @.

    Veja a seo sobre programao em linguagem assembly p/ maisinformao.

  • PicBasic Pro Compiler

    38

    5.2. ASM..ENDASM

    ASMENDASM

    As instrues ASM e ENDASM dizem ao PBP que o cdigo entre estasduas linhas est em ling. assembly e no deve ser interpretado comodeclaraes do PicBasic Pro. Voc pode usar estas duas instrues p/ misturarlivremente cdigo em ling. assembly c/ declaraes do PicBasic Pro.

    O tamanho mximo p/ uma seo de texto em assembler 8K. Isto otamanho mximo p/ o fonte atual, incluindo comentrios, no ocdigo gerado. Se o bloco de texto maior do que isso, quebre-o em seesASM..ENDASM mltiplas ou simplesmente inclua-o em um arq. separado.

    ASM reinicializa a pg. do registrador p/ 0. Voc deve assegurar-se que a pg.do registrador seja reiniciada p/ 0 antes do ENDASM se o cdigo de linguagemassembly o tiver alterado.

    Veja a seo sobre programao em ling. assembly p/ maisinformao.

    ASMbsf PORTA, 0 ; Fixa bit 0 em PORTAbcf PORTB, 0 ; Limpa bit 0 em PORTB

    ENDASM

  • PicBasic Pro Compiler

    39

    5.3. BRANCH

    BRANCH Indice,[Rotulo{,Rotulo...}]

    BRANCH faz o programa pular p/ um local diferente baseado em umndice de variveis. Isto similar a On..Goto em outros BASICs.

    Indice seleciona um de uma lista de rtulos. A execuo retomada no rtuloindexado. Por exemplo, se Indice zero, o programa pula p/ o primeiro rtuloespecificado na lista, se Indice um, o programa pula p/ o segundortulo, e assim vai. Se Indice maior que ou igual ao nmero dertulos, nenhuma ao tomada e a execuo continua c/ a declaraoseguinte ao BRANCH. At 256 Rotulos podem ser usados em um BRANCH.

    Rotulo deve estar na mesma pgina de cdigo que a instruo BRANCH. Sevoc no puder ter certeza que eles estaro na mesma pg. de cdigo, use BRANCHLabaixo.

    BRANCH B4,[cao,gato,peixe] O mesmo que: If B4=0 Then cao (goto cao) If B4=1 Then gato (goto gato) If B4=2 Then peixe (goto peixe)

  • PicBasic Pro Compiler

    40

    5.4. BRANCHL

    BRANCHL Indice,[Rotulo{,Rotulo...}]

    BRANCHL (BRANCH longo) funciona muito similarmente ao BRANCH em que ele fazo programa pular p/ um local diferente baseado em um ndice de variveis.As principais diferenas so que ele pode pular p/ um Rotulo que est em uma pg. decd. diferente da instruo BRANCHL e gera cdigo que quase o dobrodo tamanho do cdigo gerado pela instruo BRANCH. Se vocestiver certo de que os rtulos esto na mesma pg. que a instruo BRANCHou se o microcontrolador no tiver mais do que uma pg. de cd. (2K ou me-nos de ROM), usar BRANCH ao invs de BRANCHL ir minimizar a utili-zao da memria.

    Indice seleciona um de uma lista de rotulos. A execuo prossegue no rtuloindexado. Por exemplo, se Indice zero, o programa pula p/ o primeiro rtuloespecificado na lista, se Indice um, o programa pula p/ o segundo rtulo,e assim por diante. Se Indice maior ou igual ao nmero de rtulos,nenhuma ao tomada e a execuo continua c/ a declarao seguinteao BRANCHL. At 128 rotulos podem ser usados em um BRANCHL.

    BRANCHL B4,[cao,gato,peixe] O mesmo que: If B4=0 Then cao (goto cao) If B4=1 Then gato (goto gato) If B4=2 Then peixe (goto peixe)

  • PicBasic Pro Compiler

    41

    5.5. BUTTON

    BUTTON Pino,Down,Delay,Rate,BVar,Action,Rotulo

    L Pino e opcionalmente executa anti-repique e auto-repetio. Pino automaticamente fixado como entrada. Pino pode ser uma constante, 0-15, ou umavarivel que contenha um nmero 0-15 (ex. B0) ou um nome de pino (ex.PORTA.0).

    Down Estado do pino quando o boto pressionado (0..1).Delay Contagem cclica antes do incio da auto-repetio (0..255). Se 0,

    nenhum anti-repique ou auto-repetio so executados. Se 255, executado o anti-repique mas no a auto-repetio.

    Rate Taxa de auto-repetio (0..255).BVar Varivel de um byte usada internamente p/ contagem regr. de

    atraso/repetio. Ela deve ser inicializada p/ 0 antes do uso eno ser usada em outro lugar no programa.

    Action Estado do boto sobre o qual atuar (0 se no premido, 1 se premido).Rotulo A execuo prossegue neste rtulo se Action for verdadeiro.

    10K

    I/O

    10K

    I/O

    Vai p/ naopremido se botao nao premido em Pin2BUTTON PORTB.2,0,100,10,B2,0,naopremido

    BUTTON precisa ser usado dentro de um loop p/ a auto-repetio funcionar corretamente.

    BUTTON realiza o anti-repique atrasando a execuo do programa por um per-odo de milisegundos p/ aguardar que os contatos se acomodem. O atrasopadro de anti-repique 10ms. Para alterar o anti-repique p/ um outrovalor, use DEFINE:

  • PicBasic Pro Compiler

    42

    Fixa o atraso do anti-repique p/ 50msDefine BUTTON_PAUSE 50

    Certifique-se de que BUTTON_PAUSE esteja todo em maisculas.

    Em geral, mais fcil simplesmente ler o estado do pino em um IF..THENdo que usar o comando BUTTON como segue:

    If PORTB.2 = 1 Then naopremido

  • PicBasic Pro Compiler

    43

    5.6. CALL

    CALL Rotulo

    Executa a sub-rotina em linguagem assembler chamada Rotulo.

    GOSUB normalmente usado p/ executar uma sub-rotina do PicBasic Pro. Aprincipal diferena entre GOSUB e CALL que c/ CALL, a existncia de umRotulo no checada at a hora da montagem. Usando CALL, um Rotulo emuma seo em linguagem assembly que de outra forma seria inacessvelao PBP pode ser acessado.

    Veja a seo sobre programao em linguagem assembly p/ maisinformao sobre CALL.

    CALL pass Executa sub-rotina em linguagemassembly chamada _pass

  • PicBasic Pro Compiler

    44

    5.7. CLEAR

    CLEAR

    Fixa todos os registradores da RAM p/ zero.

    CLEAR zera todos os registradores da RAM em cada banco. Isto ir fixartodas as variveis, inclusive as variveis internas de sistema p/ zero. Isto no feito automaticamente quando um programa do PBP inicia como est numBASIC Stamp. Em geral, as variveis devem ser fixadas no programa p/ um estadoinicial apropriado ao invs de se usar CLEAR.

    CLEAR Limpa todas as variveis p/ 0

  • PicBasic Pro Compiler

    45

    5.8. COUNT

    COUNT Pino,Periodo,Var

    Conta o nmero de pulsos que ocorrem em Pino durante o Periodo eguarda o resultado em Var. Pino automaticamente fixado como entrada. Pino podeser uma constante, 0-15, ou uma varivel que contenha um nmero 0-15 (ex. B0)ou um nome de pino (ex. PORTA.0).

    A resoluo de Periodo em milisegundos. Ele rastreia a freqncia dooscilador baseado no DEFINEd OSC.

    COUNT checa o estado de Pino em um curto loop e conta as transies de low p/high. Com um oscilador de 4Mhz ele checa o estado do pino a cada 20us.Com um oscilador de 20Mhz ele checa o estado do pino a cada 4us. Partindo disto,pode-se determinar que a mais alta freqncia de pulsos que pode sercontada 25Khz c/ um oscilador de 4Mhz e 125Khz c/ um osciladorde 20Mhz se a freqncia tem um ciclo ativo de 50% (o tempo de high omesmo que o tempo de low).

    Conte # de pulsos em Pino1 em 100 milisegundosCOUNT PORTB.1, 100, W1

    Determine a frequencia em um pinoCOUNT PORTA.2, 1000, W1 Conte p/ 1 segundoSerout PORTB.0, N2400, [W1]

  • PicBasic Pro Compiler

    46

    5.9. DATA

    DATA {@Local,}Constante{,Constante...}

    Guarde constantes na EEPROM no-voltil no-chip quando o dispositivo programadopela primeira vez. Se o valor opcional Local omitido, a primeira declaraoDATA comea a guardar no endereo 0 e declaraes subseqentes guardaronas posies seguintes. Se o valor Local for especificado, ele denotaa posio inicial onde estes valores sero guardados. Um rtulo opcionalpode ser atribudo ao endereo inicial da EEPROM p/ futura referncia peloprograma.

    Constante pode ser uma constante numrica ou alfanumrica. Apenas obyte menos significativo de valores numricos guardado a no ser que omodificador WORD seja usado. Strings so guardadas como bytes consecutivosde valores ASCII. Nenhum comprimento ou terminador automaticamente adicionado.

    DATA funciona apenas c/ microcontroladores c/ EEPROM no-chip como oPIC16F84 e o PIC16C84. J que EEPROM memria no-voltil,os dados permanecero intactos mesmo quando a fora for desligada.

    Os dados so guardados no espao da EEPROM apenas uma vez na hora em queo microcontrolador programado, no a cada vez que o programa rodado.WRITE pode ser usado p/ fixar os valores da EEPROM no-chip em tempode execuo.

    Guarde 10, 20 e 30 comeando na posio 5DATA @5,10,20,30

    Atribua um rotulo a uma palavra na prox. pos.dlabel DATA word $1234 Guarda $34, $12

    Pule 4 posies e guarde 10 0sDATA (4), 0(10)

  • PicBasic Pro Compiler

    47

    5.10. DEBUG

    DEBUG Item{,Item...}

    Envia um ou mais Itens p/ um pino predefinido a uma taxa de transf. predefinidano formato assncrono padro usando 8 bits de dados, s/ paridade e 1 bit de pa-rada (8N1). O pino automaticamente fixado como sada.

    Se um jogo-da-velha (#) precede um Item, a representao ASCII p/ cada dgito enviada serialmente. DEBUG tambm suporta os mesmos modificadores de dadosque SEROUT2. Refira-se seo sobre SEROUT2 p/ esta informao.

    DEBUG uma de muitas funes seriais assncronas embutidas. Ela a menordas rotinas seriais geradas por software. Ela pode ser usada p/enviar informao de depurao (variveis, marcadores de posio de programa, etc.)p/ um programa de terminal como o Hyperterm. Ela pode tambm ser usada a qualquerhora em que for desejada uma sada serial em um pino fixo a uma taxa de transf. fixa.

    O pino serial e taxa de transf. so especificados usando DEFINEs:

    Fixa a porta de pinos p/ DebugDEFINE DEBUG_REG PORTB

    Fixa o bit de pinos p/ DebugDEFINE DEBUG_BIT 0

    Fixa a taxa de transf. p/ DebugDEFINE DEBUG_BAUD 2400

    Fixa o modo do Debug: 0 = verdadeiro, 1 = invertidoDEFINE DEBUG_MODE 1

    DEBUG assume um oscilador de 4Mhz quando gera sua temporizao de bit. Paramanter a temp. apropriada da taxa de transf. c/ outros valores do oscilador, esteja certode DEFINIR o ajuste do OSC p/ qualquer valor de oscilador diferente.

    Em alguns casos, as taxas de transmisso das instrues do DEBUG podemapresentar os caracteres muito rapidamente p/ o dispositivo receptor. Um DEFINE adicionacadncia aos caracteres s transmisses seriais de sada. Isto permitetempo adicional entre os caracteres medida em que so transmitidos. Acadncia dos caracteres DEFINE permite um atraso de 1 a 65.535 microsegundos(,001 a 65,535 milisegundos) entre cada caractere transmitido.

  • PicBasic Pro Compiler

    48

    Por exemplo, p/ pausar 1 milisegundo entre a transmisso de cadacaractere:

    DEFINE DEBUG_PACING 1000

    Enquanto que conversores de nvel RS-232 so comuns ebaratos, graas implementao RS-232 atual e as excelentesespecificaes de E/S do PICmicro, a maioria das aplicaes no requer conversoresde nvel. Ao invs disso, pode ser usado TTL invertido (DEBUG_MODE = 1). Umresistor limitador de corrente sugerido (supe-se que a RS-232 sejatolerante a curtos).

    1KPino RS-232 RX

    RS-232 GND

    Pino 2

    Pino 5 Pino 7

    Pino 3

    DB9 DB25

    Envie o texto B0= seguido pelo valor decimalde B0 e um avanco de linha serialmenteDEBUG B0=, dec B0, 10

  • PicBasic Pro Compiler

    49

    5.11. DISABLE

    DISABLE

    DESABILITA o processam. de interr. seguinte a esta instruo. Interr. podemainda ocorrer mas o gerenciador de interr. BASIC no programa PicBasic Prono ser executado at que seja encontrado um ENABLE.

    DISABLE e ENABLE so mais como pseudo-ops os quais do asdirees ao compilador, ao invs de gerar cdigo. Veja ONINTERRUPT p/ mais informao.

    DISABLE Desabilita interrupes no gerenciadormyint: led = 1 Liga o LED quando interrompido

    Resume Retorna ao programa principalEnable Habilita interrupes aps gerenciador

  • PicBasic Pro Compiler

    50

    5.12. DTMFOUT

    DTMFOUT Pino,{Onms,Offms,}[Tom{,Tom...}]

    Produz seqncia de tons DTMF em Pino. Pino automaticamentefixado como sada. Pino pode ser uma constante, 0-15, ou varivel quecontm um nmero 0-15 (ex. B0) ou um nome de pino (ex. PORTA.0).

    Onms o nmero de milisegundos p/ gerar cada tom e Offms onmero de milisegundos p/ pausar entre cada tom. Se eles no foremespecificados, Onms padroniza-se em 200ms e Offms padroniza-se em 50ms.

    Tons so numerados 0-15. Tons 0-9 so os mesmos de um teclado detelefone. Tom 10 a tecla *, Tom 11 a tecla # e Tons 12-15correspondem s teclas estendidas A-D.

    DTMFOUT usa FREQOUT p/ gerar os tons duplos. FREQOUTgera tons usando uma forma de modulao por largura de pulso. Os dados purosque saem do pino se parecem bem assustadores. Geralmente, necessriaalguma filtragem p/ alisar o sinal p/ uma onda senoidal e livrar-se de algunsharmnicos que so gerados:

    DTMFOUT trabalha melhor c/ um oscilador de 20Mhz. Ela tambm pode trabalharc/ um oscilador de 10Mhz, e at a 4Mhz, embora comece a ficar muito difcilde filtrar e seja de amplitude razoavelmente baixa. Qualquer outra freqncia ir fazerc/ que DTMFOUT gere uma freqncia que uma relao do oscilador realusado e 20Mhz o que no ser muito til p/ o envio de tons de discagem.

    Envia tons DTMF p/ 212 no Pino1DTMFOUT PORTB.1,[2,1,2]

  • PicBasic Pro Compiler

    51

    5.13. EEPROM

    EEPROM {Posicao,}[Constante{,Constante...}]

    Guarda constantes na EEPROM no-chip. Se o valor da Posicao opcional omitido, a primeira declarao da EEPROM comea a guardar no end. 0 edeclaraes subseqentes guardaro nas posies seguintes. Se ovalor da Posicao especificado, ele denota a posio inicial onde estesvalores sero guardados.

    Constante pode ser uma constante numrica ou alfanumrica. Apenas obyte menos significativo de valores numricos guardado. Strings so guardadas comobytes consecutivos de valores ASCII. Nenhum comprimento ou termi-nador so automaticamente adicionados.

    EEPROM funciona apenas c/ microcontroladores c/ EEPROM no-chip tais comoo PIC16F84 e PIC16C84. J que a EEPROM memria no-voltil,os dados permanecero intactos mesmo quando a fora for desligada.

    Os dados so guardados no espao da EEPROM apenas uma vez na hora que omicrocontrolador programado, no a cada vez que o programa rodado.WRITE pode ser usado p/ fixar os valores da EEPROM no-chip em tempode execuo.

    Guarde 10, 20 e 30 comecando na posicao 5EEPROM 5,[10,20,30]

  • PicBasic Pro Compiler

    52

    5.14. ENABLE

    ENABLE

    HABILITE o processamento de interrupes que foi previamenteDESABILITADO (c/ DISABLE) seguinte a esta instruo.

    DISABLE e ENABLE so mais parecidos com pseudo-ops no sentido de queeles do direes ao compilador ao invs de gerar cdigo. Veja ONINTERRUPT p/ mais informao.

    Disable Desabilita interrupcoes no gerenciadormyint: led = 1 Liga o LED quando interrompido

    Resume Retorna ao programa principalENABLE Habilita interrupcoes apos gerenciador

  • PicBasic Pro Compiler

    53

    5.15. END

    END

    Para a execuo do programa e entra em modo de baixo consumo. Todos os pinosde E/S ficam no estado atual. END trabalha executando uma instruo Sleepcontinuamente em um loop.

    Um END ou STOP ou GOTO devem ser colocados no fim de cada programap/ evitar que ele caia para fora do fim da memria e recomece.

    END

  • PicBasic Pro Compiler

    54

    5.16. FOR..NEXT

    FOR Conta = Inicio TO Fim {STEP {-} Inc}{Corpo}

    NEXT {Conta}

    O loop FOR..NEXT permite que os programas executem um nmero dedeclaraes (o Corpo) por algumas vezes usando uma varivel comocontador. Devido sua complexidade e versatilidade, FOR..NEXT melhor descrito passo a passo:

    1) O valor de Inicio atribudo varivel ndice, Conta.Conta pode ser uma varivel de qualquer tipo.

    2) O Corpo executado. O Corpo opcional e pode ser omitido(talvez p/ um loop de atraso).

    3) O valor de Inc adicionado a (ou subtrado de se "-" especificado) Conta. Se nenhuma clusula STEP definida,Conta incrementada uma vez.

    4) Se Conta no tiver passado de Fim ou estourado o tipo de varivel,a execuo retorna ao Passo 2.

    Se o loop necessitar Contar mais do que 255, uma varivel dimensionada por pa-lavra deve ser usada.

    FOR i = 1 TO 10 Conta de 1 a 10Serout 0,N2400,[#i, ] Envia cada numero p/

    Pin0 serialmenteNEXT i Retorna e faz a proxima

    contagemSerout 0,N2400,[10] Envia um avanco de linha

    FOR B2 = 20 TO 10 STEP -2 Conta de 20 a 10de 2 em 2

    Serout 0,N2400,[#B2, ] Envia cada numeroa Pin0 serialmente

    NEXT B2 Retorna e faz a proximacontagem

    Serout 0,N2400,[10] Envia um avanco de linha

  • PicBasic Pro Compiler

    55

    5.17. FREQOUT

    FREQOUT Pino,Onms,Frequencia1{,Frequencia2}

    Produz a(s) Frequencia(s) no Pino por Onms milisegundos. Pino automaticamente fixado como sada. Pino pode ser uma constante, 0-15, ou umavarivel que contenha um nmero 0-15 (ex. B0) ou um nome de pino (ex.PORTA.0).

    Uma ou duas freqncias diferentes de 0 a 32767 hertz podem ser produzidaspor vez.

    FREQOUT gera tons usando uma forma de modulao por largura de pulso. Osdados puros que saem do pino parecem bem assustadores. Algum tipo de filtragem geralmente necessria p/ alisar o sinal p/ uma onda senoidal livrando-sedos harmnicos que so gerados:

    FREQOUT trabalha melhor c/ um oscilador de 20Mhz. Ele tambm pode trabalharc/ um oscilador de 10Mhz e at mesmo c/ 4Mhz, embora comece a ficar muito difcilde filtrar e seja de amplitude razoavelmente baixa. Qualquer outra freqncia irfazer c/ que FREQOUT gere uma freqncia que uma relao do osciladorusado e 20Mhz.

    Envia tom de 1Khz em Pino1 por 2 segundosFREQOUT PORTB.1,2000,1000

  • PicBasic Pro Compiler

    56

    5.18. GOSUB

    GOSUB Rotulo

    Pula p/ a subrotina em Rotulo salvando seu endereo de retorno na pilha.Diferente de GOTO, quando uma declarao RETURN alcanada, a execuo seguec/ a declarao seguinte ltima declarao GOSUB executada.

    Um nmero ilimitado de subrotinas pode ser usado em um programa.Subrotinas tambm podem ser aninhadas. Em outras palavras, possvel p/ umasubrotina chamar outra subrotina. Tal aninhamento de subrotinas deve serestringir a no mais do que quatro nveis de profundidade.

    GOSUB beep Execute subrotina chamada beep...

    beep: High 0 Ligue o LED conectado a Pin0Sound 1,[80,10] Bipe o alto-falante conectado a

    Pin1Low 0 Desligue o LED conectado a Pin0Return Voltar p/ a rotina principal que

    nos chamou

  • PicBasic Pro Compiler

    57

    5.19. GOTO

    GOTO Rotulo

    A execuo do programa continua c/ as declaraes em Rotulo.

    GOTO send Pule p/ a declaracao chamada envia...

    envia: Serout 0,N2400,[Oi] Envia Oi p/ Pin0serialmente

  • PicBasic Pro Compiler

    58

    5.20. HIGH

    HIGH Pino

    Pe o Pino especificado em nvel alto. Pino fixado automaticamente como sada.Pino pode ser uma constante, 0-15, ou uma varivel que contenha um nmero 0-15(ex. B0) ou um nome de pino (ex. PORTA.0).

    HIGH 0 Fixa Pin0 como saida e o levaa nivel alto (~5 volts)

    HIGH PORTA.0 Fixa PORTA, pino 0 como saidae o leva a alto (~5 volts)

    led var PORTB.0 Define pino do LEDHIGH led Fixa pino do LED como saida e

    o leva a alto (~5 volts)

    Alternativamente, se o pino j for uma sada, uma maneira mais rpida e maiscurta (a partir de um ponto de parada de cdigo gerado) de lev-lo a nvel alto seria:

    PORTB.0 = 1 Fixa PORTB pino 0 alto

  • PicBasic Pro Compiler

    59

    5.21. HSERIN

    HSERIN {RotuloParidade,}{Timeout,Rotulo,}[Item{,...}]

    Receba um ou mais Items da porta serial do hardware em dispositivosque suportam comunicaes seriais assncronas em hardware.

    HSERIN uma das muitas funes seriais assncronas embutidas. Ela podeapenas ser usada c/ dispositivos que tenham um USART no hardware. Veja afolha de dados do dispositivo p/ informao sobre o pino de entrada serial e outrosparmetros. Os parmetros seriais e baud rate so especificados usandoDEFINEs:

    Fixa registrador de recepcao p/ receptor habilitadoDEFINE HSER_RCSTA 90h

    Fixa registrador de transmissao p/ transmissor habilitadoDEFINE HSER_TXSTA 20h

    Fixa baud rateDEFINE HSER_BAUD 2400

    HSERIN assume um oscilador de 4Mhz nos clculos de baud rate. Paramanter a temporizao de baud rate correta c/ outros valores de osciladores, certifique-se de definir (DEFINE) o ajuste OSC p/ o novo valor do oscilador.

    Opcionalmente, Timeout e Rotulo podem ser includos p/ permitir que o progra-ma continue se um caractere no for recebido dentro de um certo tempo.Timeout especificado em unidades de 1 milisegundo.

    O formato dos dados seriais padro 8N1, 8 bits de dados, s/ bit de paridade e 1bit de parada. 7E1 (7 bits de dados, paridade par, 1 bit de parada) ou 7O1 (7 bits de dados,paridade mpar, 1 bit de parada) podem ser habilitados usando um dos seguintes DEFINEs:

    Use apenas se desejada paridade parDEFINE HSER_EVEN 1

    Use apenas se desejada paridade mparDEFINE HSER_ODD 1

    O ajuste de paridade, juntamente c/ todos os outros DEFINEs HSER, afeta ambosHSERIN e HSEROUT.

  • PicBasic Pro Compiler

    60

    Um RotuloParidade opcional pode ser includo na declarao. Oprograma ir continuar nesta posio se um caractere c/ um erro de paridade recebido. Ele deve ser usado apenas se a paridade estiver habilitada usando umdos defines precedentes.

    Visto que a recepo serial feita em hardware, no possvel fixaros nveis p/ um estado invertido p/ eliminar um driver RS-232. Portantoum driver apropriado deve ser usado c/ HSERIN.

    HSERIN suporta os mesmos modificadores de dados que SERIN2. Refira-se seo sobre SERIN2 p/ esta informao.

    HSERIN [B0, dec W1]

  • PicBasic Pro Compiler

    61

    5.22. HSEROUT

    HSEROUT [Item{,Item...}]

    Envie um ou mais Items ao hardware da porta serial em dispositivos quesuportem comunicaes seriais assncronas em hardware.

    HSEROUT uma das muitas funes seriais embutidas. Ela podeapenas ser usada c/ dispositivos que tenham um USART em hardware. Veja afolha de dados do dispositivo p/ informao sobre o pino de sada serial e outrosparmetros. Os parmetrros seriais e baud rate so especificados usandoDEFINEs:

    Fixa registrador de recepcao p/ receptor habilitadoDEFINE HSER_RCSTA 90h

    Fixa registrador de transmissao p/ transmissor habilitadoDEFINE HSER_TXSTA 20h

    Fixa baud rateDEFINE HSER_BAUD 2400

    HSEROUT assume um oscilador de 4Mhz nos clculos de baud rate. Paramanter a temporizao de baud rate correta c/ outros valores de osciladores, certifique-se de definir (DEFINE) o ajuste OSC p/ o novo valor do oscilador.

    O formato dos dados seriais padro 8N1, 8 bits de dados, s/ bit de paridade e 1bit de parada. 7E1 (7 bits de dados, paridade par, 1 bit de parada) ou 7O1 (7 bits de dados,paridade mpar, 1 bit de parada) podem ser habilitados usando um dos seguintes DEFINEs:

    Use apenas se desejada paridade parDEFINE HSER_EVEN 1

    Use apenas se desejada paridade mparDEFINE HSER_ODD 1

    O ajuste de paridade, juntamente c/ todos os outros DEFINEs HSER, afeta ambosHSERIN e HSEROUT.

    Visto que a recepo serial feita em hardware, no possvel fixaros nveis p/ um estado invertido p/ eliminar um driver RS-232. Portantoum driver apropriado deve ser usado c/ HSEROUT.

  • PicBasic Pro Compiler

    62

    HSEROUT suporta os mesmos modificadores de dados que SEROUT2. Refira-se seo sobre SEROUT2 p/ esta informao.

    Envie o valor decimal de B0 seguido por um avancode linha p/ o hardware da USARTHSEROUT [dec B0,10]

  • PicBasic Pro Compiler

    63

    5.23. I2CREAD

    I2CREAD PinoDados,PinoClock,Controle,{Endereco,}[Var{,Var...}]{,Rotulo}

    Envie bytes de Controle e Endereco opcional p/ o PinoClock ePinoDados e guarde o(s) byte(s) recebido(s) na Var. PinoClock ePinoDados podem ser uma constante, 0-15, ou uma varivel que contenha umnmero 0-15 (ex. B0) ou um nome de pino (ex. PORTA.0).

    I2CREAD e I2CWRITE podem ser usados p/ ler e escrever dados p/ uma EEPROM c/ uma interface I2C de dois fios como a Microchip 24LC01Be dispositivos similares. Isto permite que os dados sejam guardados em memriaexterna no-voltil de forma que possam ser mantidos mesmo depois que a foraseja desligada. Estes comandos operam no modo mestre I2C e tambmpodem ser usados p/ falar c/ outros dispositivos c/ uma interface I2C comosensores de temperatura e conversores A/D.

    Os 7 bits superiores do byte Controle contm o cdigo de controle juntamentec/ seleo de pastilha ou informao adicional de endereo, dependendo dodispositivo em particular. O bit de ordem inferior uma flag interna indicando se ocomando de leitura ou escrita e deve ser mantido livre.

    Este formato p/ o byte Controle diferente do formato usado pelo PicBasicCompiler original. Esteja certo de usar este formato c/ operaesPBP I2C.

    Por exemplo, quando se comunicar c/ um 24LC01B, o cdigo de controle %1010 e a seleo de pastilha no utilizada de forma que o byte Controle seria%10100000 ou $A0. Seguem formatos de bytes Controle p/ algumasdas diferentes peas:

  • PicBasic Pro Compiler

    64

    Dispos. Capacid. Controle Tam. de End.

    24LC01B 128 bytes %1010xxx0 1 byte

    24LC02B 256 bytes %1010xxx0 1 byte

    24LC04B 512 bytes %1010xxb0 1 byte

    24LC08B 1K bytes %1010xbb0 1 byte

    24LC16B 2K bytes %1010bbb0 1 byte

    24LC32B 4K bytes %1010ddd0 2 bytes

    24LC65 8K bytes %1010ddd0 2 bytes

    bbb = bits de sel. de bloco (end. de ordem superior)ddd = bits de seleo de dispositivoxxx = irrelevante

    O tamanho do Endereco enviado (byte ou palavra) determinado pelo tamanhoda varivel que usada. Se uma varivel de tamanho de byte usada p/ o En-dereco, um endereco de 8 bits enviado. Se uma varivel de tamanho de palavra usada, enviado um endereo de 16 bits. Esteja certo de usar a varivel corretamente dimen-sionada p/ o dispositivo c/ o qual deseja se comunicar.

    Se uma Var de tamanho de palavra espe