Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
void interrupt()
{
cnt++;
PIR1.TMR1IF=0;
TMR1H=0x80;
TMR1L=0x00;
}
void main()
{
PORTB=0xF0;
TRISB=0;
T1CON=1;
PIR1.TMR1IF=0;
TMR1H=0x80;
TMR1L=0x00;
PIE1.TMR1IE=1;
cnt=0;
INTCON = 0xC0;
while(1)
{
if(cnt>=3650)
PORTB=0;
else
{
PORTB=1;
delay_ms(500);
PORTB=3;
delay_ms(500);
PORTB=0;
delay_ms(500);
}
}
}
2)
unsigned short cnt;
void interrupt() {
if (TMR1IF_bit) {
cnt++;
TMR1IF_bit = 0;
TMR1H = 0x80;
TMR1L = 0x00;
}
}
void main() {
ANSEL = 0;
// increment counter
// clear TMR0IF
ANSELH = 0;
C1ON_bit = 0;
C2ON_bit = 0;
PORTB = 0xFF;
TRISB = 0;
T1CON = 1;
TMR1IF_bit = 0;
TMR1H = 0x80;
TMR1L = 0x00;
TMR1IE_bit = 1;
// Disable comparators
//
//
//
//
//
Initialize PORTB
PORTB is output
Timer1 settings
clear TMR1IF
Initialize Timer1 register
cnt =
0;
INTCON = 0xC0;
// initialize cnt
// Set GIE, PEIE
do {
if (cnt >= 72) {
PORTB = ~PORTB;
cnt = 0;
}
} while (1);
;*******************************************************************
; INTERFAZ SERIE RS232 - ECO Y DISPLAY EN LEDS
; CONVERTIDOR SERIE RS232 - PARALELO 8 BITS
;*******************************************************************
LIST P=16F628, R=DEC
#include "P16F628A.INC"
__CONFIG
_CP_OFF & _WDT_OFF & _LVP_OFF & _PWRTE_ON &
_INTRC_OSC_NOCLKOUT & _MCLRE_OFF
;*******************************************************************
; CONFIGURACION
;*******************************************************************
;
;
;
;
;
;*******************************************************************
; VARIABLES
;*******************************************************************
contador
dato_serie
EQU
0x28
EQU
0x29
; variable
; dato serie desde la PC
;*******************************************************************
ORG
0x000
;*******************************************************************
; Inhibe comparadores
;*******************************************************************
movlw 7
movwf CMCON
;*******************************************************************
; Inicializar Ports
;*******************************************************************
movlw
movwf
movlw
movwf
b'00000000'
PORTA
b'00000000'
PORTB
bsf STATUS,RP0
movlw b'00000000'
movwf TRISA
; Pg 1 RAM
; salidas (para mostrar el dato en LEDS)
; de estas salidas, no usaremos
; PORTA 4, que tiene salida open drain,
y
; PORTA 5, que slo puede ser entrada
movlw b'11001011'
;
;
;
;
;
;
;
RB0
RB1
RB2
RB3
RB2
RB5
RB6
entrada
(RX) = entrada
(TX) = salida
= entrada
= salida del bit 4 del dato a LEDS
= salida del bit 5 del dato a LEDS
y RB7 = entradas
movwf TRISB
;*******************************************************************
; BAUD RATE para la comunicacin RS232
; y otras definiciones para USART
;*******************************************************************
; Baud Rate = 9600, Sin Paridad, 1 Bit parada
;
movlw
movwf
movlw
movwf
0x19
SPBRG
b'00100100'
TXSTA
bcf STATUS,RP0
; RAM PAGE 0
movlw b'10010000'
movwf RCSTA
;*******************************************************************
; TIEMPO DE ESTABILIZACION
;*******************************************************************
estab
clrf contador
decfsz contador,F
goto estab
movf RCREG,W
movf RCREG,W
movf RCREG,W
call Bienvenida
;*******************************************************************
; LAZO PRINCIPAL
;*******************************************************************
loop
clrw
btfss PIR1,RCIF
goto loop
call recibeRS232
movwf dato_serie
rutina)
call enviaRS232
call muestra
goto loop
; enva el eco a la PC
; muestra el caracter recibido en LEDS
;*********************************************************************
**************
; RECIBE CARACTER SERIE - RS232 - DESDE LA PC
;*********************************************************************
**************
recibeRS232
movf RCREG,W
return
;*********************************************************************
**************
; ENVIA CARACTER SERIE - RS232 - A LA PC Y ESPERA A QUE HAYA SALIDO
;*********************************************************************
**************
enviaRS232
movwf TXREG
bsf STATUS,RP0
Espere btfss TXSTA,TRMT
goto Espere
bcf STATUS,RP0
return
;*********************************************************************
**************
; MUESTRA DATO
;*********************************************************************
**************
muestra
movf dato_serie,w
movwf PORTA
btfss dato_serie,4
bcf PORTB,4
btfsc dato_serie,4
bsf PORTB,4
btfss dato_serie,5
;
;
;
;
bcf PORTB,5
btfsc dato_serie,5
es
open drain, nos conviene poner
el bit 4 del dato en otra salida;
lo hacemos en el bit 4 del PORTB.
y , como el PORTA tiene el bit 5 que
es
poner
bsf PORTB,5
return
;*********************************************************************
**************
; MENSAJES
;*********************************************************************
**************
Bienvenida
; los primeros caracteres 0x00 son
; para estabilizacin del circuito
movlw
0x00
call
enviaRS232
movlw
0x00
call
enviaRS232
movlw
0x00
call
enviaRS232
movlw
0x00
call
enviaRS232
movlw
0x00
call
enviaRS232
call
msgCR
movlw
'H'
call
enviaRS232
movlw
'o'
call
enviaRS232
movlw
'l'
call
enviaRS232
movlw
'a'
call
enviaRS232
movlw
' '
call
enviaRS232
movlw
'a'
call
enviaRS232
movlw
'm'
call
enviaRS232
movlw
'i'
call
enviaRS232
movlw
'g'
call
enviaRS232
movlw
'o'
call
enviaRS232
msgCR
movlw
0x0D
call
enviaRS232
movlw
0x0A
goto
enviaRS232
END
:020000040000FA
:1000000007309F00003085000030860083160030E6
:100010008500CB3086001930990024309800831277
:1000200090309800A801A80B13281A081A081A087B
:10003000342003018C1E19282120A9002320292007
:1000400019281A08080099008316981C252883127D
:10005000080029088500291E0612291A0616A91E5D
:100060008612A91A861608000030232000302320AB
:10007000003023200030232000302320532048303C
:1000800023206F3023206C30232061302320203048
:100090002320613023206D302320693023206730F6
:0E00A00023206F3023200D3023200A30232828
:02400E00503F21
:00000001FF
LIST
; P16F628A.INC Standard Header File, Version 1.10
Technology, Inc.
NOLIST
Microchip
;=====================================================================
=====
;
;
Revision History
;
;=====================================================================
=====
;Rev:
;1.01
;1.00
Date:
Reason:
14 Nov 2002 Updated to reflect BOD terminology changed to BOR
22 Aug 2002 Initial Release
;=====================================================================
=====
;
;
Verify Processor
;
;=====================================================================
=====
IFNDEF __16F628A
MESSG "Processor-header file mismatch.
processor."
ENDIF
Verify selected
;=====================================================================
=====
;
;
Register Definitions
;
;=====================================================================
=====
W
F
EQU
EQU
H'0000'
H'0001'
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
H'0000'
H'0001'
H'0002'
H'0003'
H'0004'
H'0005'
H'0006'
H'000A'
H'000B'
H'000C'
H'000E'
H'000F'
H'0010'
H'0011'
H'0012'
H'0015'
H'0016'
H'0017'
H'0018'
H'0019'
H'001A'
H'001F'
OPTION_REG
TRISA
TRISB
PIE1
PCON
PR2
TXSTA
SPBRG
EEDATA
EEADR
EECON1
EECON2
VRCON
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
H'0081'
H'0085'
H'0086'
H'008C'
H'008E'
H'0092'
H'0098'
H'0099'
H'009A'
H'009B'
H'009C'
H'009D'
H'009F'
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
H'0007'
H'0006'
H'0005'
H'0004'
H'0003'
H'0002'
H'0001'
H'0000'
EQU
EQU
H'0007'
H'0006'
T0IE
INTE
RBIE
T0IF
INTF
RBIF
EQU
EQU
EQU
EQU
EQU
EQU
H'0005'
H'0004'
H'0003'
H'0002'
H'0001'
H'0000'
EQU
EQU
EQU
EQU
EQU
EQU
EQU
H'0007'
H'0006'
H'0005'
H'0004'
H'0002'
H'0001'
H'0000'
EQU
H'0007'
C1OUT
C2INV
C1INV
CIS
CM2
CM1
CM0
EQU
EQU
EQU
EQU
EQU
EQU
EQU
H'0006'
H'0005'
H'0004'
H'0003'
H'0002'
H'0001'
H'0000'
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
H'0007'
H'0006'
H'0005'
H'0004'
H'0003'
H'0002'
H'0001'
H'0000'
EQU
EQU
EQU
EQU
EQU
EQU
EQU
H'0007'
H'0006'
H'0005'
H'0004'
H'0002'
H'0001'
H'0000'
EQU
EQU
EQU
EQU
EQU
H'0003'
H'0001'
H'0000'
H'0000'
H'0000' ;Backwards compatability
VREN
VROE
VRR
VR3
VR2
VR1
VR0
EQU
EQU
EQU
EQU
EQU
EQU
EQU
H'0007'
H'0006'
H'0005'
H'0003'
H'0002'
H'0001'
H'0000'
;=====================================================================
=====
;
;
RAM Definition
;
;=====================================================================
=====
__MAXRAM
__BADRAM
__BADRAM
__BADRAM
__BADRAM
H'01FF'
H'07'-H'09', H'0D', H'13'-H'14', H'1B'-H'1E'
H'87'-H'89', H'8D', H'8F'-H'91', H'93'-H'97', H'9E'
H'105', H'107'-H'109', H'10C'-H'11F', H'150'-H'16F'
H'185', H'187'-H'189', H'18C'-H'1EF'
;=====================================================================
=====
;
;
Configuration Bits
;
;=====================================================================
=====
_BODEN_ON
to 16F62X
_BODEN_OFF
to 16F62X
_BOREN_ON
_BOREN_OFF
_CP_ON
_CP_OFF
_DATA_CP_ON
_DATA_CP_OFF
_PWRTE_OFF
_PWRTE_ON
_WDT_ON
_WDT_OFF
_LVP_ON
_LVP_OFF
_MCLRE_ON
_MCLRE_OFF
_RC_OSC_CLKOUT
_RC_OSC_NOCLKOUT
_ER_OSC_CLKOUT
to 16F62X
_ER_OSC_NOCLKOUT
to 16F62X
_INTOSC_OSC_CLKOUT
_INTOSC_OSC_NOCLKOUT
_INTRC_OSC_CLKOUT
to 16F62X
_INTRC_OSC_NOCLKOUT
to 16F62X
_EXTCLK_OSC
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
H'3FFF'
H'3FBF'
H'1FFF'
H'3FFF'
H'3EFF'
H'3FFF'
H'3FFF'
H'3FF7'
H'3FFF'
H'3FFB'
H'3FFF'
H'3F7F'
H'3FFF'
H'3FDF'
H'3FFF'
H'3FFE'
H'3FFF' ;Backwards compatability
EQU
EQU
EQU
EQU
H'3FFD'
H'3FFC'
H'3FFD' ;Backwards compatability
EQU
EQU
H'3FEF'
_HS_OSC
_XT_OSC
_LP_OSC
EQU
EQU
EQU
LIST
H'3FEE'
H'3FED'
H'3FEC'