curso pic16f87x 12

Upload: proteus7

Post on 31-May-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 CURSO PIC16f87x 12

    1/11

    UNIVERSALSYNCHRONOUS ASYNCHRONOUSRECEIVER TRANSMITTER(USART)

    El mdulo transmisor (USART)es otro de los dos puertos serie de losque dispone esta familia de micro-controladores. Los mdulos de I/O.(USART tambin se conocen comoSerial Communications o Interface oSCI). El USART puede configurarse

    como asncrono full dplex que pue-de comunicar con los dispositivos pe-rifricos como el terminales de CRTy los ordenadores personales, o pue-de configurarse como un sistema sn-crono half duplex que puede comu-nicar con otros microcontroladores,con dispositivos perifricos comoA/D o D/A circuitos integrados, EE-PROMs serie etc.

    El USART puede configurarse enlos modos siguientes:

    q Asncrono( Full duplex )q Sncrono-Master (half duplex)q Sncrono-Slave (half duplex)

    Poniendo a "1" el bit SPEN (RCS-TA ), y los bits TRISC (RC7se configura como entrada y RC6 co-mo salida), se configura RC6/TX/CK yRC7 /RX/DT como USART. En modosncrono se utilizan formatos estndar:un bit de Start y ocho bits o nueve bitsde datos y un bit de Stop, siendo el mscomn el de ocho bits de datos.

    CURSO DEMICROCONTROLADOPIC16F87X (...y XII)

    CURSO DEMICROCONTROLADOPIC16F87X (...y XII)

    Fernando Remiro DomnguezProfesor de Sistemas Electrnicos

    IES. Juan de la Ciervawww.terra.es/personal/fremiro

    M I C R O C O N

    T R O L A D O R E S

    60RESISTOR

    56-70 MICROCONTROLADORES2 17/6/04 13:16 Pgina 60

  • 8/14/2019 CURSO PIC16f87x 12

    2/11

    GENERADOR DE BAUDIOSDEL USART (BRG).

    En el protocolo asncrono RS-232la frecuencia en baudios a la que serealiza la transferencia se debeefectuar a un valor normalizado: 330,600,1.200, 2400, 4800, 9600, 19.200,38.400, etc. Para generar estafrecuencia, el USART dispone de ungenerador de frecuencia en Baudios,BRG, cuyo valor se controla por elcontenido del registro SPBRG.

    Adems del valor X cargado en el

    registro SPBRG. Lafrecuencia en baudios delgenerador depende del bitBRGH (TXSTA). SiBRGH=0 se trabaja a bajavelocidad y si BRGH=1 setrabaja a alta velocidad.Segn este bit se obtendr el valor deuna constante K necesaria paradeterminar la frecuencia defuncionamiento.

    Este generador sirve tanto para elmodo sncrono como el asncrono y

    consiste de un contador/divisor defrecuencia de 8 bits controlado por elregistro SPBRG (99H). De talmanera que la frecuencia detransmisin se calcula de acuerdo a lasiguiente tabla:

    Registro de Estadoy Transmisin TXTA (direccin 98h)

    R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0CSRC TX9 TXEN SYNC ---- BRGH TRMT TX9DBit 7 Bit 0

    bit 7: CSRC: Bit de seleccin de fuente del relojModo AsncronoSin importanciaModo Sncrono1 = Modo master (reloj generado internamente para BRG(Generador de Baudios))0 = Modo esclavo (fuente de reloj externa)

    bit 6: TX9: Habilita transmisin de 9-8 bits1 = Selecciona la transmisin de 9 bits0 = Selecciona la transmisin de 8 bits

    bit 5: TXEN: Bit de habilitacin del transmisor1 = Habilita transmisin

    0 = Deshabilita transmisinNota: SREN/CREN anula TXEN en modo SYNC.

    bit 4: SYNC: Bit de seleccin del modo USART1 = Modo Sncrono0 = Modo Asncrono

    bit 3: Sin implementar: En lectura es'0'bit 2: BRGH: Bit de seleccin del rango de baudios alto

    Modo Asncrono1 = Alta velocidad0 = Baja velocidadModo SncronoNo se usa este modo

    bit 1: TRMT: Bit de estado del registro de desplazamiento del

    transmisor (TSR)1 = TSR vaco0 = TSR lleno

    bit 0: TX9D: Noveno bit de datos de transmisin. Se puedeemplear como bit de paridad.

    Registro de Estado y Control de recepcinRCSTA (Direccin 18h)

    R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0SPEN RX9 SREN CREN ADDEN FERR OERR RX9DBit 7 Bit 0

    bit 7: SPEN: Bit de habilitacin del puerto serie1 = Habilita puerto serie (configura patillasRC7/RX/DT yRC6/TX/CK para el puerto serie)0 = Deshabilita puerto serie

    bit 6: RX9: Habilita recepcin de 9-8 bits1 = Selecciona 9 bits de recepcin0 = Selecciona 8 bits de recepcin

    bit 5: SREN: Bit de habilitacin de recepcin nicaModo asncronoEste modo no se usa

    Modo Sncrono master1 = Habilita una recepcin nica

    0 = Deshabilita una recepcin nicaEste bit se borra despus de completar la recepcinModo Sncrono esclavoEn este modo no se usa

    bit 4: CREN: Bit de habilitacin de recepcin continuaModo Asncrono1 = Habilita recepcin continua0 = Deshabilita recepcin continuaModo Sncrono1 = Habilita recepcin continua hasta que el bit CREN seaborrado (CREN anula SREN)0 = Deshabilita la recepcin continua

    bit 3:ADDEN: Bit de direccinModo Asncrono con 9 bits (RX9=1)

    1= Activa la deteccin de direccin, activa la interrupcin y des-carga el buffer de recepcin al activarse RSR0= Desactiva la deteccin de direccin, todos los bits son recibidosy el noveno bit puede utilizarse como bit de paridad.

    bit 2: FERR: Bit de error de empaquetamiento1 = Error de empaquetamiento (Puede actualizarse al leer elregistro RCREG y recibir el siguiente byte)0 = No hay error

    bit 1: OERR: Bit de error de desbordamiento1 = Error de desbordamiento (puede ser borrado al borrar CREN)0 = No hay desbordamiento

    bit 0: RX9D: Noveno bit de datos de recepcin. Se puede emplearcomo bit de paridad

    0 (Modo asncrono) Baud rate = FOSC/(64(X+1)) Baud rate = FOSC/16(X+1))1 (Modo Sncrono) Baud rate = FOSC/(4(X+1)) --X = Valor en SPBRG (0 a 255)

    SYNC BRGH=0(baja velocidad) BRGH=1 (Alta Velocidad)

    56-70 MICROCONTROLADORES2 17/6/04 13:16 Pgina 61

  • 8/14/2019 CURSO PIC16f87x 12

    3/11

    M I C R O C O N

    T R O L A D O R E S

    62RESISTOR

    Debido a que el divisor es de 8bits, no se puede tener cualquiervelocidad de transmisin deseada, yaque X se deber redondear al enteroms cercano. En las dos tablasanteriores se muestran algunos

    valores de velocidad de transmisin(baud) estndar, el divisor necesario(X=SPBRG) bajo diferentesfrecuencias Fosc y el error producidoen porcentaje. Como puedeapreciarse, el error no tiene ninguna

    importancia para la mayora de

    las aplicaciones, no obstante, sepuede realizar los clculosempleando el ndice (BRGH=1)y sustituyendo la constante 64por 16 (ver la tabla) y comprobarsi el error se reduce.

    Los datos que llegan a lapatilla RC7/RX/DT se muestreanen tres instantes para detectar ydeterminar mejor si el nivelpresente en la patilla RX est anivel alto o bajo. Si el bit BRGH(TXSTA) est a cero, elmuestreo se realiza en el sptimo,octavo, y noveno flanco de

    bajada de x16 de reloj.

    Si por el contrario, el bitBRGH est a uno, el muestreo tienelugar en el tercer flanco de relojprecedido de la segunda subida dereloj y de la primera bajada de x4 dereloj.

    BAUD FOSC = 20MHz FOSC = 16MHz FOSC = 10MHzRATES KBAUD % SPBRG KBAUD % SPBRG KBAUD % SPBRG(K) ERROR Valor decimal ERROR Valor decimal ERROR Valor

    decimal0.3 - - - - - - - - -1.2 1.221 1.75 255 1.202 0.17 207 1.202 0.17 1292.4 2.404 0.17 129 2.404 0.17 103 2.404 0.17 649.6 9.766 1.73 31 9.615 0.16 25 9.766 1.73 1519.2 19.531 1.72 15 19.231 0.16 12 19.531 1.72 728.8 31.250 8.51 9 27.778 3.55 8 31.350 8.51 433.6 34.722 3.34 8 35.714 6.29 6 31.250 6.99 457.6 62.500 8.51 4 62.500 8.51 3 52.083 9.58 2HIG 1.221 - 255 0.977 - 255 0.610 - 255LOW 312.500 - 0 250.000 - 0 156.250 - 0

    BAUD RATES en Modo Asncrono (BRGH=0)

    BAUD FOSC = 20MHz FOSC = 16MHz FOSC = 10MHzRATES KBAUD % SPBRG KBAUD % SPBRG KBAUD % SPBRG(K) ERROR Valor decimal ERROR Valor decimal ERROR Valor

    decimal0.3 - - - - - - - - -1.2 - - - - - - - - -2.4 - - - - - - 2441 1.71 2559.6 9.615 0.16 129 9.615 0.16 103 9.615 0.16 6419.2 19.231 0.16 64 19.231 0.16 51 19.531 1.72 31

    28.8 29.070 0.94 42 29.412 2.13 33 28.409 1.36 2133.6 33.784 0.55 36 33.333 0.79 29 32.895 2.10 1857.6 59.524 3.34 20 58.825 2.13 16 56.818 1.36 10HIG 4.883 - 255 3.906 - 255 2.441 - 255LOW 1250.000 - 0 1000.000 - 0 625.000 - 0

    BAUD RATES en Modo Asncrono (BRGH=1)

    BAUD FOSC = 4MHz FOSC = 3.6864MHz

    RATES KBAUD % PBRG KBAUD % SPBRG(K) ERROR Valor ERROR Valor decimal

    decimal0.3 0.300 0 207 0.3 0 1911.2 1.202 0.17 51 1.2 0 472.4 2.404 0.17 25 2.4 0 239.6 8.929 6.99 5 9.6 0 519.2 20.833 8.51 2 19.3 0 228.8 31.250 8.51 1 28.8 0 133.6 - - - - 0 -57.6 62.500 8.51 0 57.6 0 0HIG 0.244 - 255 0.225 0 255LOW 62.500 - 0 57.6 0 0

    56-70 MICROCONTROLADORES2 17/6/04 13:16 Pgina 62

  • 8/14/2019 CURSO PIC16f87x 12

    4/11

  • 8/14/2019 CURSO PIC16f87x 12

    5/11

  • 8/14/2019 CURSO PIC16f87x 12

    6/11

    65RESISTOR

    REGISTROS ASOCIADOS A LA TRANSMISIN ASINCRONADireccin Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en POR,BOR Valor en el resto de Reset0Bh, 8Bh10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMREIF TMR1IF 0000 0000 0000 000018h RCSTA SPEN RX9 SREN CREN -- FERR OERR RX9D 0000 -00X 0000 000X19h TXREG Registro Transmisor USAR 0000 0000 0000 00008Ch PIE1 PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 000098h TXSTA CSRC TX9 TXEN SYNC --- BRGH TRMT TX9D 0000 010 0000 01099h SPGBRG Registro generador de Baud Rate

    tienen lugar al mismo tiempo, cuando setransmite un dato, la recepcin esinhibida y viceversa. En la transmisin elregistro de desplazamiento, TSR(Transmit Shift Register), obtiene losdatos del registro de lectura/escrituraTXREG, pero ste no se carga hasta queel ltimo bit de la anterior carga no hayasido transmitido; cuando esto suceda elTSR se vuelve a cargar con el nuevo datodel registro TXREG (si est disponible)ste se vaca y se genera una interrupcin(si est habilitada por el bit TXIE,PIE1. La transmisin se habilita por

    el bit TXEN del registro TXSTA, sise borra durante una transmisin, staser abortada y reseteado el transmisor.

    Para iniciar una transmisin esnecesario seguir los siguientes pasos:q Inicializar el registro SPBRG con el

    valor apropiado calculado.q Habilitar el puerto master asncrono

    colocando a uno los bits SYN, SPENy CSRC.

    q Si se desea emplear la interrupcin,habilitarla poniendo a uno el bit TXIE.

    q Si se desea una transmisin de nuevebits, el noveno se cargar en el bit TX9.

    q Habilitar la transmisin poniendo auno el bit TXEN.

    q Si se ha habilitado la transmisin de9 bits, el noveno se cargar en el regis-tro TX9D.

    q La transmisi n se iniciar alcargar los datos en el registroTXREG.

    EL USART EN MODO MASTERSNCRONO

    Para seleccionar el modo receptormaster hay que poner a uno el bitSREN (RCSTA o habilitar el

    REGISTROS ASOCIADOS A LA RECEPCIN ASINCRONADireccin Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en POR,BOR Valor en el resto de Reset0Bh, 8Bh10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMREIF TMR1IF 0000 0000 0000 000018h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 -00X 0000 000X

    1Ah RCREG Registro Receptor USAR 0000 0000 0000 00008Ch PIE1 PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 000098h TXSTA CSRC TX9 TXEN SYNC --- BRGH TRMT TX9D 0000 010 0000 01099h SPGBRG Registro generador de Baud Rate

    SPBRG

    RC7/RX/DT

    SPEN

    Patilla del bufferde control

    Recuperacinde datos

    Stop (8) 7 1 0 StartRegistro RSR Msb LSb

    Rx9

    8

    CRENOERR FERR

    8

    RX9DRegistro RCREG

    RX9 ADDEN

    RX9 ADDENRSR

    Habilitacarga del

    bufferreceptor

    Interrupcin 8

    Bus de datos

    FIFO

    RCIF

    RCIE

    P64P16

    o

    Figura 5.- Diagrama de Bloques del Mdulo USART configurado en modo Receptor

    56-70 MICROCONTROLADORES2 17/6/04 13:16 Pgina 65

  • 8/14/2019 CURSO PIC16f87x 12

    7/11

    66RESISTOR

    CREN (RCSTA). El dato estomado de la patilla RC7/WDT porcada flanco de cada del reloj , si el bitSREN est a uno, slo se recibir una

    palabra,pero si se borra el bit CREN larecepcin ser continua. Despus delltimo impulso de reloj, el datorecibido en el registro dedesplazamiento RSR ser transferidoal RCREG (si est vaco). Una vezhaya terminado la recepcin se originaruna interrupcin si sta est habilitada,RCIE (PIE1 ).

    Los pasos a seguir para iniciar larecepcin en modo master son lassiguientes:

    q Inicializar el registro SPBRG con elvalor apropiado de baudios.

    q Habilitar el puerto master asncronocolocando a uno los bits SYN, SPEN

    y CSRC.q Asegurarse de que los bits CREN y

    SREN estn borrados.q Si se desea emplear la interrupcin

    habilitarla poniendo a uno el bit RCIE.q Si se desean nueve bits poner a uno

    el bit RX9.q Si slo se desea una recepcin nica,

    poner a uno el bit SREN; para recep-cin continua poner a uno el bitCREN.

    q El flag de interrupcin RCIF se pone

    a uno cuando la recepcin haya fina-lizado si est habilitada por el bitRCIE.

    q Leer el registro RCSTA y cargar el

    noveno bit (si est habilitado) y com-probar si ha ocurrido un error duran-te la recepcin.

    q Leer el octavo bit recibido y dar lec-tura al registro RCREG.

    q Si ha ocurrido un error borrarlo po-niendo a cero el bit CREN.

    MODO ESCLAVO SNCRONOEste modo de trabajo difiere del

    modo master, pues la seal de reloj dedesplazamientos es proporcionada

    RC7/RX/DT (pin)

    Carga RSR

    Lectura

    RCIF

    bitStart bit 0 bit 1 bit 8 bit 0 bit 8 bitStop

    bitStop

    bitStart

    Bit8=0, Byte de datos Bit8=1, Byte de direccin PALABRA1RCREG

    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

    RC7/RX/DT (pin)

    Carga RSR

    Lectura

    RCIF

    bitStart bit 0 bit 1 bit 8 bit 0 bit 8 bit

    Stopbit

    Stop

    bitStart

    Bit 8 = 1. Byte de Direccin Bit8 = 0, Byte de Datos PALABRA1RCREG

    Figura 6.-Recepcin Asncrona con Direccin y Primer Byte

    Figura 7

    RECEPCIN ASNCRONA CON DETECCIN DE DIRECCIN

    RECEPCIN ASNCRONA CON DIRECCIN Y PRIMER BYTE

    Registros de Sincronizacin en modo master en transmisinDireccin Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en POR,BOR Valor en el resto de Reset0Bh, 8Bh,108Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF 0000 000x 0000 000u0Ch PIR1 PSPIF(1 ADIF RCIF TXIF SSPIF CCP1IF TMREIF TMR1IF 0000 0000 0000 000018h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000X 0000 000X1Ah TXREG Registro Receptor USAR 0000 0000 0000 00008Ch PIE1 PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 000098h TXSTA CSRC TX9 TXEN SYNC --- BRGH TRMT TX9D 0000 010 0000 01099h SPGBRG Registro generador de Baud RateLeyenda x = desconocido u= sin cambios - = Sin implementar, se lee "0"

    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

    56-70 MICROCONTROLADORES2 17/6/04 13:16 Pgina 66

  • 8/14/2019 CURSO PIC16f87x 12

    8/11

    67RESISTOR

    Q1 Q1 Q1 Q1 Q1 Q1 Q1 Q1 Q1 Q1Q2Q2Q2 Q2Q2Q2Q2Q2Q2Q2Q2Q3 Q3 Q3 Q3 Q3 Q3 Q3Q3 Q3 Q3 Q3 Q3Q4Q4Q4 Q1Q4Q4Q4Q4Q4Q4Q4Q4Q4

    Bit0 Bit 1 Bit 2 Bit0 Bit 1Bit 7 Bit 7Palabra 1 Palabra 2

    RC7/RX/DT pin

    TC6/TX/CK pin

    Escritura enReg. TXREG

    bit TXIF(Flag de Interrupcin)

    bit TRMT

    bit TXEN"1" "1"

    Nota.- Modo master Sincrono; SPBRG="0". Transmisin Continua de 2 palagras de 8 bits

    Figura 8

    externamente por la patillaRC6/TX/CK en lugar de ser generadainternamente, esto permite que sepuedan transferir o recibir datos cuando

    el dispositivo est en el modo Sleep.Las operaciones de transmisin sonidnticas al modo Master, excepto en elcaso del modo Sleep.

    Si se escriben dos palabras en elregistro TXREG y despus se ejecuta lainstruccin Sleep, ocurrir lo siguiente:q La primera palabra ser inmediata-

    mente transferida al registro TSR ytransmitida.

    q La segunda palabra permanece en elregistro TXREG.

    q El bit TXIF no se pondr a uno.q Cuando la primera palabra haya sali-

    do del registro TSR, la segunda pala-

    bra, que permanece en el registro TX-REG, se enva al TSR y el flag TXIFse pone a uno.

    q Si est habilitado el bit TXIF la inte-

    rrupcin despierta al microcontroladorde modo Sleep y el programa saltar ala direccin del vector de interrupcio-nes (0004 hex.).

    EJEMPLOS DE CONTROL DELUSAR CONECTADO ALPUERTO SERIE DELORDENADOR

    Para poder conectar las lneas delPIC16F87X que entrega niveles TTLcon el puerto serie RS-232 que soncompatibles, es necesario utilizar uncircuito interface que traduzca los datosdel microcontrolador al puerto serie del

    ordenador y viceversa, nosotroshemos utilizado un MAX232, te-niendo mucho cuidado para noequivocarnos con la polaridad delos condensadores. El circuito uti-

    lizado es el que se muestra en laFigura 10. Los lectores que lo de-seen pueden ponerse en contactocon el autor de este curso en [email protected] para solicitar lasplacas del entrenador de micro-controladores PIC de bajo costoque se ha diseado para elaprendizaje de estos microcon-troladores.

    Adems del circuito, necesi-taremos para comprobar el funciona-miento los estos ejemplos de comuni-caciones, necesitamos un programa decomunicaciones como el HiperTerminal

    de Windows y un cable serie en cone-xin de MODEM nulo, que deber deconectarse tal y como se muestra en laFigura 11.

    EL HyperTerminal es un programageneral de comunicaciones de Win-dows, que resulta vlido para conectar-se con otros ordenadores o dispositi-vos. Hay programas de comunicacio-nes mucho ms potentes que ste. Sinembargo,HyperTerminal se caracterizapor su facilidad de uso y su fcil ad-quisicin ya que viene integrado dentrode Windows. Puede ocurrir que el pro-grama HyperTerminal no est cargado,

    TRANSMISIN SINCRONA

    pin RC7/RX/DT bit 0 bit 1 bit 2 bit 6 bit 7

    Pin RC6/TX/CK

    Escritura enel reg. TXREG

    bit TXIF

    bit TRMT

    bit TXEN

    TRANSMISIN ASINCRONA ( a traves del TXEN)

    Registros de Sincronizacin en modo master en recepcinDireccin Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en POR,BOR Valor en el resto de Reset0Ch PIR1 PSPIF(1) ADIF RCIF TXIF SSPIF CCP1IF TMREIF TMR1IF 0000 0000 0000 000018h RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 0000 000X 0000 000X1Ah RCGEG Registro Receptor USAR 0000 0000 0000 00008Ch PIE1 PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 000098h TXSTA CSRC TX9 TXEN SYNC --- BRGH TRMT TX9D 0000 010 0000 01099h SPGBRG Registro generador de Baud RateLeyenda x = desconocido u= sin cambios - = Sin implementar, se lee "0"

    Figura 9

    56-70 MICROCONTROLADORES2 17/6/04 13:16 Pgina 67

  • 8/14/2019 CURSO PIC16f87x 12

    9/11

  • 8/14/2019 CURSO PIC16f87x 12

    10/11

  • 8/14/2019 CURSO PIC16f87x 12

    11/11

    clrf PORTC ;del PORTB y del PORTC

    bsf STATUS,RP0 ;Selecciona el Banco1clrf TRISB ;Puerta B como salidamovlw b'10011111' ;RC7/Rx entrada,movwf TRISC ;RC6/Tx salida y RC5 Salida.movlw b'00000100' ;Configuracion USARTmovwf TXSTA ;y activacion de transmisionmovlw .25 ;9600 baudiosmovwf SPBRGbcf STATUS,RP0 ;Selecciona el Banco 0

    bsf RCSTA,SPEN ;se activa la USARTmovlw b'10010000' ;Configuracion de la usartmovwf RCSTA ;para recepcion continua

    ;------Bucle de comprobacion si llega dato mayor de 0 por puerto serie------

    BUCLE movf RCREG,W ;Lectura dato recibidomovwf Buffer ;Visualiza dato recibidomovlw .0 ;comprueba que se reciba algo quesubwf Buffer,W ;no sea cero...btfsc STATUS,Cgoto Mayordecero ;dato valido.goto BUCLE ;dato no valido.. es cero..vuelve.

    Mayordecero movf Buffer,W ;muestra el dato en portbmovwf PORTB ;y lo deja ayi hasta que llegue otrogoto BUCLE ;retorna a esperar otro dato valido

    ;*****************************************************************************ORG 0x1F00bcf PCLATH,4bcf PCLATH,3 ;Selecciona la pgina 0goto 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

    INCLUDE ;se incluye la definicion de losCBLOCK 0x20

    ContadorAContadorB

    ContadorCENDC;************************************ VECTOR DE RESET *********************; ORG 0x00; goto INICIO ;Va a la primera instruccion del programa

    ORG 0x05

    ;*******************************INICIO PROGRAMA PRINCIPAL ****************INICIO clrf PORTB ;Limpia PORTB y PORTC

    clrf PORTC

    bsf STATUS,RP0 ;Selecciona el Banco 1clrf TRISB ;Puerta B como salidamovlw b'10111111' ;RC7/Rx entrada,movwf TRISC ;RC6/Tx salida.

    movlw b'00100100' ;Configuracin USARTmovwf TXSTA ;y activacin de transmisinmovlw .25 ;9600 baudiosmovwf SPBRGbcf STATUS,RP0 ;Selecciona el Banco 0

    bsf RCSTA,SPEN ;se activa la USART

    bsf STATUS,RP0 ;Selecciona el Banco 1bsf TXSTA,TXEN ;Habilita la transmisinbcf STATUS,RP0 ;Selecciona el Banco 0

    Bucle call Delaymovlw 'H' ;Carcter ASCIImovwf TXREG ;

    bsf STATUS,RP0 ;Selecciona el Banco 1

    COMP_TX btfss TXSTA,TRMT ;comprueba si acabo de Tx.goto COMP_TXbcf STATUS,RP0 ;Selecciona el Banco 0movlw 'O' ;carcter ASCIImovwf TXREGbsf STATUS,RP0 ;Selecciona el Banco 1

    COMP_TX_2 btfss TXSTA,TRMT ;comprueba si acabo de Tx.goto COMP_TX_2bcf STATUS,RP0 ;Selecciona el Banco 0movlw 'L' ;carcter ASCIImovwf TXREGbsf STATUS,RP0 ;Selecciona el Banco 1

    COMP_TX_3 btfss TXSTA,TRMT ;comprueba si acabo de Tx.goto COMP_TX_3bcf STATUS,RP0 ;Selecciona el Banco 0movlw 'A' ;carcter ASCIImovwf TXREGbsf STATUS,RP0 ;Selecciona el Banco 1

    COMP_TX_4 btfss TXSTA,TRMT ;comprueba si acabo de Tx.goto COMP_TX_4bcf STATUS,RP0 ;Selecciona el Banco 0movlw '-' ;carcter ASCII en decimal

    movwf TXREGgoto Bucle

    ;**************************SUBRUTINAS *********************;Delay = 1,0000020 s with Osc = 4 MHzDelay movlw D'6'

    movwf ContadorCmovlw D'24'movwf ContadorBmovlw D'168'movwf ContadorA

    loop decfsz ContadorA,Fgoto loopdecfsz ContadorB,Fgoto loopdecfsz ContadorC,Fgoto loopreturn

    ;***********************************************************ORG 0x1F00bcf PCLATH,4bcf PCLATH,3 ;Selecciona la pgina 0goto INICIO ;Salto a la direccin de

    INICIO del programa;**********************************************************

    END

    56-70 MICROCONTROLADORES2 17/6/04 13:16 Pgina 70