Hola:
Quiero hacer y me da igual el lenguaje de programación y si es con TIMER o mediante retardo un temporizador que dure 20 segundos de esta manera con un PIC12F508.
Descargué el MPLAB X v1.00. Estoy con el ASM por ahora.
En este directorio veo un ejemplo para poder empezar a organizarme.
C:\Archivos de programa\Microchip\MPASM Suite\Template\Code
Cogí el archivo llamado: 12F508TEMP.ASM.
En su interior me encuentro este código:
Ahorra algo de trabajo. Me queda hacer un programa como temporizador de 20 segundos y otras cosas.
El PIC12F508 siempre está alimentado como fuente principal a 5V. Los pines incluyen: Un pin de entrada que detecta cuando hay 5V o 0V. Tres pines de salida, Un Led rojo, un Led verde y un ventilador. El ventilador siempre está funcionando y el LEd verde encendido, el rojjo apagado. Cuando el único pin de entrada detecta 0V, el pin del led verde se apaga, se enciende el rojo y ahí se activa el temporizador de 20 segundos que al finalizar se detiene el ventilador.
¿Se entiende?
Ya pondré un esquema boceto más adelante.
Escribí antes que tiene un único pin de entrada. Ahora te digo que hay otro más con un pulsador que lo único que hace es activar y desactivar el ventilador. (Esta parte es opcional).
Hay un método mediante retardos que puedes sacar los 20 segundos con la desvantaja que el PIC queda esclavo y no puedo hacer otra cosa hasta que el contador acabe.
http://www.golovchenko.org/cgi-bin/delay
Lo ideal sería hacerlo con TIMER a 20 segundos, ya que tienes la ventaja de usar interrupciones cuando quiera y el PIC no queda esclavo. Por ahora lo quiero hacer en ASM, si lo hacen en C me da igual.
Cualquier duda para entender lo que quiero hacer me lo explican para explicarlo mejor y espero poner un dibujo. Ya que aún no lo tengo hecho, el que lo desee puede hacer un boceto de un esquema eléctrico del PIC.
El ventilador a usar es un cooler de 12Vdc como vez en la imagen.
Un saludo.
Edito:
El .Hex generado del MPLAB X v1.00, en mi caso lo he encontrado en este directorio.
C:\Documents and Settings\Usuario\MPLABXProjects\Temporizador_12F508.X\dist\default\production
Quiero hacer y me da igual el lenguaje de programación y si es con TIMER o mediante retardo un temporizador que dure 20 segundos de esta manera con un PIC12F508.
Descargué el MPLAB X v1.00. Estoy con el ASM por ahora.
En este directorio veo un ejemplo para poder empezar a organizarme.
C:\Archivos de programa\Microchip\MPASM Suite\Template\Code
Cogí el archivo llamado: 12F508TEMP.ASM.
En su interior me encuentro este código:
Código:
;**********************************************************************
; This file is a basic code template for assembly code generation *
; on the PIC12F508. This file contains the basic code *
; building blocks to build upon. *
; *
; Refer to the MPASM User's Guide for additional information on *
; features of the assembler (Document DS33014). *
; *
; Refer to the respective PIC data sheet for additional *
; information on the instruction set. *
; *
;**********************************************************************
; *
; Filename: xxx.asm *
; Date: *
; File Version: *
; *
; Author: *
; Company: *
; *
; *
;**********************************************************************
; *
; Files Required: P12F508.INC *
; *
;**********************************************************************
; *
; Notes: *
; *
;**********************************************************************
list p=12F508 ; list directive to define processor
#include <p12F508.inc> ; processor specific variable definitions
__CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF & _IntRC_OSC
; '__CONFIG' directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
;***** VARIABLE DEFINITIONS
temp EQU 0x07 ;example variable definition
;**********************************************************************
ORG 0x1FF ; processor reset vector
; Internal RC calibration value is placed at location 0x1FF by Microchip
; as a movlw k, where the k is a literal value.
ORG 0x000 ; coding begins here
movwf OSCCAL ; update register with factory cal value
start
nop ; example code
movlw 0xFF ; example code
movwf temp ; example code
; remaining code goes here
END ; directive 'end of program'
El PIC12F508 siempre está alimentado como fuente principal a 5V. Los pines incluyen: Un pin de entrada que detecta cuando hay 5V o 0V. Tres pines de salida, Un Led rojo, un Led verde y un ventilador. El ventilador siempre está funcionando y el LEd verde encendido, el rojjo apagado. Cuando el único pin de entrada detecta 0V, el pin del led verde se apaga, se enciende el rojo y ahí se activa el temporizador de 20 segundos que al finalizar se detiene el ventilador.
¿Se entiende?
Ya pondré un esquema boceto más adelante.
Escribí antes que tiene un único pin de entrada. Ahora te digo que hay otro más con un pulsador que lo único que hace es activar y desactivar el ventilador. (Esta parte es opcional).
Hay un método mediante retardos que puedes sacar los 20 segundos con la desvantaja que el PIC queda esclavo y no puedo hacer otra cosa hasta que el contador acabe.
http://www.golovchenko.org/cgi-bin/delay
Código:
; Delay = 20 seconds
; Clock frequency = 4 MHz
; Actual delay = 20 seconds = 20000000 cycles
; Error = 0 %
cblock
d1
d2
d3
endc
Delay
;19999992 cycles
movlw 0xB5
movwf d1
movlw 0x99
movwf d2
movlw 0x2C
movwf d3
Delay_0
decfsz d1, f
goto $+2
decfsz d2, f
goto $+2
decfsz d3, f
goto Delay_0
;4 cycles
goto $+1
goto $+1
;4 cycles (including call)
return
Cualquier duda para entender lo que quiero hacer me lo explican para explicarlo mejor y espero poner un dibujo. Ya que aún no lo tengo hecho, el que lo desee puede hacer un boceto de un esquema eléctrico del PIC.
El ventilador a usar es un cooler de 12Vdc como vez en la imagen.

Un saludo.
Edito:
El .Hex generado del MPLAB X v1.00, en mi caso lo he encontrado en este directorio.
C:\Documents and Settings\Usuario\MPLABXProjects\Temporizador_12F508.X\dist\default\production
Última edición: