TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: kunobus en 27 de Octubre de 2010, 13:43:32

Título: ayuda con semáforo en asm
Publicado por: kunobus en 27 de Octubre de 2010, 13:43:32
buenos dias, escribo para las personas q me puedan ayudar con un semaforo de cuatro carriles con en el pic16f84a codigo asm, apenas estoy empesando en esto y se me a dificultado un poco...espero que me puedan colaborar..anexo un comienso pero no se si esta bueno...de ante mano gracias...

LIST    p=16F84                 
#include "P16F84.INC"               

               CBLOCK 0x10           
                 l1
            l2
               
                ENDC

                org     0            ;
                 goto    setports        ;

               org     4               ;
            retfie                 ;

setports         clrw                    ;
                 movwf   PORTA           ;
                 movwf   PORTB           ;
                 bsf     STATUS,RP0      ;
                 clrw                    ;
                 movwf   TRISB
            movwf   TRISA           ;
                 bcf     STATUS,RP0      ;

loop             clrwdt           
                 bsf      PORTA, 1
            nop
            bsf      PORTB, 6
            nop
            bsf      PORTB, 0
            nop
            bsf      PORTB, 3
            call   retverde
            bcf      PORTB, 6
            nop
            bsf      PORTB, 5
            call   retpeaton
            bcf      PORTA, 1
            nop
            bcf      PORTB, 5
            nop
            bsf      PORTA, 0
            nop
            bsf      PORTB, 4
            call   retpaso
            bcf      PORTB, 3
            nop
            bsf      PORTB, 7
            nop
            bcf      PORTB, 0
            nop
            bsf      PORTB, 2
            call   retrojo
            bcf      PORTB, 2
            nop
            bsf      PORTB, 1
            call   retpeaton2
            bcf      PORTB, 1
            nop
            bcf      PORTB, 7
            nop
            bsf      PORTB, 3
            nop
            bsf      PORTB, 0
            call   retpaso
            nop
            bcf      PORTB, 4
     
            goto    loop             ;

;
;
;--------------------------------------------------------------------
miniret         movlw   1
                 movwf   l1

b1               call    miniret2
                decfsz  l1
               goto    b1

                 return


miniret2      clrf          l2
b2               decfsz        l2
                 goto          b2
                return
;--------------------------------------------------------------------
retpeaton2      bcf      PORTB, 7
            call   miniret
            bsf      PORTB, 7
            call   miniret           
            call   miniret
            call   miniret
            bcf      PORTB, 7
            call   miniret
            bsf      PORTB, 7
            call   miniret
            call   miniret
            call   miniret
            bcf      PORTB, 7
            call   miniret
            bsf      PORTB, 7
            call   miniret
            call   miniret
            call   miniret
            bcf      PORTB, 7
Título: Re: ayuda con semáforo en asm
Publicado por: todopic en 27 de Octubre de 2010, 14:38:56
Hola, bienvenido al foro!
he leído rapidamente, y no le encuentro sentido a los NOP
         nop
            bsf      PORTB, 6
            nop
            bsf      PORTB, 0
            nop
            bsf      PORTB, 3
, si se los quitas, funcionaria igual, y ahorrarrias codigo...

Para que el lenguaje sea más "agaradable" tendrias que definir las luces, para obtener un codigo más legible y amigable...

ejemplo
#define ROJA1  PORTB,0
#DEFINE AMARILLA1 PORTB,1
#DEFINE VERDE11 PORTB,2
#DEFINE ROJA2 PORTB,3
ETC

con lo cual, tu codigo quedaria
bsf ROJA1
BSF VERDE2   :mrgreen:

te falta el END final...

ademas, el cblock seria para el f84    CBLOCK   H'0C'

Saludos!

Norberto





Título: Re: ayuda con semáforo en asm
Publicado por: kunobus en 28 de Octubre de 2010, 09:10:07
ok, gracias...seguire trabajando pero he tenido muchos problemas ya q soy muy primiparo para esto....