Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Chimborazo
Informe
Comunicacin Serial
Microcontroladores
metros.
La comunicacin serial en cambio es
mucho ms lenta debido a que transmite bit
por bit pero tiene la ventaja de necesitar
menor cantidad de hilos, y adems se puede
extender la comunicacin a mayor distancia,
por ejemplo; en la norma RS232 a 15 mts.,
en la norma RS422/485 a 1200mts y
utilizando un MODEM, pues a cualquier
parte del mundo.
Existen dos formas de realizar la
comunicacin serial: la sincrnica y la
asincrnica, la diferencia entre estas dos
formas de comunicacin es que la
comunicacin sincrnica adems de la lnea
para la transmisin de datos, necesita otra
lnea que contenga los pulsos de reloj, estos
a
su vez indican cuando un dato es vlido.
Por otra parte la comunicacin serial
asincrnica no necesita pulsos de reloj, en su
lugar utiliza mecanismo como referencia
tierra (RS232) o voltajes diferenciales
(RS422/485), en donde la duracin de cada
bit es determinada por la velocidad de
transmisin de datos que se debe definir
previamente entre ambos equipos.
II. FUNDAMENTACIN
MODOS DE TRANSMISIN DE
DATOS.
PIC 16F877A
Teclado matricial
LCD 16x2
Sensores Analgicos
Sensores digitales
Rels
Ventilador
Foco
Se ha programado en lenguaje
Microcode, utilizando conversin
analgica digital, ingreso y lectura
de datos desde un teclado , entre
otros conocimientos adquiridos en
clase.
Nuestro programa consta de un
menos visualizado en un display
que nos permite tomar valores
desde el teclado para elegir
opciones cuyo desarrollo ser
visualizado en el segundo display.
RESULTADOS
Podemos observar en nuestro
proyecto que pudimos integrar en
un solo trabajo la mayora de
conocimientos adquiridos en clase,
logrando comunicar dos pics a
travs de comunicacin serial
logrando interaccin entre ellos.
REFERENCIAS
B VAR PORTD.1
C VAR PORTD.2
D VAR PORTD.3
UNO VAR PORTD.4 ;nombres para los
pines de las columnas
DOS VAR PORTD.5
TRES VAR PORTD.6
CUATRO VAR PORTD.7
INTCON=%10010000
PROGRAMACIN
EMISOR
PROPRIN:
ADCON1=7
DEFINE LCD_DBIT 0
INICIANDO:
GOTO TECLAUNO
PAUSE 200 ;retardo para esperar que
funcione el LCD
LCDOUT $FE, 1 ;limpia la pantalla y
coloca el cursor al comienzo
LCDOUT $FE, 1,"*****ESPOCH*****"
LCDOUT $FE, $C0,"*****EIECRI*****"
pause 500
LCDOUT $FE,1,"CODIGOS:"
LCDOUT $FE,$C0,"
270"
308-259-288-
PAUSE 500
LCDOUT $FE, 1,"INICIANDO......."
PAUSE 500
LCDOUT $FE, 1
LCDOUT $FE, $83,"BIENVENIDO"
pause 1000
LCDOUT $FE, 1,"Ingrese la Clave"
CAMBIAR:
LCDOUT $FE, 1,"NUEVA PASS"
GRABAUNO: ;programa para cambiar
la clave
GOSUB ESPACIO
GOSUB BARRIDO : GOSUB ESPACIO :
LCDOUT $FE, $C0,"x" ;ir a barrido y
retorna a un antirrebote
WRITE 0,NUMERO ;guardar en la
EEPROM 0 el valor de nmero
GRABADOS:
GOSUB BARRIDO : GOSUB ESPACIO :
LCDOUT $FE, $C0,"xx" ;ir a barrido y
retorna a un antirrebote
WRITE 1,NUMERO ;guardar en la
EEPROM 1 el valor de nmero
GRABATRES:
GOSUB BARRIDO : GOSUB ESPACIO :
LCDOUT $FE, $C0,"xxx" ;ir a barrido y
retorna a un antirrebote
WRITE 2,NUMERO ;guardar en la
EEPROM 2 el valor de nmero
GRABACUATRO:
LEER:
READ 0,SETPRIME ;leer el dato de la
EEPROM 0 y guardar en setprime
THEN
GOTO
BARRIDO:
low A ;sensar la fila A
IF UNO = 0 THEN NUMERO =1
:RETURN
;tecla
pulsada
retorne
cargada con 1
IF DOS = 0 THEN NUMERO =2
:RETURN
;tecla
pulsada
retorne
cargada con 2
IF TRES = 0 THEN NUMERO =3
:RETURN
;tecla
pulsada
retorne
cargada con 3
IF CUATRO=0 THEN NUMERO
=10:RETURN ;tecla pulsada retorne
cargada con 10
high A
;
*****************
programa
antirrebote de teclas *************
PTECLA:
de
h=H+1
ESPACIO: ;programa de antirrebote de
teclas
IF UNO = 0 THEN ESPACIO ;si la tecla
sigue pulsada ir espacio
de
TECLAUNO:
h=1
GOSUB BARRIDO ;ir a barrido y
retornar con un valor
lcdout $FE, $C0,"x"
GOSUB PTECLA ;enva a un programa
antirrebote para soltar tecla
IF numero = setprime THEN
TECLADOS ;si el nmero es igual a
setprime
GOTO FALSO ;caso contrario ir a lazo
falso
TECLADOS:
h=2
GOSUB BARRIDO:GOSUB PTECLA ;ir a
barrido y retornar con un valor
IF numero = setsegun THEN
TECLATRES ;si el nmero es igual a
setsegun
GOTO FALSO1 ;caso contrario ir a lazo
falso
TECLATRES:
h=3
GOSUB BARRIDO:GOSUB PTECLA ;ir a
barrido y retornar con un valor
MENU:
PORTB=0
LCDOUT
$FE,
Principal":pause 1000
LCDOUT $FE, 1,"1.A/D
1,"Menu
2.DIG"
slo
espera
que
FALSO2:
GOTO MENU
ENVIO3:
SEROUT PORTC.6,N2400,["C"]
PAUSE 500
pause 2000
GOTO MENU
GOTO PROPRIN
goto TECLAUNO
DISABLE
ENVIO1:
VIZUALIZAR:
SEROUT PORTC.6,N2400,["A"]
SEROUT PORTC.6,N2400,["D"]
PAUSE 500
PAUSE 500
GOTO MENU
INTCON=%10010000
RESUME
ENVIO2:
ENABLE
SEROUT PORTC.6,N2400,["B"]
PAUSE 500
END
RECEPTOR
INCLUDE "MODEDEFS.BAS"
DEFINE LCD_EBIT 2
@DEVICE_PIC16F877A_XT_OSC
@DEVICE_PIC16F877A_MCLR_OFF
DEFINE ADC_BITS 8
DEFINE ADC_CLOCK 3
DEFINE OSC 4
DEFINE ADC_SAMPLEUS 50
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 3
R VAR BYTE
ENDIF
IF DATOS2="B" THEN
CONVERSORDIG:
RECIBIR:
SERIN PORTC.7,N2400,DATOS2
IF DATOS2="A" THEN
CONVERSORANA:
TRISA =%11 ;el puerto A.0 es de
entrada
ADCON1 = %00000000
DATOS VAR BYTE
DATOS1 VAR BYTE;crear variable
datos para guardar el resultado
PAUSE 500 ;esperar 0,5 seg.
INICIO:
if BOTON4=0 THEN
LCDOUT $fe, 1
LCDOUT $fe,$C0
GOTO RECIBIR
endif
ENDIF
ADCIN 0, datos ;leer el canal 0 y
guardarlo en datos
ADCIN 1, datos1
LCDOUT $fe, 1,"POT 1: ", dec datos
LCDOUT $fe,$C0,"POT 2: ", DEC
datos1 ;desplegar el valor de datos en
decimal
PAUSE 300
GOTO INICIO
conversor A/D
;volver a medir el
endif
IF BOTON1!=0 AND BOTON2!=0 AND
BOTON3!=0 THEN
LCDOUT $fe, $C0,DEC BOTON1,"
",DEC BOTON2,"
",DEC BOTON3," =
7"
high led1:high led2 :high led3
endif
if BOTON4=0 THEN
LCDOUT $FE,1
LCDOUT $FE,$C0
LOW LED1:LOW LED2:LOW LED3
GOTO RECIBIR
ENDIF
GOTO CAMBIAR
ENDIF
endif
IF DATOS2="C" THEN
ENDIF
GOTO RECIBIR
END