Ir ao conteúdo
  • Cadastre-se

Dani piresk

Membro Pleno
  • Posts

    786
  • Cadastrado em

  • Última visita

Tudo que Dani piresk postou

  1. ahuhauahuahuahuua cara, esse programa era aquele que você tava me ajudando, que você seleciona o valor com dois botões + e - depois aperta start. ae ele vaí contando de 1 em 1 segundo o tempo e quando der aquele valor selecionado ele aciona um bit do porta, lembra?
  2. Paulo, você pode dar uma olhada no código? Queria saber se tem algo pra melhorar ou já tá bom. Define CONF_WORD = 0x3f50 AllDigital TRISA = 00000111b 'lcd TRISB = 0x00 Define LCD_BITS = 4 Define LCD_DREG = PORTB Define LCD_DBIT = 0 Define LCD_RSREG = PORTB Define LCD_RSBIT = 5 Define LCD_EREG = PORTB Define LCD_EBIT = 4 Define LCD_READ_BUSY_FLAG = 1 'botões Symbol botao_up = PORTA.0 Symbol botao_down = PORTA.1 Symbol botao_sp = PORTA.2 'Variáveis Dim contador As Word Dim valors As Word Dim restante As Word Dim cont_int As Byte Dim habilitado As Bit Dim selecionando As Bit valors = 5 'teste..... contador = 0 cont_int = 0 habilitado = 0 selecionando = 1 Lcdinit 'iniciar lcd Lcdcmdout LcdClear 'limpar lcd Lcdout "Escolha um valor." Gosub configura_timer loop: Gosub teclaup Gosub tecladown Gosub teclasp Goto loop End On Interrupt Save System If habilitado = 1 Then cont_int = cont_int + 1 If cont_int = 2 Then Goto loop1 Goto sailoopt loop1: contador = contador + 1 If contador = valors Then PORTA.3 = 0 PORTA.4 = 1 Lcdcmdout LcdClear Lcdcmdout LcdLine1Pos(1) Lcdout "Descarregando cap." Lcdcmdout LcdLine2Pos(1) Lcdout "Escolha um valor." habilitado = 0 Goto sailoopt Endif Lcdcmdout LcdLine2Clear Lcdcmdout LcdLine2Pos(1) restante = valors - contador Lcdout "Restando: ", #restante, "s" cont_int = 0 Else Goto sailoopt Endif Resume configura_timer: OPTION_REG.T0CS = 0 'usar clock interno OPTION_REG.PSA = 0 'prescaler ligado no TIMER0 OPTION_REG.PS2 = 1 'valor prescaler = 256 OPTION_REG.PS1 = 1 OPTION_REG.PS0 = 1 TMR0 = 0xfe 'contagem inicial do TIMER0 INTCON.T0IE = 1 'habilita interrupções timer0 INTCON.GIE = 1 'habilita todas interrupções mascaradas Enable Return teclaup: If botao_up = 0 Then Goto apertado_up Endif apertado_up: 'Rotina de Debounce WaitMs 50 If botao_up = 1 Then Goto botaoconfirmado_up Else Goto sailoop Endif botaoconfirmado_up: If selecionando = 1 Then valors = valors + 1 Lcdcmdout LcdLine2Clear Lcdcmdout LcdLine2Pos(1) Lcdout "Valor: ", #valors Endif Return tecladown: If botao_down = 0 Then Goto apertado_down Endif apertado_down: 'Rotina de Debounce WaitMs 50 If botao_down = 1 Then Goto botaoconfirmado_down Else Goto sailoop Endif botaoconfirmado_down: If selecionando = 1 Then valors = valors - 1 Lcdcmdout LcdLine2Clear Lcdcmdout LcdLine2Pos(1) Lcdout "Valor: ", #valors Endif Return teclasp: If botao_sp = 0 Then Goto apertado_sp Endif apertado_sp: 'Rotina de Debounce WaitMs 50 If botao_sp = 1 Then Goto botaoconfirmado_sp Else Goto sailoop Endif botaoconfirmado_sp: Lcdcmdout LcdClear Lcdcmdout LcdLine1Pos(1) Lcdout "Timer habilitado" Lcdcmdout LcdLine2Pos(1) Lcdout "Restando: ", #valors, "s" If habilitado = 1 Then habilitado = 0 Else habilitado = 1 Endif Return sailoop: Return sailoopt: TMR0 = 0xfe INTCON.T0IF = 0 Enable Return
  3. Paulo, não é poissível, tenho que te incomodar de novo.... contador = (10 * contador) + 5 contador = contador / 10 Lcdcmdout LcdClear Lcdout "Valor contador: ", #contador A variável contador é do tipo word. Sempre fica 0 essa coisa... Que que to fazendo de errado...?
  4. Ah, certo, entendi... Olha só, me tira uma dúvida como mostro o valor de uma váriavel byte ou word no display? Tentei LcdOut teste e não mostrou nada.. EDIT: Consegui, to acostumado com c++ cara..... Bom eu perder o costume haha.
  5. Sim sim, meu problema agora é outro. Queria saber se existe variaveis flutuante no psi. (exemplo var = 0.5) edit: Eu tava pensando em fazer assim... On Interrupt Save System 'Lcdcmdout LcdClear 'Lcdout "valor timer " if controle = contador then porta.7 = 1 contador = contador + 0.5 TMR0 = 0xfe INTCON.T0IF = 0 Resume Onde controle seria o valor em segundos do tempo em que o timer ficaria ativo. Mas não dá certo né?
  6. Certo, assim que descobrir algo me dê um retorno. Já li esse datasheet umas 500x e nada.. EDIT: Nem tinha visto o post, vou ler.. PO muito obrigado cara. Mas, vou te incomodar mais um pouco.. Amigo paulo, preciso fazer isso: No portA vou ligar três botões, um pra aumentar e outro diminuir, o valor de uma váriavel que será o tempo em que o timer ficará ativo, quando esse tempo estourar ele vaí ter que ligar um bit do portA. Exemplo, apertei 5 x o botão + e a variável ficou com valor 5, então quando eu apertar no botão start ele vai começar a contar e quando der 5segundos ele aciona uma saída da portA. Como posso fazer isso? PS: Com clock interno, não preciso do cristal né? EDIT 2: To tentando aqui, mas to com um problema... Como usa float no PSI? Preciso somar a uma variavl 0.5, quando ele gerar a interrupção e depois verificar com um if o valor dessa variavel se é igual ao valor da variavel que armazena o tempo.
  7. Pedi umas coisas, uns Z80, uns ci, uns max232, 555, .. Vamos ver..
  8. Você pode sim, simular clicando em: File -> Load Program Agora descompilar para bas não dá, só asm.
  9. #off: Amigo utilize o www.imageshack.us para hospedar as imagens, depois você pega o link dela em põe entre essas tags: [img] [/img] Exemplo: [img] www.meusite.com.br/imagem.png [/img][img=http://meusite.com.br/minhaimagem.png]
  10. Opa, paulo consegui!! Agora meu problema é com o timer0... Define CONF_WORD = 0x1ec1 'lcd TRISB = 0x00 Define LCD_BITS = 4 Define LCD_DREG = PORTB Define LCD_DBIT = 0 Define LCD_RSREG = PORTB Define LCD_RSBIT = 5 Define LCD_EREG = PORTB Define LCD_EBIT = 4 'Variáveis Dim contador As Byte contador = 20 Lcdinit 'iniciar lcd Lcdcmdout LcdClear 'limpar lcd Call configura_timer() End On Interrupt Save System Lcdcmdout LcdClear Lcdout "valor timer " TMR0 = 0x3d INTCON.T0IF = 0 Resume Proc configura_timer() OPTION_REG.T0CS = 0 'usar clock interno OPTION_REG.PSA = 0 'prescaler ligado no TIMER0 OPTION_REG.PS2 = 1 'valor prescaler = 256 OPTION_REG.PS1 = 1 OPTION_REG.PS0 = 1 TMR0 = 0x3d 'contagem inicial do TIMER0 INTCON.T0IE = 1 'habilita interrupções timer0 INTCON.GIE = 1 'habilita todas interrupções mascaradas Enable End Proc Você pode analisar meu código?
  11. Felipe, segundo o manual é só colocar o pino, pois tem um outro define que define as portas mas o padrão é a B. Mas vou tentar como você falou, vaí que entendi errado. EDIT: Não é assim não felipe.. Pena, pensei que iria resolver o problema. Mas nem compilou... .. LCD_BITS - defines the number of data interface lines (allowed values are 4 and 8; default is 4) LCD_DREG - defines the port where data lines are connected to (default is PORTB) LCD_DBIT - defines the position of data lines for 4-bit interface (0 or 4; default is 4), ignored for 8-bit interface LCD_RSREG - defines the port where RS line is connected to (default is PORTB) LCD_RSBIT - defines the pin where RS line is connected to (default is 3) LCD_EREG - defines the port where E line is connected to (default is PORTB) LCD_EBIT - defines the pin where E line is connected to (default is 2) LCD_RWREG - defines the port where R/W line is connected to (set to 0 if not used; 0 is default) LCD_RWBIT - defines the pin where R/W line is connected to (set to 0 if not used; 0 is default) LCD_COMMANDUS - defines the delay after LCDCMDOUT statement (default value is 5000) LCD_DATAUS - defines the delay after LCDOUT statement (default value is 100) LCD_INITMS - defines the delay for LCDINIT statement (default value is 100)
  12. Beleza amigo paulo! O problema desse esse "pequeno" produto é o preço que não é compátivel com meus projetos hehehe. Você poderia ver esse código que eu fiz? Define CONF_WORD = 0x1ec1 'lcd TRISB = 0x00 Define LCD_RSBIT = 5 Define LCD_EBIT = 4 Define LCD_INITMS = 2 Lcdinit loop: Lcdcmdout LcdClear Lcdout "Teste" WaitMs 1 Goto loop Não consegui fazer funcionar...
  13. Felipe, deixa eu te perguntar.. Esse Pics da família 32 se acha no brasil? Se sim, onde? Quanto mais ou menos? Outra coisa, posso usar mais de um periférico num barramento L2C de um pic da familia 18 por exemplo? Exemplo uma EEPROM e um DS1307.
  14. Amigo paulo, dei uma olhada e achei isso: Define CLOCK_FREQUENCY = 20 Define CONFIG1L = 0x24 Define CONFIG1H = 0x0c Define CONFIG2L = 0x3e Define CONFIG2H = 0x00 Define CONFIG3L = 0x00 Define CONFIG3H = 0x83 Define CONFIG4L = 0x80 Define CONFIG4H = 0x00 Define CONFIG5L = 0x0f Define CONFIG5H = 0xc0 Define CONFIG6L = 0x0f Define CONFIG6H = 0xe0 Define CONFIG7L = 0x0f Define CONFIG7H = 0x40 UsbSetVendorId 0x1234 UsbSetProductId 0x1234 UsbSetVersionNumber 0x1122 UsbSetManufacturerString "OshonSoft.com" UsbSetProductString "Generic USB HID Device" UsbSetSerialNumberString "1111111111" UsbOnIoInGosub usbonioin UsbOnIoOutGosub usbonioout UsbOnFtInGosub usbonftin UsbOnFtOutGosub usbonftout AllDigital ADCON1 = 0x0e TRISB = 0 PORTB = 0xff UsbStart PORTB = 0 Dim an0 As Byte loop: Adcin 0, an0 If an0 < 50 Then PORTB = 0 UsbStop While an0 < 100 Adcin 0, an0 Wend PORTB = 0xff UsbStart PORTB = 0 Endif UsbService Goto loop End usbonftout: Toggle PORTB.7 Return usbonftin: UsbFtBuffer(0) = UsbFtBuffer(0) - 1 UsbFtBuffer(1) = UsbFtBuffer(1) - 1 UsbFtBuffer(2) = UsbFtBuffer(2) - 1 UsbFtBuffer(3) = UsbFtBuffer(3) - 1 UsbFtBuffer(4) = UsbFtBuffer(4) - 1 UsbFtBuffer(5) = UsbFtBuffer(5) - 1 UsbFtBuffer(6) = UsbFtBuffer(6) - 1 UsbFtBuffer(7) = UsbFtBuffer(7) - 1 Return usbonioout: Toggle PORTB.6 Return usbonioin: UsbIoBuffer(0) = UsbIoBuffer(0) + 1 UsbIoBuffer(1) = UsbIoBuffer(1) + 1 UsbIoBuffer(2) = UsbIoBuffer(2) + 1 UsbIoBuffer(3) = UsbIoBuffer(3) + 1 UsbIoBuffer(4) = UsbIoBuffer(4) + 1 UsbIoBuffer(5) = UsbIoBuffer(5) + 1 UsbIoBuffer(6) = UsbIoBuffer(6) + 1 UsbIoBuffer(7) = UsbIoBuffer(7) + 1 Return Achei muito confuso, vocÊ teria algum exemplo de envio e recebimentos de dados pela usb? Nesse PSI18. Ah e dá pra eu alterar o número de bytes de envio e recebimento? (que nem no mikroc, que tem o descritor). OFF: Paulo você tem msn?
  15. Amigo Paulo, gostaria de tirar uma dúvida com você, o PSI tem suporte para HID?
  16. Ah sim. Se sua placa for 110V pode usa esse varistor mesmo.
  17. Amigo pode postar uma foto? R2 está mais para um resistor do que varistor hehe.
  18. uhuahuahuahauhuahauhhauhau Amigo lucas, faça isso que o nosso amigo faller falou e dê um retorno para nós.

Sobre o Clube do Hardware

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

Direitos autorais

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

×
×
  • Criar novo...