• Viernes 29 de Marzo de 2024, 16:52

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - eltyto

Páginas: [1]
1
Microcontroladores / como programar un ds1308 en Pic Basis Pro
« en: Martes 28 de Enero de 2014, 03:51 »
hola amigos, necesitaria una orientacion de que libro bajar o que pagina recurrir para encontrar ayuda sobre la programacion de PBP de un RTC ds1308. lo trabajare desde un Pic y necesito rutinas de lectura/escritura del mismo.
desde ya mil gracias.

2
Robótica / servomotores y PicBasicPro
« en: Jueves 14 de Junio de 2012, 15:30 »
Hola amigos estoy tratando de hacer funcionar un servomotor (el mas pequeño) y no encuentro una instruccion en PicBasicPro para hacerlo funcionar. si alguien sabe de esto AVISEN PLISSS!!
MIL GRACIAS!!!

3
Microcontroladores / ds1307 y memoria serie
« en: Viernes 16 de Septiembre de 2011, 14:28 »
Hola amigos del foro, tengo un PROBLEM, hace tiempo q intento hacer funcionar un ds1307 en assembler y ahora veo q con PPBasic es mas comodo. pero cuando quiero guardar en la memo un valor por ejemplo DIA, no me guarda el contenido del reg sino CUALQUIER cosa. Hay alguna instruccion q desconozco? pongo ejemplo de medicion de temp. q es por donde empece, intentando guardar valores de los REG  de TEMP.
DEFINE I2C_SCLOUT 1     ;para que no necesite resistencia pull-up en SCL
contro CON %10100000    ;contro contiene valor constante %10100000
PinSCL VAR Portc.0      ;pin señal de reloj I2C
PinSDA VAR Portc.1      ;pin de datos I2C
dato VAR word           ;variable para almacenar dato leído
x var byte
chip var portc.3
bocina var portc.4
led var portc.2

trisb=%00000001
DEFINE LCD_DREG PORTB     ; define pines del LCD B4 a B7
DEFINE LCD_DBIT 4         ; empezando desde el Puerto B4 hasta el B7
DEFINE LCD_RSREG PORTB    ;define el puerto B para conectar el bit RS
DEFINE LCD_RSBIT 3        ;este es el puerto B3
DEFINE LCD_EREG PORTB     ;define el puerto B para conectar el bit Enable
DEFINE LCD_EBIT 2         ;este es el puerto B2
DEFINE LCD_LINES 4        ; define un LCD de 4 líneas

DEFINE ADC_BITS 10 ;Fija número de bits del resultado (5,8,10)
DEFINE ADC_CLOCK 3 ;Fije EL CLOCK (rc = 3)
DEFINE ADC_SAMPLEUS 50 ;Fije el tiempo de muestreo en uS.;ADC_SAMPLEUS es el número de microsegundos que el programa espera;entre fijar el canal y comenzar la conversión análoga/digital.
TRISA =%00000011            ;el puerto A.0,1 Y 2 es de entrada
ADCON1 = %00000000    ;el puerto A.0 es conversor los demás Digitales
temp1 VAR word           ;crear variable datos para guardar el resultado
temp2 var word
contador var byte
temporizado var word
memobaja    var byte
memoalta    var byte
memobaja=0
memoalta=100
contador=0
temporizado=1


OPTION_REG = %10000111
pause 500            ;esperar 0,5 seg.
 high bocina
pause 50
 low  bocina
pause 50
 high bocina
pause 50
 low  bocina
pause 50
 high  bocina
pause 50
 low  bocina
pause 50

OPTION_REG = %1000111 ;setea TMR0 configurando y habilita PORTB pullups
INTCON = %10100000 ;hablilita TMR0 interrupción interna
ON INTERRUPT GOTO interrup

inicio:
high   led
gosub tempo 
     
ADCIN 0, temp1                ;leer el canal 0 y guardarlo en datos
temp1=temp1/128

ADCIN 1, temp2
temp2=temp2/128

if portb.0=0 then leermemo

sigo:
LCDOUT $fe,1,    "T1 T2 "
LCDOUT $fe,$c0, DEC temp1       ;desplegar el valor de datos en decimal
LCDOUT $fe,$c0+3, DEC temp2
for x= 1 to 10
PAUSE 30
next

low led
gosub tempo
gosub tempo

goto  inicio

4
Microcontroladores / microcode studio PicBasicPro
« en: Miércoles 17 de Agosto de 2011, 01:07 »
Hola amigos del foro, tengo un programa q desarrolle en microcode.ES GENIAL!!! y muuucho menos engorroso q el ensambrador. Mido entr analog de TEMPERATURAS y las muestro en un LCD. Todo bien pero al intentar GUARDAR esos datos en una memo 24c04  para leerlas mas adelante me retorna CUALQUIER COSA. Dejo reo q es al intentar GUARDAR desde  la VARIABLE temp1 q toma cualquier numero, no se  AYUDENME PLISS.

ADCIN 1, temp2
temp2=temp2/128 ;aca leo temp2


sigo:
LCDOUT $fe,1,    "T1 T2 "
LCDOUT $fe,$c0, DEC temp1       ;desplegar el valor de datos en decimal
LCDOUT $fe,$c0+3, DEC temp2
for x= 1 to 10
PAUSE 30
next



grabando:
LCDOUT $fe,1,"  GRABANDO." ;limpiar y sacar el texto en LCD
for x= 1 to 100
PAUSE 30
next
LCDOUT $fe,$c0,"                 "
I2CWRITE PinSDA,PinSCL,contro,1,["temp1"] ; aca grabo en pos 1 el VALOR de temp1
PAUSE 10 ;pause para la grabación

I2CWRITE PinSDA,PinSCL,contro,2,[33]        ; aca probe un numero
PAUSE 10 ;pause para la grabación
;GOTO  ACA
PAUSE 3000

leermemo:
gosub tempo
LCDOUT $fe,1,"   Lee MEM  " ;limpiar y sacar el texto en LCD
for x=1 to 101
PAUSE 30
next
LCDOUT $fe,$c0+2,"             "

leer:                                ;programa para leer la memoria serial.
low chip
I2CREAD PinSDA,PinSCL,contro,1,[dato]
high chip
LCDOUT,$fe,$c0+4,dec dato                 ;mostrar dato en el LCD
;memobaja=memobaja+1
gosub tempo                           ;esperar 1 seg.

low chip
I2CREAD PinSDA,PinSCL,contro,2,[dato]
high chip
LCDOUT,$fe,$c0+10,dec dato                 ;mostrar dato en el LCD
gosub tempo                           ;esperar 1 seg.
PAUSE 3000
salgo:
LCDOUT $fe,1," CHAUUUU      "
FOR X= 1 TO 100
PAUSE 30
NEXT
goto    inicio

OTRA COSA: Alguien sabe como correr PASO A PASO el programa este (microcode) como lo hacemos en MPLAB?? ABRAZO y GRACIAS!!!

5
Microcontroladores / manual para pic 18fxx
« en: Jueves 17 de Junio de 2010, 21:49 »
Hola amigos la pregunta que quiero hacer es la siguiente: EXISTE ALGUN MANUAL EN "ESPAÑOL" para empezar a trabajar con un PIC serie 18fxx?? por favor necesito info. GRACIAS  a todos!!
tyto

6
Microcontroladores / socorro!!
« en: Jueves 10 de Septiembre de 2009, 23:12 »
Hola amigos, acudo a uds porque tengo un pequeño problemita.
Resulta que estoy trabajando con un pic 16f873 el programa se me agrando bastante y cecesite ir mas alla de la linea Nº 2500. resulta que como tengo que hacer call y goto permanentemente se me va a cualquier lado porque no se como se debe configurar el pclath ni como se hace cuando regresas a la linea por ejemplo 220.
Por favor tirenme alguna idea.
mil gracias y un abrazo para todos!!
tyto

7
Windows / FUENTES DE INTERNET
« en: Viernes 19 de Junio de 2009, 13:50 »
HOLA TENGO UNA NETBOOK Y NECESITO CAMBIAR EL TAMANO DE LA FUENTE PARA INTERNET
ALGUIEN ME PUEDE DECIR COMO LO LOGRO?
DESDE YA MUCHAS GRACIAS
ELTYTO

8
Microcontroladores / pic linea 18xx
« en: Miércoles 8 de Abril de 2009, 20:55 »
Hola, me puse a leer un poco y me encuentro con la sorpresa que la nueva linea de PIC 18xx tiene muchas ventajas con respecto a las lineas anteriores. Ejm frecuencias,prestaciones,se programa en C y sobre todo, algo que nos tenia mal era el paginado de la memoria, ahora es toooda la memoria corrida,(como Motorola) es decir q cuando trabajabamos con tablas y esta caia dentro de 2 paginas teniamos q hacer algunas salvedades.
Pregunta; los pic q son compatibles pin a pin como por ejemplo,  con el 16f873  cual de la linea 18 le corresponde? y donde puedo conseguir programas de aplicaciones para estos?
muchas gracias

9
Microcontroladores / paginado del 16f873
« en: Martes 7 de Octubre de 2008, 00:13 »
Hola les cuento q m problema es cuando trabajo cn programas muyyyy largos y paso las lineas del banco 0
es decir mas alla de dir 2048 el pc salta para cualquier lado PREGUNTA:
Como se hace para saltar a una rutina q esta mas alla de la linea 2500 y como se regresa? hay algo preeestablecido como en el caso de la garbacion en memoria EEPROM ??? desde ya mil gracias
 tito

10
Microcontroladores / pic f873 y su memoria de codigo
« en: Sábado 28 de Junio de 2008, 16:34 »
hola acabo de tener 1 problem, tengo 1 f873 y mi programa tiene 2900 lineas, el tema q cuando llamo o salto a una subrutina que esta mas alla de la linea 2048 el progr salta para cualquier lado, se que esta dividido en pag 0, pag 1, pag 2 y pag 3.
Pag 0 y 1 para el 873 (4k) PREGUNTO... ¿como c hace para ir desde pag 0 a pag 1 dentro del programa? es a traves del PCLAH?? o del FSR?? como c programa esto???
 mil gracias
              tyto

11
Visual Basic para principiantes / Leer Puerto Paralelo Con Vbasic
« en: Lunes 8 de Octubre de 2007, 14:26 »
Hola les cuento que hace un par de años lei en una revista Electronica Y Computadores un art, (en el nº31 creo) un programa que leia el pto paralelo de un pc y lo graficaba en pantalla al valor leido en el pto. Perdi toda la info que tenia cuando mi disco duro virtualmente exploto!! si alguien sabe de donde sacar esa info le agradeceria mucho.
 un abrazo y hasta siempre!
 tyto

12
Microcontroladores / Leer Puerto Paralelo Con B Basic
« en: Martes 2 de Octubre de 2007, 21:59 »
Hola a todos les cuento que hace un tiempo largo lei en una revista llamada "electronica y computadores" de cekit colombia (nº 31 creo) un articulo que leia el pto paralelo de un PC y lo graficaba en B Basic .una maravilla, le agregue controles para variar el tiempo y ventanas para ller en numeros lo que se estaba graficando. mi disco duro practicamente exploto y perdi todo si alguien sabe de esa revista o sobre este articulo POR FAVOR avisarme.
Ya se que el pto paralelo ya no se usa mas ... pero estaba bueno, y como en BBsaic no he podido leer el pto serie ya que me dice que no soy un cliente autorizado x microsoft...
 un abrazo grande a todos y los espero
 titopereyra@yahoo.com

13
Microcontroladores / El Ds1307 Y... Su Funcionamiento
« en: Jueves 27 de Septiembre de 2007, 22:26 »
Hola a todos, no es la primera vez que me acerco a este foro y realmente es lo mas serio que he encontrado.
Yo empece preguntando por el ds1307 (bendito ds!!!) realmente me ha ido mal con el.
Alguno sabe de donde sacar un EJM en ensamblador para que comince a funcionar?? si saben por favor me tira la direccion. Trabajo con el 16f628 y realmente me esta ganando por cansancio.
 desde ya agradecido y a sus ordenes
 tyto

14
Microcontroladores / Memoria Eeprom Del 16f628
« en: Miércoles 26 de Septiembre de 2007, 19:30 »
Hola a todos, les hago una pregunta.. alguno trabajo con la eeprom del 628 (escribirla y leerla?) estoy haciendo que se la pueda simular en el MPLAB
tengo el 7.0 y no me aparece cuando supuestamente tiene que estar grabado el dato. Les mando el codigo del prograna de escritura y de lectura para que alguien lo mire y lo corrija si hay algo mal.
Desde ya muy agradecido y hasta siempre!!

escribir_memo   
      nop
      clrf   tmr0
      bcf   intcon,7
      bsf   status,5
      bcf   status,6
      bsf   eecon1,2
      movlw   55h
      movwf   eecon2
      movlw   0xAA
      movwf   eecon2
      bsf   eecon1,1
      bcf   status,5
espera22   nop
      btfss   pir1,7
      goto   espera22
      bcf   pir1,7
      bsf   status,5
      bcf   status,6      
      bcf   eecon1,2
      bcf   status,5
      bsf   intcon,7      
      retlw   0


;;;;;;;;;;;;;;;
lectura
                bsf   status,5  ;banco memo 0
   movlw   00h  ;dir a leer
   movwf   direccion
   bsf   eecon1,0 ;accedo al control de la eeprom
   movf   dato,w
   movwf   dato1
   bcf   status,5 ;regreso al banco 0
   clrf   dato
   clrf   direccion
   
  chau

15
Microcontroladores / Ds1307
« en: Lunes 27 de Agosto de 2007, 14:15 »
Hola! es mi primer contacto con SOLOCODIGO y como veo el nivel es buenisimo, les cuento que estoy intentando hacer funcionar un RTC ds1307 y al leerlo me devuelve solo "ceros". lo leo en el hiperterminal pero no funciona. se que arranca porque en la dir. 07 que es la de control me reconoce el comando para generar un pulso por segundo. aca les mando mi preog en ensamblador para que me cuenten si le falle en algo y si alguien sabe si el "C" de buider es el mismo que se utiliza para programar PIC. desde ya mil gracias.
;==========================================
;ojo! ya se que tiene un tx y rx el 628 pero yo lo hice ;tambien para q trabaje en un f84
 LIST P=16f628
;lee rtc y transmite por txbuf
;  sdata puerto b,3
;  sclk    puerto b,4
;==========================================
indef   EQU     00h
tmr0   EQU     01h
pcl   EQU     02h
status   EQU     03h
fsr   EQU     04h
ptoa   EQU     05h
ptob   EQU     06h
pclath   EQU     0Ah
intcon   EQU     0Bh
pir1   EQU     0Ch
tmr1l   EQU     0Eh
tmr1h   EQU     0Fh
t1con   EQU     10h
tmr2   EQU     11h
t2con   EQU     12h
ccpr1l   EQU     15h
ccpr1h   EQU     16h
ccp1con   EQU     17h
rcsta   EQU     18h
txreg   EQU     19h
rcreg   EQU     1Ah
cmcom   EQU     1Fh

opcion   EQU     81h
trisa   EQU     85h
trisb   EQU     86h
pie1   EQU     8Ch
pcon   EQU     8Eh
pr2   EQU     92h
txsta   EQU     98h
spbrg   EQU     99h
dato   EQU     9Ah
direccion   EQU     9Bh
eecon1   EQU     9Ch
eecon2   EQU     9Dh
vrcon   EQU     9Fh



rxbuff   equ     21h
txbuf   equ    22h
addr   equ    23h
datao   equ    24h
slave   equ    0xd0

count   equ    26h
eeprom   equ    27h

di      equ 7
do      equ 6
sdata      equ 3
sclk      equ 4

j2          equ 7
j1      equ 6
led      equ 2
clear      equ 1
mande      equ 0
clk      equ 0
cs      equ 2
in      equ 1
start      equ 3
recep      equ    28h
r19      equ    29h
r1a      equ    2ah
trans      equ   2bh
loops      equ   2ch
loops2      equ   2dh
Segundo      equ   2eh
Hora      equ   2fh
Minuto      equ   30h
DiaSemana   equ   31h
Dia      equ   32h
Mes      equ   33h
Año      equ   34h
unidad      equ   35h
decena      equ   36h
centena      equ   37h
r199      equ   38h


valor1   equ   .8
valor2   equ   .104
valor3   equ   .119
reg1   equ   39h
reg2   equ   3ah
reg3   equ   3bh
mkm1   equ   3ch
mkm2   equ   3dh
mkm3   equ   3eh

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
reset
   org      0
   goto   inicio
   org   5

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
retardo
   clrw
   movlw   valor1
   movwf   reg1
tre3
   movlw   valor2
   movwf   reg2
do2   
   movlw   valor3
   movwf   reg3
un1
   decfsz   reg3,1
   goto   un1
   decfsz   reg2,1
   goto   do2   
   decfsz   reg1,1
   goto   tre3   
   return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;RETARDO;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
delay1
   movlw   .166    ;es 166
    movwf   r19
redo   
   nop
   nop
   decfsz   r19
   goto   redo
   retlw   0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ms47   movlw   .7    
    movwf   r199
red   
   nop
   nop
   decfsz   r199
   goto   red
   retlw   0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

bstart
   bsf      status,5
   movlw      b'00000001'
   movwf      trisb
   bcf      status,5

   
   bsf      ptob,sdata
   bsf      ptob,sclk
   nop
   nop
   nop   
   nop
   bcf      ptob,sdata
   call   ms47
   return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
bstop
   bsf      status,5
   movlw      b'00000001'
   movwf      trisb
   bcf      status,5
   bcf      ptob,sclk
   bcf      ptob,sdata
   bsf      ptob,sclk
   nop
   nop
   nop
   nop
   bsf      ptob,sdata
   call   ms47
   return

;;;;;;;ENVIA 1 BYTE COMP HACIA  EL RTC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
escrib   movwf      txbuf
   movlw      .8
   movwf      count
txlp   
   bcf      ptob,sclk
   rlf      txbuf,1
   bcf      ptob,sdata
   btfsc      status,0
   bsf      ptob,sdata
   call   ms47
   bsf      ptob,sclk
   nop
   nop
   nop
   nop
   decfsz      count,1
   goto      txlp
;chequeo bit---ack--------------------------------------------------------------
   bcf      ptob,sclk
   bsf      ptob,sdata
   call   ms47
   bsf      ptob,sclk
   nop
   nop
   nop
   nop
   bsf      status,5
   movlw      b'00001001'
   movwf      trisb
   bcf      status,5
arr   btfsc      ptob,sdata
   goto      arr
   bsf      status,5
   movlw      b'00000001'
   movwf      trisb
   bcf      status,5
   bcf      ptob,sclk   
   return   
   
   
   
   
;;;;;;;RECIBE 1 BYTE COMP DESDE EL RTC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;
leer
   bsf      status,5
   movlw      b'00001001'
   movwf      trisb
   bcf      status,5
   clrf      rxbuff
   movlw      .9
   movwf      count

rxlp   bcf      ptob,sclk
   call   ms47
   bsf      ptob,sclk
   nop
   nop
   nop
   nop
   bcf      status,0
   bsf      status,5
   movlw      b'00001001'
   movwf      trisb
   bcf      status,5
   btfsc      ptob,sdata
   bsf      status,0
   rlf      rxbuff,1
   bsf      status,5
   movlw      b'00000001'
   movwf      trisb
   bcf      status,5
   decfsz      count,1
   goto      rxlp
   bsf      status,5
   movlw      b'00000001'
   movwf      trisb
   bcf      status,5
   retlw      0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
inicio   clrf   ptoa
   bsf   status,5
   bcf   status,6
   movlw   b'00000001'
   movwf   trisb
   movlw   b'10000'
   movwf   trisa


   movlw   b'10000111'   ;desab res y /256
   movwf   opcion

;   movlw   b'00100110'    ;parametros de comunicacion,,1 maestro,0 8bit,1 hab trans,0 asinc,0 x, 1hy speed,buff vacio
;   movwf   txsta ;

;   movlw   .103       ;9600 baudios
;   movwf   spbrg

;   movlw   b'00100000'   ; hab permiso de escrit
;   movwf   pie1

;   movlw   b'00000000'
;   movwf   vrcon

   bcf   status,5
   movlw   b'10010000'
   movwf   intcon
   
;   movlw   b'00000000'
;   movwf   rcsta
;   bsf   rcsta,7 ;spen¡1 hab pto serie

;   movlw   b'00000000'
;   movwf   pir1
   
   movlw   b'00000111'
   movwf   cmcom


;   bsf   pir1,4 ;activo bandera de TRANSM.
;   call   ms47

;   goto   carga_inicial


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;   call   carga_inicial
;   call   escribir

;--------------------------------------------------------------------------------------;
;--------------------SUBRUTINA DE CARGA INICIAL DEL DISPOSITIVO------------------------;
carga_inicial              call   bstart
            movlw   b'11010000'      ; Dirección esclavo DS1307 (Escritura)
            call   escrib      
   
            movlw   b'00000111'      ; Se indica que se va a enviar el dato a la posicion 07h.
            call   escrib      ; que corresponde al control de la señal cuadrada
            movlw   b'00010000'      ; Se mueve b'00010000' que corresponde a señal cuadrada de 1 Hz
            call   escrib
            call   bstop   ; Termina de enviar datos.



   movlw   0x01         ; Segundos inician en 00
   movwf   Segundo         ;
   movlw   0x02         ; Minutos inician en 05
   movwf   Minuto         ;
   clrf   Hora         ; Hora inicia en 00
   movlw   0x03         ; Dia 6 equivale a jueves
   movwf    DiaSemana
   movlw   0x20         ; Dia 26
   movwf    Dia
   movlw   0x08         ; Mes 02 equivale a agost
   movwf    Mes
   movlw   0x07         ; Año 2007
   movwf   Año
   


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;--------------------SUBRUTINA DE ESCRITURA DEL DISPOSITIVO----------------------------;
escribir   
      call   bstart      ; Envía condicion de Inicio
      movlw   b'11010000'      ; Dirección de DS1307 (Escritura)
      call   escrib
      movlw   0x00         ; a los segundos.
      call   escrib
      movf   Segundo,W   ; Pasa los segundos de la memoria del PIC16F84A al  DS1307.
      call   escrib   
   

   
      movf   Minuto,W      ; Y se repite el proceso para el resto.
      call   escrib
      movf   Hora,W
      call   escrib
      movf   DiaSemana,W
      call   escrib
      movf   Dia,W
      call   escrib
      movf   Mes,W
      call   escrib
      movf   Año,W
      call   escrib
      call   bstop   ; Termina de enviar datos.
      call   retardo
            
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ACA PONGO UN LED EN PTOB,7 PARA SABER SI CORRE EL PROGRAMA

leo_rtc      bsf   ptob,7
      call   retardo   
      call   bstart      ; Envía condicion de Inicio
      movlw   b'11010000'      ; Dirección de DS1307  (Escritura)
      call   escrib      
      movlw   0x00         ; a los segundos.
      call   escrib
      call   bstop

      call   bstart         ; Envía condicion de Inicio
      movlw   b'11010001'         ; Dirección de DS1307  (Lectura)
      call   escrib         
      call   leer         ; Lee los segundos.
      movf   rxbuff,w      ; Lo carga en el registro correspondiente.
      movwf   Segundo      ; Lee el resto de los registros utilizando


               ; el mismo procedimiento.
      call   leer
      movf   rxbuff,w
      movwf   Minuto

      call   leer
      movf   rxbuff,w
      movwf   Hora

      call   leer
      movf   rxbuff,w
      movwf   DiaSemana

      call   leer
      movf   rxbuff,w
      movwf   Dia

      call   leer
      movf   rxbuff,w
      movwf   Mes


      call   leer
      movf   rxbuff,w
      movwf   Año
      call   bstop   ; Termina de leer datos.

   movlw   .76   ;l
   call   transmito
   movlw   .69   ;e
   call   transmito
   movlw   .79     ;o
   call   transmito
   movlw   .32
   call   transmito
   

   movlw   .32
   call   transmito
   movlw   .13
   call   transmito
   movlw   .10
   call   transmito

   
      call   retardo
      call   retardo
      bcf   ptob,7

      movf   DiaSemana,w
      movwf   mkm1
      call   decimal
      addlw   .48
      call   transmito
      call   retardo
      
            

      
      movf   Dia,w
      movwf   mkm1
      call   decimal
      addlw   .48
      call   transmito
      call   retardo

      movf   Mes,w
      movwf   mkm1
      call   decimal
      addlw   .48
      call   transmito
      call   retardo

      
      movf   Año,w
      movwf   mkm1
      call   decimal
      addlw   .48
      call   transmito
      call   retardo

      movf   Hora,w
      movwf   mkm1
      call   decimal
      addlw   .48
      call   transmito
      call   retardo

      movf   Minuto,w
      movwf   mkm1
      call   decimal
      addlw   .48
      call   transmito
      call   retardo
   
   
xxsal      movf   Segundo,w
      movwf   mkm1
      call   decimal
      addlw   .48
      call   transmito
      goto   leo_rtc
            
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; RUTINA QUE CONVIERTE BINARIO EN "BCD"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
decimal
   clrf   mkm2
   clrf   mkm3

   movlw   .100
otra   subwf   mkm1,1    ;resta 100 al valor inicial
   btfss   status,0    ;verifica el carry
   goto   sum         ;si es cero deja de restar 100
   incf   mkm3,1       ;si es 1 incr centena
   goto   otra        ;volver a restar
sum   addwf   mkm1,1       ;sumarle 100
   movlw   .10
repite   subwf   mkm1,1      ;restar 10 al valor
   btfss   status,0    ;verifica el carry
   goto   sum1       ;si es cero deja de restar
   incf   mkm2,1      ;si es 1 incr decena
   goto   repite
sum1   addwf   mkm1,1      ;sumarle 10 al valor
   retlw   0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;         
;--------------------------------------------------------------------------------------;
;;;;;;RUTINA PARA ENVIAR DATOS VIA RS232;;;;;;;;;;;;;;;;;;;;;;;;;
;;LA PC RECIBE A 1200 BAUDIOS 8 BITS 1 ARRANQUE Y 1 STOP;;;;;;;;;


transmito
      
   movwf   trans
   movlw   .8      
   movwf   r1a      ;contador de 8 bit a transmitir
   bcf   ptob,2
   call   delay1
xnext
   bcf   ptob,2
   bcf   status,0
   rrf   trans
   btfsc   status,0
   bsf   ptob,2
   call   delay1
   decfsz   r1a
   goto   xnext
   bsf   ptob,2
   call   delay1
   retlw   0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;ESTA RUTINA LA USARIA CON EL PIC 16F628;;;;;;;;;;;
;------------------------------------------------------------------------------------------------------------------------------------------

;transmito   
;   movwf    txreg            ; send data in W
;   bsf    status,5       ; RAM PAGE 1
;   bcf   status,6
;espe   btfss    txsta,1       ; (1) transmission is complete if hi
;         goto    espe
;         bcf    status,5          ; RAM PAGE 0
;   bcf   status,6
;   bcf   pir1,4
;   call   retardo
;   bsf   intcon,7
;         retfie

;;;;;;;;;;;;;;;;;;;;;;;;
   end

titopereyra@yahoo.com

Páginas: [1]