ds1302 ile saat

Başlatan transistor, 19 Ocak 2006, 21:10:53

transistor

arkadaşlar sitede ve nette çok aradım bişeyler buldum fakat çoğunluk C veya PBP ile yazılmıştı.
lütfen igili bir arkadaş asm de ds1302 ile saati kurup okumayla ilgili rutin/rutinlerini açıklayıcı bir dille bizimle paylaşırmı.

saygılarımla.
Herşey Vatan İçin.

transistor

asm kullanan arkadaşlar nerdesiniz.
yardımlarınızı bekliyorum.
Herşey Vatan İçin.

aYe

pic18 asm kodu olur mu?
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

transistor

assembly kullanan arkadaşlar bu konu bence bi çözüme kavuşturulmalı diye düşünüyorum.
çoğu arkadaş bu konuda takılıyordur herhalde.
ilgili arkadaşları bekliyorum.
Herşey Vatan İçin.

aYe

Selam,

;*******************************
; write byte
WRTBYTE:
        BCF 	SIO_TRIS	
        MOVWF	RTC_TEMP,A
        MOVLW	.8
        MOVWF	WRITE_LOOP,A
WRTBYTE1
        RRCF 	RTC_TEMP,F,A	
        BNC	WRTBYTE2     	
        BSF 	SIO
        GOTO 	WRTBYTE3
WRTBYTE2
        BCF 	SIO
WRTBYTE3
        NOP
        BSF 	SCLK
        NOP
        DCFSNZ	WRITE_LOOP,F,A
        GOTO	WRTBYTE4
        NOP
        BCF 	SCLK
        NOP
        GOTO 	WRTBYTE1     
WRTBYTE4
        BCF 	SCLK
        BSF 	SIO_TRIS  ;INPUT
        BSF 	SIO	; PULL UP
        RETURN
;*******************************
; read byte
        BSF 	SIO_TRIS  ;INPUT
        BSF 	SIO	; PULL UP
RDBYTE:  
        BSF 	SIO ;
        CLRF	RTC_TEMP
        MOVLW	.8
        MOVWF	READ_LOOP,A      
RDBYTE1: 
        BCF	STATUS,C,A         
        BTFSC	SIO    
        BSF	STATUS,C,A  
        RRCF 	RTC_TEMP,F,A          
        NOP
        BSF 	SCLK     
        NOP
        BCF 	SCLK
        NOP
        DECFSZ 	READ_LOOP,F,A        
        GOTO	RDBYTE1
        RETURN
;******************************


ds1302'ye 1 byte yazma ve okuma rutinleri başka bir entegreye yazdigimdan geri kalan kodu alakasız olduğu için eklemedim. Biraz da datasheet'lere bakarsan sanırım bu başlangıç için fazlasıyla yeterlidir.

İyi çalışmalar...
Dünyada iki şey sonsuzdur. İnsanın aptallığı ve evren. Ancak ikincisinden o kadar emin değilim... (Einstein)

transistor

asm kullanan arkadaşlar,
ds1302 kullanarak tarih ve saat bigisini piclerinde değerlendirmek isteyenler için çalışan rutinleri gururla sunuyorum.16f877--->ds1302
pic ds1302 bağlantısı için;
; PC4 - CLOCK to calendar clock
	#define SCLK PORTC,4
; PC5 - I/O to calendar clock.
	#define CLKDATA PORTC,5
; PC2 - RST to calendar clock.
	#define CLKRST PORTC,2
;**********************************
kullanılan registryler;
cblock h'0020'
TIMER1,TIMER2,TIMER3,COUNT4,SECOND,MINUTE,HOUR,DATE,MONTH,DAY,YEAR
endc
;**********************************
; Write calendar clock
;
WCLOCK  BCF     SCLK            ;negate clock line
        NOP
        NOP
        NOP
        NOP
        BCF     CLKDATA
        BSF     CLKRST          ;negate RST
        BSF     STATUS,RP0      ;I/O dataq line set to output
        BCF     TRISC,5
        BCF     STATUS,RP0
        MOVLW   0x8E            ;write control register
        CALL    WBYTE
        MOVLW   0x00            ;turn off Write Protect in rtc
        CALL    WBYTE
        MOVLW   7
        MOVWF   TIMER3
        MOVLW   0x80            ;rtc register address for `SECOND'
        MOVWF   COUNT4
        MOVLW   SECOND
        MOVWF   FSR
WC      BCF     CLKRST          ;assert RST
        BCF     SCLK            ;negate clock
        NOP
        NOP
        NOP
        NOP
        BSF     CLKRST          ;negate RST
        MOVF    COUNT4,W
        CALL    WBYTE
        MOVF    INDF,W
        CALL    WBYTE
        INCF    FSR
        INCF    COUNT4
        INCF    COUNT4
        DECFSZ  TIMER3
        GOTO    WC
        BCF     CLKRST          ;assert RST
        RETURN
;
; Read calendar clock
;
RCLOCK  BCF     SCLK            ;negate clock
        NOP
        NOP
        NOP
        NOP
        BCF     CLKDATA         ;negate I/O
        BSF     CLKRST          ;negate RST
        BSF     STATUS,RP0      ;I/O dataq line set to output
        BCF     TRISC,5
        BCF     STATUS,RP0
        MOVLW   0xBF            ;burst read clock registers
        CALL    WBYTE
        BSF     STATUS,RP0      ;I/O dataq line set to input
        BSF     TRISC,5
        BCF     STATUS,RP0
        MOVLW   SECOND
        MOVWF   FSR
        CALL    RBYTE
        CALL    RBYTE
        CALL    RBYTE
        CALL    RBYTE
        CALL    RBYTE
        CALL    RBYTE
        CALL    RBYTE
        BCF     CLKRST          ;assert RST
        RETURN
WBYTE   MOVWF   TIMER2
        MOVLW   8
        MOVWF   TIMER1
WBIT    BCF     SCLK
        BTFSS   TIMER2,0
        BCF     CLKDATA
        BTFSC   TIMER2,0
        BSF     CLKDATA
        NOP
        NOP                     ;data to clock setup
        NOP
        BSF     SCLK
        RRF     TIMER2
        DECFSZ  TIMER1
        GOTO    WBIT
        RETURN
RBYTE   MOVLW   8
        MOVWF   TIMER1
RBIT    BCF     SCLK
        NOP
        NOP                     ;clock to data delay
        RRF     INDF
        BCF     INDF,7
        BTFSC   CLKDATA
        BSF     INDF,7
        BSF     SCLK
        NOP
        NOP
        DECFSZ  TIMER1
        GOTO    RBIT
        INCF    FSR
        RETURN

bu rutinleri kullanarak pic ile ds1302 rtc yi haberleştirip tarih saat bilgisini girip okuyabilirsiniz.
Herşey Vatan İçin.

transistor

sevgili arkadaşlar;
yine ds1302 rtc kullanarak projelerinde lcd ekranda tarih ve saati göstermek isteyenler için,
SWAPF	DATE,W
	ANDLW	B'00001111'
	ADDLW	0X30		; BCD-HEXD
	CALL	GON_KAR
	MOVFW	DATE
	ANDLW	B'00001111'
	ADDLW	0X30		; BCD-HEXD
	CALL	GON_KAR
	MOVLW	'-'
	CALL	GON_KAR
	SWAPF	MONTH,W
	ANDLW	B'00001111'
	ADDLW	0X30		; BCD-HEXD
	CALL	GON_KAR
	MOVFW	MONTH
	ANDLW	B'00001111'
	ADDLW	0X30		; BCD-HEXD
	CALL	GON_KAR
	MOVLW	'-'
	CALL	GON_KAR
	SWAPF	YEAR,W
	ANDLW	B'00001111'
	ADDLW	0X30		; BCD-HEXD
	CALL	GON_KAR
	MOVFW	YEAR
	ANDLW	B'00001111'
	ADDLW	0X30		; BCD-HEXD
	CALL	GON_KAR
	MOVLW	' '
	CALL	GON_KAR
	SWAPF	HOUR,W
	ANDLW	B'00001111'
	ADDLW	0X30		; BCD-HEXD
	CALL	GON_KAR
	MOVFW	HOUR
	ANDLW	B'00001111'
	ADDLW	0X30		; BCD-HEXD
	CALL	GON_KAR
	MOVLW	':'
	CALL	GON_KAR
	SWAPF	MINUTE,W
	ANDLW	B'00001111'
	ADDLW	0X30		; BCD-HEXD
	CALL	GON_KAR
	MOVFW	MINUTE
	ANDLW	B'00001111'
	ADDLW	0X30		; BCD-HEXD
	CALL	GON_KAR
	MOVLW	':'
	CALL	GON_KAR
	SWAPF	SECOND,W
	ANDLW	B'00001111'
	ADDLW	0X30		; BCD-HEXD
	CALL	GON_KAR
	MOVFW	SECOND
	ANDLW	B'00001111'
	ADDLW	0X30		; BCD-HEXD
	CALL	GON_KAR

bu kodlar yardımıyla tarih ve saat bilgisini lcd ekranlarında görebilirler.

buradan tüm arkadaşlara sesleniyorum.
usa bugün marsa jupitere giderken bizler maalesef hala yerimizde saymaya devam ediyoruz. ben şahsen bu duruma çok üzülüyorum. bence yapmamız gereken el ele vermek ve daima ileriye bakmak. o yüzden lütfen bilgilerinizi bilmeyenlerle paylaşın. burda kimileri buna hazırcılık diyebilir ama paylaşmakla hazırcılığı karıştırmayın.

saygılarımla....
Herşey Vatan İçin.