ANEXO
;ESCRIBIR UN UN PROGRAMA EN ASSEMBLER DE DE AVR STUDIO QUE QUE PERMITA SUMAR SUMAR O RESTAR ( DE ACUERDO ;AL SWITCH DE SELECCIÓN) LOS DOS NÚMEROS QUE SE INGRESAN EN LOS DIP SWITCH Y MOSTRAR EL RESULTADO ;EN LOS DOS DISPLAY DE 7 SEGMENTOS EN HEXADECIMAL HEXADECIMAL. . LA DECODIFICA DECODIFICACIÓN CIÓN DE BINARIO A HEXADECIMAL SE ;REALIZARÁ POR SOFTWARE DENTRO DEL MICROCONTROLADOR. EL CARRY RESULTANTE DE LA OPERACIÓN DEBE SER ;ENVIADO DIRECTAMENTE AL LED. .ORG 0X00 .ORG 0X00 .CSEG CLR R0 CLR R0 CLR R20 CLR R20 CLR R21 CLR R21 LDI R22, LDI R22,$ $80 ;CARGAMOS EL VALOR AL REGISTRO R22 LDI R18, LDI R18,$ $7F SER R19 SER R19 OUT DDRA,R0 OUT DDRA,R0 ;ENTRADAS MEDIANTE LOS REGISTROS DE LOS PÓRTICOS OUT DDRB,R0 OUT DDRB,R0 OUT DDRC,R18 OUT DDRC,R18 ;SALIDAS MEDIANTE LOS REGISTROS DE LOS PÓRTICOS OUT DDRD,R19 OUT DDRD,R19 INGRESO: IN R16,PINA IN R16,PINA ;ENTRADAS MEDIANTE LOS REGISTROS DE LOS PÓRTICOS IN R17,PINB IN R17,PINB ;ENTRADAS MEDIANTE LOS REGISTROS DE LOS PÓRTICOS SBIC PINC,7 SBIC PINC,7 ;RESTA CON 1L Y SUMA CON 0L RJMP RESTA RJMP RESTA SUMA: ADD R16,R17 ADD R16,R17 ;SUMAMOS EL REGISTRO R16 Y EL R17 DECOD: ADC R20,R20 ADC R20,R20 MOV R19,R16 MOV R19,R16 ANDI R19, ANDI R19,$ $0F LDI ZL, LDI ZL, LOW(TABLA<<1) ;UZAMOS EL PUNTERO Z PARA LA TABLA LDI ZH, LDI ZH, HIGH(TABLA< HIGH(TABLA<<1) <1) ADD R30,R19 ADD R30,R19 CLR R0 CLR R0 ADC R31,R0 ADC R31,R0 LPM R0,Z LPM R0,Z ;CARGA EL REGISTRO DESDE LA FLASH OUT PORTC,R0 OUT PORTC,R0 ANDI R16,$ ANDI R16, $F0 SWAP R16 SWAP R16 LDI ZL, LDI ZL, LOW(TABLA<< LOW(TABLA<<1) 1) LDI ZH, LDI ZH, HIGH(TABLA< HIGH(TABLA<<1) <1) ADD R30,R16 ADD R30,R16 CLR R1 CLR R1 ADC R31,R1 ADC R31,R1 LPM R1,Z LPM R1,Z ;CARGA EL REGISTRO DESDE LA FLASH CPSE R20,R21 CPSE R20,R21 ADD R1,R22 ADD R1,R22 OUT PORTD, OUT PORTD, R1 ;SALIDAS MEDIANTE LOS REGISTROS DE LOS PÓRTICOS RJMP INGRESO RJMP INGRESO ;SALTO INCONDICIONA INCONDICIONADO DO RESTA: SUB R16,R17 SUB R16,R17 BRBS 2,C2 RJMP DECOD RJMP DECOD C2: COM INC INC
R16 R16
;RESTA EL REGISTRO R16 DEL R17
RJMP DECOD TABLA:;LA TABLA CONVIERTE HEXADECIMAL DE 4 BITS A SU EQUIVALENTE EN 7 SEGMENTOS .DB 0B1000000,0B1111001 .DB 0B0100100,0B0110000 .DB 0B0011001,0B0010010 .DB 0B0000010,0B1111000 .DB 0B0000000,0B0010000 .DB 0B0001000,0B0000011 .DB 0B1000110,0B0100001 .DB 0B0000110,0B0001110
R8(1)
R16(1)
R8 R7 R5 R4 R3 R1 R2 R6
R16R15R14R13R12R11R9 R10
4k7 4k7 4k7 4k7 4k7 4k7 4k7 4k7
4k7 4k7 4k7 4k7 4k7 4k7 4k7 4k7
DSW1 16 15 14 13 12 11 10 9
O FF
ON
U1 1 2 3 4 5 6 7 8
40 41 42 43 44 1 2 3 9 10 11 12 13 14 15 16
DIPSW_8
R17 R24 R23 390R R22 390R R21 390R R20 390R R19 390R R18 390R
PB0/T0/XCK0/PCINT8 PB1/T1/CLKO/PCINT9 PB2/AIN0/INT2/PCINT10 PB3/AIN1/OC0A/PCINT11 PB4/SS/OC0B/PCINT12 PB5/MOSI/PCINT13 PB6/MISO/PCINT14 PB7/SCK/PCINT15
PD0/RXD0/PCINT24 PD1/TXD0/PCINT25 PD2/INT0/RXD1/PCINT26 PD3/INT1/TXD1/PCINT27 PD4/OC1B/XCK1/PCINT28 PD5/OC1A/PCINT29 PD6/ICP/OC2B/PCINT30 PD7/OC2A/PCINT31
29 AREF 27 AVCC 4 RESET
DSW2 PA0/ADC0/PCINT0 PA1/ADC1/PCINT1 PA2/ADC2/PCINT2 PA3/ADC3/PCINT3 PA4/ADC4/PCINT4 PA5/ADC5/PCINT5 PA6/ADC6/PCINT6 PA7/ADC7/PCINT7 PC0/SCL/PCINT16 PC1/SDA/PCINT17 PC2/TCK/PCINT18 PC3/TMS/PCINT19 PC4/TDO/PCINT20 PC5/TDI/PCINT21 PC6/TOSC1/PCINT22 PC7/TOSC2/PCINT23 XTAL1 XTAL2
37 36 35 34 33 32 31 30
1 2 3 4 5 6 7 8
19 20 21 22 23 24 25 26
R25 R26 R27 390R R28 390R R29 390R R30 390R R31 390R
7 8
390R 390R
DSW3 D1
OFF
DIPSW_8
ATMEGA164P
390R 390R
ON
4 3
O FF
ON
LED-RED DIPSW_2
1 2
16 15 14 13 12 11 10 9