You are on page 1of 6

;Leer el estado de 3 interruptores/pulsadores del laboratorio, conectados a GP3-GP5 y

reflejar el nivel
;lgico de los mismos sobre los leds conectados a GP0-GP2

List p=12F508 ;Tipo de procesador


include "P12F508.INC" ;Definiciones de registros internos

;Ajusta los valores de la palabra de configuracin durante el ensamblaje:


;Proteccin de cdigo =OFF, WDT=OFF, MCLR=Interno y OSC= interno
;Estas u otras configuraciones se pueden seleccionar segn las necesidades

__config _CP_OFF&_WDT_OFF&_MCLRE_OFF&_IntRC_OSC

Temp equ 0x07 ;Variable temporal

org 0x00 ;Vector de Reset

Inicio movwf OSCCAL ;Almacena valor de calibracin original


clrf GPIO ;Borra salidas
movlw b'11011111'
option ;Pin GP2/TOCKI = GP2
movlw b'11111000'
tris GPIO ;Configura GP0-GP2 como salidas

Loop movf GPIO,W


movwf Temp ;Lee las entradas GP3-GP5
rlf Temp,f ;Desplaza a la izquierda
swapf Temp,w ;Intercambia nibles
movwf GPIO ;Visualiza en las salidas GP0-GP2
goto Loop

end
"
que por lo que veran, solo me lee las entradas en las patitas gp3,4 y 5 y me las muestra
en gp0,1 y 2.. buen comienzo no, a ver si logro subir unas capturas de una simulacion en
estos dias, mas los otros que he hecho.
por cierto,el programa lo saque de un ejemplo en un libro que se llama no me acuerdo
como pero apenas puedo les subo el nombre para recomendarselos...y tambien tratare de
darles el enlace para la ficha tecnica de este libro. bye
A, y tambien subire unos ejercicios propuestos que ya he resuelto. suerte.
TITLE "Pulsador Bar"
processor 12F508
LIST P=12F508, f=inhx8m, r=dec ;(INHX8M= Formato de salida .hex, r=sistema
decimal)
#include "p12f508.inc" ; Incluye datos de PIC12F508
__IDLOCS 0x3829 ; Solo ID de reconocimiento (tipo serial?)
__CONFIG _IntRC_OSC & _WDT_OFF & _MCLRE_OFF & _CP_ON
; ERRORLEVEL -207 ; found label after column 1
ERRORLEVEL -302 ; register in operand not in bank 0
;==============================================================
; CONFIGURACION
;==============================================================
; El PIC es configurado para usar casi todas las entradas y salidas
; posibles = 13. Por eso se usa el oscilador con cristal externo,
; Se define el clock interno a 4 MHz. Se usa el master reset (pata 4).
;**********************************************************************
; VARIABLES
;**********************************************************************
#DEFINE RAMSTART 0x07 ; Comienzo de la RAM
#DEFINE PULSADOR_ON GPIO, 0 ; Un 0 en GP0 comienza la cuenta.
#DEFINE MOZO GPIO, 5 ; Un 1 en GP5 enciende el el cartel.
#DEFINE CONTROL STATUS,Z

LLAMADA equ 1

CBLOCK RAMSTART
XMILLISEC ; Usado para el retardo
YMILLISEC ; Usado para el retardo
CUENTA1 ; Usado para los LOOPs Internos
CUENTA2 ; Usado para los LOOPs Internos
FLAGS
ENDC
;==============================================================
; VALOR DEL OSCILADOR
;==============================================================
;OSCCAL calibration value 12F508
ORG 0x1FF ; Calibracin del Oscilador Interno
MOVLW 0X1E ; Valor a cargar.

ORG 0x00 ; Reset principal del programa.


MOVWF OSCCAL ; 00h min.freq, 80h stred freq, 0FFh pro max.freq
GOTO CONFIGURACION ; Comienzo del programa.
;**********************************************************************
; Comienzo es Seteo del Pic
;**********************************************************************
CONFIGURACION
CLRF GPIO
MOVLW B'00000001' ; GP5 GP4 GP3 GP2 GP1 GP0
TRIS GPIO ; S S S S S E
MOVLW 0X10
MOVWF CUENTA1 ; Cargo con las cantidades del LOOP
MOVWF CUENTA2 ; Cargo con las cantidades del LOOP
;==============================================================
; COMIEZO DEL PROGRAMA =
MAIN
;+---------------------------------+
; PROCESADOR A EMPLEAR PIC12F50x
;+---------------------------------+
SELECCIONAR EQU 0 ;0=PIC12F508 1=PIC12F509
IF SELECCIONAR
LIST P=12F509
INCLUDE <P12F509.INC>
ELSE
LIST P=12F508
INCLUDE <P12F508.INC>
ENDIF
;+-----------------------------------+
; FUSIBLES, WASDOG, OSCILADOR ETC..
;+-----------------------------------+
__CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF & _IntRC_OSC

; ZONA DE CDIGOS
********************************************************************

ORG 0
Inicio
movwf OSCCAL ;CALIBRA EL OSCILADOR INTERNO
movlw b'11000010' ;CONFIGURA TMR0 PRESCALER = 1:8
OPTION ;OSCILADOR = 4MHZ
; movlw b'00000011' ;INICIALIZA TODOS LOS
movlw b'00001100'
tris GPIO ;PUERTOS EN ALTO Y
clrf GPIO
clrw

Principal
movf GPIO,W ; Lee los sensores.
andlw b'00000011' ; Mscara para quedarse con el
valor de los sensores.
addwf PCL,F ; Salta a la configuracin adecuada.
goto Configuracion0
goto Configuracion1
goto Configuracion2
Configuracion0
movlw b'00001000'
goto ActivaSalida
Configuracion1
movlw b'00000100'
goto ActivaSalida
Configuracion2
movlw b'00000011'
goto ActivaSalida
ActivaSalida
movwf GPIO
goto Principal

END
;
**********************************************************************
; 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'

You might also like