Está en la página 1de 27

UNIVERSIDAD AUSTRAL Facultad de Ingeniera

Diseo de Sistemas Digitales

Informe: Emisor Infrarrojo

Profesor: Ing. Alejandro Silvestri Alumnas: Mara Soledad Salaberri Mara Eugenia Comadira

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

Introduccin
El objetivo del trabajo prctico es la realizacin de un emisor infrarrojo que emita cdigos correspondientes a cada tecla de un teclado. El equipo esta compuesto bsicamente de: Emisor: Un teclado de 3 por 4. Un microcontrolador Motorola MC68HC705J1A Un amplificador Un led infrarrojo emisor Receptor: Un led infrarrojo receptor Dos amplificadores El emisor decodifica el valor correspondiente a la tecla presionada. Estos valores varan del 0 al 11. Una vez codificado el valor lo transmite en forma infrarroja al receptor. El receptor fue construido con el objetivo de poder medir a travs de un osciloscopio la seal que el mismo recibe emitida por el transmisor.

Circuito Emisor

s q u e m

b s ic o

d e l

t r a n s

Mara Eugenia Comadira Mara Soledad Salaberri Pg 2

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

Detalle del circuito Emisor


4.5 V Ref. 1 4.5 V 4 1 8 7 5.6 k 5.6 k 5.6 k 3.3 4.5 V 270 270 BC337 10 IN4148 27 F BC337 10 M Osc1 Osc2 27 F 4 MHz PB5 PB4 PB3 PB2 PB1 PB0 4.5 V VDD VSS 0.1 F RST IRQ PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 4.5 V 4.5 V IN4148 2.2 k Ref. 3 220 4.5 V Ref. 2 4.5 V

555
5 3

6 2

1.7 k

Informacin de baja frecuencia

HC05

Ref. 1: Oscilador de 25 KHz. De ancho de pulso del 25%. Se utiliza para evitar que le llegue al led emisor infrarrojo tensin durante una cantidad de tiempo mayor a la que el mismo pueda soportar. Este oscilador proporciona una seal del siguiente tipo: 30 microseg. 10 microseg. (Ver hoja de datos del Oscilador 555 en el Anexo) Ref.2: En lugar de una resistencia de 270 , deberamos haber utilizado una resistencia de 1K (aproximadamente). Y deberamos haber utilizado como port de salida del microcontrolador el PORTA7 debido a que todos los pines del PORTA soportan mayor corriente que los pines del PORTB. Tanto el cambio de la resistencia de 270 , como el cambio del pin a utilizarse como salida, se deben a una cuestin de diseo propia del HC05. El objetivo de este cambio seria lograr entregar una corriente de 2 mA cuando VCC sea igual a 0V. Los pines del PORTB, segn las especificaciones de diseo no soportan tanta corriente, mientras que los pines del PORTA si lo pueden soportar. Advertimos que el cambio de la resistencia puede provocar que la seal no llegue en forma clara al led emisor infrarrojo, por lo que este se encontrara con problemas para transmitir la seal. Ref. 3: Los diodos hacen de compuerta AND (podra haberse utilizado una de estas). Permite que le llegue tensin al led infrarrojo solamente segn las oscilaciones del 555.

Mara Eugenia Comadira Mara Soledad Salaberri Pg 3

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

Circuito Receptor

Mara Eugenia Comadira Mara Soledad Salaberri Pg 4

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

Diagramas de Flujo
Rutina Principal
START

STOP MODE
INTERRUPCION

ACC = PORT A

PORT A AND #$0F

NO

SI

DECODIFICA TECLA

TRANSMITE BITS START

TRANSMITE BIT DATOS

PORT A AND #$0F

SI

COMPARA MISMA TECLA

SI

TRANSMITE BITS END

NO

Mara Eugenia Comadira Mara Soledad Salaberri Pg 5

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

Decodificacin de Tecla
DELAY ANTI REBOTE

ACC = PRIMER COLUMNA

COL = ACC

ACC = PORT A

SUB COL ACC

CMP ACC, ROW

NO

ADD 1 COL

SI

COLROW ACC = VALOR

CMP VALOR, COLRO W

NO

ADD 1 COL

SI

VARIABLE = VALOR TRANSMITE BIT START

Mara Eugenia Comadira Mara Soledad Salaberri Pg 6

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

Transmisin Bits de Start


ACC = BITSTART

SEND 1

DEC X

SI
X <> 0

NO

END

Mara Eugenia Comadira Mara Soledad Salaberri Pg 7

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

Transmisin Bits de Datos


ACC = DATOS

CARRY =1

NO

SEND 0
SI

SEND 1

SHIFT DATOS

IF END

NO

SI

START

Mara Eugenia Comadira Mara Soledad Salaberri Pg 8

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

Transmisin Bits de End

ACC = BITSTART

SEND 0

DEC X

SI
X <> 0

NO

END

Mara Eugenia Comadira Mara Soledad Salaberri Pg 9

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

Explicacin del Programa


Comienza el programa con la definicin de las etiquetas. Estas corresponden a las direcciones de memoria, se utilizan para que resulte ms sencillo el seteo del micro que se realizar ms adelante. El contenido del Data Direction Register A (DDRA) determina si cada pin del Port A es un input o un output. Lo mismo con el Data Register B (DDRB) pero para cada pin del Port B. El Pulldown Register A B (PDRA PDRB) puede habilitarse para cada pin solamente cuando est seteado como input. Los Ports A B Data Registers (PORTA PORTB) contienen un bit para cada pin del port. Cuando un pin del port es programado para ser un output, el estado del bit del registro de datos determina el estado del output pin. Cuando un pin del port est programado para ser un input, la lectura del port de registro de datos devuelve el estado lgico del pin. El Timer Status and Control Register (TSCR) contiene los siguientes bits: Timer interrupt enable bits: Timer Overflow Interrupt Enable (TOIE), Real-Time Interrupt Enable (RTIE). Timer interrupt flags: Timer Overflow Flag (TOF), Real-Time Interrupt Flag (RTIF) Timer interrupt flag reset bits: Timer Overflow Flag Reset (TOFR), Real-Time Interrupt Flag Reset (RTIFR) Timer interrupt rate select bits: Real-Time Interrupt Select Bits 1 y 0 (RT1, RT0)

El IRQ Status and Control Register (ISCR) contiene los siguientes bits: External interrupt request enable (IRQE) External Interrupt Request Flag (IRQF) Interrupt Request Reset (IRQR) A continuacin se muestran las direcciones de memoria de cada registro y sus etiquetas correspondientes. Los seteos de estos registros se mostrarn ms adelante. ************************************************************* * Etiquetas ************************************************************* ddra equ $0004;Data Direction Register A pdra equ $0010;Pulldown Register A portb equ $0001;Port B Data Register ddrb equ $0005;Data Direction Register B pdrb equ $0011;Pulldown Register B tscr equ $0008;Timer Status and Control Register iscr equ $000A;IRQ Status and Control Register porta equ $0000;Port A Data Register Mara Eugenia Comadira Mara Soledad Salaberri Pg 10

Diseo de Sistemas Digitales Informe Emisor Infrarrojo Luego se definen las variables a utilizar durante el programa. Estas se definen en la memoria RAM que va desde la direccin $00C0 hasta la $00FF. A continuacin se listan ellas y se explica para qu sern utilizadas. ;variables desde $00C0 hasta $00ff (User Ram) dflag equ $00C0 ;flag utilizado en la rutina de transmisin para marcar el ltimo bit keyst1 equ $00C1 ;cdigo de la tecla keyst2 equ $00C2 ;cdigo de la tecla a transmitir keyst3 equ $00C3 ;variable para guardar el contenido del mensaje a transmitir row equ $00C5 ;para guardar la fila aux equ $00C6 ;variable auxiliar para la lectura del teclado col equ $00C7 ;para guardar la columna col_row equ $00C8;para guardar la fila y la columna data equ $00C9 El programa se escribe en el sector del usuario de memoria de solo lectura (User ROM) que comienza en la direccin $0300. Este comienza con la limpieza de las variables, luego setea los registros mencionados previamente y despus espera la presin de una tecla para saltar a la rutina de determinacin de la tecla apretada. ************************************************************* * Seteos - Rutina de inicializacin - Bucle para esperar la * seleccin de una tecla ************************************************************** org $0300 start clr dflag clr keyst1 clr keyst2 clr keyst3 clr row clr aux clr col clr col_row clr data bsr setup ;branch to subroutine "setup" rsp ;reset stack pointer cli stop ;stop oscilator and enable IRQ Pin bra start ;branch always

Mara Eugenia Comadira Mara Soledad Salaberri Pg 11

Diseo de Sistemas Digitales Informe Emisor Infrarrojo La siguiente rutina realiza los siguientes seteos: Declara los pines 0, 1, 2 y 3 del port A como entradas (input = 0, output = 1) y los pines 4, 5, 6 y 7 como salida, aunque el pin 7 no se usar porque utilizaremos un teclado de 12 teclas. Luego se utilizarn los pines de entrada como filas y los pines de salida como columnas. Tambin setea al pin 1 del port B como salida, a travs de este se transmitirn los mensajes al receptor. Los restantes pines del port B no sern utilizados aunque se hayan declarado como entrada. El pulldown device est habilitado (0 corresponde a estado on, 1 corresponde al estado off) para los pines de entrada del port A y del port B (aunque no se usen). Este se puede habilitar solo para los pines de entrada. El pulldown est deshabilitado para los pines declarados como outputs tanto en el port A como en el B. El contenido inicial del registro de datos del port A es para cada pin de salida en 1 para poder captar las interrupciones externas. El contenido inicial del registro de datos del port B es 0. En el registro ISCR se setean los pines IRQE y el IRQR en 1 para habilitar las interrupciones externas. El registro TSCR se setea con todos los bits en 0 ya que no se trabajar con Timer Interrupts.

setup lda #$F0 ;load accumulator 11110000, pin portA 0-3 as inputs and pin portA 4-7 as outputs ;(pin 7 will not be used) sta ddra ;store DDRA with accumulator lda #$02 ;load accumulator with 00000010, pin portB 1 as output ;(to send messages to receiver) sta ddrb ;store DDRB with accumulator lda #$F0 ;load accumulator with 11110000 sta pdra ;store PDRA with accumulator (pulldown register A) lda #$F0 ;load accumulator with 11110000 sta porta ;store PORTA with accumulator, setting each column with one ;(each output pin portA) lda #$02 ;load accumulator with 000010 (pulldown off for the output pin) sta pdrb ;store PDRB with accumulator (pulldown register B) lda #$00 ;load accumulator with 0 sta portb ;store PORTB with accumulator lda #$82 ;load accumulator with 10000010 (pin 7, IRQE=1; pin 1, IRQR=1) sta iscr ;store ISCR with accumulator (IRQ Status and Control Register) lda #$00 ;load accumulator with 0 sta tscr ;store TSCR with accumulator (Timer Status and Control Register) rts ;return to subroutine

Cuando una tecla es presionada el dispositivo sale del modo de espera y comienza a correr la siguiente rutina que es la apuntada por el vector de interrupciones externas (al final del programa se ve esto).

Mara Eugenia Comadira Mara Soledad Salaberri Pg 12

Diseo de Sistemas Digitales Informe Emisor Infrarrojo Primero chequea que la tecla se mantenga apretada, si es as salta a la rutina de determinacin de la tecla presionada. Luego guarda en una variable el cdigo de la misma para luego chequear si la misma tecla se mantiene presionada. Segn el protocolo utilizado en este trabajo, primero enva el mensaje de inicio que consiste en 5 unos (de acuerdo al protocolo propuesto), luego enva el mensaje de datos en 4 bits hasta que se suelte la tecla, y finalmente enva el mensaje de fin que consiste en 5 ceros. Ms adelante se mostrar el cdigo de cada tecla y la rutina de decodificacin, como as tambin los tiempos de transmisin. Por ltimo setea el registro de interrupciones externas como estaba inicialmente para que pueda captar las nuevas interrupciones externas y luego vuelve al modo de espera de una nueva tecla. ************************************************************* * Cuando una tecla es presionada el dispositivo sale del * stop mode y se guarda en memoria la tecla presionada ************************************************************* presd jsr datwt lda porta ;check if key press and #$0F beq start ;stop if no key pressed bsr keyscn ;get key pressed lda keyst2 ;save key to check later if the same sta keyst1 ;key is still pressed lda #$1F ;load accumulator with five ones sta keyst3 ;store keyst3 with the accumulator ;start message that goes to the transmission routine jsr trnmit5 ;send start data to transmission routine (five ones -->our protocol) sndagn lda keyst2 ;store accumulator with key press message sta keyst3 ;store keyst3 with the accumulator ;message that goes to the transmission routine jsr trnmit lda porta ;check if key still pressed and #$0F beq endtrn ;end if no key pressed bsr keyscn ;else check if same lda keyst1 ;key pressed cmp keyst2 bne endtrn ;end if not ldx #$C8 ;delay before tloop decx ;next transmission bne tloop bra sndagn endtrn lda #$00 ;load accumulator with five zeros sta keyst3 ;store keyst3 with the accumulator ;end message that goes to the transmission routine jsr trnmit5 ;send end data to transmission routine (five zeros -->our protocol) lda #$82 ;to restore the IRQ Register sta iscr rti ;re enter stop mode Mara Eugenia Comadira Mara Soledad Salaberri Pg 13

Diseo de Sistemas Digitales Informe Emisor Infrarrojo La rutina de determinacin de la tecla se basa en la siguiente distribucin del teclado: A0 A1 A2 A3 1 2 3 4 5 6 7 8 9 * 0 # A4 A5 A6

La siguiente es la correspondencia de las patas del teclado con los pines del port A. 1 4 7 * 2 5 8 0 3 6 9 #

A5 A0 A4 A3 A6 A2 A1 Una tecla presionada setear una de las filas de entrada en 1, solo falta reconocer cul columna corresponde a la tecla oprimida. El programa realiza un barrido de cada columna seteando cada una en 0 y luego chequeando si la fila de entrada cambia a 0. De esta manera se podr determinar la columna de la tecla sujetada. Una vez determinadas la fila y la columna, en la rutina de decodificacin se completar el cdigo de 4 bits a enviar al receptor. ************************************************************* * Determinacin de la tecla oprimida ************************************************************* keyscn ;lectura del teclado jsr datwt ;retardo antirebote lda #$F0 ;para cuando vuelva a probar si la tecla que sigue apretada ;es la misma que la vez anterior sta porta ;solo pone en 1 las columnas, pines de salida (A4-A7) ;no sobreescribe los pines de entrada, row (A0-A3) lda porta sub #%11110000 ;para cambiar los pines de las columnas (A4-7) a 0000 sta row ;en row guardamos la fila barrido lda #%00010000 ;primer columna sta aux barr1 lda aux sta col ;guarda la primera columna en esa variable sta porta lda porta ;guarda todo el vector y le resta la columna ;para luego comparar si la fila sigue estando en 1 sub col lsl aux Mara Eugenia Comadira Mara Soledad Salaberri Pg 14

Diseo de Sistemas Digitales Informe Emisor Infrarrojo cmp row ;compara el acumulador con row (fila) bne barr1 ;si son iguales entonces es la columna add col ;suma al acumulador la columna (en el acumulador est la columna) sta col_row bsr decdata;para decodificar la tecla apretada rts La siguiente rutina guarda en la variable correspondiente el cdigo de la tecla a enviar al receptor. El cdigo consiste en 4 bits y estos pueden variar de los nmeros 0 al 11, siendo del 0 al 9 los nmeros correspondientes al teclado, el 10 corresponde al * del teclado y el 11 corresponde al # del teclado. La siguiente tabla muestra el cdigo en base a la fila y la columna determinados en la rutina anterior y la tecla a la cual corresponde. Tecla 0 1 2 3 4 5 6 7 8 9 * # Cdigo de fila-col A7 A6 A5 A4 A3 A2 A1 A0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0

(10) (11)

El programa compara el cdigo reconocido en la rutina anterior con el correspondiente a cada tecla, basados en la fila y la columna. Si no corresponde, una variable temporal (data) se va incrementando hasta que coincida y llegue finalmente al nmero correspondiente que ser el que se guardar para enviar. **************************************************************** * Rutina de decodificacin **************************************************************** decdata ;A0-3 filas A4-A7 columnas A7 siempre 0, pues no la usamos. (12 teclas) clr data lda #%00101000 ;A3-A5 (tecla 0) cmp col_row beq back inc data lda #%00010001 ;A0-A4 (tecla 1) Mara Eugenia Comadira Mara Soledad Salaberri Pg 15

Diseo de Sistemas Digitales Informe Emisor Infrarrojo cmp col_row beq back inc data lda #%00100001 ;A0-A5 (tecla 2) cmp col_row beq back inc data lda #%01000001 ;A0-A6 (tecla 3) cmp col_row beq back inc data lda #%00010010 ;A1-A4 (tecla 4) cmp col_row beq back inc data lda #%00100010 ;A1-A5 (tecla 5) cmp col_row beq back inc data lda #%01000010 ;A1-A6 (tecla 6) cmp col_row beq back inc data lda #%00010100 ;A2-A4 (tecla 7) cmp col_row beq back inc data lda #%00100100 ;A2-A5 (tecla 8) cmp col_row beq back inc data lda #%01000100 ;A2-A6 (tecla 9) cmp col_row beq back inc data lda #%00011000 ;A3-A4 (tecla 10) cmp col_row beq back inc data lda #%01001000 ;A3-A6 (tecla 11) cmp col_row back lda data sta keyst2 ;guarda la col_row en keyst2, para enviar la tecla codificada rts Las siguientes rutinas son las utilizadas para la transmisin. Los tiempos son propios del protocolo propuesto para este trabajo en particular. El protocolo de transmisin empleado es una combinacin del usado por el control remoto transmisor Infrarrojo MC144105. El bit menos significativo (LSB) se transmite primero. Cada Mara Eugenia Comadira Mara Soledad Salaberri Pg 16

Diseo de Sistemas Digitales Informe Emisor Infrarrojo bit de la seal transmitida est en la forma de una seal bi-phase pulse code modulated (PCM), cuya codificacin es mostrada a continuacin: bit-n

0 1024 s 512 s

Existe un delay entre las transmisiones sucesivas de los mensajes de 36433 s. Si la tecla se mantiene apretada a este delay se le suma el delay before next transmission del mismo mensaje de datos(601 s) de la rutina presd (rutina explicada al principio). Esto hace un delay de 37034 s que sumados los ciclos de las distintas instrucciones hace un total de 37627 s de delay entre las distintas transmsiones del mensaje de datos. ************************************************************* * Rutina de transmisin ************************************************************** trnmit bset 0,dflag ;initialise for first bit ldx #$04 ;transmit 8 data bits bra nxtbit trnmit5 bset 0,dflag ;initialise for first bit ldx #$05 ;transmit 5 data bits nxtbit lsr keyst3 ;get next bit bcs data1 ;send 1 if carry set bsr send0 ;send 0 if carry clear bra bitsnt data1 bsr send1 bitsnt decx ;countdown bits sent bne nxtbit ;send next bit if count not zero ldx #$18 loopw bsr datwt ;delay between succesive transmissions bsr datwt bsr datwt decx bne loopw rts

Mara Eugenia Comadira Mara Soledad Salaberri Pg 17

Diseo de Sistemas Digitales Informe Emisor Infrarrojo Para la transmisin de 1hay un tren de pulsos de 32kHz seguido de una pausa de 512 s. Esto da un tiempo de 1024 s para cada bit. ************************************************************** * Transmisin de 1 ************************************************************** send1 brclr 0,dflag,last0 ;check if last bit was zero lda #$20 ;burst if las bit was 1 bsr burst last0 bsr datwt bset 0,dflag ;set flag as 1 sent rts Para la transmisin de 0hay una pausa de 512 s seguida de un tren de pulsos de 32kHz por 512 s. Esto da un tiempo de 1024 s para cada bit ************************************************************** * Transmisin de 0 ************************************************************** send0 bsr datwt brset 0,keyst3,next1 ;check if next bit is 1 lda #$20 ;single burst if 1 bra datset ;data set next1 lda #$40 ;double burst required datset bsr burst bclr 0,dflag ;clear flag as 0 sent rts Esta es la rutina que se utiliza para transmitir el 1. ************************************************************** * Rutina utilizada para la transmisin del 1 ************************************************************** burst bset 1,portb ;portb 1 high brn * brn * brn * brn * brn * brn * deca beq endbur ;end of burst bra burst endbur bclr 1,portb ;porta 1 low rts Mara Eugenia Comadira Mara Soledad Salaberri Pg 18

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

La siguiente rutina es la aplicada para las pausas de 512 s de las rutinas anteriores. *************************************************************** * Rutina para los tiempos *************************************************************** datwt lda #$A6 loop deca bne loop rts ;cuenta ;para proveer un delay de 512microseg

Finalmente se indican las rutinas apuntadas para cada vector y el nmero correspondiente al Mask Option Register (MOR) que se encuentra en la direccin $07F1. org $07F1 ;MOR Register (Mask Option Register)

db %00000100 ;SOSCD=0 EPMSEC=0 OSCRES=0 SWAIT=0 ;SWPDI=0 PIRQ=1 LEVEL=0 COPEN=0 org $07F8 fdb start fdb presd fdb start fdb start ;Timer Vector ;scan keyboard on interrupt (corresponds to $07FA, external interrupt vector) ;Software Interrupt Vector ;Reset Vector

Mara Eugenia Comadira Mara Soledad Salaberri Pg 19

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

Cdigo
************************************************************* * Etiquetas ************************************************************* ddra pdra portb ddrb pdrb tscr iscr porta equ equ equ equ equ equ equ equ $0004;Data Direction Register A $0010;Pulldown Register A $0001;Port B Data Register $0005;Data Direction Register B $0011;Pulldown Register B $0008;Timer Status and Control Register $000A;IRQ Status and Control Register $0000;Port A Data Register

;variables desde $00C0 hasta $00ff (User Ram) dflag equ $00C0 ;flag utilizado en la rutina de transmisin para marcar el ltimo bit keyst1 equ $00C1 ;cdigo de la tecla keyst2 equ $00C2 ;cdigo de la tecla a transmitir keyst3 equ $00C3 ;variable para guardar el contenido del mensaje a transmitir row equ $00C5 ;para guardar la fila aux equ $00C6 ;variable auxiliar para la lectura del teclado col equ $00C7 ;para guardar la columna col_row equ $00C8;para guardar la fila y la columna data equ $00C9 ************************************************************* * Seteos - Rutina de inicializacin - Bucle para esperar la * seleccin de una tecla ************************************************************** org $0300 start clr dflag clr keyst1 clr keyst2 clr keyst3 clr row clr aux clr col clr col_row clr data bsr setup ;branch to subroutine "setup" rsp ;reset stack pointer cli stop ;stop oscilator and enable IRQ Pin bra start ;branch always

Mara Eugenia Comadira Mara Soledad Salaberri Pg 20

Diseo de Sistemas Digitales Informe Emisor Infrarrojo setup lda #$F0 ;load accumulator 11110000, pin portA 0-3 as inputs and pin portA 4-7 as outputs ;(pin 7 will not be used) sta ddra ;store DDRA with accumulator lda #$02 ;load accumulator with 00000010, pin portB 1 as output ;(to send messages to receiver) sta ddrb ;store DDRB with accumulator lda #$F0 ;load accumulator with 11110000 sta pdra ;store PDRA with accumulator (pulldown register A) lda #$F0 ;load accumulator with 11110000 sta porta ;store PORTA with accumulator, setting each column with one ;(each output pin portA) lda #$02 ;load accumulator with 000010 (pulldown off for the output pin) sta pdrb ;store PDRB with accumulator (pulldown register B) lda #$00 ;load accumulator with 0 sta portb ;store PORTB with accumulator lda #$82 ;load accumulator with 10000010 (pin 7, IRQE=1; pin 1, IRQR=1) sta iscr ;store ISCR with accumulator (IRQ Status and Control Register) lda #$00 ;load accumulator with 0 sta tscr ;store TSCR with accumulator (Timer Status and Control Register) rts ;return to subroutine

************************************************************* * Cuando una tecla es presionada el dispositivo sale del * stop mode y se guarda en memoria la tecla presionada ************************************************************* presd jsr datwt lda porta ;check if key press and #$0F beq start ;stop if no key pressed bsr keyscn ;get key pressed lda keyst2 ;save key to check later if the same sta keyst1 ;key is still pressed lda #$1F ;load accumulator with five ones sta keyst3 ;store keyst3 with the accumulator ;start message that goes to the transmission routine jsr trnmit5 ;send start data to transmission routine (five ones -->our protocol) sndagn lda keyst2 ;store accumulator with key press message sta keyst3 ;store keyst3 with the accumulator ;message that goes to the transmission routine jsr trnmit lda porta ;check if key still pressed and #$0F beq endtrn ;end if no key pressed bsr keyscn ;else check if same lda keyst1 ;key pressed cmp keyst2 bne endtrn ;end if not Mara Eugenia Comadira Mara Soledad Salaberri Pg 21

Diseo de Sistemas Digitales Informe Emisor Infrarrojo ldx #$C8 ;delay before tloop decx ;next transmission bne tloop bra sndagn endtrn lda #$00 ;load accumulator with five zeros sta keyst3 ;store keyst3 with the accumulator ;end message that goes to the transmission routine jsr trnmit5 ;send end data to transmission routine (five zeros -->our protocol) lda #$82 ;to restore the IRQ Register sta iscr rti ;re enter stop mode ************************************************************* * Determinacin de la tecla oprimida ************************************************************* keyscn ;lectura del teclado jsr datwt ;retardo antirebote lda #$F0 ;para cuando vuelva a probar si la tecla que sigue apretada ;es la misma que la vez anterior sta porta ;solo pone en 1 las columnas, pines de salida (A4-A7) ;no sobreescribe los pines de entrada, row (A0-A3) lda porta sub #%11110000 ;para cambiar los pines de las columnas (A4-7) a 0000 sta row ;en row guardamos la fila barrido lda #%00010000 ;primer columna sta aux barr1 lda aux sta col ;guarda la primera columna en esa variable sta porta lda porta ;guarda todo el vector y le resta la columna ;para luego comparar si la fila sigue estando en 1 sub col lsl aux cmp row ;compara el acumulador con row (fila) bne barr1 ;si son iguales entonces es la columna add col ;suma al acumulador la columna (en el acumulador est la columna) sta col_row bsr decdata;para decodificar la tecla apretada rts **************************************************************** * Rutina de decodificacin **************************************************************** decdata ;A0-3 filas A4-A7 columnas A7 siempre 0, pues no la usamos. (12 teclas) clr data lda #%00101000 ;A3-A5 (tecla 0) Mara Eugenia Comadira Mara Soledad Salaberri Pg 22

Diseo de Sistemas Digitales Informe Emisor Infrarrojo cmp col_row beq back inc data lda #%00010001 ;A0-A4 (tecla 1) cmp col_row beq back inc data lda #%00100001 ;A0-A5 (tecla 2) cmp col_row beq back inc data lda #%01000001 ;A0-A6 (tecla 3) cmp col_row beq back inc data lda #%00010010 ;A1-A4 (tecla 4) cmp col_row beq back inc data lda #%00100010 ;A1-A5 (tecla 5) cmp col_row beq back inc data lda #%01000010 ;A1-A6 (tecla 6) cmp col_row beq back inc data lda #%00010100 ;A2-A4 (tecla 7) cmp col_row beq back inc data lda #%00100100 ;A2-A5 (tecla 8) cmp col_row beq back inc data lda #%01000100 ;A2-A6 (tecla 9) cmp col_row beq back inc data lda #%00011000 ;A3-A4 (tecla 10) cmp col_row beq back inc data lda #%01001000 ;A3-A6 (tecla 11) cmp col_row back lda data sta keyst2 ;guarda la col_row en keyst2, para enviar la tecla codificada rts Mara Eugenia Comadira Mara Soledad Salaberri Pg 23

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

************************************************************** * Rutina de transmisin ************************************************************** trnmit bset 0,dflag ;initialise for first bit ldx #$04 ;transmit 8 data bits bra nxtbit trnmit5 bset 0,dflag ;initialise for first bit ldx #$05 ;transmit 5 data bits nxtbit lsr keyst3 ;get next bit bcs data1 ;send 1 if carry set bsr send0 ;send 0 if carry clear bra bitsnt data1 bsr send1 bitsnt decx ;countdown bits sent bne nxtbit ;send next bit if count not zero ldx #$18 loopw bsr datwt ;delay between succesive transmissions bsr datwt bsr datwt decx bne loopw rts ************************************************************** * Transmisin de 1 ************************************************************** send1 brclr 0,dflag,last0 ;check if last bit was zero lda #$20 ;burst if las bit was 1 bsr burst last0 bsr datwt bset 0,dflag ;set flag as 1 sent rts ************************************************************** * Transmisin de 0 ************************************************************** send0 bsr datwt brset 0,keyst3,next1 ;check if next bit is 1 lda #$20 ;single burst if 1 bra datset ;data set next1 lda #$40 ;double burst required datset bsr burst Mara Eugenia Comadira Mara Soledad Salaberri Pg 24

Diseo de Sistemas Digitales Informe Emisor Infrarrojo bclr 0,dflag rts ;clear flag as 0 sent

************************************************************** * Rutina utilizada para la transmisin del 1 ************************************************************** burst bset 1,portb ;portb 1 high brn * brn * brn * brn * brn * brn * deca beq endbur ;end of burst bra burst endbur bclr 1,portb ;porta 1 low rts *************************************************************** * Rutina para los tiempos *************************************************************** datwt lda #$A6 loop deca bne loop rts org $07F1 ;cuenta ;para proveer un delay de 512microseg

;MOR Register (Mask Option Register)

db %00000100 ;SOSCD=0 EPMSEC=0 OSCRES=0 SWAIT=0 ;SWPDI=0 PIRQ=1 LEVEL=0 COPEN=0 org $07F8 fdb start fdb presd fdb start fdb start ;Timer Vector ;scan keyboard on interrupt (corresponds to $07FA, external interrupt vector) ;Software Interrupt Vector ;Reset Vector

Mara Eugenia Comadira Mara Soledad Salaberri Pg 25

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

Anexo A: Seal emitida


Nmero 0 Binario 0000 Seal (el bit menos significativo se transmite primero)

1 2

0001 0010

0011

0100

0101

0110

0111

1000

1001

10 (*)

1010

11 (#)

1011

Mara Eugenia Comadira Mara Soledad Salaberri Pg 26

Diseo de Sistemas Digitales Informe Emisor Infrarrojo

Anexo B: Hojas de Datos


TL082C
JFET INPUT OP AMP A product of ON Semiconductor

Features

Input Offset Voltage Options of 6.0 mV and 15 mV Max Low Input Bias Current: 30 pA Low Input Offset Current: 5.0 pA Wide Gain Bandwidth: 4.0 MHz High Slew Rate: 13 V/us Low Supply Current: 1.4 mA per Amplifier High Input Impedance: 10^12 Ohm

Description
These low-cost JFET input operational amplifiers combine two state-of- the-art linear technologies on a single monolithic integrated circuit. Each internally compensated operational amplifier has well matched high voltage JFET input devices for low input offset voltage. The BIFET technology provides wide bandwidths and fast slew rates with low input bias currents, input offset currents, and supply currents. These devices are available in single, dual and quad operational amplifiers which are pin-compatible with the industry standard MC1741, MC1458, and the MC3403/LM324 bipolar products.

BC337-25
NPN GENERAL PURPOSE AMPLIFIER A product of Fairchild

Features

NULL

Description
This device is designed for use as general purpose amplifiers and switches requiring collector currents to 500 mA. Sourced from Process 12. See TN3019A for characteristics.

Mara Eugenia Comadira Mara Soledad Salaberri Pg 27

También podría gustarte