Define CONF_WORD = 0x2f10
Define CONF_WORD_2 = 0x3ffc
Define CLOCK_FREQUENCY = 8
'***********VERSION SIMULADOR Y HARD*************
'PIC16F88
'CONEXION POR RS232 AL HYPERTERMINAL
'USO DEL MODULO USART INTERNO DEL PIC
'programar el hyperterminal del Windows:
'Bits por segundo: 9600
'Bits de datos: 8
'Paridad: Ninguno
'Bit de parada: 1
'Control de flujo: Ninguno
'***********************************************
'-----------------------------------------------
Dim i As Byte
i = 53 'i = 53 = "5"
'-----------------------------------------------
AllDigital 'Los pin seran I/O digitales
CMCON = 0x07 'comparador a off
OSCCON = 0x7e 'set intrc To 8mhz, se usara reloj interno a 8Mhz
TRISA = %00000000 'SALIDAS
TRISB = %00000000 'SALIDAS
TRISB.2 = 1 'ENTRADA RX, POR HARD, MODULO USART
'TRISB.5 = 0 'SALIDA TX, POR HARD, MODULO USART
'TRISA.2 = 0 'SALIDA
'TRISA.1 = 0 'SALIDA
'-----------------------------------------------
Hseropen 9600 '_CONFIGURA EL MODULO USART (HARD)
'________________Exact baud rate: 9615, Baud rate error: 15 (.156%)
'________________Baud rate error <= 2% = ok.
PIE1.RCIE = 1 'Activa la interrupcion de la USART en modo rx
INTCON.PEIE = 1 'bit de habilitacion de interrupciones de perifericos
Enable '_INTCON.GIE habilita todas las interrupciones globales y
'_________redirecciona el vector de interrupcion a "On Interrupt".
'-----------------------------------------------
main:
If RCSTA.OERR = 1 Then '_Desbloquea el modulo USART en Rx en el caso
'____________________________de superarse su bufer de entrada.
RCSTA.OERR = 0
RCSTA.CREN = 0
RCSTA.CREN = 1
Endif
If i > "5" Then '_"5" REPRESENTACION GRAFICA, ES CAMBIADO
'_____________________POR EL COMPILADOR A SU CODIGO NUMERICO ASII.
PORTA.1 = 1
PORTA.2 = 0
i = "5" 'Impide que se reinicie la rutina
Endif
If i < "5" Then
PORTA.2 = 1
PORTA.1 = 0
i = "5" 'Impide que se reinicie la rutina
Endif
Goto main
End
On Interrupt 'Comienza las rutinas de las interrupciones (detiene las interrupcones)
Save System 'Guarda los valores del sistema
If PIR1.RCIF = 1 Then '_comprueba que está la interrupcion activa, si solo
'___________________________se esta usando una interrupcion es redundante, lo
'___________________________pongo por costumbre.
Hserin i 'lee el caracter del bufer (fifo) del modulo usart y lo almacena en i
Hserout i 'devuelve el caracter recibido
Endif
PIR1.RCIF = 0 '__ Borra el flag de interrupcion de la usart, en realidad
'____________________ Hserin ya borra este flag, por lo que es redundante el
'____________________ ponerlo, lo pongo por costumbre.
Resume 'habilita las interrupciones
End