Documentos de Académico
Documentos de Profesional
Documentos de Cultura
17/6/04 13:16
Pgina 60
MICROCONTROLADORES
RESISTOR
60
UNIVERSAL SYNCHRONOUS ASYNCHRONOUS RECEIVER TRANSMITTER (USART) El mdulo transmisor (USART) es otro de los dos puertos serie de los que dispone esta familia de microcontroladores. Los mdulos de I/O. (USART tambin se conocen como Serial Communications o Interface o SCI). El USART puede configurarse
como asncrono full dplex que puede comunicar con los dispositivos perifricos como el terminales de CRT y los ordenadores personales, o puede configurarse como un sistema sncrono half duplex que puede comunicar con otros microcontroladores, con dispositivos perifricos como A/D o D/A circuitos integrados, EEPROMs serie etc. El USART puede configurarse en los modos siguientes:
q Asncrono( q
Full duplex ) Sncrono-Master (half duplex) q Sncrono-Slave (half duplex) Poniendo a "1" el bit SPEN (RCSTA <7>), y los bits TRISC <7:6> (RC7 se configura como entrada y RC6 como salida), se configura RC6/TX/CK y RC7 /RX/DT como USART. En modo sncrono se utilizan formatos estndar: un bit de Start y ocho bits o nueve bits de datos y un bit de Stop, siendo el ms comn el de ocho bits de datos.
56-70 MICROCONTROLADORES2
17/6/04 13:16
Pgina 61
bit 6:
bit 5:
CSRC: Bit de seleccin de fuente del reloj Modo Asncrono Sin importancia Modo Sncrono 1 = Modo master (reloj generado internamente para BRG (Generador de Baudios)) 0 = Modo esclavo (fuente de reloj externa) TX9: Habilita transmisin de 9-8 bits 1 = Selecciona la transmisin de 9 bits 0 = Selecciona la transmisin de 8 bits TXEN: Bit de habilitacin del transmisor 1 = Habilita transmisin 0 = Deshabilita transmisin Nota: SREN/CREN anula TXEN en modo SYNC.
bit 4:
SYNC: Bit de seleccin del modo USART 1 = Modo Sncrono 0 = Modo Asncrono bit 3: Sin implementar: En lectura es'0' bit 2: BRGH: Bit de seleccin del rango de baudios alto Modo Asncrono 1 = Alta velocidad 0 = Baja velocidad Modo Sncrono No se usa este modo bit 1: TRMT: Bit de estado del registro de desplazamiento del transmisor (TSR) 1 = TSR vaco 0 = TSR lleno bit 0: TX9D: Noveno bit de datos de transmisin. Se puede emplear como bit de paridad.
GENERADOR DE BAUDIOS DEL USART (BRG). En el protocolo asncrono RS-232 la frecuencia en baudios a la que se realiza la transferencia se debe efectuar a un valor normalizado: 330, 600,1.200, 2400, 4800, 9600, 19.200, 38.400, etc. Para generar esta frecuencia, el USART dispone de un generador de frecuencia en Baudios, BRG, cuyo valor se controla por el contenido del registro SPBRG. Adems del valor X cargado en el
registro SPBRG. La frecuencia en baudios del generador depende del bit BRGH (TXSTA<1>). Si BRGH=0 se trabaja a baja velocidad y si BRGH=1 se trabaja a alta velocidad. Segn este bit se obtendr el valor de una constante K necesaria para determinar la frecuencia de funcionamiento. Este generador sirve tanto para el modo sncrono como el asncrono y
SPEN: Bit de habilitacin del puerto serie 1 = Habilita puerto serie (configura patillas RC7/RX/DT y RC6/TX/CK para el puerto serie) 0 = Deshabilita puerto serie bit 6: RX9: Habilita recepcin de 9-8 bits 1 = Selecciona 9 bits de recepcin 0 = Selecciona 8 bits de recepcin bit 5: SREN: Bit de habilitacin de recepcin nica Modo asncrono Este modo no se usa Modo Sncrono master 1 = Habilita una recepcin nica 0 = Deshabilita una recepcin nica Este bit se borra despus de completar la recepcin Modo Sncrono esclavo En este modo no se usa bit 4: CREN: Bit de habilitacin de recepcin continua Modo Asncrono 1 = Habilita recepcin continua 0 = Deshabilita recepcin continua Modo Sncrono 1 = Habilita recepcin continua hasta que el bit CREN sea borrado (CREN anula SREN) 0 = Deshabilita la recepcin continua bit 3:ADDEN: Bit de direccin Modo Asncrono con 9 bits (RX9=1) 1= Activa la deteccin de direccin, activa la interrupcin y descarga el buffer de recepcin al activarse RSR<8> 0= Desactiva la deteccin de direccin, todos los bits son recibidos y el noveno bit puede utilizarse como bit de paridad. bit 2: FERR: Bit de error de empaquetamiento 1 = Error de empaquetamiento (Puede actualizarse al leer el registro RCREG y recibir el siguiente byte) 0 = No hay error bit 1: OERR: Bit de error de desbordamiento 1 = Error de desbordamiento (puede ser borrado al borrar CREN) 0 = No hay desbordamiento bit 0: RX9D: Noveno bit de datos de recepcin. Se puede emplear como bit de paridad consiste de un contador/divisor de frecuencia de 8 bits controlado por el registro SPBRG (99H). De tal manera que la frecuencia de transmisin se calcula de acuerdo a la siguiente tabla:
SYNC
BRGH=0(baja velocidad)
0 (Modo asncrono) Baud rate = FOSC/(64(X+1)) 1 (Modo Sncrono) Baud rate = FOSC/(4(X+1)) X = Valor en SPBRG (0 a 255)
56-70 MICROCONTROLADORES2
17/6/04 13:16
Pgina 62
MICROCONTROLADORES
0.3 1.2 2.4 9.6 19.2 28.8 33.6 57.6 HIG LOW BAUD RATES (K) 0.3 1.2 2.4 9.6 19.2 28.8 33.6 57.6 HIG LOW
RESISTOR
62
FOSC = 4MHz KBAUD % PBRG ERROR Valor decimal 0.300 0 207 1.202 0.17 51 2.404 0.17 25 8.929 6.99 5 20.833 8.51 2 31.250 8.51 1 62.500 8.51 0 0.244 255 62.500 0
FOSC = 3.6864MHz KBAUD % SPBRG ERROR Valor decimal 0.3 1.2 2.4 9.6 19.3 28.8 57.6 0.225 57.6 0 0 0 0 0 0 0 0 0 0 191 47 23 5 2 1 0 255 0
Debido a que el divisor es de 8 bits, no se puede tener cualquier velocidad de transmisin deseada, ya que X se deber redondear al entero ms cercano. En las dos tablas anteriores se muestran algunos
valores de velocidad de transmisin (baud) estndar, el divisor necesario (X=SPBRG) bajo diferentes frecuencias Fosc y el error producido en porcentaje. Como puede apreciarse, el error no tiene ninguna
56-70 MICROCONTROLADORES2
17/6/04 13:16
Pgina 63
FOSC = 4MHz KBAUD % PBRG ERROR Valor decimal 0.3 1.2 1.202 0.17 207 2.4 2.404 0.17 103 9.6 9.615 0.16 25 19.2 19.231 0.16 12 28.8 27.798 3.55 8 33.6 35.714 6.29 6 57.6 62.500 8.51 3 HIG 0.977 255 LOW 250.000 0
FOSC = 3.6864MHz KBAUD % SPBRG ERROR Valor decimal 1.2 2.4 9.6 19.2 28.8 32.9 57.6 0.9 230.4 0 0 0 0 0 2.04 0 0 0 191 95 23 11 7 6 3 255 0
Ejemplo: Clculo de la proporcin del error de velocidad de transmisin para las siguientes condiciones: FOSC = 16 MHZ Velocidad de transmisin deseada = 9600 baudios BRGH = 0 SYNC = 0 FOSC Velocidad de transmisin = (64* (X + 1)) 16.000.000 (64* (X + 1)) X = (25,042) = 25 16000000 = 9615 Velocidad de transmisin = (64* (X + 1)) 9600 = error = 9615 - 9600 9600 = 0,16%
bit START
1 bit
Dato
8 bit
bit Stop
Figura 1.- La palabra de transmisin va precedida de un bit de Start y termina con un bit de Stop EL USART EN MODO ASNCRONO Como ya se ha dicho, en este modo de comunicaciones se emplea una configuracin estndar de un bit de Start, ocho o nueve bits de datos, y un bit de Stop. Este modo de trabajo se detiene durante la funcin Sleep. Aunque el USART tiene funciones independientes para la transmisin y recepcin, los formatos de datos y de velocidad de transmisin es igual para los dos casos. El generador de baudios produce siempre las seales de reloj x16 x64 dependiendo de BRGH (TXSTA<2>) para el desplazamiento de los bits. El bit de paridad no est soportado por el hardware, pero se puede implementar por software empleando para ello el noveno bit de datos. La seleccin del modo asncrono se realiza poniendo a cero el bit SYNC (TXSTA<4>). El modulo asncrono del USART se consigue con la combinacin de importantes elementos: q El generador de baudios q El circuito de muestreo q Transmisor asncrono q Receptor asncrono EL USART TRANSMISIN ASINCRONA Para realizar una transmisin de datos, el registro de desplazamiento TSR obtiene los datos del registro
(buffer) de lectura/escritura TXREG. El registro de desplazamiento TSR no carga el bit de Stop hasta que se hayan transmitido los datos cargados. Una vez que se haya enviado este bit, el registro ser cargado con los nuevos datos (si estn disponibles), en este caso el bit TXIF (PIR1 <4>) se pone a uno, y se genera una interrupcin si est habilitada (PIE1 <4>). Los pasos necesarios para realizar una transmisin asncrona son los siguientes: qInicializar el registro SPBRG con el valor apropiado segn los clculos realizados. Si se desea el margen alto se pondr a uno el bit BRGH. qHabilitar el puerto asncrono borrando el bit SYN y poniendo a uno el SPEN. qHabilitar la interrupcin (si se desea) poniendo a uno el bit TXIE. qPoner a cero o a uno el bit TX9 (8 9 bits). qHabilitar la transmisin poniendo a uno el bit TXEN, el cual pondr a uno el bit TXIF. qSi se han seleccionado 9 bits se deben poner el noveno en el bit TX9D. qCargar el dato en el registro TXREG (comenzar la transmisin).
RESISTOR
63
56-70 MICROCONTROLADORES2
17/6/04 13:16
Pgina 64
Bus de Datos TXIF MSB (8) Registro TSR Interrupcin TXEN CLK Rango de Baudios TRMT SPEN SPBRG TX9 Generador de Baudios TX9D Registro TXREG 8 LSB (0) Pin del Buffer y Control RC6/TX/CX pin
TXIE
MICROCONTROLADORES
Figura 2.- Diagrama de bloques del mdulo USART configurado como transmisor
Figura 3
TRANSMISIN ASNCRONA
Palabra 1
Bit de Start
Bit 0
Bit 1 PALABRA 1
Bit 7/8
Bit Stop
RESISTOR
64
Figura 4
Escritura en TXREG Salida BRG (Reloj desplazamiento) Pin RC6/TX/CK Bit TXIF (flag reg.Interrupcin) Palabra1
Bit Start
Bit 0
Bit 1 PALABRA1
Bit 7/8
Bit Stop
Bit Start
Bit 0
PALABRA 2
EL USART EN MODO RECEPCIN ASNCRONA` En el modo de recepcin, los datos son recibidos por la patilla RC7/RX/DT y se introducen en serie en el registro RSR; despus de recibir el bit de Stop los datos acumulados en este registro se cargan en el de datos RCREG (si est vaco). Cuando la transferencia se ha completado, el bit RCIF (PIR1 <5>) pone a uno. La interrupcin puede habilitarse o deshabilitarse colocando a uno o a cero, respectivamente, el bit RCIE (PIE1 <5>). El bit RCIF se borra cuando el registro RCREG se ha ledo (se "vaca" el registro). Para configurar el puerto como receptor hay que seguir los siguientes pasos:
qInicializar
el registro SPBRG con el valor apropiado segn los clculos realizados. Si se desea el margen alto se pondr a uno el bit BRGH. qHabilitar el puerto asncrono borrando el bit SYN y poniendo a uno el SPEN. qHabilitar la interrupcin (si se desea) poniendo a uno el bit RCIE. qPoner a uno el bit RX9 para habilitar 9 bits de recepcin. qHabilitar la recepcin poniendo a uno el bit CREN. qEl flag RCIF subir a uno cuando se complete la recepcin. qSe ocasionar una interrupcin si est habilitado el bit RCIE. qLeer el registro RCSTA, cargar el no-
veno bit (si est habilitado) y comprobar si ha ocurrido un error durante la recepcin. qLeer el octavo bit recibido y dar lectura al registro RCREG para conocer si el dispositivo se ha direccionado. qSi ha ocurrido un error borrarlo poniendo a cero el bit CREN. Si el dispositivo ha sido direccionado, borrar el bit ADDEN para permitir que los datos puedan leerse del buffer receptor MODO SNCRONO Este modo de trabajo tiene dos posibles formas de configuracin, como master y como esclavo. En el modo master la transmisin y recepcin no
56-70 MICROCONTROLADORES2
17/6/04 13:16
Pgina 65
INTF RBIF 0000 000x TMREIF TMR1IF 0000 0000 OERR RX9D 0000 -00X 0000 0000 TMR2IE TMR1IE 0000 0000 TRMT TX9D 0000 010
OERR
FERR
LSb
Registro RSR
RC7/RX/DT
Rx9 8
RESISTOR
65
SPEN
RX9 ADDEN RX9 ADDEN RSR<8> Habilita carga del buffer receptor 8
RX9D Registro RCREG Figura 5.- Diagrama de Bloques del Mdulo USART configurado en modo Receptor tienen lugar al mismo tiempo, cuando se transmite un dato, la recepcin es inhibida y viceversa. En la transmisin el registro de desplazamiento, TSR (Transmit Shift Register), obtiene los datos del registro de lectura/escritura TXREG, pero ste no se carga hasta que el ltimo bit de la anterior carga no haya sido transmitido; cuando esto suceda el TSR se vuelve a cargar con el nuevo dato del registro TXREG (si est disponible) ste se vaca y se genera una interrupcin (si est habilitada por el bit TXIE, PIE1<4>. La transmisin se habilita por
8 Bus de datos
qHabilitar
FIFO
Interrupcin
RCIF RCIE
el bit TXEN del registro TXSTA<5>, si se borra durante una transmisin, sta ser abortada y reseteado el transmisor. Para iniciar una transmisin es necesario seguir los siguientes pasos: qInicializar el registro SPBRG con el valor apropiado calculado. qHabilitar el puerto master asncrono colocando a uno los bits SYN, SPEN y CSRC. qSi se desea emplear la interrupcin, habilitarla poniendo a uno el bit TXIE. q Si se desea una transmisin de nueve bits, el noveno se cargar en el bit TX9.
la transmisin poniendo a uno el bit TXEN. qSi se ha habilitado la transmisin de 9 bits, el noveno se cargar en el registro TX9D. qLa transmisin se iniciar al cargar los datos en el registro TXREG. EL USART EN MODO MASTER SNCRONO Para seleccionar el modo receptor master hay que poner a uno el bit SREN (RCSTA<5> o habilitar el
56-70 MICROCONTROLADORES2
17/6/04 13:16
Pgina 66
RCIF
Nota.- Este diagrama de tiempos muestra un byte de datosseguido de un byte de direccin. El byte de datos no se lee en el RCREG (buffer de reccin) porque ADDEN = 1
Carga RSR Bit 8 = 1. Byte de Direccin Lectura Bit8 = 0, Byte de Datos PALABRA1 RCREG
RCIF Nota.- Este diagrama muestra un byte direccin seguido por un byte de datos. El byte de datos no se lee eb RCREC (Buffer recptor) porque ADEN no se ha actualizado y todaba = 0
RESISTOR
66
CREN (RCSTA<4>). El dato es tomado de la patilla RC7/WDT por cada flanco de cada del reloj , si el bit SREN est a uno, slo se recibir una palabra, pero si se borra el bit CREN la recepcin ser continua. Despus del ltimo impulso de reloj, el dato recibido en el registro de desplazamiento RSR ser transferido al RCREG (si est vaco). Una vez haya terminado la recepcin se originar una interrupcin si sta est habilitada, RCIE (PIE1 <5>). Los pasos a seguir para iniciar la recepcin en modo master son las siguientes:
qInicializar
el registro SPBRG con el valor apropiado de baudios. qHabilitar el puerto master asncrono colocando a uno los bits SYN, SPEN y CSRC. qAsegurarse de que los bits CREN y SREN estn borrados. qSi se desea emplear la interrupcin habilitarla poniendo a uno el bit RCIE. qSi se desean nueve bits poner a uno el bit RX9. qSi slo se desea una recepcin nica, poner a uno el bit SREN; para recepcin continua poner a uno el bit CREN. qEl flag de interrupcin RCIF se pone
a uno cuando la recepcin haya finalizado si est habilitada por el bit RCIE. qLeer el registro RCSTA y cargar el noveno bit (si est habilitado) y comprobar si ha ocurrido un error durante la recepcin. qLeer el octavo bit recibido y dar lectura al registro RCREG. qSi ha ocurrido un error borrarlo poniendo a cero el bit CREN. MODO ESCLAVO SNCRONO Este modo de trabajo difiere del modo master, pues la seal de reloj de desplazamientos es proporcionada
u= sin cambios
56-70 MICROCONTROLADORES2
17/6/04 13:16
Pgina 67
Figura 8
RC7/RX/DT pin TC6/TX/CK pin Escritura en Reg. TXREG bit TXIF (Flag de Interrupcin) bit TRMT "1"
TRANSMISIN SINCRONA
Q1 Q2Q3 Q4 Q1Q2 Q3Q4 Q1Q2 Q3Q4 Q1Q2Q3Q4 Q1Q2 Q3Q4 Bit0 Bit 1 Palabra 1 Bit 2
Q3 Q4 Q1Q2Q3Q4 Q1Q2Q3Q4 Q1Q2 Q3Q4Q1Q2Q3Q4Q1 Q2Q3Q4 Q1Q2Q3Q4 Bit 7 Bit0 Bit 1 Palabra 2 Bit 7
bit TXEN
"1"
bit TXIF
bit TRMT
bit TXEN
externamente por la patilla RC6/TX/CK en lugar de ser generada internamente, esto permite que se puedan transferir o recibir datos cuando el dispositivo est en el modo Sleep. Las operaciones de transmisin son idnticas al modo Master, excepto en el caso del modo Sleep. Si se escriben dos palabras en el registro TXREG y despus se ejecuta la instruccin Sleep, ocurrir lo siguiente: qLa primera palabra ser inmediatamente transferida al registro TSR y transmitida. qLa segunda palabra permanece en el registro TXREG. qEl bit TXIF no se pondr a uno. qCuando la primera palabra haya salido del registro TSR, la segunda pala-
bra, que permanece en el registro TXREG, se enva al TSR y el flag TXIF se pone a uno. qSi est habilitado el bit TXIF la interrupcin despierta al microcontrolador de modo Sleep y el programa saltar a la direccin del vector de interrupciones (0004 hex.). EJEMPLOS DE CONTROL DEL USAR CONECTADO AL PUERTO SERIE DEL ORDENADOR Para poder conectar las lneas del PIC16F87X que entrega niveles TTL con el puerto serie RS-232 que son compatibles, es necesario utilizar un circuito interface que traduzca los datos del microcontrolador al puerto serie del
ordenador y viceversa, nosotros hemos utilizado un MAX232, teniendo mucho cuidado para no equivocarnos con la polaridad de los condensadores. El circuito utilizado es el que se muestra en la Figura 10. Los lectores que lo deseen pueden ponerse en contacto con el autor de este curso en fremiro@teleline.es para solicitar las placas del entrenador de microcontroladores PIC de bajo costo que se ha diseado para el aprendizaje de estos microcontroladores. Adems del circuito, necesitaremos para comprobar el funcionamiento los estos ejemplos de comunicaciones, necesitamos un programa de comunicaciones como el HiperTerminal de Windows y un cable serie en conexin de MODEM nulo, que deber de conectarse tal y como se muestra en la Figura 11. EL HyperTerminal es un programa general de comunicaciones de Windows, que resulta vlido para conectarse con otros ordenadores o dispositivos. Hay programas de comunicaciones mucho ms potentes que ste. Sin embargo, HyperTerminal se caracteriza por su facilidad de uso y su fcil adquisicin ya que viene integrado dentro de Windows. Puede ocurrir que el programa HyperTerminal no est cargado,
RESISTOR
67
u= sin cambios
56-70 MICROCONTROLADORES2
17/6/04 13:16
Pgina 68
VCC
C4 1F
C5 1F 1 2 3 4 5 6 7 8
U1 C1+ V+ C1C2+ C2V7 8 MAX232 9 10 T1IN R10UT R1IN T1OUT GND VCC 9 10 11 12 13 14 15 16 C3
MICROCONTROLADORES
DB9
5 9 4 8 3 7 2 6 1
C6 1F
RXPC TXPC C7 1F
10nF
Vcc= 5V
VCC
PIC16F876
MCLR RA0 RA1 RA2 RA3 RA4 RA5 Vss RB7 RB6
R8 300 R7 300 R6 300 R5 300 RB5 RB4 RB3 RB2 RB1 RB0 Vcc=5V R4 300 R3 300
C1 27 pF
XT 4Mhz
RESISTOR
68
Figura 10.- Circuito de aplicacin para comprobar el funcionamiento del USART del PIC16F876 y el puerto serie del ordenador.
Figura 13.- Conectar con... Figura 11.- Conexin del cable serie como MODEM nulo
para ello hay que seguir el mismo procedimiento que para cualquier otro programa de Windows, ejecutando en el siguiente orden: Panel de Control > Agregar o Quitar programas > Instalacin de Windows > Comunicaciones y activar la casilla correspondiente a HyperTerminal. Para ejecutar HyperTerminal hay que seguir los siguientes pasos: 1. Activar Inicio > Programas > Accesorios > Comunicaciones y selec-
Figura 12.-Hipertermina
Figura 14 HyperTerminal.
56-70 MICROCONTROLADORES2
17/6/04 13:16
Pgina 69
Figura 15 .-Hyperterminal. Pantalla de trabajo cionar HyperTerminal. Se advierte que no se trata de un programa, sino de una carpeta cuyo contenido es un nico programa denominada Hypertrm. Cada vez que se ejecuta el programa Hypertrm se le pide al usuario la informacin suficiente para crear en la carpeta HyperTerminal una nueva conexin, es decir, un lugar de destino con el que conectarse. 2. Ejecutar el programa Hypertrm para crear una nueva conexin, se le pregunta el nombre que asignar a la conexin, teclear por ejemplo "PIC16F876" y elegir un icono con el que se quiera representar la conexin, figura 12. 3.En la siguiente pantalla Conecta con elegir la opcin Conectar usando: Di-
Figura 16.- Hyperterminal. Ejemplos de conexiones configuradas conexin, para comenzar la comunicacin simplemente ha de ejecutar el icono de la conexin previamente configurada tal como se muestra en la figura 16. El programa monitor232.asm configura el USART para trabajar a 9.600 baudios, con un bit de Stop y sin bit de paridad, seguidamente se queda a la espera de recibir un dato por el puerto serie y cuando lo hace lo muestra en el PORTB. Por su parte el programa Transmite232.asm configura el USART para trabajar a 9.600 baudios, con un bit de Stop y sin bit de paridad, seguidamente transmite cada segundo la cadena de caracteres "HOLA" cada segundo que se reflejan en el HiperTerminal.
recto a Com2, figura 13. Se va a utilizar el puerto serie Com2 para comunicar el ordenador y el microcontrolador. Tambin se puede elegir el COM1. 4. Aparece una pantalla con las Propiedades de COM. Seleccionar las apropiadas para el sistema utilizado. Para nuestros ejemplos utilizamos las opciones que se muestran en la figura 14. 5. A continuacin aparece la pantalla de trabajo tal como la mostrada en la figura 15. Para conectar el ordenador y el microcontrolador a travs del puerto serie COM 2, basta con activar la opcin "Llama" (o icono de telfono colgado) y para desconectar hay que activar opcin "Desconecta" (o icono de telfono descolgado. Una vez configurada una
; ;********************************************************************************* ; PROGRAMA : monitor232.asm ; Este programa escucha el puerto serie rs232 sin usar las interrupciones y cuando recibe un byte lo muestra ;en PortB hasta que otro lo sobrescriba.Configuracin del puerto serie: 9600 baudios,8 bits,paridad = none ; ; Revisin : 1.0 Programa para : PIC16F876 ; CPU Clock : 4 MHz Reloj instruccin : 1 MHz = 1 _s ; WDT : Deshabilitado Tipo de reloj : XT ; Proteccin de Cdigo : OFF ;**********************************************************************************
;Buffer entrante
;***************************** VECTOR DE RESET ************************************* ; ORG 0x00 ;Inicio en el Vector de Reset ; goto INICIO ;Va a la primera instruccin del ;programa ORG 0x05 ;Inicio en el Vector de Reset ;*****************************INICIO PROGRAMA PRINCIPAL ***************************** INICIO clrf PORTB ;Limpia salidas
MICROCONTROLADORES
RESISTOR
69
56-70 MICROCONTROLADORES2
17/6/04 13:16
Pgina 70
clrf bsf clrf movlw movwf movlw movwf movlw movwf bcf
PORTC STATUS,RP0 TRISB b'10011111' TRISC b'00000100' TXSTA .25 SPBRG STATUS,RP0
;del PORTB y del PORTC ;Selecciona el Banco1 ;Puerta B como salida ;RC7/Rx entrada, ;RC6/Tx salida y RC5 Salida. ;Configuracion USART ;y activacion de transmision ;9600 baudios ;Selecciona el Banco 0 Bucle movlw movwf movlw movwf bcf bsf bsf bsf bcf call movlw movwf bsf COMP_TX btfss goto bcf movlw movwf bsf COMP_TX_2 btfss goto bcf movlw movwf bsf COMP_TX_3 btfss goto bcf movlw movwf bsf COMP_TX_4 btfss goto bcf movlw movwf goto b'00100100' TXSTA .25 SPBRG STATUS,RP0 RCSTA,SPEN STATUS,RP0 TXSTA,TXEN STATUS,RP0 Delay 'H' TXREG STATUS,RP0 TXSTA,TRMT COMP_TX STATUS,RP0 'O' TXREG STATUS,RP0 TXSTA,TRMT COMP_TX_2 STATUS,RP0 'L' TXREG STATUS,RP0 TXSTA,TRMT COMP_TX_3 STATUS,RP0 'A' TXREG STATUS,RP0 TXSTA,TRMT COMP_TX_4 STATUS,RP0 '-' TXREG Bucle ;Configuracin USART ;y activacin de transmisin ;9600 baudios ;Selecciona el Banco 0 ;se activa la USART ;Selecciona el Banco 1 ;Habilita la transmisin ;Selecciona el Banco 0 ;Carcter ASCII ; ;Selecciona el Banco 1 ;comprueba si acabo de Tx. ;Selecciona el Banco 0 ;carcter ASCII ;Selecciona el Banco 1 ;comprueba si acabo de Tx. ;Selecciona el Banco 0 ;carcter ASCII ;Selecciona el Banco 1 ;comprueba si acabo de Tx. ;Selecciona el Banco 0 ;carcter ASCII ;Selecciona el Banco 1 ;comprueba si acabo de Tx. ;Selecciona el Banco 0 ;carcter ASCII en decimal
bsf RCSTA,SPEN ;se activa la USART movlw b'10010000' ;Configuracion de la usart movwf RCSTA ;para recepcion continua ;------Bucle de comprobacion si llega dato mayor de 0 por puerto serie-----BUCLE movf RCREG,W ;Lectura dato recibido movwf Buffer ;Visualiza dato recibido movlw .0 ;comprueba que se reciba algo que subwf Buffer,W ;no sea cero... btfsc STATUS,C goto Mayordecero ;dato valido. goto BUCLE ;dato no valido.. es cero..vuelve. Mayordecero movf Buffer,W ;muestra el dato en portb movwf PORTB ;y lo deja ayi hasta que llegue otro goto BUCLE ;retorna a esperar otro dato valido ;***************************************************************************** ORG 0x1F00 bcf PCLATH,4 bcf PCLATH,3 ;Selecciona la pgina 0 goto INICIO ;Salto a la direccin de INICIO del programa ;***************************************************************************** END ;*********************************************************************** ; PROGRAMA :Trans232.asm ;Este programa transmite los bytes ASCII "HOLA "por el puerte serie del microcontrolador ; a intervalos de 1 segundo. ; Configuracin del piuerto serie COM: 9600 baudios,8 bits,paridad = none ; ; Revision : 1.0 Programa para : PIC16F876 ; CPU Clock : 4 MHz Reloj instruccion : 1 MHz = 1 us ; WDT : Deshabilitado Tipo de reloj : XT ; Proteccin de Cdigo : OFF ;************************************************************************ LIST P=16F876 ;Se indica el modo de procesador ;se incluye la definicion de los
ENDC ;************************************ VECTOR DE RESET ********************* ; ORG 0x00 ; goto INICIO ;Va a la primera instruccion del programa ORG 0x05
;**************************SUBRUTINAS ********************* ;Delay = 1,0000020 s with Osc = 4 MHz Delay movlw D'6' movwf ContadorC movlw D'24' movwf ContadorB movlw D'168' movwf ContadorA loop decfsz ContadorA,F goto loop decfsz ContadorB,F goto loop decfsz ContadorC,F goto loop return ;*********************************************************** ORG 0x1F00 bcf PCLATH,4 bcf PCLATH,3 ;Selecciona la pgina 0 goto INICIO ;Salto a la direccin de INICIO del programa ;********************************************************** END
;*******************************INICIO PROGRAMA PRINCIPAL **************** INICIO clrf PORTB ;Limpia PORTB y PORTC clrf PORTC bsf clrf movlw movwf STATUS,RP0 TRISB b'10111111' TRISC ;Selecciona el Banco 1 ;Puerta B como salida ;RC7/Rx entrada, ;RC6/Tx salida.