Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EMBEBI2
EMBEBI2
1234 1234
COL3
COL1
Hacer una programa que muestre en pantalla del LCD la tecla pulsada por el
teclado.
Recuerde:
Agregar la rutina de decodificación de teclado en la interrupción del RB0
;************************************************************
;* Esta rutina inicializa la pantalla LCD *
Hacer una programa que muestre en pantalla del LCD:
;* Afecta: TEMP - retornado con busy/address *
;************************************************************
“HOLA”
Inicio_LCD
Banco0
Recuerde:
bcf
bcf
CNTRL,E
CNTRL,RW
; aclara lineas de control
Llamar a la subrutina Lcd_init para iniciar el LCD
bcf CNTRL,RS
movlw 0x0F ; aclara lineas de datos
Para enviar un comando utilizar la rutina Lcd_Cmd(COMANDO)
movwf DATOS
;Configurar puertos DATOS[4..7] y CNTRL[1..3] como salidas
Para enviar una cadena y luego usar Lcd_Out(1,3,”Hola”);
Banco1
movlw B'00001111' ;4 bits mas altos de DATOS
movwf TRISD
bcf TRISD,E ;bits de control como salidas
bcf TRISD,RW
bcf TRISD,RS
Banco0
w Conversor AD
RS232
C
7
6
5
4
16F877A 3
2
1
CP
1 2 3
4 5 6
7 8 9 F
C 0 H E
Teclado
Muestreo y cuantización
1111
1110
1101
1100 1. Conversor analógico a digital de 10 bits
1011 Error de cuantización
1010 2. Tensión de referencia interna (VDD) o externa (AN3/Vref)
OUTPUT 1001
DIGITAL 1000 3. La conversión se realiza con uno de sus canales.
0111 t
0110
0101 4. El resultado se deposita en el registro ADRESL y ADRESH y se
0100 activa el señalizador ADIF, que provoca una interrupción si el bit de
0011 permiso correspondiente está activado. Además, al terminar la
0010 ADC Output conversión el bit GO/DONE se pone a 0.
0001 Función Seno
0000 5. Se gobierna con dos registros: ADCON0 y ADCON1.
6. El primero controla la operación del módulo AD, selecciona el canal a
4-bit (16 level) ADC sampling a sinewave input convertir con los bits CHS <2:0>, activa al conversor y contiene el
señalizador que avisa del fin de la conversión (ADON) y el bit
GO/DONE.
El ADCON1 establece las entradas que son digitales y analógicas,
el tipo de tensión de referencia (interna o externa).
(Ver manual)
#device adc=8
void MCU_init()
{ lcd_init(); void main()
AD_init();} { int valor = 0;
MCU_init();
lcd_putc("\fConversor AN0...\n");
delay_ms(1000);
while(TRUE){
set_adc_channel(0);
delay_ms(10);
valor=read_adc();
output_c(valor);
printf(lcd_putc,"\f%4u",valor);}
} José Oliden Martínez
•Emisión/ recepción de información. El estándar RS232 define una serie de especificaciones para la
transmisión de señales de modo serial entre dos dispositivos, DTE
•Dos grandes grupos: Ordenes y Datos (muestras). (Data Terminal Equipment, que se encarga de gestionar una
comunicación) y DCE (Data Comunication Equipment, que se ocupa
•Conectar el PIC con el mundo externo a través de comunicación serial de enviar o recibir data).
en modo asíncrono. El estándar RS232 es utilizado sólo en la comunicación entre el DTE
y DCE.
2 RX
3 TX
5 GND
RX RX RX TX
TX TX TX RX
En el PIC16F877A contiene un módulo USART que le permite transferir información La transmisión se inicia cargando el dato en el registro TXREG, que pasan luego al
de manera serial utilizando la norma RS-232. registro TSR que se encarga finalmente de transmitir el dato bit por bit por el pin RC6.
Los datos se transmiten por el pin RC6/TX/CK y se reciben por el pin RC7/RX/DT, la Cuando el buffer queda vacío, el bit TXIF se pone a ‘1’ para advertir que se puede
velocidad a la que viajan los datos se determina por un generador de baudios. transmitir otro dato. Al escribirse otro dato en el registro TXREG, el bit TXIF se pone a
‘0’. También tenemos el bit TRMT que toma el valor de ‘1’ cuando el registro TSR
Los datos se transmiten con un bit de INICIO (‘0’ lógico), seguido de los 8 o 9 bits de
está vacío.
datos (comenzando por el bit de menor peso) y finalmente un bit de STOP (‘1’ lógico).
Para generar la velocidad de transferencia de los datos hay que grabar un valor en el
registro SPBRG y además considerar el valor del bit BRGH (bit 2 del registro TXSTA).
Si el bit BRGH=0 entonces la constante K=64.
Si el bit BRGH=1 entonces la constante K=16.
Para iniciar la recepción se coloca el bit CREN= ‘1’ (registro RCSTA). Los bits son
recibidos uno a uno y cuando se llena el buffer RSR considerando el bit No9 (RX9=1)
el señalizador RCIF se pone a 1, pudiendo generar una interrupción.
;****************************************************************************************************
; Inicialización del USART del PIC, ; deja habilitadas las interrupciones de Rx y Tx serial
; Vtx=19200 bps, asíncrona, 8 bits
; Operaciones del port habilitadas ;***********************************************
;**************************************************************************************************** ; Rutina de envío de caracteres
Iniciar_USART ; el dato debe estar en el registro W (no se modifica)
bcf RCSTA,CREN ;aclara OVERRUN error bit ;************************************************************
nop TxCar
bsf RCSTA,CREN nop ;asegura la estabilización del port
banco1 nop
movlw B'00100000' ;operación asíncrona, 8bits, Tx on bsf STATUS,RP0
movwf TXSTA
movlw .12 ;Vtx=19200 baudios; Xtal=16Mhz, TxCar1 btfss TXSTA,TRMT ;check estado del transmisor para enviar
; movlw .25 ;Vtx= 9600 baudios; Xtal=16Mhz, goto TxCar1 ;si no esta listo intentar nuevamente
movwf SPBRG bcf STATUS,RP0
banco0 movwf TXREG ;transmitir un nuevo dato
movlw B'10010000' ;hab. operaciones en port serial,hab. recepción return
movwf RCSTA
clrf TXREG ;aclarar buffers del port serial
clrf RCREG
return