@ Device PIC16F628A 'Fuses para el 628a
@ Device xt_Osc 'se usa oscilador externo
@ Device WDT_On ' Se usa la bandera del perro guardian
@ Device Pwrt_off ' se deshabilita lo del encendido
@ Device Mclr_On 'Se habilita el Hard-Reset del micro
@ Device BOD_Off 'se deshabilita La funcion BOD (ver ficha de datos)
@ Device LVP_Off 'Se deshabilita la programacion de bajo Voltaje
@ Device CPD_On 'Se HAbilita la proteccion de lectura del Eeprom
@ Device Protect_On 'Se Habilira la proteccion de lectura del Codigo del micro
data @0,$03,$6B ' Al grabar el pic se establece la frecuencia 87.5 en la eeprom
Option_Reg.7=0 ' se habilitan los pullups del puerto B el bit 7, necesario para el vero
cmcon=7 ' se define el puerto A Todo como digital
TrisA=%00000 ' se define el puerta A como salidas
TrisB=%00000011 ' se define el puerto B como salidas del bit 2 al 7 y 0-1 como entradas
define Osc 4 ' se define la velocidad del micro
DEFINE LCD_DReg PortB '------->
DEFINE LCD_DBit 4
DEFINE LCD_RSReg PortB
DEFINE LCD_RSBit 2 'Definiciones para el LCD
DEFINE LCD_EReg PortB
DEFINE LCD_EBit 3
DEFINE Shift_PauseuS 2'---------<
But0 var portB.0 ' se Asigna el puerto B0 a una variable
But1 var portB.1 ' se Asigna el puerto B1 a una variable
Tune var word ' Variable de la frecuencia
CE var PortA.3 'Puerto donde esta conectado el pin CE del LM7001 y se asigna varible
CL var PortA.2 'Puerto donde esta conectado el pin CL del LM7001 y se asigna varible
DI var PortA.1 'Puerto donde esta conectado el pin DI del LM7001 y se asigna varible
Dat_1x Var word ' Variable temporal del word a enviar por el puerto DI(PortA.1)
Cont_1x var byte ' Variable de conteo
D_Bit_1x var byte 'Variable temporal del Bit a enviar por el puerto DI(PortA.1)
'Tune=Frecuencia:Gusub Sintoniza
Cont Var Byte ' contador de la pantalla
Disp var Byte 'Variable de contador de pantalla a moistrar
Disp1 Var Byte 'Variable de inicio de contador de pantalla
PortA=0 'inicializa el valor del puerto A
Lcdout $FE,$01 'Borra PAntalla
pause 100 'Estabiliza micro
Low CE:low cl:low DI ' pone en estado bajo los pines CE CL DI del Lm7001
Disp=0 'la primer pantalla a mostrar "Bienvenido"
read 0,tune.byte1 'Asigna el byte alto de la utima frecuencia guardada en la eeprom
read 1,tune.byte0 'Asigna el byte bajo de la utima frecuencia guardada en la eeprom
gosub Sintoniza ' Va a la rutina sintonizar para enviar los datos al lm7001 de la
'frecuencia que esta en la variable tune
Main: 'rutina principal
clearwdt ' borra bandera del perro guardian (watchdog)
Gosub Pantalla ' Va a rutina para actualizar la pantalla
goto Main 'bucle de rutina principal
end
Sintoniza: 'Rutina de sintonizacion no me pregunten como la saque que no me acuerdo jajaja
' y me da fiaca acordarme pero si entra aqui envia la frecuencia que este en la variable Tune
DAt_1x=tune.byte0:gosub W_protocolo
DAt_1X=tune.byte1:gosub W_protocolo
DAt_1x=$80: gosub W_protocolo
Low CE:low DI:Low CL
write 0,tune.byte1
write 1,tune.byte0
return
W_Protocolo: 'Rutina de envio de trama por el puerto
For cont_1x=0 to 7
d_bit_1x= DAt_1x & dcd cont_1x
if d_bit_1x <>0 then D_bit_1x=1
if not ce then high ce
DI=d_bit_1x :pauseus 3
high Cl: pauseus 3: low CL
next cont_1x
return
Pantalla 'Desplega la pantalla enforma de banner esta rutina es pura crema o glamur...
'pueden cambiarla como mejor les agrade...
FOR cont = 208 TO 176 step -1
Lcdout $FE,$80,"RADIO ",dec tune/10,".",dec tune//10 ," MHz "
select case Disp
Case 0
LCDOUT $FE,cont," BIENVENIDO "
Case 1
LCDOUT $FE,cont," SINTONIZADO "
disp1=2
Case 2
LCDOUT $FE,cont," EMITIENDO... "
Case 3
LCDOUT $FE,cont," MEXICO/CHILE "
Case 4
LCDOUT $FE,cont," TERCEL/LUBECK "
end Select
pause 500 'hace una pausa para desplegar el banner y funciona tambien como antirrebote del
' los pulsadores
if not but0 then ' si el boton arriba se presiona....
Tune=Tune+1 'incrementa la variable tune
if tune>1081 then tune=1081 ' si pasa de la frecuencia 1081 se estanca en esa frecuencia...
gosub Sintoniza ' va a rutina de sintonizacion y manda al 7001 la frecuencia en la variable tune
disp1=1 ' la primer pantalla a desplegar es la de sintonizado
endif
if not but1 then ' si el boton arriba se presiona....
tune=Tune-1 'decrementa la variable tune
if tune <875 then tune=875 ' si pasa de la frecuencia 875 se estanca en esa frecuencia...
gosub Sintoniza ' va a rutina de sintonizacion y manda al 7001 la frecuencia en la variable tune
disp1=1 ' la primer pantalla a desplegar es la de sintonizado
endif
NEXT cont
Disp=disp+1 'incrementa la pantalla a mostrar
if disp>4 then disp=disp1 ' si la pantalla a mostrar es mayor que 4 se va a la primera a mostrar
Return