curso pic16f87x 12
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