Deber Nombre: Santiago Calle
Realizar un barrido de display. .include "m164pdef.inc" "m164pdef.inc"
;.......................................defino variables .def temp=r16 .def temp=r16 .def numero=r17 .def numero=r17 .def numero1=r18 .def numero1=r18 .def centena=r19 .def centena=r19 .def decena=r20 .def decena=r20 .def unidad=r21 .def unidad=r21 .def salida=r22 .def salida=r22 .def valor=r23 .def valor=r23 .def aux=r24 .def aux=r24 ;..................................declaro puertos de entrada y salida ser temp ser temp out ddra,temp out ddra,temp out ddrc,temp out ddrc,temp clr temp clr temp out ddrb,temp out ddrb,temp
;port a como salida ;port c como salida ;portb como entrada
;.....................inicio el programa main: call datos call datos call conversion call conversion call mostrar call mostrar rjmp main rjmp main ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,leo al portico A datos: clr temp clr temp clr unidad clr unidad clr decena clr decena clr centena clr centena ;out portc,temp in numero,pinb in numero,pinb ret ;;;;;;;;;;;,proceso para convertir de binario a bcd
conversion: cpi numero,100 cpi numero,100 brsh centenas brsh centenas cpi numero,10 cpi numero,10 brsh decenas brsh decenas mov unidad,numero unidad,numero
ret centenas: inc centena subi numero,100 rjmp conversion decenas: inc decena subi numero,10 rjmp conversion
mostrar: mov valor,centena ldi temp,1 call barrido mov valor,decena ldi temp,2 call barrido mov valor,unidad ldi temp,4 call barrido ret barrido: ldi zl,low(tabla1<<1) ldi zh,high(tabla1<<1) add zl,valor clr aux adc zh,aux lpm salida,z out portc,temp out porta,salida call delay ret
delay: ldi r18,255 loop: dec r18 brne loop ret ;;;;;;;;;;;;;;;;;;;,tabla ánodo común tabla1: .db 0b01000000,0b01111001 .db 0b00100100,0b00110000 .db 0b00011001,0b00010010 .db 0b00000010,0b01111000
;0,1 ;2,3 ;4,5 ;6,7
.db 0b00000000,0b00010000 .db 0b00001000,0b00000011 .db 0b01000110,0b00100001 .db 0b00000110,0b00001110
;8,9 ;A,B ;C,D ;E,F
Diagrama circuito
1 0 0
U1
0
40
1
42
0
44
0 1
41 43 1 2
PB0/XCK0/T0/PCINT8
PA0/ADC0/PCINT0
PB1/T1/CLKO/PCINT9
PA1/ADC1/PCINT1
PA2/ADC2/PCINT2
PB3/AIN1/OC0A/PCINT11
PA3/ADC3/PCINT3
PB4/SS/OC0B/PCINT12
PA4/ADC4/PCINT4
PB5/MOSI/PCINT13
PA5/ADC5/PCINT5
PB6/MISO/PCINT14
PA6/ADC6/PCINT6
PB7/SCK/PCINT15
PA7/ADC7/PCINT7
PD0/RXD0/PCINT24
PC0/SCL/PCINT16
PD1/TXD0/PCINT25
PC1/SDA/PCINT17
PC2/TCK/PCINT18
3 9 10 11 12 13 14 15 16 29 27 4
PB2/AIN0/INT2/PCINT10
PD2/INT0/RXD1/PCINT26
PD3/INT1/TXD1/PCINT27
PC3/TMS/PCINT19
PD4/OC1B/XCK1/PCINT28
PC4/TDO/PCINT20
PD5/OC1A/PCINT29
PC5/TDI/PCINT21
PD6/ICP/OC2B/PCINT30
PC6/TOSC1/PCINT22
PD7/OC2A/PCINT31
PC7/TOSC2/PCINT23
AREF
XTAL1
AVCC
XTAL2
RESET ATMEGA164P
37 36
1 2 3 P P P
35 34 33 32 31 30
RN1
19
1
16
20
2
15
21
3
14
22
4
13
23
5
12
24
6
11
25
7
10
26
8
8 7
9 330
P1 P2 P3