Você está na página 1de 48

@ @ Statement

PRO

STD

Quando usado no incio de uma linha, @ oferece um atalho para inserir uma instruo de linguagem assembly em seu programa PBP. Voc pode usar esse atalho para misturar livremente cdigo de linguagem assembly com PicBasic declaraes profissionais.Example i var byte rollme var byte FOR i = 1 TO 4 @ rlf _rollme, F ; Rotate byte left once NEXT i O atalho @ tambm pode ser usada para incluir rotinas em linguagem assembly em outro arquivo. Por exemplo:@ Include "fp.asm" @ redefine a pgina de cadastro para 0 antes de executar a instruo em linguagem assembly. A pgina de registo no deve ser alterado usando @. See Also ASM...ENDASM ADCIN ADCIN Channel,Var Leia o analgico on-chip para o canal conversor digital e armazenar o resultado na varivel var. Enquanto os registros ADC pode ser acessado diretamente, ADCIN torna o processo um pouco mais fcil. Antes ADCIN pode ser usado, o registo TRIS apropriado deve ser ajustado para fazer as entradas de pinos desejados. ADCON1 tambm precisa ser configurado para atribuir os pinos desejados para as entradas analgicas e em alguns casos, para definir o formato do resultado e fonte de relgio. Consulte as folhas de dados Microchip para mais informaes sobre esses registros e como configur-los para o dispositivo especfico. Vrios define tambm podem ser utilizados: Exemplo: DEFINE ADC_BITS 8 ' Set number of bits in result DEFINE ADC_CLOCK 3 ' Set clock source (rc = 3) DEFINE ADC_SAMPLEUS 50 ' Set sampling time in microseconds TRISA = 255 ' Set PORTA to all input ADCON1 = 2 ' PORTA is analog ADCIN 0, B0 ' Read channel 0 to B0 PRO STD

ASM...ENDASM ASM {assembler code} ENDASM

PRO

STD

As instrues ASM e ENDASM PBP diz que o cdigo entre essas duas linhas em linguagem assembly e no devem ser interpretadas como declaraes PicBasic. Voc pode usar essas

duas instrues para misturar livremente cdigo de linguagem assembly com as declaraes PicBasic. O tamanho mximo para uma seo de texto assembler 8K. Este o tamanho mximo para a fonte real, incluindo os comentrios, no o cdigo gerado. Se o bloco de texto maior do que isso, divida-o em vrios ASM .. sees ENDASM ou simplesmente inclu-lo em um arquivo separado. ASM redefine a pgina de cadastro para 0. Voc deve garantir que a pgina de registo reposto a 0 antes ENDASM se o cdigo de linguagem assembly alterou-lo.Example ASM bsf PORTA, 0 ; Set bit 0 on PORTA bcf PORTB, 0 ; Clear bit 0 on PORTB ENDASM

BRANCH BRANCH Index,[Label{,Label...}]

PRO

STD

BRANCH faz com que o programa para saltar para um local diferente com base em um ndice varivel. ndice seleciona um de uma lista de rtulos. A execuo continua no rtulo indexada. Por exemplo, se o ndice igual a zero, o programa salta para a primeira etiqueta especificado na lista, se um ndice, o programa salta para o segundo rtulo, e assim por diante. Se o ndice for maior ou igual ao nmero de rtulos, nenhuma ao ser tomada ea execuo continua com a instruo seguinte a filial. At 255 (256 para 18Cxxx) etiquetas podem ser usadas em um ramo. Rtulo deve estar na mesma pgina de cdigo como a instruo de desvio. Se voc no pode ter certeza de que estar na mesma pgina de cdigo, use BRANCHL. Example BRANCH B4,[dog,cat,fish] This is the same as: If B4=0 Then dog ' goto dog If B4=1 Then cat ' goto cat If B4=2 Then fish ' goto fish See Also BRANCHL BRANCHL Index,[Label{,Label...}] BRANCHL (BRANCH long) funciona de forma muito semelhante a filial em que ele faz o programa para saltar para um local diferente com base em um ndice varivel. As principais diferenas so que ele pode saltar para um rtulo que est em uma pgina de cdigo diferente da instruo de desvio e que gera um cdigo que cerca de duas vezes o tamanho de cdigo gerado pela instruo de desvio. Se voc tiver certeza os rtulos esto na mesma pgina que a instruo de desvio ou se o micro no tem mais do que uma pgina de cdigo (2K ou menos de ROM), usando RAMO vez de BRANCHL ir minimizar o uso de memria. ndice seleciona um de uma lista de rtulos. A execuo continua no rtulo indexada. Por exemplo, se o ndice igual a zero, o programa salta para a primeira etiqueta especificado na lista, se um ndice, o programa salta para o segundo rtulo, e assim por diante. Se o ndice for maior ou igual ao nmero de rtulos, nenhuma ao ser tomada ea execuo continua PRO STD

com a instruo aps a BRANCHL. At 127 (256 para 18Cxxx) Os rtulos podem ser utilizados em uma BRANCHL. Example BRANCHL B4,[dog,cat,fish] This is the same as: If B4=0 Then dog ' goto dog If B4=1 Then cat ' goto cat If B4=2 Then fish ' goto fish See Also BUTTON BUTTON Pin,Down,Delay,Rate,BVar,Action,Label Leia pin e, opcionalmente, realiza de estabilizao e auto-repetio. Pin feita automaticamente uma entrada. Pino pode ser uma constante, 0-15, ou uma varivel que contm um nmero 0-15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). Down State of pin when button is pressed (0..1). Delay Cycle count before auto-repeat starts (0..255). If 0, no debounce or auto-repeat is performed. If 255, debounce, but no auto-repeat, is performed. Rate Auto-repeat rate (0..255). BVar Byte-sized variable used internally for delay/repeat countdown. It must be initialized to 0 prior to use and not used elsewhere in the program. Action State of button to act on (0 if not pressed, 1 if pressed). Label Execution resumes at this label if Action is true.
BUTTON precisa ser usado dentro de um loop de repetio automtica para funcionar corretamente. BUTTON realiza debounce, atrasando a execuo do programa por um perodo de milissegundos para aguardar os contatos para sossegar. O atraso de estabilizao padro 10ms. Para alterar o debounce para outro valor, use DEFINE: Example

PRO

STD

DEFINE BUTTON_PAUSE 50 ' button debounce delay is 50ms


Tenha certeza que BUTTON_PAUSE tudo em maisculas. Em geral, mais fcil do que simplesmente ler o estado do pino em um IF .. THEN do que usar o boto de comando, como se segue: If PORTB.2 = 1 Then notpressed

CALL CALL Label

PRO

STD

Executa a rotina linguagem assembly chamado Label. GOSUB normalmente usado para executar uma subrotina PicBasic. A principal diferena entre GOSUB e CALL que, com CALL, a existncia de etiqueta no verificado at o tempo de montagem. Usando CALL, uma etiqueta em uma seo linguagem assembly pode ser acessado que inacessvel para PicBasic. Example CALL pass ' Execute assembly language subroutine named _pass See Also GOSUB

CLEAR

PRO

STD

Definir tudo RAM registra a zero. Zeros Limpar a memria RAM registra em cada banco. Isto ir definir todas as variveis, incluindo as variveis de sistema interno para zero. Isto no feito automaticamente quando um programa PicBasic Pro comea como ele est em um BASIC Stamp. Em geral, as variveis devem ser definidas no programa para um estado inicial apropriado ao invs de usar CLEAR. Example CLEAR ' Clear all variables to 0 CLEARWDT Clear (tickle) the Watchdog Timer. O Watchdog Timer usado em conjunto com o SLEEP e instrues NAP para despertar o PIC aps um determinado perodo de tempo. Instrues Assembler (CLRWDT) para manter o temporizador de Watchdog de tempo limite em circunstncias normais e redefinir o PIC so automaticamente inseridos em locais adequados durante todo o programa. Example CLEARWDT ' Clear Watchdog Timer See Also NAP SLEEP COUNT COUNT Pin,Period,Var Conte o nmero de pulsos que ocorrem no Pin durante o perodo e armazena o resultado em Var. Pin feita automaticamente uma entrada. Pino pode ser uma constante, 0-15, ou uma varivel que contm um nmero 0-15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). A resoluo do Perodo em milissegundos. Ele rastreia a frequncia do oscilador baseado no OSC definido. COUNT verifica o estado de Pin em um loop e conta o baixo para transies elevados. Com um oscilador de 4MHz ele verifica o estado pin cada 20us. Com um oscilador 20MHz ele verifica o estado pin cada 4us. A partir disto, pode ser determinado que a maior frequncia de impulsos que pode ser contado 25KHz com um oscilador de 4 MHz e 125 KHz, com um oscilador de 20 MHz, se a frequncia tem um ciclo de funcionamento de 50% (a altura a mesma que a partir do tempo) . Example ' Count # of pulses on Pin1 in 100 milliseconds COUNT PORTB.1, 100, W1 ' Determine frequency on a pin COUNT PORTA.2, 1000, W1 ' Count for 1 second SEROUT PORTB.0, N2400, [W1] DATA PRO STD PRO STD PRO STD

DATA {@Location,}Constant{,Constant...} Constantes na loja no chip da EEPROM no voltil, quando o dispositivo inicialmente programadas. Se o valor de Localizao opcional omitido, a primeira instruo de dados comea a armazenar no endereo 0 e posterior armazenamento de declaraes nos seguintes locais. Se o valor local for especificado, ele denota o local de partida onde estes valores so armazenados. Uma etiqueta opcional pode ser atribudo ao endereo EEPROM partida para referncia posterior pelo programa. Constante pode ser uma constante numrica ou uma constante de cadeia. Apenas o byte menos significativo de valores numricos so armazenadas a menos que o modificador palavra usada. Strings so armazenados como bytes consecutivos de valores ASCII. No comprimento ou terminator adicionado automaticamente. DATA s funciona com microcontroladores com on-chip EEPROM como o PIC16F84 e PIC16C84. No vai funcionar em dispositivos com on-chip EEPROM serial I2C interface como o 12CE67x e peas 16CE62x. Desde EEPROM uma memria no-voltil, os dados permanecero intactos, mesmo se a energia desligada. Os dados so armazenados no espao de EEPROM apenas uma vez, no momento em que o microcontrolador programado e no cada vez que o programa executado. WRITE pode ser usado para definir os valores da EEPROM on-chip em tempo de execuo. Example ' Store 10, 20 and 30 starting at location 5 DATA @5,10,20,30 ' Assign a label to a word at the next location dlabel DATA word $1234 ' Stores $34, $12 ' Skip 4 locations and store 10 0s DATA (4), 0(10) See Also WRITE

DEBUG DEBUG Item {,Item...}

PRO

STD

Send one or more items to a predefined pin at a predefined baud rate in standard asynchronous format using 8 data bits, no parity and 1 stop bit (8N1). The pin is automatically made an output. If a pound sign (#) precedes an Item, the ASCII representation for each digit is sent serially. DEBUG also supports the same data modifiers as SEROUT2. Modifier {I}{S}BIN{1..16} {I}{S}DEC{1..5} {I}{S}HEX{1..4} REP c\n STR ArrayVar{\n} Operation Send binary digits Send decimal digits Send hexadecimal digits Send character c repeated n times Send string of n characters

DEBUG uma das vrias funes embutidas seriais assncronos. a menor das rotinas de software gerado srie. Ele pode ser usado para enviar as informaes de depurao (variveis,

posio do programa marcadores, etc) para um programa de terminal como Hyperterm ou a janela de Comunicao Serial em MicroCode Studio. Tambm pode ser utilizado em qualquer altura sada srie desejada em um pino fixo a uma taxa de transmisso fixa. O pino de srie e taxa de transmisso so especificados usando define. Por exemplo, ' Set Debug pin port DEFINE DEBUG_REG PORTB ' Set Debug pin bit DEFINE DEBUG_BIT 0 ' Set Debug baud rate DEFINE DEBUG_BAUD 2400 ' Set Debug mode: 0 = true, 1 = inverted DEFINE DEBUG_MODE 1 DEBUG assume um oscilador de 4MHz ao gerar o seu calendrio bit. Para manter o sincronismo taxa de transmisso adequada com outros valores de oscilador, certifique-se de definir a configurao OSC para qualquer valor oscilador diferente. Em alguns casos, as taxas de transmisso de instrues de depurao pode apresentar caracteres muito rapidamente para o dispositivo de recepo. A DEFINE acrescenta pacing personagem para as transmisses de sada srie. Isso permite que o tempo adicional entre os personagens como eles so transmitidos. O ritmo carter DEFINE permite um atraso de 1 a 65.535 microssegundos (,001-65,535 milissegundos) entre cada caractere transmitido. Por exemplo, para fazer uma pausa de 1 milissegundo entre a transmisso de cada personagem: DEFINE DEBUG_PACING 1000 Enquanto single-chip conversores RS-232 nvel so comuns e baratos, graas a atual RS-232 implementao eo excelente I / O especificaes do PIC, a maioria das aplicaes no necessitam de conversores de nvel. Em vez disso, inverte TTL (DEBUG_MODE = 1) pode ser usado. Um resistor de limitao de corrente sugerido (RS-232 suposto ser de curto tolerante). See Also DEBUGIN SEROUT2 DISABLE PRO STD

Desativar a depurao e processamento de interrupo seguir esta instruo. Interrupes ainda pode ocorrer, mas o manipulador de interrupo BASIC no programa Pro PicBasic eo monitor de depurao no ser executada at que uma ATIVAR encontrado. Desabilitar e habilitar so mais como pseudo-ops em que do as indicaes do compilador, ao invs de realmente gerar cdigo. Example DISABLE ' Disable interrupts in handler myint: led = 1 ' Turn on LED when interrupted RESUME ' Return to main program ENABLE ' Enable interrupts after handler See Also ENABLE ON DEBUG ON INTERRUPT

DIV32 DIV32 Number

PRO

STD

PBPs multiplicar (*) opera como uma funo de 16 bits x 16 bits multiplicam produzindo um resultado de 32 bits. No entanto, uma vez que o compilador s suporta um tamanho mximo varivel de 16 bits, o acesso ao resultado tinha que acontecer em duas etapas: C = B * A volta dos 16 bits mais baixos do multiplicam enquanto d = b ** uma volta superior a 16 bits. No havia nenhuma maneira de acessar o resultado de 32 bits como uma unidade. Em muitos casos desejvel ser possvel dividir todo o resultado da multiplicao de 32 bits, um nmero de 16 bits para o clculo da mdia ou dimensionamento. Uma nova funo foi adicionada para esta finalidade chamado DIV32. DIV32 realmente limitado a dividir um inteiro sem sinal de 31 bits (max 2147483647) por um 15-bit unsigned integer (max 32767). Isso deve ser suficiente na maioria dos casos. medida que o compilador s permite um tamanho mximo de 16 bits varivel, que depende DIV32 uma multiplicao foi apenas realizada, e as variveis internas compilador ainda contm o resultado da multiplicao de 32 bits. Nenhuma outra operao pode ocorrer entre a multiplicao e o Div32 ou as variveis internas podem ser alterados, destruindo o resultado da multiplicao de 32 bits. Isto significa, entre outras coisas, que ON interrupo deve ser desativado antes de se multiplicam at que o DIV32. Se a interrupo especfica no utilizado, no h necessidade de adicionar DESACTIVAR para o programa. Interrupes na montador deve ter nenhum efeito sobre as variveis internas, de modo que eles podem ser utilizados sem ter em conta a DIV32. Example a VAR b VAR c VAR dummy WORD WORD WORD VAR WORD

b = 500 c = 1000 DISABLE ' Necessary if On Interrupt used dummy = b * c ' Could also use ** or */ a = DIV32 100 ENABLE ' Necessary if On Interrupt used Este programa atribui o valor de 500 b e c o valor 1000. Quando multiplicados juntos, o resultado seria 500 mil. Este nmero excede o tamanho de palavra de 16 bits de uma varivel (65535). Assim, a varivel dummy contm apenas os 16 bits mais baixos do resultado. Em qualquer caso, no utilizada pela funo Div32. Div32 utiliza as variveis internas ao compilador como os operandos. Neste exemplo, Div32 divide o resultado da multiplicao de 32 bits b *, c, 100 e armazena o resultado da diviso, 5000, na varivel de uma palavra de tamanho. See Also MATH OPERATORS

DTMFOUT DTMFOUT Pin,{Onms,Offms,}[Tone{,Tone...}]

PRO

STD

Produzir DTMF toque sequncia de tons em Pin. Pin feita automaticamente uma sada. Pino pode ser uma constante, 0-15, ou uma varivel que contm um nmero 0-15 (por exemplo, B0)

ou um nome de pino (por exemplo PORTA.0). Onms o nmero de milissegundos a soar cada tom e Offms o nmero de milissegundos de pausa entre cada tom. Se eles no forem especificados, o padro Onms para os padres de 200ms e Offms para 50ms. Tons so numeradas 0-15. Tons 0-9 so os mesmos que num teclado de telefone. Tom 10 a tecla *, Tone 11 a tecla # e Tons 12-15 correspondem s teclas AD estendida. DTMFOUT FREQOUT usa para gerar os tons duplos. FREQOUT gera tons utilizando uma forma de modulao de largura de pulso. Os dados brutos que saem do pino parece muito assustador. Algum tipo de filtro normalmente necessrio para suavizar o sinal para uma onda senoidal se livrar de alguns dos harmnicos que so gerados. DTMFOUT funciona melhor com um oscilador de 20MHz. Ele tambm pode trabalhar com um oscilador de 10MHz e at mesmo em 4MHz, embora ele vai comear a ficar muito difcil filtrar e ser bastante baixa amplitude. Qualquer outra frequncia causar DTMFOUT para gerar uma frequncia que um rcio entre o oscilador real usado e 20MHz que no ser muito til para enviar tons DTMF. Example ' Send DTMF tones for 212 on Pin1 DTMFOUT PORTB.1,[2,1,2] See Also FREQOUT EEPROM EEPROM {Location,}[Constant{,Constant...}] Armazenar constantes no on-chip EEPROM. Se o valor de Localizao opcional for omitido, a primeira declarao EEPROM comea a armazenar no endereo 0 e posterior armazenamento de declaraes nos seguintes locais. Se o valor local for especificado, ele denota o local de partida onde estes valores so armazenados. Constante pode ser uma constante numrica ou uma constante de cadeia. Apenas o byte menos significativo de valores numricos so armazenados. Strings so armazenados como bytes consecutivos de valores ASCII. No comprimento ou terminator adicionado automaticamente. EEPROM s funciona com microcontroladores com on-chip EEPROM como o PIC16F84 e PIC16C84. No vai funcionar em dispositivos com on-chip EEPROM serial I2C interface como o 12CE67x e peas 16CE62x. Desde EEPROM uma memria no-voltil, os dados permanecero intactos, mesmo se a energia desligada. Os dados so armazenados no espao de EEPROM apenas uma vez, no momento em que o microcontrolador programado e no cada vez que o programa executado. WRITE pode ser usado para definir os valores da EEPROM on-chip em tempo de execuo. Example ' Store 10, 20 and 30 starting at location 5 EEPROM 5,[10,20,30] See Also WRITE ENABLE PRO STD PRO STD

ENABLE depure e interromper o processamento que antes era desactivada a seguir esta instruo. Desabilitar e habilitar so mais como pseudo-ops em que do as indicaes do compilador, ao invs de realmente gerar cdigo.

Example DISABLE ' Disable interrupts in handler myint: led = 1 ' Turn on LED when interrupted RESUME ' Return to main program ENABLE ' Enable interrupts after handler See Also DISABLE ON DEBUG ON INTERRUPT END PRO STD

Pare a execuo do programa e entrar no modo de baixo consumo de energia. Todos os pinos de E / S permanecer em seu estado atual. END funciona por meio da execuo de uma instruo SLEEP continuamente em um loop. Um fim ou interrupo ou GOTO deve ser colocado no final de cada programa para mant-lo de cair fora da final da memria e comear de novo. See Also SLEEP STOP GOTO ERASECODE ERASECODE Block Alguns flash PIC MCUs, como a srie PIC18Fxxx, exigem uma parte do espao de cdigo a ser apagada antes que ele possa ser reescrita com WRITECODE. Nestes dispositivos, um apagamento realizado um bloco de cada vez. Um bloco de apagamento pode ser de 32 palavras (64 bytes), ou outro tamanho, dependendo do dispositivo. Consulte a folha de dados Microchip para obter informaes sobre o tamanho do bloco de apagar para o particular PIC MCU voc est usando. A primeira localizao do bloco a ser apagada deve ser especificada pelo bloco. Bloco um endereo de byte, em vez de um endereo de palavra, para dispositivos PIC18Fxxx. Tenha cuidado para no especificar um bloco que contm o cdigo do programa. Programa Flash escreve deve ser ativado na configurao para o PIC MCU em tempo de programao do dispositivo para ERASECODE para ser capaz de apagar. Usando esta instruo em dispositivos que no suportam o bloco de apagar causar um erro de compilao. Example ERASECODE $100 ' Erase code block starting at location $100 See Also WRITECODE READCODE PRO STD

FOR...NEXT

PRO

STD

FOR Count = Start TO End {STEP {-} Inc} {Body} NEXT {Count} O FOR .. Next loop permite que programas para executar uma srie de declaraes de um determinado nmero de vezes, utilizando uma varivel como um contador. Devido sua complexidade e versatilidade, FOR .. NEXT melhor descrita passo a passo: 1. O valor de Start atribudo varivel ndice, Conde. Contagem pode ser uma varivel de qualquer tipo. 2. O corpo executado. O corpo opcional e pode ser omitida (talvez para um loop de atraso). 3. O valor de Inc adicionada (ou subtrada se "-" especificado) Contagem. Se nenhuma clusula PASSO definido, contagem incrementada por um. 4. Se Conde no passou End ou estourou o tipo varivel, a execuo retorna ao Passo 2. Se o loop precisa contar para mais de 255, uma palavra de tamanho varivel deve ser usado. Example FOR i = 1 TO 10 ' Count from 1 to 10 SEROUT 0,N2400,[#i, ] ' Send each number to Pin0 serially NEXT i ' Go back to and do next count SEROUT 0,N2400,[10] ' Send a linefeed FOR B2 = 20 TO 10 STEP -2 ' Count from 20 to 10 by 2 SEROUT 0,N2400,[#B2, ] ' Send each number to Pin0 serially NEXT B2 ' Go back to and do next count SEROUT 0,N2400,[10] ' Send a linefeed See Also WHILE...WEND REPEAT...UNTIL FREQOUT FREQOUT Pin,Onms,Frequency1{,Frequency2} Produzir a freqncia (s) em Pin para milissegundos Onms. Pin feita automaticamente uma sada. Pino pode ser uma constante, 0-15, ou uma varivel que contm um nmero 0-15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). Uma ou duas diferentes frequncias de 0 a 32767 hertz podem ser produzidas ao mesmo tempo. FREQOUT gera tons utilizando uma forma de modulao de largura de pulso. Os dados brutos que saem do pino parece muito assustador. Algum tipo de filtro normalmente necessrio para suavizar o sinal para uma onda senoidal se livrar de alguns dos harmnicos que so gerados. FREQOUT funciona melhor com um oscilador de 20MHz. Ele tambm pode trabalhar com um oscilador de 10MHz e at mesmo em 4MHz, embora ele vai comear a ficar muito difcil filtrar e ser bastante baixa amplitude. Qualquer outra frequncia causar FREQOUT para gerar uma frequncia que um rcio entre o oscilador real usado e 20MHz. Example ' Send 1KHz tone on Pin1 for 2 seconds FREQOUT PORTB.1,2000,1000 See Also PRO STD

SOUND DTMFOUT PWM GOSUB GOSUB Label Ir para a sub-rotina de salvar o endereo de retorno na pilha Label. Ao contrrio de GOTO, quando uma instruo RETURN atingido, a execuo recomea com a instruo aps a ltima declarao GOSUB executado. Um nmero ilimitado de sub-rotinas podem ser utilizados num programa. Sub-rotinas tambm podem ser aninhados. Em outras palavras, possvel para uma sub-rotina para chamar uma outra subrotina. Essa sub-rotina do assentamento deve ser restrito a um mximo de quatro nveis de profundidade. Example GOSUB beep ' Execute subroutine named beep ... beep: HIGH 0 ' Turn on LED connected to Pin0 SOUND 1,[80,10] ' Beep speaker connected to Pin1 LOW 0 ' Turn off LED connected to Pin0 RETURN ' Go back to main routine that called us See Also RETURN GOTO BRANCH BRANCHL PRO STD

GOTO GOTO Label A execuo do programa continua com as demonstraes de Label. Example GOTO send ' Jump to statement labeled send ... send: SEROUT 0,N2400,["Hi"] ' Send Hi out Pin0 serially See Also GOSUB BRANCH BRANCHL HIGH HIGH Pin

PRO

STD

PRO

STD

Faa o Pin especificado alta. Pin feita automaticamente uma sada. Pino pode ser uma constante, 0-15, ou uma varivel que contm um nmero 0-15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). Example

HIGH 0 ' Make Pin0 an output and set it high (~5 volts) HIGH PORTA.0 ' Make PORTA, pin 0 an output and set it high (~5 volts) led VAR PORTB.0 ' Define LED pin HIGH led ' Make LED pin an output and set it high (~5 volts) Em alternativa, se o pino j uma sada, uma maneira muito mais rpida e mais curta (a partir de um ponto de vista de cdigo gerado) para defini-la elevada seria: PORTB.0 = 1 ' Set PORTB pin 0 high See Also LOW HPWM HPWM Channel,Dutycycle,Frequency HPWM executado continuamente em segundo plano enquanto o programa est fazendo outras coisas. Canal especifica qual o canal PWM hardware de usar. Alguns dispositivos possuem 1, 2 ou 3 canais PWM. Em dispositivos com dois canais, a frequncia deve ser o mesmo em ambos os canais. Dutycycle especifica o on / off ratio (alta / baixa) do sinal. Ele varia de 0 a 255, onde 0 off (baixo o tempo todo) e 255 est em (alto) o tempo todo. Um valor de 127 d um ciclo de funcionamento de 50% (onda quadrada). A freqncia a freqncia desejada do sinal PWM. Nem todas as freqncias esto disponveis em todas as configuraes de oscilador. A menor freqncia de 4MHz 245Hz. A maior freqncia em qualquer velocidade oscilador 32767Hz. A menor frequncia HPWM utilizvel em cada regulao do oscilador mostrada na tabela seguinte: OSC 4MHz 8MHz 10MHz 12MHz 16MHz 20MHz 24MHz 33MHz 40MHz 14-bit core and 18Cxxx 145Hz 489Hz 611Hz 733Hz 977Hz 1221Hz 1465Hz 2015Hz 2442Hz 17Cxxx 3907Hz 7813Hz 9766Hz 11719Hz 15625Hz 19531Hz 23438Hz 32227Hz na PRO STD

Alguns dispositivos, tais como o PIC18C452, tm pinos alternativos que podem ser utilizados para HPWM. A seguir define permitir utilizar os pinos: DEFINE DEFINE DEFINE DEFINE CCP1_REG CCP1_BIT CCP2_REG CCP2_BIT PORTC 'Hpwm 1 2 'Hpwm 1 pin PORTC 'Hpwm 2 1 'Hpwm 2 pin pin port bit pin port bit

A seguir define especificar quais temporizador, 1 ou 2, para uso com o canal 2 de PWM e PWM canal 3 para os dispositivos PIC17C7xx. O padro um temporizador se no DEFINE especificado.

DEFINE HPWM2_TIMER 1 'Hpwm 2 timer select DEFINE HPWM3_TIMER 1 'Hpwm 3 timer select Example HPWM 1,127,1000 ' Send a 50% duty cycle PWM signal at 1kHz HPWM 1,64,200 ' Send a 25% duty cycle PWM signal at 2kHz See Also PWM

HSERIN HSERIN {ParityLabel,}{Timeout,Label,}[Item{,...}]

PRO

STD

Receba um ou mais itens a partir do porto de srie do hardware em dispositivos que suportam comunicaes seriais assncronas em hardware. HSERIN uma das vrias funes embutidas seriais assncronos. Ela s pode ser utilizado com dispositivos que tenham um USART hardware. Consulte a folha de dados do dispositivo para obter informaes sobre o pino de entrada de srie e outros parmetros. Os parmetros de srie e taxa de transmisso so especificados usando define: ' Set receive register to receiver enabled DEFINE HSER_RCSTA 90h ' Set transmit register to transmitter enabled DEFINE HSER_TXSTA 20h ' Set baud rate DEFINE HSER_BAUD 2400 ' Set SPBRG directly (normally set by HSER_BAUD) DEFINE HSER_SPBRG 25 HSERIN assume um oscilador de 4MHz para o clculo da taxa de transmisso. Para manter o sincronismo taxa de transmisso adequada com outros valores de oscilador, certifique-se de definir a configurao OSC para o novo valor do oscilador. Um tempo limite opcional e Etiqueta podem ser includos para permitir que o programa continue se um personagem no for recebido dentro de um determinado perodo de tempo. Timeout especificado em unidades de 1 milissegundo. Os padres de dados seriais formato para 8N1, 8 bits de dados, sem bit de paridade e 1 bit de parada. 7E1 (7 bits de dados, paridade par, um bit de parada) ou 7O1 (bits 7data, paridade mpar, 1 bit de parada) pode ser ativado atravs de um dos seguintes define: ' Use only if even parity desired DEFINE HSER_EVEN 1 ' Use only if odd parity desired DEFINE HSER_ODD 1 O ajuste de paridade, juntamente com todos os outros HSER define, afetar tanto Herin e HSEROUT. Um ParityLabel opcional pode ser includo na declarao. O programa vai continuar neste local, se um personagem com um erro de paridade recebido. Ele s deve ser usado se a paridade habilitado usando uma define o anterior. Uma vez que a ordem de recepo feita em hardware, no possvel fixar os nveis de um estado invertido para

eliminar um driver RS-232. Portanto, um driver adequado deve ser usado com HSERIN. HSERIN suporta os mesmos dados que modificadores SERIN2 faz. Modifier BIN{1..16} DEC{1..5} HEX{1..4} SKIP n STR ArrayVar\n{\c} WAIT ( ) WAITSTR ArrayVar{\n} Operation Receive binary digits Receive decimal digits Receive hexadecimal digits Skip n received characters Receive string of n characters optionally ended in character c Wait for sequence of characters Wait for character string

Em dispositivos 17Cxxx com duas portas seriais, HSERIN s vai acessar a primeira porta. A segunda porta deve ser criado e ler, acessando os registros diretamente. See Also SERIN SERIN2 SEROUT SEROUT2 HSEROUT

HSEROUT HSEROUT [Item {,Item...}]

PRO

STD

Envie um ou mais itens para a porta serial hardware em dispositivos que suportam comunicaes seriais assncronas em hardware. HSEROUT um dos vrios built-in funes seriais assncronos. Ela s pode ser utilizado com dispositivos que tenham um USART hardware. Consulte a folha de dados do dispositivo para obter informaes sobre o pino de sada serial e outros parmetros. Os parmetros de srie e taxa de transmisso so especificados usando define: ' Set receive register to receiver enabled DEFINE HSER_RCSTA 90h ' Set transmit register to transmitter enabled DEFINE HSER_TXSTA 20h ' Set baud rate DEFINE HSER_BAUD 2400 ' Set SPBRG directly (normally set by HSER_BAUD) DEFINE HSER_SPBRG 25 HSEROUT assume um oscilador de 4MHz para o clculo da taxa de transmisso. Para manter o sincronismo taxa de transmisso adequada com outros valores de oscilador, certifique-se de definir a configurao OSC para o novo valor do oscilador. Os padres de dados seriais

formato para 8N1, 8 bits de dados, sem bit de paridade e 1 bit de parada. 7E1 (7 bits de dados, paridade par, um bit de parada) ou 7O1 (bits 7data, paridade mpar, 1 bit de parada) pode ser ativado atravs de um dos seguintes define:' Use only if even parity desired DEFINE HSER_EVEN 1 ' Use only if odd parity desired DEFINE HSER_ODD 1 O ajuste de paridade, juntamente com todos os outros HSER define, afetar tanto HSERIN e HSEROUT. Uma vez que a transmisso em srie feita no hardware, no possvel fixar os nveis de um estado invertido para eliminar um driver RS-232. Portanto, um driver adequado deve ser usado com HSEROUT. HSEROUT suporta os mesmos dados que modificadores SEROUT2 faz. Modifier {I}{S}BIN{1..16} {I}{S}DEC{1..5} {I}{S}HEX{1..4} REP c\n STR ArrayVar{\n} Operation Send binary digits Send decimal digits Send hexadecimal digits Send character c repeated n times Send string of n characters

Em dispositivos 17Cxxx com duas portas seriais, HSEROUT s vai acessar a primeira porta. A segunda porta deve ser criado e ler, acessando os registros diretamente. ' Send the decimal value of B0 followed by a linefeed out the hardware USART HSEROUT [dec B0,10] See Also SERIN SERIN2 HSERIN SEROUT SEROUT2 HSERIN2 PRO STD

HSERIN2 {ParityLabel,}{Timeout,Label,}[Item{,...}] Receba um ou mais itens a partir da segunda porta serial hardware em dispositivos que suportam comunicaes seriais assncronas em hardware. HSERIN2 um dos vrios built-in funes seriais assncronos. Ela s pode ser utilizado com dispositivos que tenham um USART hardware. Consulte a folha de dados do dispositivo para obter informaes sobre o pino de entrada de srie e outros parmetros. Os parmetros de srie e taxa de transmisso so especificados usando define:' Set receive register to receiver enabled DEFINE HSER2_RCSTA 90h ' Set transmit register to transmitter enabled DEFINE HSER2_TXSTA 20h ' Set baud rate DEFINE HSER2_BAUD 2400 ' Set SPBRG directly (normally set by HSER_BAUD) DEFINE HSER2_SPBRG 25

HSERIN2 assume um oscilador de 4MHz para o clculo da taxa de transmisso. Para manter o sincronismo taxa de transmisso adequada com outros valores de oscilador, certifique-se de definir a configurao OSC para o novo valor do oscilador. Um tempo limite opcional e Etiqueta podem ser includos para permitir que o programa continue se um personagem no for recebido dentro de um determinado perodo de tempo. Timeout especificado em unidades de 1 milissegundo. Os padres de dados seriais formato para 8N1, 8 bits de dados, sem bit de paridade e 1 bit de parada. 7E1 (7 bits de dados, paridade par, um bit de parada) ou 7O1 (bits 7data, paridade mpar, 1 bit de parada) pode ser ativado atravs de um dos seguintes define: ' Use only if even parity desired DEFINE HSER2_EVEN 1 ' Use only if odd parity desired DEFINE HSER2_ODD 1 O ajuste de paridade, juntamente com todos os outros HSER2 define, afetar tanto HSERIN2 e HSEROUT2. Um ParityLabel opcional pode ser includo na declarao. O programa vai continuar neste local, se um personagem com um erro de paridade recebido. Ele s deve ser usado se a paridade habilitado usando uma define o anterior. Uma vez que a ordem de recepo feita em hardware, no possvel fixar os nveis de um estado invertido para eliminar um driver RS-232. Portanto, um driver adequado deve ser usado com HSERIN2. HSERIN2 suporta os mesmos dados que modificadores SERIN2 faz. Modifier BIN{1..16} DEC{1..5} HEX{1..4} SKIP n STR ArrayVar\n{\c} WAIT ( ) WAITSTR ArrayVar{\n} Operation Receive binary digits Receive decimal digits Receive hexadecimal digits Skip n received characters Receive string of n characters optionally ended in character c Wait for sequence of characters Wait for character string

I2CREAD

PRO

STD

I2CREAD DataPin,ClockPin,Control,{Address,}[Var{,Var...}]{,Label} Enviar Controle e bytes Endereo opcionais o clockPin e dataPin e armazenar o byte (s) recebido em Var. ClockPin dataPin e pode ser uma constante, 0-15, ou uma varivel que contm um nmero 0-15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). I2CREAD I2CWRITE e pode ser utilizado para ler e escrever dados para uma EEPROM em srie com uma interface I2C 2 fios, tais como o Microchip 24LC01B e dispositivos semelhantes. Isso permite que os dados sejam armazenados na memria no-voltil externo de modo que pode ser mantida mesmo aps a alimentao desligada. Estes comandos operar no modo mestre I2C e tambm pode ser usado para falar com outros dispositivos com uma interface I2C como sensores de temperatura e conversores A / D. A parte superior 7 bits do byte de controle conter o cdigo de controlo, juntamente com informao de endereo de chip select ou adicional, dependendo do dispositivo em particular. O bit de baixa ordem um sinalizador interno indicando se uma leitura ou escrita

de comando e deve ser mantido limpo. Este formato para o byte de controle diferente do formato usado pelo compilador PicBasic originais. Certifique-se de usar este formato, com operaes I2C PicBasic. Por exemplo, ao se comunicar com um 24LC01B, o cdigo de controle % 1010 e seleciona o chip no so utilizadas de modo que o byte de controle seriam% ou US $ 10,1 milhes A0. Formatos de bytes de controle para algumas das diferentes partes seguintes: Device Capacity Control Address size 1 byte 1 byte 1 byte 1 byte 1 byte 2 bytes 2 bytes

24LC01B 128 bytes %1010xxx0 24LC02B 256 bytes %1010xxx0 24LC04B 512 bytes %1010xxb0 24LC08B 1K bytes %1010xbb0

24LC16B 2K bytes %1010bbb0 24LC32B 4K bytes %1010ddd0 24LC65 8K bytes %1010ddd0

bbb = block select (high order address) bits ddd = device select bits xxx = don't care O tamanho de endereos enviados (byte ou palavra) determinado pelo tamanho da varivel que utilizada. Se um byte de tamanho varivel usada para o endereo, um endereo de 8 bits enviado. Se uma palavra de tamanho varivel, utilizado um endereo de 16 bits enviado. Certifique-se de usar a varivel de tamanho apropriado para o dispositivo que voc deseja comunicar. Constantes no deve ser usada para o endereo como o tamanho pode variar consoante o tamanho da constante. Se uma palavra-Var tamanho seja especificado, dois bytes so lidos e armazenados no byte alto Var em primeiro lugar, seguido pelo byte baixo. Esta ordem diferente da forma como as variveis so normalmente armazenados, byte mais baixo primeiro. Um modificador, STR, pode ser includo antes do nome da varivel. Isso pode carregar uma matriz inteira (string) de uma s vez. Se STR for especificado, a seguinte varivel deve ser o nome de uma palavra ou um array de bytes, seguido por uma barra invertida (\) e uma contagem: a VAR byte[8] I2CREAD PORTC.4,PORTC.3,$a0,0,[STR a\8] Se uma matriz palavra de tamanho for especificado, os dois bytes que compem cada elemento so ler byte mais baixo primeiro. Isto o oposto do que palavras simples so lidos, e consistente com a forma como o compilador normalmente armazena palavra de tamanho variveis. Se a etiqueta opcional, esta etiqueta ir ser saltado para reconhecer se um no for recebido a partir do dispositivo de I2C. As instrues I2C pode ser usado para acessar o onchip de srie EEPROM nos dispositivos 12CExxx e 16CExxx. Basta especificar os nomes de pinos para as linhas internas apropriadas como parte do comando I2C e coloque o seguinte DEFINE no topo do programa: DEFINE I2C_INTERNAL 1 Para os dispositivos 12CE67x, a linha de dados GPIO.6 e a linha do relgio GPIO.7. Para os dispositivos 16CE62x, a linha de dados EEINTF.1 e a linha do relgio EEINTF.2. Consulte as folhas de dados Microchip para esses dispositivos para obter mais informaes. O momento das instrues I2C definido de modo que os dispositivos de velocidade padro (100KHz) ser acessvel a velocidades de clock de at 8MHz. Dispositivos de modo rpido (400KHz) pode ser usado at 20MHz. Se for desejada para aceder a um dispositivo de alta velocidade padro s acima 8MHz, devem ser adicionados ao programa a seguir definidos:

DEFINE I2C_SLOW 1 Transferncia no barramento I2C pode ser interrompido pelo dispositivo receptor por sua segurando a linha de clock baixo. Para ativar esse o seguinte DEFINE devem ser adicionados ao programa: DEFINE I2C_HOLD 1 O relgio I2C e linhas de dados deve ser puxado at Vcc com um resistor de 47K, pois so ambos executados de forma open-coletor bi-direcional. Para fazer o I2C relgio linha bipolar em vez de coletor aberto podem ser adicionados ao programa o seguinte DEFINE: DEFINE I2C_SCLOUT 1 addr VAR byte cont CON %10100000 addr = 17 ' Set address to 17 ' Read data at address 17 into B2 I2CREAD PORTA.0,PORTA.1,cont,addr,[B2] Veja a Microchip no-voltil Memria produtos Data Book para obter mais informaes sobre estes e outros dispositivos que podem ser usados com os comandos I2CWRITE I2CREAD e. I2CWRITE PRO STD

I2CWRITE DataPin,ClockPin,Control,{Address,}[Value{,Value...}]{,Label} I2CWRITE envia Controle e opcional Endereo o clockPin I2C e dataPin seguido pelo Valor. ClockPin dataPin e pode ser uma constante, 0-15, ou uma varivel que contm um nmero 015 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). O tamanho de endereos enviados (byte ou palavra) determinado pelo tamanho da varivel que utilizada. Se um byte de tamanho varivel usada para o endereo, um endereo de 8 bits enviado. Se uma palavra de tamanho varivel, utilizado um endereo de 16 bits enviado. Certifique-se de usar a varivel de tamanho apropriado para o dispositivo que voc deseja comunicar. Constantes no deve ser usada para o endereo como o tamanho pode variar consoante o tamanho da constante. Ao escrever para a EEPROM de srie necessrio esperar 10 ms (dependendo do dispositivo) para a gravao seja concluda antes de tentar a comunicao com o dispositivo novamente. Se um ou I2CREAD I2CWRITE subsequente tentada antes da gravao est concluda, o acesso ser ignorado. Enquanto uma nica instruo I2CWRITE pode ser usado para escrever vrios bytes de uma vez, isso pode violar a exigncia de tempo de gravao acima para EEPROMs seriais. Alguns EEPROMS de srie que voc escrever vrios bytes em uma nica pgina, antes exigindo a espera. Verifique a folha de dados para o dispositivo especfico que voc est usando para esses detalhes. O recurso de gravao mltipla byte tambm pode ser til a outros que EEPROMs seriais que no tm de esperar entre escreve dispositivos I2C. Se um valor de palavra de tamanho seja especificado, dois bytes so enviados, byte elevado em primeiro lugar, seguido pelo byte baixo. Esta ordem diferente da forma como as variveis so normalmente armazenados, byte mais baixo primeiro. Um modificador, STR, pode ser includo antes do nome da varivel. Isso pode ser usado para escrever uma matriz inteira (string) de uma vez e tirar proveito de uma EEPROM de srie; s modo de pgina. Os dados devem caber em uma nica pgina SEEPROM. O tamanho da pgina dependente do dispositivo SEEPROM particular. Se STR for especificado, a seguinte varivel deve ser o nome de uma palavra ou um array de bytes, seguido por uma barra invertida (\) e uma contagem: a VAR byte[8] I2CWRITE PORTC.4,PORTC.3,$a0,0,[STR a\8] Se uma matriz palavra de tamanho for especificado, os dois bytes que compem cada elemento so escritas byte mais baixo primeiro. Isto o oposto do que simples palavras so

escritas e consistente com a forma como o compilador normalmente armazena palavra de tamanho variveis. Se a etiqueta opcional, esta etiqueta ir ser saltado para reconhecer se um no for recebido a partir do dispositivo de I2C. As instrues I2C pode ser usado para acessar o on-chip de srie EEPROM nos dispositivos 12CExxx e 16CExxx. Basta especificar os nomes de pinos para as linhas internas apropriadas como parte do comando I2C e coloque o seguinte DEFINE no topo do programa: DEFINE I2C_INTERNAL 1 Para os dispositivos 12CE67x, a linha de dados GPIO.6 e a linha do relgio GPIO.7. Para os dispositivos 16CE62x, a linha de dados EEINTF.1 e a linha do relgio EEINTF.2. Consulte as folhas de dados Microchip para esses dispositivos para obter mais informaes. O momento das instrues I2C definido de modo que os dispositivos de velocidade padro (100KHz) ser acessvel a velocidades de clock de at 8MHz. Dispositivos de modo rpido (400KHz) pode ser usado at 20MHz. Se for desejada para aceder a um dispositivo de alta velocidade padro s acima 8MHz, devem ser adicionados ao programa a seguir definidos: DEFINE I2C_SLOW 1 Transferncia no barramento I2C pode ser interrompido pelo dispositivo receptor por sua segurando a linha de clock baixo. Para ativar esse o seguinte DEFINE devem ser adicionados ao programa: DEFINE I2C_HOLD 1 Para fazer o I2C relgio linha bipolar em vez de coletor aberto podem ser adicionados ao programa o seguinte DEFINE: DEFINE I2C_SCLOUT 1 Example addr VAR byte cont CON %10100000 addr = 17 ' Set address to 17 ' Send the byte 6 to address 17 I2CWRITE PORTA.0,PORTA.1,cont,addr,[6] PAUSE 10 ' Wait 10ms for write to complete addr = 1 ' Set address to 1 ' Send the byte in B2 to address 1 I2CWRITE PORTA.0,PORTA.1,cont,addr,[B2] PAUSE 10 ' Wait 10ms for write to complete IF...THEN PRO STD

' PRO and STD versions IF Comp {AND/OR Comp...} THEN Label ' PRO version only IF Comp {AND/OR Comp...} THEN Statements... ELSE Statements... ENDIF Executa uma ou mais comparaes. Cada termo Comp pode relacionar uma varivel para uma varivel constante ou outro e inclui um dos operadores de comparao. Se .. Em seguida, avalia os termos de comparao para verdadeiro ou falso. Se for avaliado como true, a operao aps o Ento executado. Se for avaliada como false, a operao aps o Ento no executado. Comparaes que avaliam a 0 so consideradas falsas. Qualquer outro valor considerado verdadeiro. Todas as comparaes so assinados. Certifique-se de usar

parnteses para especificar a ordem das operaes deve ser testado dentro Caso contrrio, a precedncia do operador vai determinar isso para voc eo resultado pode no ser o esperado. IF .. THEN pode operar em dois modos. Em um formulrio, o ento em um IF .. THEN essencialmente um GOTO. Se a condio for verdadeira, o programa v para o rtulo aps o THEN. Se a condio for avaliada como false, o programa continuar na prxima linha aps o IF .. THEN. Outra afirmao no podem ser colocados depois de o ento, deve ser um rtulo. Example IF Pin0 = 0 THEN pushd ' If button connected to Pin0 is pushed (0), jump to label pushd IF B0 >= 40 THEN old ' If the value in variable B0 is greater than or equal to 40, jump to old IF PORTB.0 THEN itson ' If PORTB, pin 0 is high (1), jump to itson IF (B0 = 10) AND (B1 = 20) THEN loop Na segunda forma, IF .. THEN pode executar condicionalmente um grupo de declaraes aps o THEN. As declaraes devem ser seguidas por um ELSE ou ENDIF para completar a estrutura. IF B0 <> 10 THEN B0 = B0 + 1 B1 = B1 - 1 ENDIF IF B0 = 20 THEN led = 1 ELSE led = 0 ENDIF INPUT PRO STD

INPUT Pin Faz o pino especificado uma entrada. Pino pode ser uma constante, 0-15, ou uma varivel que contm um nmero 0-15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). Example INPUT 0 ' Make Pin0 an input INPUT PORTA.0 ' Make PORTA, pin 0 an input Alternativamente, o pino pode ser fixado a uma entrada de uma maneira muito mais rpida e mais curta (a partir de um ponto de vista de cdigo gerado): TRISB.0 = 1 ' Set PORTB, pin 0 to an input Todos os pinos em uma porta pode ser configurado para entradas, definindo todo o registro TRIS de uma s vez: TRISB = %11111111 ' Set all of PORTB to inputs LET PRO STD

{LET} Var = Value

Atribuir um valor a uma varivel. O valor pode ser uma constante, outra varivel ou o resultado de uma expresso. A palavra-chave DEIXE si opcional. Example LET B0 = B1 * B2 + B3 B0 = SQR W1 LCDOUT PRO STD

LCDOUT Item {,Item...} Exibir itens em uma tela de cristal lquido inteligente (LCD). PicBasic suporta mdulos de LCD com um controlador ou equivalente Hitachi 44780. Estes LCDs costumam ter um 14 - ou 16-pin header nico ou dual-linha em uma borda. Se um sinal de sustenido (#) precede um item, a representao ASCII para cada dgito enviado para o LCD. LCDOUT tambm pode usar qualquer um dos modificadores usados com SEROUT2. Modifier {I}{S}BIN{1..16} {I}{S}DEC{1..5} {I}{S}HEX{1..4} REP c\n STR ArrayVar{\n} Operation Send binary digits Send decimal digits Send hexadecimal digits Send character c repeated n times Send string of n characters

Um programa deve esperar por pelo menos meio segundo antes de enviar o primeiro comando a um LCD. Pode demorar um pouco para um LCD para o arranque. Os comandos so enviados para o LCD enviando uma FE $ seguido pelo comando. Alguns comandos teis esto listados na tabela seguinte: Command $FE, 1 $FE, 2 Clear display Return home (beginning of first line) Operation

$FE, $0C Cursor off $FE, $0E Underline cursor on $FE, $0F Blinking cursor on $FE, $10 Move cursor left one position $FE, $14 Move cursor right one position $FE, $C0 Move cursor to beginning of second line $FE, $94 Move cursor to beginning of third line

$FE, $D4 Move cursor to beginning of fourth line

Note-se que existe um comando para movimentar o cursor at ao incio da segunda linha de um visor de 2 linhas. Para a maioria dos LCDs, os personagens e as linhas exibidas no so consecutivos na memria de vdeo - pode haver uma pausa entre localidades. Para a maioria dos monitores 16x2, a primeira linha comea em US $ 0 e segunda linha comea em US $ 40. O comando: LCDOUT $ FE, $ C0 define o visor para iniciar a escrita de caracteres no incio da segunda linha. Exibe 16x1 so geralmente formatados como 8x2 telas com um intervalo entre as localizaes de memria para a primeira e segunda 8 caracteres. Exibe 4 linhas tambm tem um mapa de memria de at mista. Consulte a folha de dados para o dispositivo de LCD especial para os locais da memria de personagens e comandos adicionais. Example LCDOUT $FE, 1, "Hello" ' Clear display and show Hello LCDOUT B0, #B1 O LCD pode ser ligado ao PIC utilizando um bus de 4 bits ou de um bus de 8 bits. Se um barramento de 8 bits usado, todos os 8 bits deve estar em um porto. Se um nibus de 4 bits usado, ele deve ser conectado a qualquer dos 4 inferior ou superior 4 bits de uma porta. Ativar e registar Seleccione pode ser conectado a qualquer pino da porta. R / W deve ser ligada terra, como o comando LCDOUT s escrever. PicBasic asumes o LCD est ligado aos pinos especficos a menos que dito o contrrio. Ele assume o LCD vai ser usado com um nibus de 4 bits com linhas de dados DB4 - DB7 ligado ao PIC PORTA.0 - PORTA.3, Registo Selecione para PORTA.4 e Ativar para PORTB.3. Tambm pr-definido para inicializar o LCD para a exibio de linha 2. Para alterar esta configurao, coloque um ou mais dos seguintes define, tudo em maisculas, no alto do seu programa PicBasic: ' Set LCD Data port DEFINE LCD_DREG PORTB ' Set starting Data bit (0 or 4) if 4-bit bus DEFINE LCD_DBIT 4 ' Set LCD Register Select port DEFINE LCD_RSREG PORTB ' Set LCD Register Select bit DEFINE LCD_RSBIT 1 ' Set LCD Enable port DEFINE LCD_EREG PORTB ' Set LCD Enable bit DEFINE LCD_EBIT 0 ' Set LCD bus size (4 or 8 bits) DEFINE LCD_BITS 4 ' Set number of lines on LCD DEFINE LCD_LINES 2 ' Set command delay time in us DEFINE LCD_COMMANDUS 2000 ' Set data delay time in us DEFINE LCD_DATAUS 50 Essa configurao vai dizer PicBasic a 2-line LCD est ligado em modo de 4 bits com barramento de dados sobre os 4 bits de PORTB, Registo Selecione em PORTB.1 e Ativar PORTB.0. LOOKDOWN PRO STD

LOOKDOWN Search,[Constant{,Constant...}],Var

A instruo LOOKDOWN procura uma lista de valores constantes de 8 bits para a presena do valor de pesquisa. Se for encontrado, o ndice da constante correspondente armazenada em Var. Assim, se o valor encontrado pela primeira vez na lista, Var est definido para zero. Se o segundo lugar na lista, Var definido como um. E assim por diante. Se no for encontrado, nenhuma ao tomada e Var permanece inalterado. A lista constante pode ser uma mistura de numrico e constantes string. Cada caractere em uma string tratado como uma constante em separado com o valor ASCII do personagem. Variveis de matriz com um ndice de varivel no pode ser usado em LOOKDOWN embora sejam permitidas variveis de matriz com um ndice constante. At 255 (256 para 18Cxxx) constantes so permitidas na lista. Example SERIN 1,N2400,B0 ' Get hexadecimal character from Pin1 serially LOOKDOWN B0,["0123456789ABCDEF"],B1 ' Convert hexadecimal character in B0 to decimal value B1 SEROUT 0,N2400,[#B1] ' Send decimal value to Pin0 serially LOOKDOWN2 PRO STD

LOOKDOWN2 Search,{Test}[Value{,Value...}],Var A declarao LOOKDOWN2 pesquisa uma lista de valores para a presena do valor de pesquisa. Se for encontrado, o ndice da constante correspondente armazenada em Var. Assim, se o valor encontrado pela primeira vez na lista, Var est definido para zero. Se o segundo lugar na lista, Var definido como um. E assim por diante. Se no for encontrado, nenhuma ao tomada e Var permanece inalterado. O parmetro de teste opcional pode ser usado para executar um teste para a outra que ou igual a (A = @), enquanto que a lista de pesquisa. Por exemplo, a lista pode ser pesquisado para o primeiro valor maior do que o parmetro de pesquisa usando A> @ como o parmetro de teste. Se o teste deixado de fora, A = @ assumido. A lista de Valor pode ser uma mistura de constantes e variveis numricas e string de 16 bits. Cada caractere em uma string tratado como uma constante em separado igual ao valor ASCII do personagem. As expresses no podem ser utilizados na lista valor, ainda que possam ser utilizados como o valor de pesquisa. Variveis de matriz com um ndice de varivel no pode ser usado em LOOKDOWN2 embora sejam permitidas variveis de matriz com um ndice constante. At 85 (256 para 18Cxxx) valores so permitidos na lista. LOOKDOWN2 gera cdigo que cerca de 3 vezes maior do que LOOKDOWN. Se a lista de pesquisa feita s de constantes de 8 bits e cordas, use LOOKDOWN. Example LOOKDOWN2 W0,[512,W1,1024],B0 LOOKDOWN2 W0,<[10,100,1000],B0 LOOKUP PRO STD

LOOKUP Index,[Constant{,Constant...}],Var A instruo de pesquisa podem ser usadas para recuperar os valores de uma tabela de constantes de 8 bits. Se o ndice zero, Var est definido para o valor do primeiro Constant. Se o ndice um, Var est definido para o valor do segundo Constant. E assim por diante. Se o ndice maior que ou igual ao nmero de entradas na lista constante, nenhuma aco tomada e Var permanece inalterado. A lista constante pode ser uma mistura de numrico e constantes string. Cada caractere em uma string tratado como uma constante em separado igual ao valor ASCII do personagem. Variveis de matriz com um ndice de varivel no pode ser usado em PROC embora sejam permitidas variveis de matriz com um ndice constante. At 255 (256 para 18Cxxx) constantes so permitidas na lista. Example

FOR B0 = 0 TO 5 ' Count from 0 to 5 LOOKUP B0,["Hello!"],B1 ' Get character number B0 from string to variable B1 SEROUT 0,N2400,[B1] ' Send character in B1 to Pin0 serially NEXT B0 ' Do next character LOOKUP2 PRO STD

LOOKUP2 Index,[Value{,Value...}],Var A instruo LOOKUP2 pode ser utilizado para recuperar as entradas de uma tabela de valores. Se o ndice zero, Var est definido para o primeiro valor. Se o ndice um, Var est definido para o segundo valor. E assim por diante. Se o ndice for maior ou igual ao nmero de entradas na lista, nenhuma ao tomada e Var permanece inalterado. A lista de Valor pode ser uma mistura de constantes e variveis numricas e string de 16 bits. Cada caractere em uma string tratado como uma constante em separado igual ao valor ASCII do personagem. As expresses no podem ser utilizados na lista valor, ainda que possam ser utilizados como o valor do ndice. Variveis de matriz com um ndice de varivel no pode ser usado em LOOKUP2 embora sejam permitidas variveis de matriz com um ndice constante. At 85 (256 para 18Cxxx) valores so permitidos na lista. LOOKUP2 gera cdigo que cerca de 3 vezes maior do que de pesquisa. Se a lista de Valor composta de apenas constantes de 8 bits e cordas, use PROC. Example LOOKUP2 B0,[256,512,1024],W1 LOW PRO STD

LOW Pin Faa o baixo Pin especificado. Pin feita automaticamente uma sada. Pino pode ser uma constante, 0 - 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0) Example LOW 0 ' Make Pin0 an output and set it low (0 volts) LOW PORTA.0 ' Make PORTA, pin 0 an output and set it low (0 volts) led VAR PORTB.0 ' Define LED pin LOW led ' Make LED pin an output and set it low (0 volts) Em alternativa, se o pino j uma sada, uma maneira muito mais rpida e mais curta (a partir de um ponto de vista de cdigo gerado) para defini-la acessvel seria: PORTB.0 = 0 ' Set PORTB, pin 0 low

NAP NAP Period

PRO

STD

Posiciona o microcontrolador em modo de baixa energia por curtos perodos de tempo. Durante este NAP, o consumo de energia reduzido ao mnimo. Os perodos acima so apenas aproximados, porque o tempo derivada do temporizador de guarda, que R / C conduzido e

pode variar muito de chip para chip e acima da temperatura. Desde NAP usa o temporizador Watchdog, o seu tempo independente da frequncia do oscilador. Period 0 1 2 3 4 5 6 7 Example NAP 7 ' Low power pause for about 2.3 seconds ON INTERRUPT PRO STD Delay (Approx.) 18 milliseconds 36 milliseconds 72 milliseconds 144 milliseconds 288 milliseconds 576 milliseconds 1.152 seconds 2.304 seconds

ON INTERRUPT GOTO Label ON interrupo permite a manipulao de interrupes do microcontrolador por uma sub-rotina PicBasic. H duas maneiras de lidar com as interrupes usando o compilador PicBasic Pro. O primeiro escrever uma rotina de interrupo linguagem assembly. Esta a maneira de lidar com as interrupes com a menor latncia e menor sobrecarga. O segundo mtodo escrever um manipulador de interrupo PicBasic Pro. Isso se parece com uma sub-rotina Pro PicBasic mas termina com um currculo. Quando ocorre uma interrupo, ele marcado. Assim que a execuo do atual PicBasic Pro da instruo estiver concluda, o programa salta para o manipulador de interrupo BASIC em Label. Uma vez que o manipulador de interrupo estiver concluda, uma declarao RESUME envia o programa de volta para onde estava quando ocorreu a interrupo, pegando de onde parou. Desabilitar e habilitar a permitir que diferentes sees de um programa PicBasic Pro para executar, sem a possibilidade de ser interrompido. O lugar mais notvel de usar desativar est certo antes de o manipulador de interrupo real. Ou o manipulador de interrupo pode ser colocado antes da instruo INTERRUPO NO como a bandeira de interrupo no verificada antes da primeira ON interrupo de um programa. A latncia o tempo que leva a partir do momento da interrupo efectiva para o momento em que o manipulador de interrupo est inscrita. Desde PicBasic Pro declaraes no so reentrantes (ou seja, voc no pode executar outra instruo PicBasic Pro enquanto um est sendo executado), no pode haver latncia considervel antes da rotina de interrupo inserido. PicBasic no entraro no manipulador de interrupo BASIC at que tenha terminado a execuo da instruo atual. Se a declarao uma pausa ou SERIN, poderia ser um bom tempo antes da interrupo reconhecida. O programa deve ser projetado com esta latncia em mente. Se for inaceitvel e as interrupes devem ser manuseados de forma mais rpida, uma rotina de interrupo de linguagem assembly deve ser utilizado. Overhead outra questo. ON INTERRUPO ir adicionar uma instruo aps cada declarao para verificar se no ocorreu uma interrupo. DISABLE desliga a adio desta instruo. HABILITAO transforma-lo novamente. Normalmente, a instruo adicional no ser um grande problema, mas longos programas em pequenos microcontroladores poderia sofrer. Mais do que uma interrupo NO podem ser utilizados num programa. Example

ON INTERRUPT GOTO myint ' Interrupt handler is myint INTCON = %10010000 ' Enable RB0 interrupt . . . DISABLE ' Disable interrupts in handler myint: led = 1 ' Turn on LED when interrupted RESUME ' Return to main program ENABLE ' Enable interrupts after handler Para desligar interrompe permanentemente (ou at que seja necessrio novamente) uma vez na interrupo foi usada, defina INTCON para US $ 80: INTCON = $80 OUTPUT PRO STD

OUTPUT Pin Faa o Pin especificada uma sada. Pino pode ser uma constante, 0 - 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). Example OUTPUT 0 ' Make Pin0 an output OUTPUT PORTA.0 ' Make PORTA, pin 0 an output Alternativamente, o pino pode ser ajustado para uma sada de uma maneira muito mais rpida e mais curta (a partir de um ponto de vista de cdigo gerado): TRISB.0 = 0 ' Set PORTB, pin 0 to an output Todos os pinos em uma porta pode ser configurado para sadas, definindo todo o registro TRIS de uma s vez: TRISB = %00000000 ' Set all of PORTB to outputs OWIN PRO STD

OWIN Pin, Mode,[Item {,Item}] Opcionalmente envie um pulso de reset para um dispositivo de um fio e, em seguida, ler um ou mais bits ou bytes de dados a partir dele, opcionalmente, terminando com um outro pulso de reset. Pino pode ser uma constante, 0 -15, ou uma varivel que contm um nmero de 0 -15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA. 0). Modo especifica se uma reinicializao enviada, antes e / ou aps a operao e o tamanho dos elementos de dados, ou bits ou bytes. Mode bit number 0 1 Effect 1 = send reset pulse before data 1 = send reset pulse after data

0 = byte-sized data, 1 = bit-sized data

Alguns exemplos do modo seria: Modo de 0 significa que no h dados reset e byte de tamanho, modo de um meio de reset antes de dados e os dados byte de tamanho, modo de 4 significa que nenhum dado reset e pouco porte. Item uma ou mais variveis ou modificadores separados por vrgulas. Os modificadores permitidos so STR para leitura de dados em uma varivel array de bytes e Skip para pular uma srie de valores de entrada. O SKIP e STR modificadores no so suportados para o ncleo PIC MCUs por causa da RAM e limites de tamanho da pilha de 12-bit. Example OWIN PORTC. 0,0,[temperature\2, SKIP 4, count_remain, count_per_c] Esta declarao receber bytes de um dispositivo de um fio em PORTC pin 0 sem pulso de reset que est sendo enviado. Ele receberia dois bytes e coloc-los na temperatura array de bytes, pule os prximos 4 bytes e ento ler os ltimos dois bytes em variveis separadas. OWOUT PRO STD

OWOUT Pin, Mode, [Item{, Item...}] Opcionalmente enviar um impulso de reposio a um dispositivo de um fio e depois escreve uma ou mais bits ou bytes de dados a partir dele, opcionalmente terminados com um outro impulso de reposio. Pino pode ser uma constante, 0 -15, ou uma varivel que contm um nmero de 0 -15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA. 0). Modo especifica se uma reinicializao enviada, antes e / ou aps a operao e o tamanho dos elementos de dados, ou bits ou bytes. Mode bit number 0 1 2 Effect 1 = send reset pulse before data 1 = send reset pulse after data 0 = byte-sized data, 1 = bit-sized data

Alguns exemplos do modo seria: Modo de 0 significa que no h dados reset e byte de tamanho, modo de um meio de reset antes de dados e os dados byte de tamanho, modo de 4 significa que nenhum dado reset e pouco porte. Item uma ou mais constantes, variveis ou modificadores separados por vrgulas. Os modificadores permitidos so STR para o envio de dados de uma varivel array de bytes e REP para o envio de uma srie de valores repetidos. O representante e STR modificadores no so suportados para o ncleo PIC MCUs por causa da RAM e os limites de tamanho de pilha 12-bit. Example OWOUT PORTC. 0,1,[$cc,$be] Esta afirmao seria enviar um pulso de reset para um dispositivo de um fio em PORTC pin 0 seguido pelos bytes $ cc e US $ estar. PAUSE PRO STD

PAUSE Period Pausar o programa para o perodo milissegundos. Perodo de 16 bits, por isso os atrasos podem ser de at 65.535 milissegundos (um pouco mais de um minuto). Ao contrrio das outras funes de atraso (NAP e SLEEP), PAUSE no coloca o microcontrolador em modo de baixa energia. Assim, PAUSA consome mais energia, mas tambm muito mais preciso. Ele tem a mesma preciso do relgio do sistema. PAUSA assume uma freqncia de oscilador de 4MHz. Se um oscilador de 4MHz outro que usado, PBP deve ser contada atravs de um comando DEFINE OSC OSC. Example PAUSE 1000 ' Delay for 1 second PAUSEUS PRO STD

PAUSEUS Period Pausar o programa para o perodo microssegundos. Perodo de 16 bits, para os atrasos podem ser de at 65,535 microssegundos. Ao contrrio das outras funes de atraso (NAP e SLEEP), PAUSEUS no coloca o microcontrolador em modo de baixa energia. Assim, PAUSEUS consome mais energia, mas tambm muito mais preciso. Ele tem a mesma preciso do relgio do sistema. Porque PAUSEUS tem um nmero mnimo de ciclos de funcionamento, em funo da frequncia do oscilador, os atrasos de menos do que um nmero mnimo de microssegundos no so possveis utilizando PAUSEUS. Para obter os atrasos mais curtos, use uma rotina de linguagem assembly em um ASM .. construo ENDASM. OSC 3 (3.58) 4 8 10 12 16 20 25* 32* 33* 40** Minimum delay 20us 24us 12us 8us 7us 5us 3us 2us 2us 2us 2us

* PIC17Cxxx and PIC18Cxxx only. ** PIC18Cxxx only. PAUSEUS assume uma freqncia de oscilador de 4MHz. Se um oscilador de 4MHz outro que usado, PBP deve ser contada atravs de um comando DEFINE OSC. Example PAUSEUS 1000 ' Delay for 1 millisecond PEEK PRO STD

PEEK Address,Var Leia o microcontrolador se cadastrar no endereo e armazena o resultado em Var especificada. Caractersticas especiais PICmicro tais como conversores A / D e adicional portas I / O podem ser lidos usando PEEK. No entanto, todos os registros PICmicro pode ser e deve ser acessado sem usar PEEK e POKE. Todos os registros PICmicro so consideradas variveis de 8 bits por PicBasic Pro e pode ser usado como faria com qualquer outra varivel byte de tamanho. Eles podem ser lidos diretamente ou usado diretamente nas equaes. Verso 2.40 - PEEK e POKE Mudanas de comando PEEK e POKE foram alterados para funcionar mais como o compilador PicBasic padro. por exemplo PEEK PORTB, B0 Agora ir armazenar o valor dos pinos PORTB a B0. ainda recomendado que PEEK e POKE no ser utilizado. muito melhor do que simplesmente dizerB0 = PORTB POKE PRO STD

POKE Address,Value Escrever Valor para o registo microcontrolador no endereo especificado. Caractersticas especiais PICmicro tais como conversores A / D e adicional portas I / O podem ser escritas usando POKE. No entanto, todos os registros PICmicro pode ser e deve ser acessado sem usar PEEK e POKE. Todos os registros PICmicro so consideradas variveis de 8 bits por PicBasic Pro e pode ser usado como faria com qualquer outra varivel byte de tamanho. Eles podem ser gravados directamente ou utilizado directamente nas equaes.

Verso 2.40 - PEEK e POKE Mudanas de comando PEEK e POKE foram alterados para funcionar mais como o compilador PicBasic padro. Por exemplo, a PEEK PORTB, B0 Agora ir armazenar o valor dos pinos PORTB a B0. ainda recomendado que PEEK e POKE no ser utilizado. muito melhor do que simplesmente dizer

B0 = PORTB POT PRO STD

POT Pin,Scale,Var L um potencimetro (ou algum outro dispositivo resistiva) em Pin. Pino pode ser uma constante, 0 - 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). A resistncia medida por temporizao da descarga de um condensador, atravs da resistncia (tipicamente 5K a 50K). A escala usado para ajustar a variao das constantes de RC. Para maiores constantes de RC, Scale deve ser definido baixa (um valor mnimo de um). Para constantes menores de RC, Scale deve ser ajustado para o seu valor mximo (255). Se a escala definida corretamente, Var deve ser quase zero resistncia mnima e 255 resistncia mxima perto.

Infelizmente, a escala deve ser determinada experimentalmente. Para fazer isso, defina o dispositivo sob medida para a mxima resistncia e l-lo com o conjunto de Escala para 255. Sob estas condies, Var ir produzir um valor apropriado para Escala. (Nota: Este o mesmo tipo de processo, realizado pela opo Alt-P do ambiente BS1). Example POT 3,255,B0 ' Read potentiometer on Pin3 to determine scale SEROUT 0,N2400,[#B0] ' Send pot value serially out Pin0 PULSIN PRO STD

PULSIN Pin,State,Var Medidas largura de pulso em Pin. Se o estado for zero, a largura de um impulso de baixo medido. Se um estado, a largura de um impulso de alta medido. A largura medida colocada em Var. Se a borda de pulso nunca acontece ou a largura do pulso grande demais para medir, Var est definido para zero. Se uma varivel de 8 bits utilizado, somente o bit menos significativo da medio de 16 bits usada. Pino pode ser uma constante, 0 - 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). A resoluo de PULSIN dependente da frequncia do oscilador. Se um oscilador de 4 MHz usado, a largura de impulsos devolvido em incrementos de 10us. Se um oscilador de 20 MHz usado, a largura de impulso ter uma resoluo 2us. Definindo um valor de OSC no tem efeito sobre PULSIN. A resoluo sempre muda com a velocidade real do oscilador. Example ' Measure high pulse on Pin4 stored in W3 PULSIN PORTB.4,1,W3 PULSOUT PRO STD

PULSOUT Pin,Period Gera um pulso no Pin do perodo especificado. O impulso gerado alternando o pino duas vezes, assim o estado inicial do pino determina a polaridade do pulso. Pin feita automaticamente uma sada. Pino pode ser uma constante, 0 - 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). A resoluo de PULSOUT dependente da frequncia do oscilador. Se um oscilador de 4 MHz utilizada, o perodo de impulso gerado ser em incrementos de 10us. Se um oscilador de 20MHz utilizada, perodo ter uma resoluo 2us. Definindo um valor de OSC no tem efeito sobre PULSOUT. A resoluo sempre muda com a velocidade real do oscilador. Example ' Send a pulse 1mSec long (at 4MHz) to Pin5 PULSOUT PORTB.5,100 PWM PRO STD

PWM Pin,Duty,Cycle Gera um trem de pulsos de largura de pulso modulada em Pin. Cada ciclo de PWM consiste em 256 etapas. O ciclo de trabalho para cada ciclo PWM varia de 0 (0%) a 255 (100%). Este ciclo de PWM repetido tempos do ciclo. Pino pode ser uma constante, 0 - 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). O tempo do ciclo de PWM dependente da frequncia do oscilador. Se um

oscilador de 4 MHz utilizada, cada ciclo seria de cerca de 5 ms de comprimento. Se um oscilador de 20 MHz utilizada, cada ciclo seria de cerca de 1 ms de comprimento. A definio de um valor de OSC no tem efeito no PWM. O tempo de ciclo sempre muda com a velocidade real do oscilador. Pin feita uma sada pouco antes de pulsar gerao e reverte para uma entrada aps paradas gerao. A sada PWM em um pino parece tanto lixo, no uma bela srie de ondas quadradas. Um filtro de algum tipo necessrio para transformar o sinal em algo til. Um circuito de RC pode ser utilizado como um simples conversor D / A. Example PWM PORTB.7,127,100 ' Send a 50% duty cycle PWM signal out Pin7 for 100 cycles RANDOM PRO STD

RANDOM Var Execute uma iterao de pseudo-randomizao em Var. Var deve ser uma varivel de 16 bits. Variveis de matriz com um ndice de varivel no pode ser usado de forma aleatria, embora sejam permitidos variveis de matriz com um ndice constante. Var usado tanto como a semente e para armazenar o resultado. O algoritmo de pseudo-aleatria utilizada tem um comprimento de anda de 65535 (apenas zero no produzido). Example RANDOM W4 ' Get a random number to W4 RCTIME PRO STD

RCTIME Pin,State,Var RCTIME mede o tempo de um Pin permanece em um determinado Estado. basicamente meio PULSIN. Pino pode ser uma constante, 0 - 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). RCTIME pode ser usado para ler um potencimetro (ou algum outro dispositivo resistivo). A resistncia pode ser medida atravs do disparo de temporizao e a carga (ou vice-versa), de um condensador, atravs da resistncia (tipicamente 5K a 50K). A resoluo de RCTIME dependente da frequncia do oscilador. Se um oscilador de 4 MHz usado, o tempo no estado so retornados em incrementos de 10us. Se um oscilador de 20 MHz utilizada, o tempo no estado ter uma resoluo 2us. Definindo um valor de OSC no tem efeito sobre RCTIME. A resoluo sempre muda com a velocidade real do oscilador. Se o pino nunca muda de estado, 0 retornado. Example LOW PORTB.3 ' Discharge cap to start PAUSE 10 ' Discharge for 10ms RCTIME PORTB.3,0,W0 ' Read potentiometer on Pin3 READ PRO STD

READ Address,Var Leia o EEPROM on-chip no endereo especificado e armazena o resultado em Var. Esta instruo s pode ser usado com um PIC que tem uma rea em chip, tais como os dados de EEPROM o PIC16F84, PIC16C84 ea srie PIC16F87x. LEIA no ir funcionar em dispositivos com on-chip EEPROM serial I2C interface como o 12CE67x e peas 16CE62x. Utilize a instruo I2CREAD vez.

Example READ 5,B2 ' Put the value at EEPROM location 5 into B2

REPEAT...UNTIL REPEAT Statements... UNTIL Condition

PRO

STD

REPEAT...UNTIL permitir que um grupo de instrues para ser executado at que uma condio especificada for verdadeira. A expresso condicional colocado aps AT. Por exemplo, a i = 0 REPEAT PORTB.0[i] = 0 i = i + 1 UNTIL i > 7 RESUME PRO STD

RESUME {Label} Pegar onde o programa parou depois de manusear uma interrupo. RESUME semelhante troca, mas utilizado no final de um manipulador de interrupo PicBasic Pro. Se o rtulo opcional for utilizado, a execuo do programa continuar no rtulo, em vez de onde estava quando foi interrompido. Neste caso, todos os outros endereos de retorno na pilha no estar mais acessvel. RETURN PRO STD

Retorno de sub-rotina. RETURN continua a execuo na declarao aps a GOSUB que chamou a rotina. Example GOSUB sub1 ' Go to subroutine labeled sub1 ... sub1: SEROUT 0,N2400,["Lunch"] ' Send Lunch out Pin0 serially RETURN ' Return to main program after Gosub REVERSE PRO STD

REVERSE Pin Se o pino uma entrada, feita uma sada. Se o pino uma sada, feita uma entrada. Pino pode ser uma constante, 0 - 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). Example OUTPUT 4 ' Make Pin4 an output REVERSE 4 ' Change Pin4 to an input

SERIN

PRO

STD

SERIN Pin,Mode,{Timeout,Label,}{[Qual...],}{Item...} Receba um ou mais itens no pino em formato assncrono padro usando 8 bits de dados, sem paridade e um bit de parada (8N1). SERIN semelhante ao comando BS1 Serin com a adio de um tempo limite. Pin feita automaticamente uma entrada. Pino pode ser uma constante, 0 - 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). Os nomes do modo (por exemplo, T2400) so definidas nas MODEDEFS.BAS arquivo. Para us-los, adicione a linha: INCLUIR "modedefs.bas" para o incio do programa PicBasic. BS1DEFS.BAS e BS2DEFS.BAS j inclui MODEDEFS.BAS. No inclu-lo novamente, se um desses arquivos j est includo. Os nmeros de modo pode ser usado sem a incluso deste ficheiro. Mode T2400 T1200 T9600 T300 N2400 N1200 N9600 N300 Mode No. 0 1 2 3 4 5 6 7 Baud Rate 2400 1200 9600 300 2400 1200 9600 300 Inverted True State

Um tempo limite opcional e Etiqueta podem ser includos para permitir que o programa continue se um personagem no for recebido dentro de um determinado perodo de tempo. Timeout especificada em unidades de 1 milissegundo. A lista de itens de dados a serem recebidos pode ser precedida por uma ou mais qualificadores fechado dentro de parntesis. SERIN deve receber estes bytes na ordem exata antes de receber os itens de dados. Se qualquer byte recebido no coincide com o byte seguinte na sequncia qualificador, o processo comea de qualificao (isto , o byte seguinte recebido comparado com o primeiro item na lista de qualificador). Um qualificador pode ser uma constante, uma varivel ou uma constante string. Cada caractere de uma string tratado como um qualificador individual. Uma vez que as eliminatrias so satisfeitas, SERIN comea a armazenar dados nas variveis associadas a cada item. Se o nome da varivel utilizado isoladamente, o valor do carcter ASCII recebido armazenado na varivel. Se a varivel precedida por um sinal de sustenido (#), SERIN converte um valor decimal em ASCII e armazena o resultado nessa varivel. Todos os no-dgitos recebidos antes do primeiro dgito do valor decimal so ignorados e descartados. O carter no-dgitos que termina o valor decimal tambm descartada. SERIN assume um oscilador de 4MHz ao gerar o seu calendrio bit. Para manter o sincronismo taxa de transmisso adequada com outros valores de oscilador, certifique-se de definir a configurao OSC para o novo valor do oscilador. Enquanto single-chip conversores RS-232 nvel so comuns e baratos, as especificaes excelentes I / O do PIC permitir que a maioria dos aplicativos sejam executados sem conversores de nvel. Example ' Wait until the character A is received serially on Pin1 and put next character into B0 SERIN 1,N2400,["A"],B0

SELECT...CASE

PRO

STD

SELECT CASE var CASE expr1 {, expr...} statements CASE expr2 {, expr...} statements {CASE ELSE statements} END SELECT Instrues CASE, em alguns casos, so mais fceis de usar do que mltipla IF .. Thens. Estas declaraes so usadas para comparar uma varivel com diferentes valores ou intervalos de valores e agir com base no valor. A varivel utilizada em todas as comparaes especificado na instruo SELECT CASE. Cada caso seguido pelas declaraes a serem executadas, se o caso verdadeiro. pode ser usado para especificar um outro comparador que ou igual a. Se nenhum dos casos so verdadeiros, as declaraes sob o CASE opcional ELSE so executadas. Um END SELECT encerra o caso SELECT. Example SELECT CASE x CASE 1 y = 10 CASE 2, 3 y = 20 CASE IS > 5 y = 100 CASE ELSE y = 0 END SELECT SERIN2 PRO STD

SERIN2 DataPin{\FlowPin},Mode,{ParityLabel,} {Timeout,Label,}[Item...] Receba um ou mais itens no pino em formato assncrono standard. SERIN2 semelhante ao comando BS2 Serin. DataPin feita automaticamente uma entrada. O FlowPin opcional feita automaticamente uma sada. DataPin FlowPin e pode ser uma constante, 0 - 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). O pino de controle de fluxo opcional, FlowPin, podem ser includos para ajudar a manter os dados de invadir o receptor. Se for usado, FlowPin automaticamente ajustado para o estado ativado para permitir a transmisso de cada personagem. Este estado activado determinada pela polaridade dos dados especificados pelo Modo. Modo usado para especificar a taxa de transmisso e parmetros operacionais da transferncia serial. As baixas da ordem de 13 bits selecionar a taxa de transmisso. Bit 13 seleciona paridade ou sem paridade. Bit 14 seleciona nvel invertido ou verdadeiro. O bit 15 no usado. Os bits taxa de transmisso especificar o tempo de bit em microssegundos - 20. Para encontrar o valor para uma determinada taxa de transmisso, utilizar a equao: (1000000 / transmisso) - 20 Algumas taxas de transmisso padro so apresentadas na tabela a seguir.

Baud Rate

Bits 0 - 12

300 600 1200 2400 4800 9600 19200

3313 1646 813 396 188 84 32

Bit 13 seleciona paridade (bit 13 = 1) ou sem paridade (bit 13 = 0). Normalmente, as transmisses seriais esto 8N1 (8 bits de dados, sem paridade e 1 bit de parada). Se a paridade for selecionada, os dados so recebidos como 7E1 (7 bits de dados, paridade e 1 bit de parada). Bit 14 selecciona o nvel dos dados e os pinos de controlo de fluxo. Se o bit 14 = 0, os dados so recebidos na verdadeira forma para uso com RS-232 motoristas. Se Bit14 = 1, os dados so recebidos invertido. Este modo pode ser usado para evitar a instalao de RS-232 condutores. Alguns exemplos de Modo so: Mode = 84 (9600, sem paridade, true), Mode = 16780 (2400 baud, sem paridade, invertido), Mode = 27889 (300 baud, paridade par invertido). Se ParityLabel est includo, este rtulo ser saltou para se um personagem com mau paridade recebido. Ele s deve ser usado se paridade selecionada (bit 13 = 1). Um tempo limite opcional e Etiqueta podem ser includos para permitir que o programa continue se um personagem no for recebido dentro de um determinado perodo de tempo. Timeout especificada em unidades de 1 milissegundo. Um DEFINE permite o uso de diferentes 8 (ou 7, com a paridade) bits de dados. Bits de dados SER2_BITS pode variar de 4 bits para 8 (o padro se nenhum DEFINE especificado). Activar paridade usa um do nmero de bits especificado. Definindo SER2_BITS a 9 permite 8 bits para ser lido e gravado junto com um bit de paridade 9. Com deficincia de paridade (o padro): DEFINE DEFINE DEFINE DEFINE DEFINE SER2_BITS SER2_BITS SER2_BITS SER2_BITS SER2_BITS 4 5 6 7 8 ' ' ' ' ' Set Set Set Set Set Serin2 Serin2 Serin2 Serin2 Serin2 and and and and and Serout2 Serout2 Serout2 Serout2 Serout2 data data data data data bits bits bits bits bits to to to to to 4 5 6 7 8 (default)

With parity enabled: DEFINE DEFINE DEFINE DEFINE DEFINE SER2_BITS SER2_BITS SER2_BITS SER2_BITS SER2_BITS 5 6 7 8 9 ' ' ' ' ' Set Set Set Set Set Serin2 Serin2 Serin2 Serin2 Serin2 and and and and and Serout2 Serout2 Serout2 Serout2 Serout2 data data data data data bits bits bits bits bits to to to to to 4 5 6 7 (default) 8

SERIN2 suporta muitos modificadores de dados diferentes que podem ser misturados e combinados livremente dentro de uma nica declarao SERIN2 para fornecer vrios formatao de entrada.
Modifier BIN{1..16} DEC{1..5} HEX{1..4} SKIP n STR ArrayVar\n{\c} Operation Receive binary digits Receive decimal digits Receive hexadecimal digits Skip n received characters Receive string of n characters optionally ended in character c

WAIT ( ) WAITSTR ArrayVar{\n}

Wait for sequence of characters Wait for character string

1) Uma varivel precedido por BIN receber a representao ASCII do seu valor binrio. Por exemplo, se BIN B0 especificado e A1000 " recebido, B0 ser ajustado para 8. 2) Uma varivel precedida pela DEC receber a representao ASCII do seu valor decimal. Por exemplo, se for especificado dezembro B0 e A123 " recebido, B0 ser ajustada para 123. 3) Uma varivel precedido por HEX receber a representao ASCII do seu valor hexadecimal. Por exemplo, se for especificado B0 HEX e AFE " recebido, B0 ser ajustada para 254. 4) SKIP seguido por uma contagem ir ignorar que muitos personagens no fluxo de entrada. Por exemplo, SKIP 4 vai pular de 4 caracteres .. 5) STR, seguido por uma varivel array de bytes, contagem e carter final opcional receber uma seqncia de caracteres. O comprimento da cadeia determinada pela contagem ou quando o carcter opcional encontrado na entrada. 6) A lista de itens de dados a serem recebidos pode ser precedida por uma ou mais qualificadores entre parntesis depois de esperar. SERIN2 deve receber estes bytes na ordem exata antes de receber os itens de dados. Se qualquer byte recebido no coincide com o byte seguinte na sequncia qualificador, o processo comea de qualificao (isto , o byte seguinte recebido comparado com o primeiro item na lista de qualificador). Um qualificador pode ser uma constante, uma varivel ou uma constante string. Cada caractere de uma string tratado como um qualificador individual. 7) WAITSTR pode ser usado como ESPERE acima para forar SERIN2 esperar por uma seqncia de caracteres de comprimento opcional antes de prosseguir. Uma vez que qualquer espera ou WAITSTR eliminatrias esto satisfeitos, SERIN2 comea a armazenar dados nas variveis associadas a cada item. Se o nome da varivel utilizado isoladamente, o valor do carcter ASCII recebido armazenado na varivel. Se a varivel precedida por BIN, dezembro ou HEX, ento SERIN2 converte um binrio, o valor decimal ou hexadecimal em ASCII e armazena o resultado nessa varivel. Todos os no-dgitos recebidos antes do primeiro dgito do valor decimal so ignorados e descartados. O carter no-dgitos que termina o valor tambm descartada. BIN de DEC e HEX pode ser seguido por um nmero. Normalmente, estes modificadores de receber tantos dgitos so como na entrada. No entanto, se um nmero segue o modificador, SERIN2 receber sempre que o nmero de dgitos, saltando algarismos suplementares, conforme necessrio. SERIN2 assume um oscilador de 4MHz ao gerar o seu calendrio bit. Para manter o sincronismo taxa de transmisso adequada com outros valores de oscilador, certifique-se de definir a configurao OSC para o novo valor do oscilador. Enquanto singlechip conversores RS-232 nvel so comuns e baratos, graas a atual RS-232 implementao eo excelente I / O especificaes do PIC, a maioria das aplicaes no necessitam de conversores de nvel. Em vez disso, inverte TTL (Modo 14 bits = 1) pode ser usado. Um resistor de limitao de corrente sugerido (RS-232 suposto ser de curto tolerante). SEROUT PRO STD

SEROUT Pin,Mode,[Item {,Item...}] Envia um ou mais itens ao pino em formato assncrono padro usando 8 bits de dados, sem paridade e um batente (8N1). SEROUT semelhante ao comando BS1 serout. Pin feita automaticamente uma sada. Pino pode ser uma constante, 0 - 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). Os nomes do modo (por exemplo, T2400) so definidas nas MODEDEFS.BAS arquivo. Para uslos, adicione a linha:

INCLUIR "modedefs.bas" para o incio do programa PicBasic. BS1DEFS.BAS e BS2DEFS.BAS j inclui MODEDEFS.BAS. No inclu-lo novamente, se um desses arquivos j est includo. Os nmeros de modo pode ser usado sem a incluso deste ficheiro. Mode T2400 T1200 T9600 T300 N2400 N1200 N9600 N300 OT2400 OT1200 OT9600 OT300 ON2400 ON1200 ON9600 ON300 Mode No. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Baud Rate 2400 1200 9600 300 2400 1200 9600 300 2400 1200 9600 300 2400 1200 9600 300 Open Inverted Open True Driven Inverted Driven True State

SEROUT suporta trs tipos de dados diferentes, que podem ser misturados e combinados livremente dentro de uma nica instruo SEROUT. 1) Uma constante string a sada como uma seqncia de caracteres literal. 2) Um valor numrico (ou uma varivel ou uma constante) vai enviar o caractere ASCII correspondente. Notavelmente, 13 de retorno de carro e 10 de avano de linha. 3) Um valor numrico precedido por um sinal de sustenido (#) vai enviar a representao ASCII de seu valor decimal. Por exemplo, se W0 = 123, ento # W0 (ou # 123) enviar '1 ', '2', '3 '. SEROUT assume um oscilador de 4MHz ao gerar o seu calendrio bit. Para manter o sincronismo taxa de transmisso adequada com outros valores de oscilador, certifique-se de definir a configurao OSC para o novo valor do oscilador. Em alguns casos, as taxas de transmisso de instrues SEROUT podem apresentar caracteres muito rapidamente para o dispositivo de recepo. A DEFINE acrescenta pacing personagem para as transmisses de sada srie. Isso permite que o tempo adicional entre os personagens como eles so transmitidos. O ritmo carter DEFINE permite um atraso de 1 a 65.535 microssegundos (,00165,535 milissegundos) entre cada caractere transmitido. Por exemplo, para fazer uma pausa de 1 milissegundo entre a transmisso de cada personagem: DEFINE CHAR_PACING 1000 Enquanto single-chip conversores RS-232 nvel so comuns e baratos, graas a atual RS-232 implementao eo excelente I / O especificaes do PIC, a maioria das aplicaes no necessitam de conversores de nvel. Em vez disso, inverte TTL (N300.. N9600) pode ser

usado. Um resistor de limitao de corrente sugerido (RS-232 suposto ser de curto tolerante). Example ' Send the ASCII value of B0 followed by a linefeed out Pin0 serially SEROUT 0,N2400,[#B0,10] SEROUT2 PRO STD

SEROUT2 DataPin{\FlowPin},Mode,{Pace,} {Timeout,Label,}[Item...] Envie um ou mais itens para dataPin em formato assncrono standard. SEROUT2 semelhante ao comando serout BS2. DataPin feita automaticamente uma sada. O FlowPin opcional feita automaticamente uma entrada. DataPin FlowPin e pode ser uma constante, 0 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). O pino de controle de fluxo opcional, FlowPin, podem ser includos para ajudar a manter os dados de invadir o receptor. Se for utilizada, os dados em srie no ser enviado at FlowPin est no estado correcto. Este estado determinada pela polaridade dos dados especificados pelo Modo. Um tempo limite opcional e Etiqueta podem ser includos para permitir que o programa continue se a FlowPin no muda para o estado ativado dentro de um determinado perodo de tempo. Timeout especificada em unidades de 1 milissegundo. Em alguns casos, as taxas de SEROUT2 instrues de transmisso podem apresentar caracteres muito rapidamente para o dispositivo de recepo. Ele no pode ser desejvel utilizar um pino extra para controle de fluxo. Um ritmo opcional pode ser usado para adicionar a estimulao de caracteres s transmisses de sada em srie. Isso permite que o tempo adicional entre os personagens como eles so transmitidos. O ritmo de caracteres permite um atraso de 1 a 65.535 milissegundos entre cada caractere transmitido. Modo usado para especificar a taxa de transmisso e parmetros operacionais da transferncia serial. As baixas da ordem de 13 bits selecionar a taxa de transmisso. Bit 13 seleciona paridade ou sem paridade. Bit 14 seleciona nvel invertido ou verdadeiro. Bit 15 seleciona se conduzido ou aberto. Os bits taxa de transmisso especificar o tempo de bit em microssegundos - 20. Para encontrar o valor para uma determinada taxa de transmisso, utilizar a equao: (1000000 / baud) - 20 Baud Rate 300 600 1200 2400 4800 9600 19200 Bits 0 - 12 3313 1646 813 396 188 84 32

Bit 13 seleciona paridade (bit 13 = 1) ou sem paridade (bit 13 = 0). Normalmente, as transmisses seriais esto 8N1 (8 bits de dados, sem paridade e 1 bit de parada). Se a paridade for selecionada, os dados so enviados como 7E1 (7 bits de dados, paridade e 1 bit de parada). Bit 14 selecciona o nvel dos dados e os pinos de controlo de fluxo. Se o bit 14 = 0, os dados so enviados em forma verdadeira para uso com RS-232 motoristas. Se Bit14 = 1, os dados so enviados invertido. Este modo pode ser usado para evitar a instalao de RS-232 condutores. Bit 15 seleciona se o pino de dados sempre impulsionado (bit 15 = 0), ou est aberta em um dos estados (bit 15 = 1). O modo aberto pode ser usado para a cadeia vrios dispositivos juntos no mesmo barramento serial. Alguns exemplos de Modo so: Mode = 84

(9600, sem paridade, verdade, sempre impulsionado), Mode = 16780 (2400 baud, sem paridade, invertido, driven), Mode = 60657 (300 baud, paridade, invertido, aberto ). Um DEFINE permite o uso de diferentes 8 (ou 7, com a paridade) bits de dados. Bits de dados SER2_BITS pode variar de 4 bits para 8 (o padro se nenhum DEFINE especificado). Activar paridade usa um do nmero de bits especificado. Definindo SER2_BITS a 9 permite 8 bits para ser lido e gravado junto com um bit de paridade 9. Com deficincia de paridade (o padro): DEFINE DEFINE DEFINE DEFINE DEFINE SER2_BITS SER2_BITS SER2_BITS SER2_BITS SER2_BITS 4 5 6 7 8 ' ' ' ' ' Set Set Set Set Set Serin2 Serin2 Serin2 Serin2 Serin2 and and and and and Serout2 Serout2 Serout2 Serout2 Serout2 data data data data data bits bits bits bits bits to to to to to 4 5 6 7 8 (default)

With parity enabled: DEFINE DEFINE DEFINE DEFINE DEFINE SER2_BITS SER2_BITS SER2_BITS SER2_BITS SER2_BITS 5 6 7 8 9 ' ' ' ' ' Set Set Set Set Set Serin2 Serin2 Serin2 Serin2 Serin2 and and and and and Serout2 Serout2 Serout2 Serout2 Serout2 data data data data data bits bits bits bits bits to to to to to 4 5 6 7 (default) 8

SEROUT2 suporta muitos modificadores de dados diferentes que podem ser misturados e combinados livremente dentro de uma nica declarao SEROUT2 para fornecer vrios formatao de sada.
Modifier {I}{S}BIN{1..16} {I}{S}DEC{1..5} {I}{S}HEX{1..4} REP c\n STR ArrayVar{\n} Operation Send binary digits Send decimal digits Send hexadecimal digits Send character c repeated n times Send string of n characters

1) Uma constante string a sada como uma seqncia de caracteres literal. 2) Um valor numrico (ou uma varivel ou uma constante) vai enviar o caractere ASCII correspondente. Notavelmente, 13 de retorno de carro e 10 de avano de linha. 3) Um valor numrico precedido por BIN ir enviar a representao ASCII de seu valor binrio. Por exemplo, se B0 = 8, ento BIN B0 (BIN ou 8) vai enviar "1000". 4) Um valor numrico precedido de dezembro ir enviar a representao ASCII de seu valor decimal. Por exemplo, se B0 = 123, ento dezembro B0 (ou dezembro 123) vai enviar "123". 5) Um valor numrico precedido por HEX enviar a representao ASCII de seu valor hexadecimal. Por exemplo, se B0 = 254, ento HEX B0 (ou HEX 254) vai enviar "FE". 6) REP seguido por um caractere ea contagem vai repetir o personagem, tempo de contagem. Por exemplo, REP A0 "\ 4 ir enviar" 0000 ". 7) STR seguido por um conjunto varivel count e opcional byte vai enviar uma cadeia de caracteres. O comprimento da corda determinada pela contagem ou quando um 0 carter encontrado na string. BIN, dezembro e HEX pode ser precedido ou seguido de vrios parmetros opcionais. Se algum deles so precedidos por um I (indicado por), a sada ser precedida por um "%", "#" ou "$" para indicar o seguinte valor binrio, decimal ou hexadecimal. Se alguma for precedido

por um S (por sinal), a sada ser enviada precedido por um "-" se o bit de alta ordem dos dados definido. Isto permite que a transmisso de nmeros negativos. Tenha em mente que todos os clculos e comparaes em PBP no estejam assinados. No entanto, a matemtica no assinado pode produzir resultados assinados. Por exemplo, tomemos o caso de B0 = 9 10. O resultado de dezembro B0 seria "255". Envio de SDEC B0 daria "-1" desde o bit de alta ordem enviada. Assim, com um pouco de malandragem, a matemtica no assinado de PBP pode produzir resultados assinados. BIN de DEC e HEX tambm pode ser seguido por um nmero. Normalmente, esses modificadores de mostrar exatamente como muitos dgitos necessrios, Zero apagado (zeros esquerda no so enviados). No entanto, se um nmero segue o modificador, SEROUT2 enviar sempre que o nmero de dgitos, adicionando zeros como necessrio. Ele tambm ir cortar de quaisquer dgitos extras de alta ordem. Por exemplo, BIN6 8 mandaria "001000" e BIN2 8 mandaria "00". Qualquer uma ou todas as combinaes de modificador pode ser usado de uma s vez. Por exemplo, ISDEC4 B0. SEROUT2 assume um oscilador de 4MHz ao gerar o seu calendrio bit. Para manter o sincronismo taxa de transmisso adequada com outros valores de oscilador, certifique-se de definir a configurao OSC para o novo valor do oscilador. Enquanto single-chip conversores RS-232 nvel so comuns e baratos, graas a atual RS-232 implementao eo excelente I / O especificaes do PIC, a maioria das aplicaes no necessitam de conversores de nvel. Em vez disso, inverte TTL (Modo 14 bits = 1) pode ser usado. Um resistor de limitao de corrente sugerido (RS-232 suposto ser de curto tolerante). Example ' Send the ASCII value of B0 followed by a linefeed out Pin0 serially at 2400 baud SEROUT2 0,16780,[dec B0,10] ' Send B0 = followed by the binary value of B0 out PORTA pin 1 serially at 9600 baud SEROUT2 PORTA.1,84,["B0=", ihex4 B0] SHIFTIN PRO STD

SHIFTIN DataPin,ClockPin,Mode,[Var{\Bits}...] Relgio clockPin, sincronicamente mudana de bits em dataPin e armazenar o byte (s) recebido em Var. ClockPin dataPin e pode ser uma constante, 0-15, ou uma varivel que contm um nmero 0-15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). \ Bits opcionalmente especifica o nmero de bits a ser deslocada para dentro Se no for especificado, 8 bits so deslocados para dentro, independente do tipo varivel. Os nomes do modo (por exemplo, MSBPRE) so definidas nas MODEDEFS.BAS arquivo. Para us-los, adicione a linha: INCLUIR "modedefs.bas" para o incio do programa PicBasic Pro. BS1DEFS.BAS e BS2DEFS.BAS j inclui MODEDEFS.BAS. No inclu-lo novamente, se um desses arquivos j est includo. Os nmeros de modo pode ser usado sem a incluso deste ficheiro. Alguns modos no tem um nome. Para os modos de 0-3, o relgio roda em marcha lenta baixa, alterna de alta para o relgio um pouco, e depois retorna baixa. Para os modos de 4-7, o relgio roda em marcha lenta alta, alterna baixo para o relgio um pouco, e depois retorna alto. Mode MSBPRE Mode No. 0 Operation Shift data in highest bit first, Read data before sending clock. Clock idles low.

LSBPRE

Shift data in lowest bit first, Read data before sending clock. Clock idles low.

MSBPOST

Shift data in highest bit first, Read data after sending clock. Clock idles low.

LSBPOST

Shift data in lowest bit first, Read data after sending clock. Clock idles low.

Shift data in highest bit first, Read data before sending clock. Clock idles high.

Shift data in lowest bit first, Read data before sending clock. Clock idles high.

Shift data in highest bit first, Read data after sending clock. Clock idles high.

Shift data in lowest bit first, Read data after sending clock. Clock idles high.

O relgio de deslocamento executado a cerca de 50KHz dependente do oscilador. O estado ativo realizada com um mnimo de 2 microssegundos. A DEFINE permite que o estado ativo do relgio deve ser prorrogado por um nmero adicional de microssegundos at 65.535 (65.535 milissegundos) para diminuir a velocidade do clock. O atraso mnimo adicional definida pela temporizao PAUSEUS. Por exemplo, para retardar o relgio por um adicional de 100 microssegundos: DEFINE SHIFT_PAUSEUS 100 Example SHIFTIN 0,1,MSBPRE,[B0,B1\4] SHIFTOUT PRO STD

SHIFTOUT DataPin,ClockPin,Mode,[Var{\Bits}...] Synchronously deslocar fora Var em clockPin e dataPin. ClockPin dataPin e pode ser uma constante, 0-15, ou uma varivel que contm um nmero 0-15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). \ Bits opcionalmente especifica o nmero de bits a serem deslocadas para fora. Se no for especificado, 8 bits so deslocados para fora, independentemente do tipo varivel. Os nomes do modo (por exemplo, LSBFIRST) so definidas nas MODEDEFS.BAS arquivo. Para us-los, adicione a linha: INCLUIR "modedefs.bas" para o incio do programa PicBasic Pro. BS1DEFS.BAS e BS2DEFS.BAS j inclui MODEDEFS.BAS. No inclu-lo novamente, se um desses arquivos j est includo. Os nmeros de modo pode ser usado sem a incluso deste ficheiro. Alguns modos no tem um nome. Para os modos de 0-1, o relgio roda em marcha lenta baixa, alterna de alta para o relgio um pouco, e depois retorna baixa. Para os modos de 4-5, o relgio roda em marcha lenta alta, alterna baixo para o relgio um pouco, e depois retorna alto.

Mode LSBFIRST MSBFIRST

Mode No. 0 1 4 5

Operation Shift data out lowest bit first. Clock idles low. Shift data out highest bit first. Clock idles low. Shift data out lowest bit first. Clock idles high. Shift data out highest bit first. Clock idles high.

O relgio de deslocamento executado a cerca de 50KHz dependente do oscilador. O estado ativo realizada com um mnimo de 2 microssegundos. A DEFINE permite que o estado ativo do relgio deve ser prorrogado por um nmero adicional de microssegundos at 65.535 (65.535 milissegundos) para diminuir a velocidade do clock. O atraso mnimo adicional definida pela temporizao PAUSEUS. Por exemplo, para retardar o relgio por um adicional de 100 microssegundos: DEFINE SHIFT_PAUSEUS 100 Example SHIFTOUT 0,1,MSBFIRST,[B0,B1] SHIFTOUT PORTA.1, PORTA.2, 1,[wordvar\4] SLEEP SLEEP Period Coloque microcontrolador em modo de baixo consumo de energia para o segundo perodo. Perodo de 16 bits, por isso os atrasos podem ser at 65.535 segundos (pouco mais de 18 horas). SLEEP usa o temporizador de Watchdog por isso independente da frequncia do oscilador real. A granularidade cerca de 2,3 segundos, e pode variar de acordo com especificidades e de temperatura do dispositivo. Esta variao diferente do BASIC Stamp. A mudana foi necessria porque quando o PIC executa um reset do temporizador Watchdog, ele redefine muitos dos registradores internos com os valores pr-definidos. Estes valores podem variar muito de que seu programa pode esperar. Ao executar o comando SLEEP no calibrada, este problema est contornado. Example SLEEP 60 ' Sleep for about 1 minute SOUND PRO STD PRO STD

SOUND Pin,[Note,Duration{,Note,Duration...}] Gera tom e / ou rudo branco na Pin especificado. Pin feita automaticamente uma sada. Pino pode ser uma constante, 0 - 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). Nota 0 o silncio. Notas 1-127 so tons. Notas 128-255 so rudo branco. Tons e rudos brancos esto em ordem crescente (ou seja, 1 e 128 so as frequncias mais baixas, 127 e 255 so as mais altas). Nota 1 de cerca de 127 78.74Hz e Nota de cerca de 10.000 Hz. A durao 0-255 e determina por quanto tempo a nota tocada em cerca de 12 incrementos de milissegundos. Nota Durao e no precisa ser constantes.

Emite som TTL de nvel ondas quadradas. Graas aos excelentes caractersticas de I / O do PIC, um orador pode ser conduzido atravs de um condensador. O valor do condensador deve ser determinado com base nas frequncias de interesse e a carga do altifalante. Alto-falantes piezo pode ser conduzido diretamente. Example SOUND PORTB.7,[100,10,50,10] ' Send 2 sounds consecutively to Pin7 STOP PRO STD

Pare a execuo do programa, executando um loop infinito. Isso no coloca o microcontrolador em modo de baixa energia. O microcontrolador ainda est trabalhando to duro como nunca. No apenas ficar bem feito. Example STOP ' Stop program dead in its tracks SWAP PRO STD

SWAP Variable,Variable Trocar os valores entre duas variveis. Geralmente, um processo tedioso para trocar o valor das duas variveis. SWAP faz isso em uma declarao sem o uso de variveis intermedirias. Ele pode ser usado com bits, bytes, palavras variveis. Variveis de matriz com um ndice de varivel no pode ser usado em permuta, embora sejam permitidos variveis de matriz com um ndice constante. Example temp = B0 ' Old way B0 = B1 B1 = temp SWAP B0, B1 ' New way TOGGLE PRO STD

TOGGLE Pin Inverter o estado do Pin especificado. Pin feita automaticamente uma sada. Pino pode ser uma constante, 0 - 15, ou uma varivel que contm um nmero de 0 - 15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). Example LOW 0 ' Start Pin0 as low TOGGLE 0 ' Change state of Pin0 to high WHILE...WEND WHILE Condition Statements... WEND PRO STD

Repetidamente executar instrues enquanto condio for verdadeira. Quando o Estado no mais verdade, a execuo continua na instruo aps o WEND. Condio pode ser qualquer expresso de comparao. Example i = 1 WHILE i <= 10 SEROUT 0,N2400,["No:",#i,13,10] i = i + 1 WEND USBINIT PRO STD

Foi adicionado suporte para os dispositivos USB PIC16C745 e 765 de baixa velocidade. Este suporte tem a forma de trs novos comandos PBP, bem como algumas modificaes s bibliotecas USB microchip. USBInit precisa de ser uma das primeiras instrues do programa. Ele ir inicializar a parte USB do PIC MCU e espere at que o barramento USB est configurado e habilitado. O USB subdiretrio contm as bibliotecas Microchip USB modificado, bem como exemplos de programas. Programas USB requerem vrios arquivos Diponvel para operar (que esto no subdiretrio USB), alguns dos quais iro exigir a modificao para sua aplicao particular. Veja o arquivo de texto no subdiretrio USB para obter mais informaes sobre os comandos USB. Comunicao USB muito mais complicado do que sncrona (shiftin e SHIFTOUT) e assncrona (SERIN, SEROUT e assim por diante) comunicaes. H muito mais para saber sobre o funcionamento USB que podem, eventualmente, ser descrito aqui. A informao USB no site da Microchip precisa ser estudada. USBIN PRO STD

USBIN Endpoint,Buffer,CountVar,Label USBIN recebe todos os dados USB disponveis para o endpoint e coloca no buffer. Tampo deve ser uma matriz de bytes de comprimento adequado para conter os dados. Countvar conter o nmero de bytes transferidos para o buffer. Rtulo ser saltou para se no h dados disponveis. O USB subdiretrio contm as bibliotecas Microchip USB modificado, bem como exemplos de programas. Programas USB requerem vrios arquivos Diponvel para operar (que esto no subdiretrio USB), alguns dos quais iro exigir a modificao para sua aplicao particular. Veja o arquivo de texto no subdiretrio USB para obter mais informaes sobre os comandos USB. Comunicao USB muito mais complicado do que sncrona (shiftin e SHIFTOUT) e assncrona (SERIN, SEROUT e assim por diante) comunicaes. H muito mais para saber sobre o funcionamento USB que podem, eventualmente, ser descrito aqui. A informao USB no site da Microchip precisa ser estudada. USBOUT PRO STD

USBOUT Endpoint,Buffer,Count,Label USBOut preciso contar o nmero de bytes do buffer e envia-los para o terminal USB. Se o buffer USB no tem espao para os dados por causa de uma transmisso pendente, os dados no sero transferidos e execuo do programa continuar no rtulo. O USB subdiretrio contm as bibliotecas Microchip USB modificado, bem como exemplos de programas. Programas USB requerem vrios arquivos Diponvel para operar (que esto no subdiretrio USB), alguns dos quais iro exigir a modificao para sua aplicao particular. Veja o arquivo de texto no subdiretrio USB para obter mais informaes sobre os comandos USB.

Comunicao USB muito mais complicado do que sncrona (shiftin e SHIFTOUT) e assncrona (SERIN, SEROUT e assim por diante) comunicaes. H muito mais para saber sobre o funcionamento USB que podem, eventualmente, ser descrito aqui. A informao USB no site da Microchip precisa ser estudada.

USBSERVICE
USBSERVICE

PRO

STD

USBService precisa ser executada repetidamente no programa. Uma vez que o cdigo fornecido sondado USB, em vez de interromper conduzido, USBService precisa ser executada, pelo menos, a cada 10ms em todo o programa. Se no for, o dispositivo pode deixar o barramento USB. WRITE PRO STD

WRITE Address,Value Escrever Valor EEPROM on-chip para o endereo especificado. Esta instruo s pode ser usado com um PIC que tem uma rea em chip, tais como os dados de EEPROM o PIC16F84, PIC16C84 ea srie PIC16F87x. WRITE usado para definir os valores da EEPROM on-chip em tempo de execuo. Para definir os valores da EEPROM on-chip de programao de tempo, usar os dados ou declarao EEPROM. Cada gravao auto-cronometrado e demora cerca de 10 milissegundos para executar em um PIC. Se as interrupes so usadas em um programa, que deve ser desligado (mascarado, no com deficincia) antes de executar a escrever e ligado novamente (se desejar) aps a instruo de gravao est completa. Uma interrupo que ocorre durante uma gravao pode fazer com que ele falhe. Gravao no ir funcionar em dispositivos com on-chip EEPROM serial I2C interface como o 12CE67x e peas 16CE62x. Utilize a instruo I2CWRITE Example WRITE 5,B0 ' Send value in B0 to EEPROM location 5 WRITECODE PRO STD

WRITECODE Address,Value Escreva o valor da palavra-dimensionados para o espao de cdigo de localizao de endereos. Os dispositivos PIC16F87x permitir que o cdigo a ser lido e escrito em tempo de execuo. Ao escrever cdigo de auto-modificao pode ser uma tcnica perigosa, ela no permite que o armazenamento de dados no voltil acima 64-256 bytes. preciso ter muito cuidado para no escrever sobre a memria do programa ativo. O arquivo de listagem podem ser examinados para determinar endereos do programa. Se as interrupes so usadas em um programa, que deve ser desligado (mascarado, no com deficincia) antes de executar um WRITECODE, e virou novamente (se desejar) aps a instruo de gravao est completa. Uma interrupo que ocorre durante um WRITECODE pode causar a falha. Example WRITECODE 100,W ' Send value in W to code space location 100 XIN PRO STD

XIN DataPin,ZeroPin,{Timeout,Label,}[Var{,...}] Receba X-10 dados e armazenar o Cdigo House e Key Code em Var. XIN usado para receber informaes de X-10 dispositivos que podem enviar tais informaes. X-10 os mdulos esto disponveis a partir de uma ampla variedade de fontes, sob vrias designaes comerciais. necessrio uma interface para conectar o microcontrolador para a linha de alimentao AC. A TW-523 de duas vias de comunicao X-10 exigido por XIN. Este dispositivo contm o interface de linha de energia e isola o microcontrolador a partir da linha de CA. Como o formato X-10 patenteado, esta interface tambm abrange as taxas de licena. DataPin feita automaticamente uma entrada para receber dados do interface de X-10. ZeroPin feita automaticamente uma entrada para receber o tempo de cruzamento zero a partir da interface de X-10. Ambos os pinos deve ser puxado at 5 volts com resistncias de 4.7K. DataPin ZeroPin e pode ser uma constante, 0-15, ou uma varivel que contm um nmero 0-15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). Um tempo limite de etiqueta opcional e pode ser includa para permitir que o programa continue, se X-10 de dados no for recebida dentro de um certo perodo de tempo. Timeout especificado na linha de alimentao AC meia-ciclos (cerca de 8,33 milissegundos). XIN s processa dados em cada cruzamento zero da linha de energia AC de recepo em ZeroPin. Se no houver transies nesta linha, Xin efetivamente esperar para sempre. Se a palavra-Var dimensionada, cada cdigo de casa recebido armazenado no byte superior do termo. Cada cdigo de chave recebida armazenada no byte inferior do termo. Se Var um byte, apenas o cdigo de chave armazenado. O cdigo de casa um nmero entre 0 e 15, que corresponde ao cdigo de casa definida no mdulo X-10 A a P. O cdigo da chave pode ser qualquer nmero de um mdulo X-10 especfico ou da funo que para ser executado por um mdulo. Em prtica normal, um primeiro comando especificando o nmero X-10 do mdulo enviada, seguida por um comando especificando a funo desejada. Algumas funes operam em todos os mdulos de uma vez de modo que o nmero do mdulo desnecessria. Esperemos que, mais tarde exemplos esclarecer as coisas. Os nmeros de cdigo-chave 0-15 correspondem aos nmeros dos mdulos 1-16.Example housekey VAR WORD ' Get X-10 data loop: XIN PORTA.2,PORTA.0,[housekey] ' Display X-10 data on LCD LCDOUT $fe,1,"House=",#housekey.byte1, "Key=",#housekey.byte0 GOTO loop ' Do it forever ' Check for X-10 data, go to nodata if none XIN PORTA.2,PORTA.0,1,nodata,[housekey] XOUT XOUT DataPin,ZeroPin, [HouseCode\KeyCode{\Repeat}{,...}] Enviar HouseCode seguido pelo cdigo de acesso, nmero de repetio de vezes em formato de X-10. Se a repetio opcional est parado, duas vezes (no mnimo) assumida. Repetir geralmente reservado para uso com os comandos brilhantes e Dim. XOUT usado para enviar as informaes de controle de X-10 mdulos. Estes mdulos esto disponveis a partir de uma ampla variedade de fontes, sob vrias designaes comerciais. necessrio uma interface para conectar o microcontrolador para a linha de alimentao AC. Ou o PL-513 para enviar apenas, ou o TW-523 em dois sentidos X-10 comunicaes so obrigatrios. Estes dispositivos contm a interface de linha de energia e isolar o microcontrolador a partir da linha de CA. Como o formato X-10 patenteada, estas interfaces tambm cobrir as taxas de licena. DataPin feita automaticamente uma sada para enviar os dados para a interface de X-10. ZeroPin feita automaticamente uma entrada para receber o tempo de cruzamento zero a partir da interface de X-10. Ele deve ser puxado at 5 volts com um resistor de 4.7K. DataPin PRO STD

ZeroPin e pode ser uma constante, 0-15, ou uma varivel que contm um nmero 0-15 (por exemplo, B0) ou um nome de pino (por exemplo PORTA.0). XOUT s processa dados em cada cruzamento zero da linha de energia AC de recepo em ZeroPin. Se no houver transies nesta linha, XOUT efetivamente esperar para sempre. HouseCode um nmero entre 0 e 15, que corresponde ao cdigo de casa definida no mdulo X-10 A a P. A HouseCode adequada deve ser enviado como parte de cada comando. O cdigo de acesso pode ser o nmero de um mdulo X-10 especfico ou da funo que para ser executado por um mdulo. Em prtica normal, um primeiro comando especificando o nmero X-10 do mdulo enviada, seguida por um comando especificando a funo desejada. Algumas funes operam em todos os mdulos de uma vez de modo que o nmero do mdulo desnecessria. Esperemos que, mais tarde exemplos esclarecer as coisas. KeyCode nmeros 0-15 correspondem aos nmeros do mdulo de 1-16. A senha (funo) nomes (por exemplo, Uniton) so definidos nos MODEDEFS.BAS arquivos. Para us-los, adicione a linha: INCLUIR "modedefs.bas" para o incio do programa PicBasic Pro. BS1DEFS.BAS e BS2DEFS.BAS j inclui MODEDEFS.BAS. No inclu-lo novamente, se um desses arquivos j est includo. Os nmeros KeyCode podem ser utilizados sem a incluso deste ficheiro.

KeyCode unitOn unitOff unitsOff lightsOn lightsOff bright dim

KeyCode No. %10010 %11010 %11100 %10100 %10000 %10110 %11110

Operation Turn module on Turn module off Turn all modules off Turn all light modules on Turn all light modules off Brighten light module Dim light module

Fiao para os X-10 de interfaces requer 4 conexes. Output da interface X-10 (cruzamento de zero e receber dados) so de coletor aberto e exigem um puxar para cima resistor de cerca de 4.7K a 5 volts. Tabelas de fiao para cada interface mostrada abaixo: PL-513 Wiring Wire No. 1 2 3 4 Wire Color Black Red Green Yellow Connection Zero crossing output Zero crossing common X-10 transmit common X-10 transmit input

TW-523 Wiring Wire No. 1 2 Wire Color Black Red Connection Zero crossing output Common

3 4 Example house VAR BYTE unit VAR BYTE INCLUDE "modedefs.bas"

Green Yellow

X-10 receive output X-10 transmit input

house = 0 ' Set house to 0 (A) unit = 8 ' Set unit to 8 (9) ' Turn on unit 8 in house 0 XOUT PORTA.1,PORTA.0,[house\unit,house\unitOn] ' Turn off all the lights in house 0 XOUT PORTA.1,PORTA.0,[house\lightsOff] ' Blink light 0 on and off every 10 seconds XOUT PORTA.1,PORTA.0,[house\0] loop: XOUT PORTA.1,PORTA.0,[house\unitOn] PAUSE 10000 ' Wait 10 seconds XOUT PORTA.1,PORTA.0,[house\unitOff] PAUSE 10000 ' Wait 10 seconds GOTO loop

Você também pode gostar