Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
asm *************************
*********
;
;
===================================================================
;
Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
;
E. Palacios, F. Remiro y L. Lpez.
;
Editorial Ra-Ma. www.ra-ma.es
;
===================================================================
;
; Por la lnea 3 del puerto B se genera una onda cuadrada. La frecuencia de la ond
a cuadrada cambia
; mediante activacin del pulsador conectado al pin 7 del puerto B, de la siguient
e forma:
;
;
PULSACIN
FRECUENCIA
SEMIPERIODO
;
---------------------------------------;
(Inicial)
10 kHz
50 s. = 1 x 50 s
;
Primera
5 kHz
100 s. = 2 x 50 s
;
Segunda
2 kHz
250 s. = 5 x 50 s
;
Tercera
1 kHz
500 s. = 10 x 50 s
;
Cuarta
500 Hz
1000 s. = 20 x 50 s
;
Quinta
200 Hz
2500 s. = 50 x 50 s
;
Sexta
100 Hz
5000 s. = 100 x 50 s
;
Septima
50 Hz
10000 s. = 200 x 50 s
;
; Al conectarlo por primera vez se genera una frecuencia de 10 kHz, al activar e
l
; pulsador cambia a 5 kHz, al actuar una segunda vez cambia a 2 kHz, y as sucesiv
amente.
;
; El mdulo LCD visualizar la frecuencia generada. A la lnea de salida se puede cone
ctar
; un altavoz que producir un pitido.
; ZONA DE DATOS ****************************************************************
******
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST
P=16F84A
INCLUDE <P16F84A.INC>
CBLOCK 0x0C
ApuntadorFrecuencia
Semiperiodo
ENDC
TMR0_Carga50us EQU
NumeroFrec
EQU
Hz, 2 kHz,
-d'42'
d'8'
0
Inicio
4
ServicioInterrupcion
PCL,F
.1
.2
.5
.10
.20
.50
.100
.200
;
;
;
;
;
;
;
;
Semiperiodo
Semiperiodo
Semiperiodo
Semiperiodo
Semiperiodo
Semiperiodo
Semiperiodo
Semiperiodo
1
2
5
10
20
50
100
200
x
x
x
x
x
x
x
x
50
50
50
50
50
50
50
50
=
=
=
=
=
=
=
=
50
100
250
500
1000
2500
5000
10000
s,
s,
s,
s,
s,
s,
s,
s,
frecuencia
frecuencia
frecuencia
frecuencia
frecuencia
frecuencia
frecuencia
frecuencia
=
=
=
=
=
=
=
=
10
5
2
1
500
200
100
50
kHz.
kHz.
kHz.
kHz.
Hz.
Hz.
Hz.
Hz.
PCL,F
Mensaje10kHz
Mensaje5kHz
Mensaje2kHz
Mensaje1kHz
Mensaje500Hz
Mensaje200Hz
Mensaje100Hz
Mensaje50Hz
LCD_Inicializa
STATUS,RP0
Salida
bsf
movlw
movwf
bcf
call
movlw
movwf
movlw
movwf
general.
Principal
goto
Pulsador
b'00001000'
OPTION_REG
STATUS,RP0
EstadoInicial
TMR0_Carga50us
TMR0
b'10101000'
INTCON
Principal
btfss Pulsador
goto
EsperaDejePulsar
Fin_PulsadorInterrupcion
return
; Subrutina "Timer0_Interrupcion" -----------------------------------------------------;
CBLOCK
Timer0_ContadorA
ENDC
Timer0_Interrupcion
movlw TMR0_Carga50us
movwf TMR0
decfsz Timer0_ContadorA,F
goto
Fin_Timer0_Interrupcion
movf
Semiperiodo,W
movwf Timer0_ContadorA
btfsc Salida
goto
EstabaAlto
EstabaBajo
bsf
Salida
goto
Fin_Timer0_Interrupcion
EstabaAlto
bcf
Salida
Fin_Timer0_Interrupcion
return
; Recarga el TMR0.
; Decrementa el contador.
; Repone el contador nuevamente.
; Testea el ltimo estado de la salida.
; Estaba bajo y lo pasa a alto.
; Estaba alto y lo pasa a bajo.
INCLUDE <LCD_MENS.INC>
INCLUDE <LCD_4BIT.INC>
INCLUDE <RETARDOS.INC>
END
;
;
;
;
;
====================================================================
Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS".
E. Palacios, F. Remiro y L. Lpez.
Editorial Ra-Ma. www.ra-ma.es
====================================================================