ImagenImagenImagenImagen
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

Lectura analógica en un 12F675

Foro para postear los temas de ensamblador

Moderador: Junta Directiva

Responder
Avatar de Usuario
Mif
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1094
Registrado: Jue Mar 23, 2006 6:24 pm
Nombre: Ángel
Ubicación: Madrid
Contactar:

Lectura analógica en un 12F675

Mensaje por Mif » Lun May 14, 2007 3:12 am

¡Muy buenas compañeros!
Estoy haciendo un pequeño proyecto con un 12F675, básicamente tengo que leer de una de sus entradas analógicas, y activar dos patas en consecuencia...
El problema es que el proyecto tiene que ser en Ensamblador... y nunca he leido datos analógicos en este lenguaje...
¿Alguien lo ha hecho? Necesito saber como configurar el micro, y qué registro leer...
Recurro a vosotros como primera opcion, ahora me pondre a investigar aun asi.

Muuuuuuuchas gracias.

Mif


www.TupperBot.es

Mi sitio en YouTube

Avatar de Usuario
Mif
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1094
Registrado: Jue Mar 23, 2006 6:24 pm
Nombre: Ángel
Ubicación: Madrid
Contactar:

Re: Lectura analógica en un 12F675

Mensaje por Mif » Lun May 14, 2007 4:28 am

Ya me contesto yo:

Código: Seleccionar todo

   ;**********************
	;*   Configuración    *
	;**********************
	Configuracion
		clrf PORTA				; Garantizamos que el puerto esta a 0
		bsf STATUS, 5			; Apuntando a la segunda página de registros
		CLRF OPTION_REG			; Habilita Pull-Ups, No WDT Prescaler (TIMEOUT=18 mS)
		CLRF WPU 
		CLRF INTCON				; Sin interrupciones
		
		; Configuracion de los pines:
		; 	· BIT 0 = PIN 7 = GPIO-0	Entrada Analógica 1
		;	· BIT 1 = PIN 6 = GPIO-1	Salida Digital 1
		;	· BIT 2 = PIN 5 = GPIO-2	Entrada Analógica 2
		;	· BIT 3 = PIN 4 = GPIO-3	No existe 
		;	· BIT 4 = PIN 3 = GPIO-4	Entrada Analógica 3
		;	· BIT 5 = PIN 2 = GPIO-5	Salida Digital 2
		;	*** PIN 1 = VCC 
		;   *** PIN 8 = GND

		MOVLW B'00011101'		; Configuracion de salidas digitales
		MOVWF PORTA				; Carga el valor al TRIS
		
		; Configuración del conversor ADC
		MOVLW B'01011101'		; Configuracion de las entradas analógicas   A/D CLK=FOSC/16 
		MOVWF ANSEL;  


;······································
;·    Lectura de datos ADC Canal 0    ·
;······································
LeeADC					
	movlw 	B'00000001'		; Detención de cualquier conversión en curso
	movwf 	ADCON0
	call 	Del100us		; Espera de 100us
	bsf 	ADCON0, 1		; comienzo de la conversión AD Canal GPIO 0, PIN 7
	call 	Del100us		; Espera de 100us 
	movf 	ADRESH, 0		; Carga W con el valor analógico
	movwf 	TmpAct			; Copia del valor analógico en TmpAct
	return

Si alguien ve algun fallo que me lo diga pf, aun no lo he probado...
www.TupperBot.es

Mi sitio en YouTube

Avatar de Usuario
Mif
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1094
Registrado: Jue Mar 23, 2006 6:24 pm
Nombre: Ángel
Ubicación: Madrid
Contactar:

Re: Lectura analógica en un 12F675

Mensaje por Mif » Lun May 14, 2007 4:46 am

Ahora tengo otra duda...
El proyecto tiene que ser simulado con MPLab, pero... ¿se pueden simular las entradas analogicas de alguna manera? o voy a tener que recurrir a Proteus
www.TupperBot.es

Mi sitio en YouTube

Avatar de Usuario
morlok
Principiante
Principiante
Mensajes: 32
Registrado: Mié Nov 02, 2005 9:37 am
Nombre: Gerardo Barbarov
Ubicación: Sevilla
Contactar:

Re: Lectura analógica en un 12F675

Mensaje por morlok » Lun May 14, 2007 8:26 am

Mif escribió:Ahora tengo otra duda...
El proyecto tiene que ser simulado con MPLab, pero... ¿se pueden simular las entradas analogicas de alguna manera? o voy a tener que recurrir a Proteus
Yo en su momento habia hecho esto para probar leer el ADC con un 877 en asm, este ejemplo modula una onda de audio en funcion del valor del adc, no se si te sirve, parece esta igual a tu ejemplo, lo que cambia es que usaba el chequeo de fin de conversion, pero haciendo una pausa fija tambien funciona bien. En cuanto a simular el adc, creo que con el mplab no se puede, no se con la ultima version, creo va por la 7.5 yo tengo la 7.
Lo que queda si no quieres usar el proteus, es una vez asegurado que el algoritmo de lectura funciona, forzar la carga de los registros con valores directos, claro no es dinamico, si quieres implementar un PID vas muerto :-)

Código: Seleccionar todo

  list      p=16f877            
   #include <p16f877>        

__CONFIG _CP_OFF & _WDT_OFF & _HS_OSC

;***** Var
n1		 EQU     0x40          
n2		 EQU     0x41         
n3      	   	 EQU     0x42    
dtono      	  	 EQU     0x43
btono 		 EQU     0x44
aux1       		 EQU     0x45
aux2       		 EQU     0X46
aux0		 EQU     0X47
ttono	  	 EQU     0X48	
;**********************************************************************
		ORG     0x000             
  		goto    inicio            
		ORG     0x004             ; vector de interrupcion
		retfie                           ; retorno 
inicio		ORG 0x50
		bcf STATUS,GIE            ;desconecta interrupciones
                                bcf STATUS,ADIE           ;desconecta interrupcion de ADC
                              
		bsf STATUS,RP0		  ;banco 1	
		movlw 0x00                ;puerto B completo como salida
		movwf TRISB
		bcf STATUS,RP0             ;banco 
		movlw .8
		movwf ttono
              
	                movlw .100
                	movwf btono                
                	movlw .14
                	movwf ADCON1 ; entrada por canal 0 ref vdd vss 
                	movlw .128   ;  canal 0  reloj x 32
		movwf ADCON0
                	bsf ADCON0,0 ;enciende adc 
                 
tonoadc		call convierte	              
                	movfw ADRESH	
             		movwf dtono
		call tono
    		goto tonoadc
    
;*****************************
;SUBRUTINAS

tono         	movfw ttono
   		movwf aux0
tt0             	decfsz aux0
               		 goto tt1
                	return
tt1		movfw btono
		movwf aux1
bt0		decfsz aux1
		goto pone1
		goto tt0

pone1  	                bsf  PORTB,0
		movfw dtono
		movwf aux2
dt0		decfsz aux2
		goto dt0
pone0                      bcf  PORTB,0       
		movfw dtono
		movwf aux2
dt1		decfsz aux2		
		goto dt1
		goto bt0
		
convierte		bsf ADCON0,2  ; inicia conversion
conv		btfsc ADCON0,2  ;bucle de testeo de fin de conversion 
                	goto conv 
                	return 

		END


Ranganok
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 3867
Registrado: Lun Nov 07, 2005 3:10 pm
Ubicación: Barbaros del Valle
Contactar:

Re: Lectura analógica en un 12F675

Mensaje por Ranganok » Lun May 14, 2007 10:51 am

Mif, el proyecto creo que puede ser simulado por MPLab, hay un ventana (ahora mismo no te puedo decir dónde exactamente) en la que puedes ver las entradas del micro, y en tiempo de simulación/depuración cambiarle el valor (las tendras que definir como analógicas antes).

S2

Ranganok Schahzaman
skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

Avatar de Usuario
Mif
Usuario Desarrollador
Usuario Desarrollador
Mensajes: 1094
Registrado: Jue Mar 23, 2006 6:24 pm
Nombre: Ángel
Ubicación: Madrid
Contactar:

Re: Lectura analógica en un 12F675

Mensaje por Mif » Lun May 14, 2007 4:49 pm

Gracias chicos!
He encontrado esta herramienta en el menu tools, pero no cponsigo configurar ningun slider, no me deja escriir... parece que es lo que necesito, pero se me resisite... vere que puedo hacer...
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
www.TupperBot.es

Mi sitio en YouTube

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado