Preparatorio 3
Preparatorio 3
Preparatorio 3
II. PREPARACIÓN DEL TRABAJO TÉCNICO B. Consultar la Subrutina (lenguaje ensamblador) para
escribir y leer en la memoria EEPROM (datos) de un
microcontrolador.
A. Consultar 2 circuitos que sirvan para realizar respaldo de
alimentación. No usar los que se vio en clase teórica. ESCRIBIR:
LEER:
READEEPROM:
SBIC EECR,EEPE//SE ESPERA A QUE UNA LECTURA
PREVIA SE COMPLETE
RJMP READEEPROM
Fig.1 Fuente LTC3643 LDI VAR,0//SE ESCRIBE LA DIRECCION DE DATO QUE
SE REQUIERE EXTRAER
Características: LDI AUX,0
- Regulador de carga / condensador de refuerzo síncrono OUT EEARH,VAR
bidireccional para respaldo del sistema OUT EEARL,AUX
- Voltaje de entrada: 3V a 17V SBI EECR,EERE//SE SUBE LA BANDERA DE LECTURA
- Corriente máxima de carga de CAP 2A IN VAR,EEDR//SE LEE EL DATO
- Frecuencia de conmutación rápida de 1 MHz STS PENTRADAS,VAR//SE GUARDA EN LA RAM
- Precisión de referencia de ± 1% RET
LABORATORIO DE CONTROL CON MICROPROCESADORES GR4
Diagrama de flujo:
LABORATORIO DE CONTROL CON MICROPROCESADORES GR4
ANEXOS
BAT1
9V
P1
U4
BR2
NOFIRSTON: LDI TEMPO,HIGH(51)//PARA TRANSMITIR A
D1 7805 1
DCD
L1 L2 1N4148 6
DSR
100mH 4mH 1 3 2
VI VO RX RXD
LDS TEMPO,NRESET 9.6KBAUDIOS CON U2X=1 Y UBRR=51
7
RTS
GND
C6 C7 C8 TX
3
TXD
2200uF 100nF 100nF 8
CTS
SUBI TEMPO,-1 STS UBRR0H,TEMPO
4
DTR
2
9
RI
G
F
C
D
1
2
3
4
A
B
E
ERROR
U1
RJMP INICIO_1
BR1 40
41
LDI TEMPO,0B0000_0000
PB0/XCK0/T0/PCINT8 PA0/ADC0/PCINT0
37
36
PB1/T1/CLKO/PCINT9 PA1/ADC1/PCINT1
FIRSTON: U3
RP C5
C2
42
43
44
STS UCSR0A,TEMPO
PB2/AIN0/INT2/PCINT10
PB3/AIN1/OC0A/PCINT11
PA2/ADC2/PCINT2
PA3/ADC3/PCINT3
35
34
33
PB4/SS/OC0B/PCINT12 PA4/ADC4/PCINT4
LDI TEMPO,0 R6 1 A
B
C
6
5
R7 100nF
100nF
1
2
3
LDI TEMPO,0B1001_1000//HABILITO
PB5/MOSI/PCINT13
PB6/MISO/PCINT14 U2
PA5/ADC5/PCINT5
PA6/ADC6/PCINT6
RN1
32
31
30
10k 100 PB7/SCK/PCINT15 PA7/ADC7/PCINT7
STS NRESET,TEMPO
W005G 2
K E
4
RX
9
10
INTERRUPCIONES,RECEPCION, 8BITS
PD0/RXD0/PCINT24 PC0/SCL/PCINT16
19
20
1
2
1B
COM
1C
9
16
15
1
2
3
16
15
14
A
TX PD1/TXD0/PCINT25 PC1/SDA/PCINT17 2B 2C B
RJMP INICIO_1 4N25
RP
11
12
13
STS UCSR0B,TEMPO
PD2/INT0/RXD1/PCINT26
PD3/INT1/TXD1/PCINT27
PC2/TCK/PCINT18
PC3/TMS/PCINT19
21
22
23
3
4
5
3B
4B
3C
4C
14
13
12
4
5
6
13
12
11
C
D
D3 PD4/OC1B/XCK1/PCINT28 PC4/TDO/PCINT20 5B 5C E
R1 C1(1)
D4
D5
14
15
16
LDI TEMPO,0B0000_0110
PD5/OC1A/PCINT29
PD6/ICP/OC2B/PCINT30
PC5/TDI/PCINT21
PC6/TOSC1/PCINT22
24
25
26
6
7
6B
7B
6C
7C
11
10
7
8
10
9
F
G
D6 PD7/OC2A/PCINT31 PC7/TOSC2/PCINT23
//RUTINA DE SALTEMPO DATOS POR RESET BOR 10k
29
27
AREF STS UCSR0C,TEMPO XTAL1
8
7
ULN2003A 75
AVCC XTAL2
DATOSBOR: 4
RESET
ATMEGA164P
SEI//SE HABILITAN LAS INTERRUPCIONES GLOBALES
RCALL WRITEEEPROM C4
C1
100nF LDI TEMPO,0
RJMP INICIO_2 100nF C3
100nF STS NENTRAN,TEMPO//SE INCIA EL CONTADOR DE LAS
PERSONAS EN 0
INICIO_1: STS NSALEN,TEMPO
LDI TEMPO,0B00000110 STS NBUS,TEMPO
OUT DDRA,TEMPO R2 Q1 R3 Q2
D6
R4
2N3906D5 2N3906 D4 RJMP
Q3
LAZOPRINCIPAL
R5
2N3906D3
Q4
2N3906
5.6K 5.6K 5.6K 5.6K
LDI TEMPO,0B1111_1101
OUT PORTA,TEMPO INICIO_2:
LDI TEMPO,0B0000_0000//PUERTO B PARA EL INT2
1
4
LDI TEMPO,0B0000_0110
COMO ENTRADA OUT DDRA,TEMPO
OUT DDRB,TEMPO LDI TEMPO,0B1111_1001
CODIGO
LDI TEMPO,0B1111_1111//PUERTO B CON 1L OUT PORTA,TEMPO
OUT PORTB,TEMPO LDI TEMPO,0B0000_0000
LDI TEMPO,0B0111_1111//PUERTO C COMO SALIDA OUT DDRB,TEMPO
PARA EL DISPLAY .ORG 0X04//INTERRUPCION CRUCECERO ENTRADA
LDI TEMPO,0B1111_1111
.DEF TEMPO=R16
OUT DDRC,TEMPO RJMP ENTRADA
OUT PORTB,TEMPO
.DEF AUX=R17
LDI TEMPO,0B1000_0000//PUERTO C CON 0L DE .ORG 0X06//INTERRUPCION CRUCECERO SALIDA
LDI TEMPO,0B0111_1111
.DEF
SALIDACONTRESET=R24 RJMP SALIDA
OUT DDRC,TEMPO
OUT PORTC,TEMPO .ORG 0X1A//INTERRUPCION TIMMER 1 COMPARADOR A
LDI TEMPO,0B1000_0000
.DSEG
LDI TEMPO,0B1111_0010 RJMP CAMBIO
OUT PORTC,TEMPO
NENTRAN: .BYTE 1//ERSONAS QUE ENTRAN
OUT DDRD,TEMPO .ORG 0X28//DIRECCION DE RX USART
LDI TEMPO,0B1111_0010
NSALEN: .BYTE 1//PERSONAS QUE SALEN
LDI TEMPO,0B0000_1101//PUERTO D CON PULLUP, RJMP COMUNICACION
OUT DDRD,TEMPO
NBUS: .BYTE 1//BUS
PARA EL INT0 SE FIJA EL PULLUP LDI TEMPO,0B0000_1101
NRESET: .BYTE 1
OUT PORTD,TEMPO INICIO:
OUT PORTD,TEMPO
BCD3: .BYTE 1EL PUD EN 0
//GARANTIZAR IN TEMPO,MCUSREL PUD EN 0
//GARANTIZAR
BCD2: .BYTE 1
IN TEMPO,MCUCR SBRC TEMPO,1
IN TEMPO,MCUCR
BCD1: .BYTE 1
ANDI TEMPO,0B1110_1111 RJMP
ANDI DATOSRESET
TEMPO,0B1110_1111
BCD0: .BYTE 1
OUT MCUCR,TEMPO SBRC TEMPO,2
OUT MCUCR,TEMPO
DIG3: .BYTE
//INICIO DEL1STACK RJMP DATOSBOR
//INICIO DEL STACK
DIG2: .BYTE 1
LDI TEMPO,HIGH(RAMEND) RJMP INICIO_1
LDI TEMPO,HIGH(RAMEND)
DIG1: .BYTE 1
OUT SPH,TEMPO OUT SPH,TEMPO
DIG0: .BYTE 1
LDI TEMPO,LOW(RAMEND) //RUTINA DE SALTEMPO DATOS POR RESET MANUAL
LDI TEMPO,LOW(RAMEND)
RECIBIDO: .BYTE 1//DATO QUE RECIBO
OUT SPL,TEMPO DATOSRESET:
OUT SPL,TEMPO
ENVIADO: .BYTE 1//DATO QUE ENVIO LDI TEMPO,1//INICIARIA
//INTERRUPCIONES EN 1
EXTERNAS
.CSEG
LDI TEMPO,0B0010_1010// FLANCO DE BAJADA ADD CONTRESET,TEMPO
LDI TEMPO,0B0010_1010
.ORG 0X00
STS EICRA,TEMPO CPI
STS CONTRESET,1
EICRA,TEMPO
RJMP INICIO
LDI TEMPO,0B0000_0111 BREQ FIRSTON
LDI TEMPO,0B0000_0111//INT0 HABILITADA
.ORG 0X02//INTERRUPCION DEL CRUCE POR CERO
OUT EIMSK,TEMPO RJMP NOFIRSTON
OUT EIMSK,TEMPO
RJMP CRUCECERO
LDI TEMPO,0B0000_0000 LDI TEMPO,0B0000_0000
STS TCCR1A,TEMPO STS TCCR1A,TEMPO
LDI TEMPO,0B0000_1000//NO MODO DE CAPTURA,MODO LDI TEMPO,0B0000_1000
STS TCCR1B,TEMPO STS TCCR1B,TEMPO
LDI TEMPO,HIGH(8900) LDI TEMPO,HIGH(8700)
STS OCR1AH,TEMPO STS OCR1AH,TEMPO
LDI TEMPO,LOW(8900) LDI TEMPO,LOW(8700)
STS OCR1AL,TEMPO STS OCR1AL,TEMPO
LDI TEMPO,0B0000_0010//ACTIVO INTERRUPCION LDI TEMPO,0B0000_0010
LABORATORIO DE CONTROL CON MICROPROCESADORES GR4
FINAL: SEÑAL3:
//SE MANDA LA LETRA P LDI TEMPO,0
LDI TEMPO,80 STS NENTRAN,TEMPO
STS ENVIADO,TEMPO RJMP LAZOPRINCIPAL
RCALL ENVIAR
RCALL BARRIDO SEÑAL4:
//SE MANDA EL NUMERO DE PERSONAS LDI TEMPO,0
LDS TEMPO,NBUS STS NBUS,TEMPO
STS ENVIADO,TEMPO RJMP LAZOPRINCIPAL
RCALL ENVIAR
RCALL BARRIDO CRUCECERO://TIMMER1
//ENVIO DE LA LETRA W PUSH TEMPO
LDI TEMPO,87 IN TEMPO,SREG
STS ENVIADO,TEMPO PUSH TEMPO
RCALL ENVIAR CLR TEMPO
LABORATORIO DE CONTROL CON MICROPROCESADORES GR4
STS TCNT1H,TEMPO
STS TCNT1L,TEMPO COMUNICACION:
LDI TEMPO,0B0000_1010 PUSH R16
STS TCCR1B,TEMPO IN R16,SREG
LDI TEMPO,0B1111_1100 PUSH R16
OUT PORTA,TEMPO LDS TEMPO,UDR0//VER SI ES 0
POP TEMPO STS RECIBIDO,TEMPO
OUT SREG,TEMPO POP R16
POP TEMPO OUT SREG,R16
RETI POP R16
RETI
CAMBIO:
PUSH TEMPO WRITEEEPROM:
IN TEMPO,SREG SBIC EECR,EEPE
PUSH TEMPO RJMP WRITEEEPROM
LDI TEMPO,0B1111_0010 LDI TEMPO,0
OUT PORTA,TEMPO LDI AUX,0
POP TEMPO OUT EEARH,TEMPO
OUT SREG,TEMPO OUT EEARL,AUX
POP TEMPO LDS TEMPO,NENTRAN
RETI OUT EEDR,TEMPO//SE CARGA EL VALOR DESEADO EN
LA EEPROM
ENTRADA: SBI EECR,EEMPE
PUSH TEMPO SBI EECR,EEPE
IN TEMPO,SREG WRITEEEPROM_2:
PUSH TEMPO SBIC EECR,EEPE
LDS TEMPO,NENTRAN RJMP WRITEEEPROM_2
SUBI TEMPO,-1 LDI TEMPO,0
STS NENTRAN,TEMPO LDI AUX,1
POP TEMPO OUT EEARH,TEMPO
OUT SREG,TEMPO OUT EEARL,AUX
POP TEMPO LDS TEMPO,NSALEN
RETI OUT EEDR,TEMPO
SALIDA: SBI EECR,EEMPE
PUSH TEMPO SBI EECR,EEPE
IN TEMPO,SREG WRITEEEPROM_3:
PUSH TEMPO SBIC EECR,EEPE
LDS TEMPO,NSALEN RJMP WRITEEEPROM_3
SUBI TEMPO,-1 LDI TEMPO,0
STS NSALEN,TEMPO LDI AUX,2
POP TEMPO OUT EEARH,TEMPO
OUT SREG,TEMPO OUT EEARL,AUX
POP TEMPO LDS TEMPO,NBUS
RETI OUT EEDR,TEMPO
SBI EECR,EEMPE
//SUBRUTINA BINARIO_BCD SBI EECR,EEPE
//SUBRUTINA BCD_7SEG WRITEEEPROM_4:
//SUBRUTINA BARRIDO SBIC EECR,EEPE
ENVIAR: RJMP WRITEEEPROM_4
PUSH R16 LDI TEMPO,0
IN R16,SREG LDI AUX,3
PUSH R16 OUT EEARH,TEMPO
ESPERA1: OUT EEARL,AUX
LDS TEMPO,UCSR0A LDS TEMPO,NRESET
SBRS TEMPO,5 OUT EEDR,TEMPO
RJMP ESPERA1 SBI EECR,EEMPE
LDS TEMPO,ENVIADO SBI EECR,EEPE
STS UDR0,TEMPO RET
POP R16
OUT SREG,R16 READEEPROM:
POP R16 SBIC EECR,EEPE
LABORATORIO DE CONTROL CON MICROPROCESADORES GR4
LDI TEMPO,0
LDI AUX,0
OUT EEARH,TEMPO LDI TEMPO,0
OUT EEARL,AUX LDI AUX,2
SBI EECR,EERE//SE SUBE LA BANDERA DE LECTURA OUT EEARH,TEMPO
IN TEMPO,EEDR//SE LEE EL DATO OUT EEARL,AUX
STS NENTRAN,TEMPO//SE GUARDA EN LA RAM SBI EECR,EERE
READEEPROM1: IN TEMPO,EEDR
SBIC EECR,EEPE STS NBUS,TEMPO
RJMP READEEPROM1 READEEPROM3:
LDI TEMPO,0 SBIC EECR,EEPE
LDI AUX,1 RJMP READEEPROM3
OUT EEARH,TEMPO LDI TEMPO,0
OUT EEARL,AUX LDI AUX,3
SBI EECR,EERE OUT EEARH,TEMPO
IN TEMPO,EEDR OUT EEARL,AUX
STS NSALEN,TEMPO SBI EECR,EERE
READEEPROM2: IN TEMPO,EEDR
SBIC EECR,EEPE STS NRESET,TEMPO
RJMP READEEPROM2 RET
LABORATORIO DE CONTROL CON MICROPROCESADORES GR4
SIMULACION:
P1
RV1(1)
1
DCD
6
DSR
2
RX RXD
7
RTS
3
TX TXD
8 RV1(3)
F
CTS
A
B
1
2
3
4
C
D
4 V=3.65
DTR
9
RI U1 RV1
PERSONAS DE ENTRADA PERSONAS DE SALIDA 40 37 1k C4
27%
PB0/XCK0/T0/PCINT8 PA0/ADC0/PCINT0
41 36 100nF
ERROR PB1/T1/CLKO/PCINT9 PA1/ADC1/PCINT1 FA
42 35
PB2/AIN0/INT2/PCINT10 PA2/ADC2/PCINT2 FR
COMPIM 43 34
C6 PB3/AIN1/OC0A/PCINT11 PA3/ADC3/PCINT3
44 33
C5 PB4/SS/OC0B/PCINT12 PA4/ADC4/PCINT4 4
1 32
PB5/MOSI/PCINT13 PA5/ADC5/PCINT5 3
2 31
PB6/MISO/PCINT14 PA6/ADC6/PCINT6 2
100nF 3 30
PB7/SCK/PCINT15 PA7/ADC7/PCINT7 1
100nF
9 19
FR
RX PD0/RXD0/PCINT24 PC0/SCL/PCINT16 A
FA
10 20
TX PD1/TXD0/PCINT25 PC1/SDA/PCINT17 B
11 21
PD2/INT0/RXD1/PCINT26 PC2/TCK/PCINT18 C
C2(1) 12 22
PD3/INT1/TXD1/PCINT27 PC3/TMS/PCINT19 D
13 23
PD4/OC1B/XCK1/PCINT28 PC4/TDO/PCINT20 E
(A) 14
PD5/OC1A/PCINT29 PC5/TDI/PCINT21
24
F R10
A
15
PD6/ICP/OC2B/PCINT30 PC6/TOSC1/PCINT22
25
G 330 R11
R1 16
PD7/OC2A/PCINT31 PC7/TOSC2/PCINT23
26 330
B 10k
29 8
AREF XTAL1
27 7
C AVCC XTAL2
4
RESET
D D10
ATMEGA164P LED-RED D9
LED-GREEN
C1
100nF C2 C3
100nF 100nF