HOla buen dia
dusculpen el no haber seguido el dia de ayer el hilo del tema ya que estube fuera de la ciudad.
sobre el software para controlar el ht9200b, se marca el numero al presionar un boton que esta conectado al pin B0 del pic, los datos (pines D0->d3 del ht9200b) se manejan de forma paralela mediante los pines del pic C0->C3 . el CE del ht9200b se controla mediante el pin E0 del pic.
cada vez que se marca un numero primero se manda el digito a las terminales D0->D3 del ht9200b, se hace un delay y luego se manda el CE, se hace una delay y se desabilita el CE.
en mi caso solo marco 4 digitos ya que estoy marcandole al comapeñero que tengo a un lado de mi.
adjunto el software para que quede mas claro, tambien el diagrama (oupsss ,me falto ponerle en el dibujo la resistencia de 580 ohm entre ring y tip para simular el descolgado de la linea).
#include<16f877a.h>
//#device ICD=TRUE
#use delay(clock=20000000)
//#use i2c(MASTER, SDA=PIN_C4, SCL=PIN_C3)
//#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#fuses HS, NOWDT, NOLVP, NOBROWNOUT, PROTECT
#include <string.h>
//#include <lcd.c>
//#include <input.c>
#define CE PIN_E0 //ENABLED DEL HT9200
#define DIAL PIN_B0 //MARCA NUMERO
#define RE PIN_E1 //ACTIVA RELAY CONECTADO A LA LINEA
void main(void)
{
int i;
int num[4]={4,1,0,6};
set_tris_e(0);
set_tris_c(0);
set_tris_b(0xff);
port_b_pullups(TRUE);
output_e(0x01);
delay_ms(3000);
while(true)
{
//////////////////////////////////
if(!input(DIAL)) //SECUENCIA 1
{
// delay_ms(5);
// output_high(RE);
delay_ms(10);
for(i=0; i<4; i++)
{
output_c(num);
delay_ms(80);
output_low(CE);
delay_ms(150);
output_high(CE);
delay_ms(300);
}
//output_low(RE);
}
//////////////////////////////////
}
}