Anda di halaman 1dari 6

ESCUELA POLITECNICA NACIO NAL SISTEMAS MICROPROCESADOS NOMBRES: Wil mer Villegas FECHA: 08 05 2012 1.

1. Reali zar un programa que genere una seal PWM (modo a usar FAST PWM). Con un cristal de 1MHz en donde variamos el , para lo cual usamos INT0 con un y INT1 con un . Cuando no presiono ninguna interrupcin debo tener un del ta normal igual a 0.5, usamos cualquier f recuencia.

PROGRAMA EN AVR: .include" m164pdef.inc" .def tempo=r17 .def aux=r18 .def aux1=r19 .def aux2=r20 ; coloco los vectores de interrupcion .org 0x00 j mp .org 0x02 j mp .org 0x04 j mp .org 0x06 j mp inicio delta1 delta2 delta3

inicio: ; declaro como salida el correspondiente al OC0A ldi tempo,0b00001000 out ddrb,tempo ; declaro como entradas interrupciones ldi tempo,0b00000000 out ddrd,tempo ; habilitacin de pull - up ldi tempo,0b00001100 out portd,tempo ldi tempo,0b00000100 out portb,tempo ; garanti zo pull - up in tempo,mcucr andi tempo,0b11101111 out mcucr,tempo ;habilitacin del SP ldi r16,hi gh(ramend) out sph,r16 ldi r16,low(ramend) out spl,r16 ; habilitacion de interrupciones ldi tempo,0b00000111 out ei msk,tempo ;desencademaniento de interrupciones ldi tempo,0b00101010 sts eicra,tempo ;comparacin y modo ldi tempo,0b10000011 out tccr0a,tempo ;preescaler 8 y modo ldi tempo,0b00000010 out tccr0b,tempo ; habilitacion global interrupciones sei

lazo: pin rj mp lazo delta1: las push tempo in tempo,sreg push tempo ; cambio mi delta = 0.3 ldi aux,77 out ocr0a,aux rj mp salir delta2: push tempo in tempo,sreg push tempo ; cambio mi delta = 0.7 ldi aux1,179 out ocr0a,aux1 rj mp salir delta3: mis push tempo in tempo,sreg push tempo ; cambio mi delta = 0.5 ldi aux2,128 out ocr0a,aux2 salir: pop tempo out sreg,tempo pop tempo reti

de

SIMULACION EN PROTEUS:

DIAGRAMA DE FUJO:

2. Realizar un programa el cual se ingrese una seal de entrada ext erna y medir el tiempo en delta (%).

PROGRAMA EN AVR: .include" m164pdef.inc" .def .def .def .def .def .def .def tiempoh=r17 tiempol=r18 TH=r19 TL=r20 tempo=r21 aux=r23 taux=r24 out ldi out ldi sts ldi sts inicio ldi timer captura sts ldi sts ldi desborde sts inicio: ldi tempo,0b01000000 out ddrd,tempo ldi r16,hi gh(ramend) ldi out out ldi TIMSK1,tempo tempo,0b0000000 TCCR0A,tempo TCCR0B,tempo tempo,0b00000001 TCCR1A,tempo tempo,0b01000000 TCCR1B,tempo tempo,0b00100000 tempo,0b00000000 sph,r16 r16,low(ramend) spl,r16 tempo,0b00001000 PCICR,tempo tempo,0b01000000 PCMSK3,tempo

.org 0x00 j mp .org 0x0E j mp .org 0x18 j mp .org 0x24 j mp

sts

TIMSK0,tempo

salir: pop tempo SREG,tempo tempo

sei clr tempo clr aux lazo: rj mp lazo timer: push tempo in tempo,SREG push tempo sbrc aux,0 rj mp detener0 clr r22 out TCCR0B,r22 out sts sts sts ldi out ldi sts ldi rj mp detener0: clr out in mov clr r22 TCCR0B,r22 tiempol,TCNT0 tiempoh,taux aux TCNT0,r22 TCCR1B,r22 TCNT1H,r22 TCNT1L,r22 r22,0b00000001 TCCR0B,r22 r22,0b01000001 TCCR1B,r22 aux,1 salir

out pop reti desborde:

push tempo in tempo,SREG push tempo inc pop out pop reti captura: push tempo in tempo,SREG push tempo lds lds clr sts sts sts pop out pop reti TH,ICR1H TL,ICR1L r22 TCCR1B,r22 TCNT1H,r22 TCNT1L,r22 tempo SREG,tempo tempo taux tempo SREG,tempo tempo