Título: Programa de leds en ensamblador (MPLAB) con PIC16F84A Publicado por: Magiiq en 21 Mayo 2013, 18:47 pm Hola Comunidad!
Me podrian ayudar con este programita, la verdad es que no se mucho de este lenguaje,lo que se tiene que hacer es lo siguiente: 1.- Ultilice RAX como pipn de control y como salida PORTB (RB0 - RB7) de modo que: a) Si el bit 0 del PORTA = 1, Se encienden todos los bits del nibble alto (de RB4 a RB7) b) Si el bit 0 del PORTA = 0, se encienden todos los bits del nibble bajo (de RB0 a RB3) por favor espero puedan ayudarme, de antemano GRACIAS! C: Título: Re: Programa de leds en ensamblador (MPLAB) con PIC16F84A Publicado por: mr.blood en 21 Mayo 2013, 18:57 pm http://www.portalhacker.net/index.php/topic,155864.0.html
Ahí te dejo la base. Modifica el código de acuerdo a tus necesidades! Sa1uDoS Título: Re: Programa de leds en ensamblador (MPLAB) con PIC16F84A Publicado por: Magiiq en 21 Mayo 2013, 19:15 pm Gracias Mr.Blood !
la verdad casi no le entiendo, y no supe que modificar xD mira el maestro nos dio este! __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC LIST P=16F84A INCLUDE <P16F84A.INC> Numero EQU d'13' ORG 0 ; El programa comienza en la direccion 0. Inicio bsf STATUS,RP0 ; Acceso al banco 1. clrf TRISB ; Las lineas del puerto B se configuran como salida. movlw b'00011111' ; Las 5 lineas del puerto A se configuran como entrada. movwf TRISA bcf STATUS,RP0 ; Acceso al banco 0. Principal movlw Numero ; Carga el numero a comparar. subwf PORTA,W ; (PORTA) - Numero --> (W) movlw b'11110000' ; Supone (PORTA) es menor. btfss STATUS,C ; ¿C=1?, ¿(W) positivo?, ¿(PORTA) >= Numero?. goto ActivaSalida ; No. C=0, por tanto (PORTA) < Numero. movlw b'11111111' ; Supone que son iguales. btfsc STATUS,Z ; ¿Z=0?, ¿son distintos?. goto ActivaSalida ; No. Son iguales ya que z = 1, movlw b'01010101' ; Si, por tanto (PORTA) > Numero. ActivaSalida movwf PORTB ; Resultado se visualiza por el puerto de salida. goto Principal ; Crea un bucle cerrado e infinito. END & lo que yo hice fue modificar solo los ActivaSalida! __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC LIST P=16F84A INCLUDE <P16F84A.INC> Numero EQU d'13' ORG 0 ; El programa comienza en la direccion 0. Inicio bsf STATUS,RP0 ; Acceso al banco 1. clrf TRISB ; Las lineas del puerto B se configuran como salida. movlw b'00011111' ; Las 5 lineas del puerto A se configuran como entrada. movwf TRISA bcf STATUS,RP0 ; Acceso al banco 0. Principal movlw Numero ; Carga el numero a comparar. subwf PORTA,W ; (PORTA) - Numero --> (W) movlw b'11110000' ; Supone (PORTA) es menor. btfss STATUS,C ; ¿C=1?, ¿(W) positivo?, ¿(PORTA) >= Numero?. goto ActivaSalida ; No. C=0, por tanto (PORTA) < Numero. movlw b'11110000' ; Supone que son iguales. btfsc STATUS,Z ; ¿Z=0?, ¿son distintos?. goto ActivaSalida ; No. Son iguales ya que z = 1, movlw b'00001111' ; Si, por tanto (PORTA) > Numero. ActivaSalida movwf PORTB ; Resultado se visualiza por el puerto de salida. goto Principal ; Crea un bucle cerrado e infinito. END esta bien ??? jaja es que de plano estoy en ceros en esto ! :SS |