Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

15/10/2008 #1

Avatar de Meta

Adaptar un 16F84A a otro 16F628A
Hola:

Tengo en mente pasar el código de abajo de un PIC a otro PIC diferente para aprender bien las adaptaciones. Me gustaría aquellas personas que saben adaptar muy bien el código mostrado abajo en ensamblador (ASM) a otro PIC. Al menos los que están en azúl me interesa verlo aquí adaptado.

Por ejemplo:
16F84A a 16F628A
16F84A a 16F88
16F84A a 16F876A
16F84A a 16F886
16F84A a 16F877A
16F84A a 16F887
16F84A a 18F1220
16F84A a 18F2550
16F84A a 18F4550
El código a adaptar:
Código:
;************************************** Ensam_03.asm ************************************
;
; Por el Puerto B se obtiene el dato de las cinco líneas del Puerto A al que está conectado
; un array de interruptores. Por ejemplo, si por el Puerto A se introduce "---11001", por
; el Puerto B aparecerá "xxx11001" (el valor de las tres líneas superiores no importa).
;
; ZONA DE DATOS **********************************************************************

	__CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC	; Configuración para el
															; grabador.
	LIST	P=16F84A			; Procesador.
	INCLUDE <P16F84A.INC>		; Definición de los operandos utilizados.

; ZONA DE CÓDIGOS ********************************************************************

	ORG 	0					; El programa comienza en la dirección 0 de memoria de
Inicio							; programa.
	bsf		STATUS,RP0			; Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
	clrf	TRISB				; Las líneas del Puerto B se configuran como salidas.
	movlw	b'11111111'
	movwf	TRISA				; Las líneas del Puerto A se configuran como entradas.
	bcf		STATUS,RP0			; Pone a 0 el bit 5 de STATUS. Acceso al Banco 0.
Principal
	movf 	PORTA,W				; Lee el Puerto A.
	movwf	PORTB				; El contenido de W se visualiza por el Puerto B.
	goto 	Principal			; Crea un bucle cerrado.

	END							; Fin del programa.
Espero que no sea complicado, sobre todo adaptarlo del 16F al 18F en ASM.

He intentado encontrar algo por aquí en esta web muy curiosa http://www.pic18f.com/

Un cordial saludo.
15/10/2008 #2


Hola Meta

¿Te has preguntado que es lo que estás pidiendo?, ¿Has revisado los datasheet de ambos pic?

Para ambas respuestas, parece que no.

Es totalmente factible mudar ese programa a cualquier familia de PIC. Solo deberás observar como cambiar de banco en el pic 16F o 18F. Verás que se utiliza el RP1 del registro STATUS. También tendras que desactivar las entradas analógicas y activarlas en digital.

Por lo demás, no hace falta tocar nada.
15/10/2008 #3

Avatar de Meta

Hola Leon Elec:

Ver la diferencia de configuración en los __CONFIG, como configurar las mismas patas en digital como debe tener el mismo funcionamiento del 16F84A. No entiendo mucho las hoja de datos en Ïnglés, ahí e problema.

En el 16F88, página 13/228 quizás sea lo que me dices. Parece que se llama ANSEL, es decir, que configuro el puerto a digital, 121/228. No veo ejemplo en ASM (o estoy ciego) sobre configurar este PIC. Ahora no puedo hacer prueba con el MPLAB porque estoy usando el openSUSE 11.0, después investigaré a ver como es la adaptación. como nunca lo he hecho, me parece complicado aunque veo que lo ves fácil.

16F84A
16F628A
16F88
18F1220

Un especial:
12F519

Un cordial saludo.
15/10/2008 #4


Re:
Asi tengo la mayoria de los inicios de mis programas, espero te sirva


Código:
; Thermomether and clock using PIC16F628 , DS1307 and DS1820


	list      p=16f628A            ; list directive to define processor
	#include <p16f628A.inc>        ; processor specific variable definitions
	ERRORLEVEL	0,	-302			;suppress bank selection messages

	__CONFIG _CP_OFF & _WDT_OFF & _BOREN_OFF & _PWRTE_OFF & _MCLRE_OFF & _LVP_OFF & _INTOSC_OSC_NOCLKOUT

	cblock 	0x20 	;start of general purpose registers
	  TMP			; temporal register
	  TMP2			; temporal register
	endc


   
;===========================  MAIN  =========================
;==========================  PROGRAM  =======================

 	org     0x000             ; processor reset vector
Main:

	movwf	CMCON			;turn comparators off (make it like a 16F84)
  
;------ Ports configuration

   	bsf 	STATUS, RP0		;select bank 1
   	movlw 	b'00000001'		;set PortB <1:7> all outputs, PB0 as input
   	movwf 	TRISB
	movlw 	b'11100000'		
	movwf	TRISA			;set PortA <0:3> outputs, <5:7> inputs
	bcf		STATUS,RP0		; select bank 0

	clrf	PORTA
	
        etc
       etc
       etc

      END
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.