baaauuumm Claudio ?! Raimundo de novo ! lembra de mim ?!, sou o mesmo, mais os meus cabelooosss, cairam quase tudo !! lembra dos 10 botoes, agora sao 8, ce disse que pode contar ate 255 pulsos e bips, tem como aumentar por exemplo 400, ou 500 pulsos e bips ? abraço !!
(risos)
Tudo bem Raimundo?
Para ser sincero eu não me lembro mais desses tais 10 botões. Mas por lógica, contando até 255 significa que você se está usando um único registrador de 8 bits para a contagem. Agregando mais um registrador para formar 16 bits irá permitir a contagem de 0 a 65535.
/****************************************************************************
PROGRAMAS_CCS_C_EX5
Exemplos de programas com compilador CCS C
Piscando um led e produzindo bips conforme interruptor acionado
Autor: Claudio Lários
Data: 01/05/2019
Pisca led e bipa conforme interruptor acionado e ajustes do defines.
Blog PicSource
*************************************************************************/
#include <16F628A.h>//microcontrolador PIC16F628A
#use delay(clock=4000000)//internal
#fuses NOWDT,INTRC_IO, NOPUT, NOPROTECT, BROWNOUT, NOMCLR, NOLVP, NOCPD//fuses
//bytes
#byte portb = 0x06
#byte porta = 0x05
#byte trisa = 0x85
#byte trisb = 0x86
#byte option_reg = 0x81
//bits
//ligue 8 interruptores (um em cada pino para o gnd)
#bit sw1 = 0x6.0 //pino 6
#bit sw2 = 0x6.1 //pino 7
#bit sw3 = 0x6.2 //pino 8
#bit sw4 = 0x6.3 //pino 9
#bit sw5 = 0x6.4 //pino 10
#bit sw6 = 0x6.5 //pino 11
#bit sw7 = 0x6.6 //pino 12
#bit sw8 = 0x6.7 //pino 13
#bit led = 0x5.0 //pino 17
#bit buzzer = 0x5.1 //pino 18
//defines
//ALTERE O VALOR DE PISCADAS E BIPS PARA CADA INTERRUPTOR (DE 1 A 255 )
#define NUMERO_PISCA_BIP1 10
#define NUMERO_PISCA_BIP2 20
#define NUMERO_PISCA_BIP3 30
#define NUMERO_PISCA_BIP4 40
#define NUMERO_PISCA_BIP5 50
#define NUMERO_PISCA_BIP6 100
#define NUMERO_PISCA_BIP7 150
#define NUMERO_PISCA_BIP8 200
/*************************************************************************
GERA SOM DE BIP NO DISCO PIEZO ELETRICO
*************************************************************************/
void bipar(){
#define DURACAO 300
#define NOTA 140
unsigned int16 b;for(b=0;b<=DURACAO;b++){
buzzer=1;
delay_us(NOTA);
buzzer=0;
delay_us(NOTA);
}
}
/***************************************************************/
void bipa_p(unsigned int8 n){
while(n){
led=1;//liga led
bipar();//gera bip no disco piezo elétrico
led=0;//apaga led
delay_ms(10);
n--;//decrementa
}
}
/****************************************************************
ROTINA DE GERAÇÃO DAS PISCADAS NO LED E SOM
****************************************************************/
void pisca_bipa_B(){//para o portB
unsigned int8 d;
d=portb;
d=~d;
If(d&1) bipa_p(NUMERO_PISCA_BIP1 );
If(d&2) bipa_p(NUMERO_PISCA_BIP2 );
If(d&4) bipa_p(NUMERO_PISCA_BIP3 );
If(d&8) bipa_p(NUMERO_PISCA_BIP4 );
If(d&16) bipa_p(NUMERO_PISCA_BIP5 );
If(d&32) bipa_p(NUMERO_PISCA_BIP6 );
If(d&64) bipa_p(NUMERO_PISCA_BIP7 );
If(d&128) bipa_p(NUMERO_PISCA_BIP8 );
}
/*************************************************************************
ROTINA MAIN
*************************************************************************/
void main(){
setup_comparator(NC_NC_NC_NC);//desliga comparadores analógicos internos
trisb=0b11111111;//entradas
trisa=0b11111100;//saídas nos pinos 17 e 18
option_reg=0; //liga pullup
porta=0;
/*************************************************************************
LAÇO DE REPETIÇÃO
****************************************************************************/
for(;;){
if(portb!=0xff){//testa para confirmar aperto
pisca_bipa_B();//pisca led pelo número correspondente do botão apertado
while(portb!=0xff)delay_ms(40);//aguarda soltar botão se for o caso
}
}//for(;;)
}//main()
//fim do programa
esse aí é o 8 botoes, tem como alterar pa contar mais ?!?
sei mexer nisso aí não, da um empurrão aí, 8 bits, 16 bits, registrador, juda nois aí de novo !!
Boa tarde Raimundo
Desculpe a curiosidade: mas para fazer um programa que fique piscando e bipando quatrocentas ou quinhentas vezes? Máquina de tortura?(risos)
huuummmm, boa ideia, to precisando de uma dessas, mais num é isso não, ce viu que tem 8 saidas que conta de 0 a 255 conforme os defines, so quero saber se tem jeito, e onde mexer pa contar mais, 0-400, ou 0-500, ce falou de registrador, num sei nem onde fica isso, me fala aí !
Estou me referindo ao tamanho da variável que receberá o valor do número de pulsos, que é de 8 e que deverá ser trocada por uma de 16 bits.
Mais exatamente é a variável 'n' da função 'void bipa_p(unsigned int8 n){' que deverá ser escrita 'void bipa_p(unsigned int16 n){'.
Tente compilar o abaixo (não testei nada ainda).
Quando você for testar o código, acredito que você terá muito tempo para tomar algumas cervejas enquanto espera contar por estes valores de 'piscadas' tão enormes! (risos).
/****************************************************************************
PROGRAMAS_CCS_C_EX5
Exemplos de programas com compilador CCS C
Piscando um led e produzindo bips conforme interruptor acionado
Autor: Claudio Lários
Data: 01/05/2019
Pisca led e bipa conforme interruptor acionado e ajustes do defines.
Blog PicSource
*************************************************************************/
#include <16F628A.h>//microcontrolador PIC16F628A
#use delay(clock=4000000)//internal
#fuses NOWDT,INTRC_IO, NOPUT, NOPROTECT, BROWNOUT, NOMCLR, NOLVP, NOCPD//fuses
//bytes
#byte portb = 0x06
#byte porta = 0x05
#byte trisa = 0x85
#byte trisb = 0x86
#byte option_reg = 0x81
//bits
//ligue 8 interruptores (um em cada pino para o gnd)
#bit sw1 = 0x6.0 //pino 6
#bit sw2 = 0x6.1 //pino 7
#bit sw3 = 0x6.2 //pino 8
#bit sw4 = 0x6.3 //pino 9
#bit sw5 = 0x6.4 //pino 10
#bit sw6 = 0x6.5 //pino 11
#bit sw7 = 0x6.6 //pino 12
#bit sw8 = 0x6.7 //pino 13
#bit led = 0x5.0 //pino 17
#bit buzzer = 0x5.1 //pino 18
//defines
//ALTERE O VALOR DE PISCADAS E BIPS PARA CADA INTERRUPTOR (DE 1 A 65536 )
#define NUMERO_PISCA_BIP1 100
#define NUMERO_PISCA_BIP2 200
#define NUMERO_PISCA_BIP3 300
#define NUMERO_PISCA_BIP4 400
#define NUMERO_PISCA_BIP5 500
#define NUMERO_PISCA_BIP6 1000
#define NUMERO_PISCA_BIP7 1500
#define NUMERO_PISCA_BIP8 2000
/*************************************************************************
GERA SOM DE BIP NO DISCO PIEZO ELETRICO
*************************************************************************/
void bipar(){
#define DURACAO 300
#define NOTA 140
unsigned int16 b;for(b=0;b<=DURACAO;b++){
buzzer=1;
delay_us(NOTA);
buzzer=0;
delay_us(NOTA);
}
}
/***************************************************************/
void bipa_p(unsigned int16 n){
while(n){
led=1;//liga led
bipar();//gera bip no disco piezo elétrico
led=0;//apaga led
delay_ms(10);
n--;//decrementa
}
}
/****************************************************************
ROTINA DE GERAÇÃO DAS PISCADAS NO LED E SOM
****************************************************************/
void pisca_bipa_B(){//para o portB
unsigned int8 d;
d=portb;
d=~d;
If(d&1) bipa_p(NUMERO_PISCA_BIP1 );
If(d&2) bipa_p(NUMERO_PISCA_BIP2 );
If(d&4) bipa_p(NUMERO_PISCA_BIP3 );
If(d&8) bipa_p(NUMERO_PISCA_BIP4 );
If(d&16) bipa_p(NUMERO_PISCA_BIP5 );
If(d&32) bipa_p(NUMERO_PISCA_BIP6 );
If(d&64) bipa_p(NUMERO_PISCA_BIP7 );
If(d&128) bipa_p(NUMERO_PISCA_BIP8 );
}
/*************************************************************************
ROTINA MAIN
*************************************************************************/
void main(){
setup_comparator(NC_NC_NC_NC);//desliga comparadores analógicos internos
trisb=0b11111111;//entradas
trisa=0b11111100;//saídas nos pinos 17 e 18
option_reg=0; //liga pullup
porta=0;
/*************************************************************************
LAÇO DE REPETIÇÃO
****************************************************************************/
for(;;){
if(portb!=0xff){//testa para confirmar aperto
pisca_bipa_B();//pisca led pelo número correspondente do botão apertado
while(portb!=0xff)delay_ms(40);//aguarda soltar botão se for o caso
}
}//for(;;)
}//main()
//fim do programa
Huummm ! cervejinha de leve é baum ! viu só, um numerozinho, e tá funcionando, foi só compilar que deu certinho, vou usar o circuito com o contador digital up/down, no lugar do led, vou colocar um foto acoplador e desativar os bips, valeu Claudio, um abraço !