desktop

Problema con programa sencillo ASM en AVR Studio

Estoy haciendo un proyecto utilizando un ATmega 328P, y este código solo es un fragmento, tengo problemas al poner en alto otro pin.

Código:
.nolist
.include "m328Pdef.inc"
.list
.org 0x0000


clr r16
out ddrc, r16;Puerto B como entradas
ser r16
out ddrd, r16;Puerto D como salidas 
clr r16
out ddrb, r16;Puerto B como entradas


rjmp Sensor1_color

 
;>>>Etapa Estuchadora<<<


    Sensor1_color:


    ldi r16, 0; Comfiguramos el pin analogico de entrada
    sts ADMUX, r16
    ldi r16, 0b11101101; Activamos el conversor
    sts ADCSRA, r16

    lds r16, ADCL;Guardamos el dato de la lectura
    lds r17, ADCH
    nop
    nop
    nop
    nop
    nop
    cpi r17,0b00000011
    breq Estuchador
    ldi r16,0b00000001; Se enciende banda
    out PortD, r16
    rjmp Sensor1_color


Estuchador:
        
    ldi r16,0b0001000; Se enciende piston empaquetador   
    out PortD, r16
          ldi  R17, $63
WGLOOP4:  ldi  R18, $64
WGLOOP5:  dec  R18
          brne WGLOOP5
          dec  R17
          brne WGLOOP4
          nop
    ldi r16,0b00000000; Se apaga piston empaquetador   
    out PortD, r16

          ldi  R17, $63
WGLOOP6:  ldi  R18, $64
WGLOOP7:  dec  R18
          brne WGLOOP7
          dec  R17
          brne WGLOOP6
          nop


    ldi r16, 0b00001000; Se enciende piston despachador de empaque   
    out PortD, r16


          ldi  R17, $63
WGLOOP8:  ldi  R18, $64
WGLOOP9:  dec  R18
          brne WGLOOP8
          dec  R17
          brne WGLOOP9
          nop


    ldi r16,0b00000000; Se apaga piston despachador   
    out PortD, r16
            

          ldi  R17, $63
WGLOOP10:  ldi  R18, $64
WGLOOP11:  dec  R18
          brne WGLOOP10
          dec  R17
          brne WGLOOP11
          nop



rjmp Sensor1_color


el problema es que yo no le encuentro el error por ningún lado, y por alguna extraña razón, al simular en Isis proteus solo este fragmento, si funciona:

Código:
Sensor1_color:


    ldi r16, 0; Comfiguramos el pin analogico de entrada
    sts ADMUX, r16
    ldi r16, 0b11101101; Activamos el conversor
    sts ADCSRA, r16

    lds r16, ADCL;Guardamos el dato de la lectura
    lds r17, ADCH
    nop
    nop
    nop
    nop
    nop
    cpi r17,0b00000011
    breq Estuchador
    ldi r16,0b00000001; Se enciende banda
    out PortD, r16
    rjmp Sensor1_color


Estuchador:
        
    ldi r16,0b0001000; Se enciende piston empaquetador   
    out PortD, r16
          ldi  R17, $63
WGLOOP4:  ldi  R18, $64
WGLOOP5:  dec  R18
          brne WGLOOP5
          dec  R17
          brne WGLOOP4
          nop
    ldi r16,0b00000000; Se apaga piston empaquetador   
    out PortD, r16

          ldi  R17, $63
WGLOOP6:  ldi  R18, $64
WGLOOP7:  dec  R18
          brne WGLOOP7
          dec  R17
          brne WGLOOP6
          nop

          rjmp Sensor1_color

y cuando le agrego el encender otro pin , es cuando la simulación ya no sirve.

Espero que hayan entendido cual es mi problema, les adjunto el Asm y la simulación de proteus.

Saludos
 

Adjuntos

  • Sensor Color.zip
    18 KB · Visitas: 7
Última edición:
Atrás
Arriba