Bibliografía:
· * Mircrocontrolador PIC16f84,
desarrollo de proyectos 3ra edición, Enrique Palacios,Fernando Remiro y Lucas J.Lopez.
· *Mis primeros programas en
Assambler
list p=16F628A ; list directive to define processor
#include <p16F628A.inc> ; processor specific variable definitions errorlevel -302 ; suppress message 302 from list file __CONFIG _CP_OFF & DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT CBLOCK 0x20 Registro50ms ENDC CARGA_500ms EQU d'15' TMR0_Carga50ms EQU d'256'-d'24' #DEFINE LED PORTB,1 ORG 0 goto Inicio ORG 4 goto Timer0_Interrupcion Inicio movlw .7 movwf CMCON call LCD_Inicializa bsf STATUS,RP0 bcf LED movlw b'00000000' movwf OPTION_REG ; Prescaler de 2 para el TMR0 bcf STATUS,RP0 movlw TMR0_Carga50ms ; Carga el Timer 0. movwf TMR0 movlw CARGA_500ms movwf Registro50ms ; Número de veces a repetir la interrupción. movlw b'10100000' ; Activa interrupción del TMR0 (TOIE) y la movwf INTCON ; general (GIE). Principal movlw MensajeLargo call LCD_MensajeMovimiento goto Principal CBLOCK Guarda_W Guarda_STATUS ENDC Timer0_Interrupcion movwf Guarda_W ; Guarda W y STATUS. swapf STATUS,W movwf Guarda_STATUS bcf STATUS,RP0 ; Para asegurarse de que trabaja con el banco 0. movlw TMR0_Carga50ms movwf TMR0 ; Recarga el TMR0. decfsz Registro50ms,F ; Decrementa el contador. goto FinInterrupcion movlw CARGA_500ms ; Repone el contador nuevamente. movwf Registro50ms btfsc LED ; Pasa a conmutar el estado del LED. goto EstabaEncendido EstabaApagado bsf LED ; Lo enciende. goto FinInterrupcion EstabaEncendido bcf LED ; Lo apaga. FinInterrupcion swapf Guarda_STATUS,W ; Restaura el STATUS. movwf STATUS swapf Guarda_W,F ; Restaura W como estaba antes de producirse swapf Guarda_W,W ; la interrupción. bcf INTCON,T0IF retfie Mensajes addwf PCL,F MensajeLargo DT " " DT "Garcia Fragoso Jordan Adrian." DT " ", 0x00 ; INCLUDE <LCD_MENS.INC> INCLUDE <LCD_4BIT.INC> INCLUDE <RETARDOS.INC> END |
'****************************************************************
'* Name
: UNTITLED.BAS *
'* Author
: [select VIEW...EDITOR OPTIONS] *
'* Notice
: Copyright (c) 2013 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date
: 18/02/2013 *
'* Version : 1.0
*
'* Notes
:
*
'* :
*
'****************************************************************
@
DEVICE 3F10H
CMCON=7
DEFINE
OSC 4
Z
VAR BYTE
W
VAR BYTE
Y
VAR BYTE
Z
= 0
TRISB
= $00
TRISA
= $00
ON
INTERRUPT GOTO Int
SYMBOL
TOIF=INTCON.2 : SYMBOL SALIDA=PORTA.1
SALIDA=0
H
CON 010010
O
CON %10000000
A
CON 010000
L
CON %10001110
OPTION_REG=000000
INTCON=%10100000
TMR0=233
Inicio:
portb=H
CALL
time
portb=O
CALL
time
portb=l
CALL
time
portb=a
CALL
time
goto
IniciO
time:
for
w=1 to 100
pause
5
next
return
DISABLE
Int:
TOGGLE
SALIDA
GOTO RESETEO
RETRASO:
FOR
Z=1 TO 25
CALL
RETARDO
NEXT
RETURN
RETARDO:
TMR0=233
Espera:
if
toif=1 then RESETEO
GOTO
ESPERA
RESETEO:
TOIF=0
TMR0=233
INTCON=%10100000
RETURN
RESUME
END
|
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2013 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 11/02/2013 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
@ DEVICE 3F10H
H CON %11101100
O CON %01111110
A CON %11101110
L CON %01110000
SYMBOL PIN = PORTA.0
LOOP VAR BYTE
ON INTERRUPT GOTO ETIQUETA
TRISB = 000001
TRISA = $00
CMCON = 7
INTCON = %10010000
OPTION_REG = %01000000
INICIO:
PORTB=H
PAUSE 500
PORTB=O
PAUSE 500
PORTB=L
PAUSE 500
PORTB=A
PAUSE 500
GOTO INICIO
DISABLE ;DESHABILITA LAS INTERRUPCIONES
ETIQUETA:
SOUND PIN, [50,60,70,20,85,120,83,40,70,20,50,20,70,20,90,120,90,20,98,160]
FOR LOOP = 128 TO 255
SOUND PIN, [LOOP,2]
NEXT
SOUND PIN, [43,80,63,20,77,20,71,80,51,20,_
90,20,85,140,77,20,80,20,85,20,_
90,20,80,20,85,60,90,60,92,60,87,_
60,96,70,0,10,96,10,0,10,96,10,0,_
10,96,30,0,10,92,30,0,10,87,30,0,_
10,96,40,0,20,63,10,0,10,63,10,0,_
10,63,10,0,10,63,20]
RESUME
ENABLE
END
|
CEXT
|
REXT
|
FRECUENCIA
|
20pF
|
5k
10k
100k
|
4,61 MHz
2,66 MHz
311 MHZ
|
100pF
|
5k
10k
100k
|
1,34 MHz
756 MHz
82,8 KHz
|
300pF
|
5k
10k
100k
|
428 KHz
243 KHZ
26,2 KHZ
|
GIE
|
EEIE
|
TOIE
|
INTE
|
RBIE
|
TOIF
|
INTF
|
RBIF
|
BIT 7
|
BIT 6
|
BIT 5
|
BIT 4
|
BIT 3
|
BIT 2
|
BIT 1
|
BIT 0
|
/RBPU
|
INTDEG
|
TOCS
|
TOSE
|
PSA
|
PS1
|
PS2
|
PS0
|
BIT 7
|
BIT 6
|
BIT 5
|
BIT 4
|
BIT 3
|
BIT 2
|
BIT 1
|
BIT 0
|
PS2 PS1 PS2
|
Divisor del TMR0
|
Divisor del WDT
|
000
001
010
011
100
101
110
111
|
1:2
1:4
1:8
1:16
1:32
1:64
1:128
1:256
|
1:1
1:2
1:4
1:8
1:16
1:32
1:64
1:128
|