Академический Документы
Профессиональный Документы
Культура Документы
nolist
.include "C:\VMLAB\include\m8def.inc"
.list
.def instruccion=R16
.def dato=R17
.def PWM=r21
.dseg
.org $60
.cseg
.org 0
rjmp Inicio
Inicio:
ldi R16,high(RAMEND)
out SPH,R16
ldi R16,low(RAMEND)
out SPL,R16
ldi R16,$7F
out DDRD,R16
ldi R16,0b00110000
out DDRC,R16
ldi R16,$02
out ddrb,r16
ldi r26,0b00010000
ldi r20,$00
ldi r16,$01
out PORTD,r16
Pulsadorinicial:
in r17,pinc
andi r17,$01
cpi r17,0
breq Pulsadorinicial
Esperainicial:
in r17,pinc
andi r17,$01
cpi r17,0
brne Esperainicial
ldi r16,$02
out PORTD,r16
Cambiogiro:
out PORTC,r26
Pulsador:
in r19,pinc
andi r19,$07
mov r22,r19
cpi r19,0
breq Pulsador
Espera:
in r19,pinc
andi r19,$07
cpi r19,0
brne Espera
Espera2:
in r19,pinc
andi r19,$07
cpi r19,0
brne Espera2
; =============================
;
;
dec R29
brne WGLOOP0
; ----------------------------; delaying 1 cycle:
nop
; =============================
cpi r22,$01
breq velX
cpi r22,$02
breq cambio
cpi r22,$04
breq Continua
nop
cambio:
cpi r26,0b00010000
breq cambiarlo
ldi r27,0b00010000
sub r26,r27
andi r26,0b00110000
out portc,r26
rjmp Pulsador
cambiarlo:
ldi r26,0b00100000
andi r26,0b00110000
out portc,r26
rjmp Pulsador
Continua:
cpi r20,9
breq Pulsador
inc r20
cpi r20,0
breq vel0
cpi r20,1
breq vel1
cpi r20,2
breq vel2
cpi r20,3
breq vel3
cpi r20,4
breq vel4
cpi r20,5
breq vel5
cpi r20,6
breq vel4
cpi r20,7
breq vel3
cpi r20,8
breq vel2
ldi r20,1
rjmp vel1
velX:
ldi r23,high(0)
ldi r24,low(0)
ldi r25,0b00000001
out PORTD,r25
rjmp ConfigPWM2
vel0:
ldi r23,high(0)
ldi r24,low(0)
ldi r25,0b00000010
out PORTD,r25
rjmp ConfigPWM
vel1:
ldi r23,high(2000)
ldi r24,low(2000)
ldi r25,0b00000100
out PORTD,r25
rjmp ConfigPWM
vel2:
ldi r23,high(3000)
ldi r24,low(3000)
ldi r25,0b00001100
out PORTD,r25
rjmp ConfigPWM
vel3:
ldi r23,high(4150)
ldi r24,low(4150)
ldi r25,0b00011100
out PORTD,r25
rjmp ConfigPWM
vel4:
ldi r23,high(6000)
ldi r24,low(6000)
ldi r25,0b00111100
out PORTD,r25
rjmp ConfigPWM
vel5:
ldi r23,high(8000)
ldi r24,low(8000)
ldi r25,0b01111100
out PORTD,r25
rjmp ConfigPWM
ConfigPWM:
in r28,pinc
andi r28,0b00001000
cpi r28,0
breq ConfigPWM
out OCR1AH,r23
out OCR1AL,r24
ldi r16,high(8333)
out ICR1H,r16
ldi r16,low(8333)
out ICR1L,r16
ldi r16,(1<<COM1A1|0<<COM1A0|1<<WGM11|0<<WGM10)
out TCCR1A,r16
ldi r16,(1<<WGM13|1<<WGM12|0<<CS12|0<<CS11|1<<CS10)
out TCCR1B,r16
rjmp Pulsador
ConfigPWM2:
in r28,pinc
andi r28,0b00001000
cpi r28,0
breq ConfigPWM2
out OCR1AH,r23
out OCR1AL,r24
ldi r16,high(8333)
out ICR1H,r16
ldi r16,low(8333)
out ICR1L,r16
ldi r16,(1<<COM1A1|0<<COM1A0|1<<WGM11|0<<WGM10)
out TCCR1A,r16
ldi r16,(1<<WGM13|1<<WGM12|0<<CS12|0<<CS11|1<<CS10)
out TCCR1B,r16
rjmp inicio