Página 1 de 1
74HC165 & 74HC595

Enviado:
29 Mar 2010 20:31
por Patrik.Fernandes
Não vou dizer que sou novato na área porque devem estar cansados de ler isso.
Gostaria que me ajudem em uma questão com os registradores:
1: Como defino no programa CCS uma entrada, por exemplo a entrada DO do registrador 74HC165 como Input_I1. (Estou usando dois CIs 74HC165 2 74HC595). Acho eu que o caminho é por macros mas não tenho certeza e outra não sei como fazer o CCS entender que D0 é igual Input_1.
2:Gostaria de um exemplo simples onde uma entrada do 165 acione uma saída no 595 utilizando o PIC 18F4550.(Li algo sobre BIT_SET e BIT_TEST).
Software usado CCS
PIC Usado 18F4550
Obrigado pela atenção!!!

Enviado:
29 Mar 2010 22:32
por Patrik.Fernandes
int32 DataOut;
int32 DataIn;
void main()
{
BYTE DataIn;
BYTE DataOut;
setup_adc_ports(AN0_TO_AN3|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_1,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_ccp1(CCP_PWM_FULL_BRIDGE|CCP_SHUTDOWN_AC_L|CCP_SHUTDOWN_BD_L);
setup_ccp2(CCP_PWM);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
lcd_init();
enable_interrupts(INT_LOWVOLT);
enable_interrupts(GLOBAL);
setup_low_volt_detect(FALSE);
setup_oscillator(False);
do{
read_expanded_inputs (&DataIn);
if (DataIn&0x01) (output_high(PIN_C0)); // Liga Led
if (!DataIn&0x01) (output_Low(PIN_C0));//Desliga Led
write_expanded_outputs (&DataOut);
}while (TRUE);
}
Consegui acionar uma sai´da do PIC através da entrada do 74HC165
Porém ficou lento o acionamento...É assim mesmo???
Agora preciso saber como eu Defino as entradas e como aciono uma saída!!!!
Por favor ajuda ai pessoal

Enviado:
30 Mar 2010 11:13
por ze
mesmo cansado de escrever a mesma coisa, vou dizer: aprender sobre uC baseando só no compilador não parece ser muito inteli... eficaz. tente ler o dataxit dos bixos. do uC e das portas.
mas se só quer "soft", debulhe a função write_expanded_outputs() e etc. sabe o que ela faz? não?? ou usa de olhos fechados?? aí ferrou... (eu também não sei e não quero saber... ccs...ieca)
posta o circuito. pode ajudar quem for te ajudar. ajude a quem for te ajudar. mas isso é "hard" portanto tem que "abrir o olho"
abç

Enviado:
30 Mar 2010 12:16
por vtrx
Gostaria de um exemplo simples onde uma entrada do 165 acione uma saída no 595
O pic pode 'simular' esses CIs,aí sim voce poderia programar algo relacionado em C.
Voce tem conhecimentos em eletrônica digital?

Enviado:
31 Mar 2010 22:06
por Patrik.Fernandes
write_expanded_outputs() e etc. sabe o que ela faz? não?? ou usa de olhos fechados?? aí ferrou...
Sim eu sei o que esse comando faz....
O que acontece é o seguinte eu não consigo dizer por CCS qual saida do 74hc595 eu quero acionar.... As entradas eu consegui em bora achei meio lento na simulação no proteus. So pesso ajuda para um exemplo simples onde eu possa entender como eu digo pro ccs colocar o pino Q0 do 74hc595 em high.
Peço desculpas porque parece que não fui o unico a perguntar por esse registradores mas acontece que não encontrei respostas relacionadas a minha duvida, tirando a parte de ser novato no assunto. Mas pra quem esta a menos de um mês estudando muito sobre isso acho que até to bem.[/quote]

Enviado:
31 Mar 2010 22:13
por Patrik.Fernandes
O pic pode 'simular' esses CIs,aí sim voce poderia programar algo relacionado em C.
Voce tem conhecimentos em eletrônica digital?
Já estou simulando no proteus junto ao CCS e estou montando 7 placas eletronicas para iniciar meu desenvolvimento, assim que terminar as placas eu posto as fotos.
1 Principal com o PIC + cristal + USB
1 Placa com 12 reles
1 Placa com 12 entradas
1 Placa com 4 entradas analogicas de 0 a 5 e de 4 a 20ma
1 Placa com display
1 Placa com os registradores
1 Placa com teclado

Enviado:
06 Abr 2010 23:23
por lucasi
Patrick...
Fiz um código talvez deva te ajudar...
Fiz ele para expandir as saidas de um 16F877 usando dois 74HC595
Abs
lucasi
#include <16F877A.h> // seleciona o PIC16F877A
#define EXP_OUT_ENABLE PIN_B0 //RCK - Pino 12 do 74HC595(1) & Pino 12 do 74HC595(2)
#define EXP_OUT_CLOCK PIN_B1 //SCK - Pino 11 do 74HC595(1) & Pino 11 do 74HC595(2)
#define EXP_OUT_DO PIN_B2 //SER - Pino 14 do 74HC595(1)
///////////////////////////////////////////////////////////////////////////
//// O DS do 74HC595(2) é alimentado pelo Q7' do 74HC595(1) ////
//// ////
#fuses HS,NOWDT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP
#use delay (clock=4000000)
#ZERO_RAM
Byte data1 = 0b00000011;
Byte data2 = 0b10101011;
//------ 74HC595 serial chip --------------
void outSerial(int8 chip1,int8 chip2)
{
int8 i;
int16 data;
data = chip2;
data = data<<8;
data = data | chip1;
// Output to serial line
for(i=0; i<16; i++)
{
if(data & 0x8000)
{output_high(EXP_OUT_DO);}
else
{output_low(EXP_OUT_DO);}
data = data<<1;
output_low(EXP_OUT_CLOCK); //Shift data
output_high(EXP_OUT_CLOCK);
}
output_low(EXP_OUT_ENABLE); //Output on pins
output_high(EXP_OUT_ENABLE);
}
void main()
{
setup_adc_ports(NO_ANALOGS); // nao usaremos nenhum porta analogica
setup_adc(ADC_OFF); // desligamos o conversor AD
setup_psp(PSP_DISABLED); // nao utiizamos a porta PSP
setup_spi(FALSE); // nao utilizamos a porta SPI
setup_counters(RTCC_INTERNAL,RTCC_DIV_2); //configuracao TMR0 DEFAULT
setup_timer_1(T1_DISABLED); // desabilitarmos o TMR1
setup_timer_2(T2_DISABLED,0,1); // desabilitamos o TMR2
setup_comparator(NC_NC_NC_NC); // desabilitamos os comparadores
setup_vref(FALSE); // desabilitamos a tens?o de referencia
outSerial(data1,data2);
}

Enviado:
18 Abr 2010 23:33
por BolhaDigital
...caramba tô com vontade de zoar, não levem a mal,
mas usa ASM, é mais simples e não dá pal...
C parece facil, mas é só aparencia, quando a coisa começa a cair para o lado de manipular hw a coisa parece que não tem muita afinidade, inclusive com bugs estranhos...
Antes que briguem comigo, eu gosto do C, mas sinceramente prefiro o ASM e o BASIC...