InicioApuntes Y MonografiasComunicacion Uart Pic16F877A
Material: 2 Pic16f877A; 2 display 7 Segmentos Catodo comun; 2 Transistor 2n2222; 3 led; tres push button; 3 r 220ohm, 2 r 10K ohm;crystal y capacitores para reloj de ambos pics; 7448 (bcd a siete segmentos).

El primer Codigo Para el pic; recibe el pulso de los botones en el puerto E; envia el valor al segundo pic, luego recibe un dato del otro micro y lo visualiza en los display.
**********************************************************************//
char x1;
char x2;
int unidades;
int decenas;
void initmain(){
ADCON1=0x06; //se configura el pic solo con entradas digitales
TRISE=1; // puerto E como entrada
TRISB=0; // puerto B como salida
PORTB=0;
PORTE=0;
TRISD=0;
PORTD=0;
UART1_Init(9600); // inicializando UART a 9600 bps
Delay_ms(100);
UART1_Write_Text("Start"; // envia el texto start
//UART1_Write(10);
//UART1_Write(13); // salto de linea
}
void main() {
initmain();
while(1)
{
x1=PORTE; // guarda en x1 segun el boton pulsado
UART1_Write(x1); // envia el dato via uart
delay_ms(100);
if (UART1_Data_Ready()) { // recibe dato de vuelta
x2= UART1_Read();
unidades=x2%10; // operacion para separar digitos
decenas=x2/10; // y representar en el 7 segmentos a traves del 7448
PORTD=1;
PORTB=unidades;
delay_ms(50);
PORTD=0;
delay_ms(50) ;
PORTD=2;
PORTB=decenas;
delay_ms(50);
PORTD=0;
delay_ms(50); }
} }

El siguiente codigo es para el segundo micro, recibe el valor y lo representa en el puerto E donde enciende los leds correspondientes a la combinacion de botonoes pulsado en el primer micro, el valor lo eleva al cuadrado y lo envia hacia el primer micro. Ej. Recibe el 3, lo eleva al cuadrado y envia el numero 9 de vuelta.

char x1;char x2;char x3;
void initmain(){
ADCON1=0x06; //se configura el pic solo con entradas digitales
TRISE=0;
TRISB=0; // puerto B como salida
//TRISD=0;
PORTB=0;
PORTA=0;
PORTE=0 ;
//PORTD=0;
UART1_Init(9600);
Delay_ms(100);
}
void main() {
initmain();
while(1){
if (UART1_Data_Ready()) {
x1 = UART1_Read();
x2=x1*x1;
delay_ms(200);
UART1_Write(x2);
}
PORTE=x1;
// PORTD=x2;
}}



Con esto tenemos una comunicacion serial entre dos micros, podes adaptar para visualizar en LCD y registrar valores de sensores con el ADC, etc.... Espero les sirva.

Saludos a la comunidad.
Datos archivados del Taringa! original
0puntos
4,125visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

v
Usuario
Puntos0
Posts4
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.