Picproje Elektronik Sitesi

DERLEYİCİLER => PIC Assembly => Konuyu başlatan: Mujdat117 - 24 Haziran 2018, 23:03:58

Başlık: DS1302 Saat bilgisi okuma sorunu
Gönderen: Mujdat117 - 24 Haziran 2018, 23:03:58
Herkese selamlar,

DS1302 RTC entegresi kullanarak saat projesi yapmaya çalışıyorum. Simülasyonda (presto) gayet güzel çalışmasına rağmen Boart üzerine kurduğum devrede hatalı değerler okuyorum.  Mikro denetleyici olarak 16f628a ve yazılım dili olarak ASM kullandım. Hatayı düzeltmek adına RTC entegre'sinin SCL ve SDA bacaklarına dirençler bağladım kodlamada düzenleme iyileştirmeler yaptım fakat sonuç alamadım. Kodlamada hata olmadığını test etmek için RTC'nin  RAM adresine adımı yazdırıp bir buton yardımıyla okudum ve okunan veriyi uart üzerinden yazdırdım. RAM'dan okuma esnasında ne simülasyonda bede boart üzerinde kurduğum devrede bir sorunla karşılaşmadım. Değer gayet güzel RTC'nin RAM belleğine yazılıp okuyabilir ve uart üzerinden PC gönderiyor. Aynı kod RTC belleğinden okunurken simülasyonda sorunsuz fakat Boart üzerinde kurduğum devrede hatalı sonuçlar alıyorum.

Kaynak Kodları ve simülasyon dosyalarını aşağıdaki linkten paylaşıyorum. Tecrübeli arkadaşlardan yardımlarını bekliyorum.
https://1drv.ms/f/s!ArtFjbpJGumG6zUyayVE-vGEKhSY (https://1drv.ms/f/s!ArtFjbpJGumG6zUyayVE-vGEKhSY)

Ana kaynak kodları:
; LCD MAKRO UYGULAMASI
LIST P=16F628A
#INCLUDE "P16F628A.INC"
TITLE "LCD_MAKRO"
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF  & _INTOSC_OSC_NOCLKOUT & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF ; _XT_OSC & & _DATA_CP_OFF _INTOSC_OSC_NOCLKOUT;b'11110100111000';/_XT_OSC _INTOSC_OSC_NOCLKOUT & ; b'11110100111000';
ERRORLEVEL -205

#include "KOSUL.inc" ;Kar??la?t?rma yapabilmek için makro dosyas? yükleniyor.
#include "picConf.inc" ;P?C DONANIM AYARLARINI YÜKLEND??? DOSYA
#include "UART_MACRO.inc";
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;   DS1302  ADRES TANIMLARI
;-------------------------------------------------------------------------------
#DEFINE DS1302_RTC_W H'BE'   ;SAAT MODULÜ CONTROL ADRES?(HIGH ADRES?)/OYAZMA MODU
#DEFINE DS1302_RTC_R H'BF'   ;SAAT MODULÜ CONTROL ADRES?(HIGH ADRES?)/OKUMA MODU 
   
#DEFINE DS1302_RAM_W H'FE'  ;RAM CONTROL ADRES?(HIGH ADRES?)/YAZMA MODU
#DEFINE DS1302_RAM_R H'FF'  ;RAM CONTROL ADRES?(HIGH ADRES?)/OKUMA MODU
; RTC ADRESLER?   
#DEFINE DS1302_SANIYE_W H'80'  ;
#DEFINE DS1302_SANIYE_R H'81'  ;
#DEFINE DS1302_DAKIKA_W H'82'  ;
#DEFINE DS1302_DAKIKA_R H'83'  ;
#DEFINE DS1302_SAAT_W H'84'  ;
#DEFINE DS1302_SAAT_R H'85'  ;
   
#DEFINE DS1302_GUN_W H'86'  ;TAR?H?N GÜN SAYISINI YAZAR( 1 ?LE 31 ?)
#DEFINE DS1302_GUN_R H'87'  ;TAR?H?N GÜN SAYISINI OKUR( 1 ?LE 31 ?)
#DEFINE DS1302_AY_W H'88'  ;TAR?H?N AY SAYISINI YAZAR( 1 ?LE 12 S?)
#DEFINE DS1302_AY_R H'89'  ;TAR?H?N AY SAYISINI OKU( 1 ?LE 12 S?)
#DEFINE DS1302_YIL_W H'8C'  ;TAR?H?N YIL SAYISINI YAZAR
#DEFINE DS1302_YIL_R H'8D'  ;TAR?H?N YIL SAYISINI OKUR

#DEFINE DS1302_KORUMA_W H'8E'  ;YAZMA KORUMA B?T? DE?ER YAZMA
#DEFINE DS1302_KORUMA_R H'8F'  ;YAZMA KORUMA B?T? DE?ER OKUMA

#DEFINE DS1302_ENERJI_W H'90'  ;?ARZ AYARLARI YAZ
#DEFINE DS1302_ENERJI_R H'91'  ;?ARZ AYARLARI OKU

#DEFINE DS1302_HGUN_R H'8B'  ;HAFTANIN HANG? GÜNÜ OLDUGUNU OKUR (1-PTS/7-PAZ)
#DEFINE DS1302_HGUN_W H'8A'  ;HAFTANIN HANG? GÜNÜ OLDUGUNU YAZAR (1-PTS/7-PAZ)
#DEFINE BIT_SAYISI 8
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;     I2C P?N VE PORT TANIMLARI
;------------------------------------------------------------------------------
#DEFINE PIC_I2C_PORT_SCL PORTA;I2C ?LET???M ?Ç?N KULLANILACAK PORT
#DEFINE PIC_I2C_PORT_SDA PORTA;I2C ?LET???M ?Ç?N KULLANILACAK PORT AYARLAMA
#DEFINE PIC_I2C_PORT_EN PORTA;I2CENTEGRE SEÇME KULLANILACAK PORT AYARLAMA
#DEFINE PIC_I2C_TRIS_SDA TRISA;I2C ?LET???M ?Ç?N KULLANILACAK PORT YÖNLEND?RME
#DEFINE PIC_I2C_TRIS_SCL TRISA;I2C CLK S?NYAK? KULLANILACAK PORT YÖNLEND?RME
#DEFINE PIC_I2C_TRIS_EN TRISA;I2C ENTEGRE SEÇME KULLANILACAK PORT YÖNLEND?RME
#DEFINE PIC_I2C_SCL_PIN 0;CLOK S?NYAL? GÖNDER?LERCEK PIN
#DEFINE PIC_I2C_EN_PIN 2;ENABLE S?NYAL? GÖNDER?LERCEK PIN
#DEFINE PIC_I2C_SDA_PIN 1;DATA GÖNDER?LECEK PIN
#DEFINE I2C_SCL PIC_I2C_PORT_SCL,PIC_I2C_SCL_PIN;CLOK S?NYAL?
#DEFINE I2C_SDA PIC_I2C_PORT_SDA,PIC_I2C_SDA_PIN;DATA GÖNDER?M P?N?
#DEFINE I2C_EN PIC_I2C_PORT_EN,PIC_I2C_EN_PIN;DATA GÖNDER?M P?N?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; PIN TANIMLAMALARI
;-----------------------------------------------------------------------------
#DEFINE LED PORTA,3
#DEFINE BUTON PORTA,5
#DEFINE BUTON1 PORTA,6
#DEFINE BUTON2 PORTA,7
;-------------------------------------------------------------------------------
;***********************PÝN TANIMLAMALARI SONU**********************
TOGGLE   MACRO   TPORT,TBIT
   MOVLW    1<<TBIT
   XORWF    TPORT,F
   ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; DEGI?KEN TANIMLAMALARI
;-----------------------------------------------------------
CBLOCK H'20'
;;;;;;;;;;;;;;;;;;;;;;;;;;CONFIG;;;;;;;;;;;;;;;;;;;;;;;;;;;
RW_IND :1 ;RES 1
EELEN_IND :1 ;RES 1
EEIND_1 :1 ;RES 1
COUND_1 :1 ;RES 1
COUND_2 :1 ;RES 1
ADRH :1 ;RES 1
S_PCH :1 ;RES 1 ;PROGRAM COUNTER IN YUKSEK B?TLER? YEDEKLEND?
ROM_ADR_H :1 ;RES 1 ;P?C ?N ROM ADRES? YUKSEK B?T? TAK?B? ?Ç?N KULLANILACAK
ROM_ADR_L :1 ;RES 1;P?C ?N ROM ADRES? DÜ?ÜK B?T? TAK?B? ?Ç?N KULLANILACAK
CW_DATA :1 ;RES 1;W REGEST?R?S? YEDE??
LOOPCNT :1; RES 1;GEC?KME RUTUN? DE???KEN?
;;;;;;;;;;;;;;;;;;;;;;;;;;LCD;;;;;;;;;;;;;;;;;;;;;;;;;;;
W_DATA :1; RES 1;ÇEK?RDEK YAZMA PROSÖDÜRÜ ?Ç?N KULLANILAN DE???KEN
LCDCMD :1; RES 1;KARAKTER YÜKLERKEN CGRAM ADRS? ?Ç?N KULLANILAN DE???KEN
LCDIND :1; RES 1 ;ET?KET YADRIRILIRKEN SAYIYI TUTAR.
LCD_CNT :1; RES 1;LCD ?Ç?N GEREKL? GEC?KME SA?LAR
LCD_ADR :1;
;;;;;;;;;;;;;;;;;;;;;;;;;;DS1302;;;;;;;;;;;;;;;;;;;;;;;;;;;
SPI_I2C_DATA :1 ;OKUNANA YAZILAN VER?LER
SPI_I2C_IND :1 ;KULLANILAN SAYAC ALINANA/GÖNDER?LEN VER?
SPI_I2C_CND :1 ;GÖNDER?LEN BYTIN B?TLER?N? SAYAN DE???KEN.
RTC_DS_DEGISKEN :1 ;
RTC_DS_ADR  :1;
;;;;;;;;;;;;;;;;;;;;;;;;;;D??ER;;;;;;;;;;;;;;;;;;;;;;;;;;;
D1 :1
D2 :1
DIGIT_1 :1
DIGIT_2 :1
DIGIT_3 :1
DIGIT_4 :1
W_TEMP :1
S_TEMP :1
RTEMP :1
LED_DELAY :1
DS_OKUNAN :1
ENDC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; P?C16F628A ANA KODLARI
;______________________________________________________________________________
ORG 0 ;ba?lang?çvektrötünü ayarla
goto PIC_AYAR;ANA_PROGRAM
org 4;reset vektörünü ayarla
goto KESME_VEKTORU
PIC_AYAR
; RS232.CONFIG 9600,1,1,1

      BANKSEL TRISA;BSF     STATUS, RP0         ; Bank 1
        MOVLF B'00000010',TRISB               ; Set all of PORTB to outputs
MOVLW b'00010000'
        MOVWF   TRISA               ; Set all of PORTA to outputs
MOVLW B'00010111'
MOVWF OPTION_REG ; bCf OPTION_REG,7 ;PORTLARIN PULL-UP DÝRENÇLERÝ AKTÝF
MOVLW B'00100000' ;EEIE CMIE RCIE TXIE ? CCP1IE TMR2IE TMR1IE
MOVWF PIE1 ;UART ALMA KESMES? AKT?F
MOVLF B'00100100',TXSTA   ;ASYNCRON MODU, HIGHT SPIT
MOVLF .25,SPBRG;9600 BUT HIZINDA ?LET???M AYARLANDI.
BSF INTCON,PEIE ;ÇEV0RESEL KESMELERE ÝZÝN VER
BSF PIE1,RCIE ;UART ALMA KESMESÝ KESME AÇIK
BCF PIE1,TXIE ;UART GÖNDERME KESMESÝ KESME AÇIK
banksel PORTB ;BANK 0 GEÇ
MOVLF B'10110000',RCSTA;B'10010000',RCSTA   ;UART AKTÝF,
MOVLF 0XFF,PORTB
MOVLW H'07' ;Analog ç?k??lar? dijital ç?k?? olarak ayarla
MOVWF CMCON ;ayar? yükle
; LCD.SETUP;
; LCD.CONFIG FONT_5X7 & LCD_2X16 & LCD_4BIT & KURSOR_OFF   & KAYMA_OFF & KARARTMA_OFF & LCD_ON & KURSOR_ARTIR
; DS1302.SETUP;CALL I2C_PORT_KUR;
; LCD.LOADCGRM 0,.64,K1;FONTTAB1 DOSYASINDAN K1 ET?KET?N? LCD CGRAM 0 ADRES?NDEN ?T?BAREN 64 B?T OLARAK YAZ
; LCD.ADRESL .1,.0;1.SATIR,1.ETKETE G?T
CLRF DIGIT_1
CLRF DIGIT_2
CLRF DIGIT_3
CLRF DIGIT_4
;RAMCLR DIGIT_1,DIGIT_4
MOVLF .2,LED_DELAY
CALL DS1302_ROM_YAZ
;************************Ana Dnögü******************************
ANA_PROGRAM
CLRWDT
;LCD.BUYUKFONTL .1,.0,SAYDIR;KR_IND
; CALL SAAT_YAZ
CALL UART_YAZ
;BITCC BUTON,SONRAKI_KARAKTER
BUTON_TIKLA BUTON,DS1302_ROM_OKU;DS1302_YIL_YAZ;BUTON,SONRAKI_KARAKTER
GOTO ANA_PROGRAM
;***************************************************************
UART_YAZ:
;LCD.ADRESL .1,.0
SAAT:
    CALL    DS1302_SAAT_OKU
    CALL    DECTOHEX
    MOVWF   DS_OKUNAN
    ANDLW   0X0F
    ADDLW   0X30
    MOVWF   RTEMP
     RS232.SEND RTEMP
;     LCD.DATA RTEMP;

    SWAPF   DS_OKUNAN,W
;    CALL    DECTOHEX
    ANDLW   0X0F
    ADDLW   0X30
    MOVWF   RTEMP
     RS232.SEND RTEMP
;    LCD.DATA RTEMP;

DAKIKA:
;    LCD.DATAL ":";
    RS232.WRITEL    ":"
    CALL    DS1302_DAKIKA_OKU
     MOVWF   DS_OKUNAN
     CALL    DECTOHEX
    ANDLW   0X0F
    ADDLW   0X30
    MOVWF   RTEMP
     RS232.SEND RTEMP
;     LCD.DATA RTEMP;

    SWAPF   DS_OKUNAN,W
 ;   CALL    DECTOHEX
    ANDLW   0X0F
    ADDLW   0X30
    MOVWF   RTEMP
     RS232.SEND RTEMP
;    LCD.DATA RTEMP;
 

SANIYE:
;    LCD.DATAL ":";
    RS232.WRITEL    ":"
    CALL    DS1302_SANIYE_OKU
    MOVWF   DS_OKUNAN
;   CALL    DECTOHEX
    ANDLW   0X0F
    ADDLW   0X30
    MOVWF   RTEMP
     RS232.SEND RTEMP
 ;   LCD.DATA RTEMP;

    SWAPF   DS_OKUNAN,W
 ;   CALL    DECTOHEX
    ANDLW   0X0F
    ADDLW   0X30
    MOVWF   RTEMP
     RS232.SEND RTEMP
;    LCD.DATA RTEMP;
GUN:   
;    LCD.ADRESL .2,.0
    RS232.WRITEL    "-"
    CALL    DS1302_GUN_OKU
    MOVWF   DS_OKUNAN
 ;   CALL    DECTOHEX
    ANDLW   0X0F
    ADDLW   0X30
    MOVWF   RTEMP
     RS232.SEND RTEMP
;     LCD.DATA RTEMP;

    SWAPF   DS_OKUNAN,W
 ;   CALL    DECTOHEX
    ANDLW   0X0F
    ADDLW   0X30
    MOVWF   RTEMP
     RS232.SEND RTEMP
;    LCD.DATA RTEMP;

AY:
;    LCD.DATAL "/";
    RS232.WRITEL    "/"
    CALL    DS1302_AY_OKU
    MOVWF   DS_OKUNAN
    CALL    DECTOHEX
    ANDLW   0X0F
    ADDLW   0X30
    MOVWF   RTEMP
     RS232.SEND RTEMP
 ;   LCD.DATA RTEMP;

    SWAPF   DS_OKUNAN,W
 ;   CALL    DECTOHEX
    ANDLW   0X0F
    ADDLW   0X30
    MOVWF   RTEMP
     RS232.SEND RTEMP
;    LCD.DATA RTEMP;

YIL:
;    LCD.DATAL "/";
    RS232.WRITEL    "/"
    CALL    DS1302_YIL_OKU
    MOVWF   DS_OKUNAN
    CALL    DECTOHEX
    ANDLW   0X0F
    ADDLW   0X30
    MOVWF   RTEMP
     RS232.SEND RTEMP
;    LCD.DATA RTEMP;
    SWAPF   DS_OKUNAN,W
    CALL    DECTOHEX
    ANDLW   0X0F
    ADDLW   0X30
    MOVWF   RTEMP
     RS232.SEND RTEMP
;    LCD.DATA RTEMP;
 HAFTANIN_GUNU:
;    LCD.DATAL "-";
    RS232.WRITEL    "-"
    CALL    DS1302_HGUN_OKU
    MOVWF   DS_OKUNAN
    CALL    DECTOHEX
    ANDLW   0X0F
    ADDLW   0X30
    MOVWF   RTEMP
    RS232.SEND RTEMP
;    LCD.DATA RTEMP;
ALT_SATIR:;ENTER TUŞ KOMBİNASYONU
    RS232.WRITEL   .13 ;ENTER
     RS232.WRITEL   .10  ;ENTER
    RETURN
SAAT_YAZ:
; LCD.BUYUKFONTL .1,.0,DIGIT_1
; LCD.BUYUKFONTL .1,.3,DIGIT_2
; LCD.ADRESL  1,.7
; LCD.DATAL   5
; LCD.ADRESL  2,.7
; LCD.DATAL   4
; LCD.BUYUKFONTL .1,.9,DIGIT_3
 ; LCD.BUYUKFONTL .1,.12,DIGIT_4   
; CALL LCDDELAY1MS
    RETURN
SONRAKI_KARAKTER:;
INCF DIGIT_4,F
MOVLW .10
XORWF   DIGIT_4,W   ; OKUNNAN DE?ER?N XOR ?LE "0" OLUP OLMADI?INI TEST ET.
BTFSS   STATUS,Z   ; OKUNANA DE?ER "0" ?SE ??LEM? SONLANDIR.   
RETURN
CLRF DIGIT_4
INCF DIGIT_3,F
MOVLW .10
XORWF   DIGIT_3,W   ; OKUNNAN DE?ER?N XOR ?LE "0" OLUP OLMADI?INI TEST ET.
BTFSS   STATUS,Z   ; OKUNANA DE?ER "0" ?SE ??LEM? SONLANDIR.   
RETURN
CLRF DIGIT_3
INCF DIGIT_2,F
MOVLW .10
XORWF   DIGIT_2,W   ; OKUNNAN DE?ER?N XOR ?LE "0" OLUP OLMADI?INI TEST ET.
BTFSS  STATUS,Z   ; OKUNANA DE?ER "0" ?SE ??LEM? SONLANDIR.   
RETURN
CLRF DIGIT_2
INCF DIGIT_1,F
MOVLW .10
XORWF   DIGIT_1,W   ; OKUNNAN DE?ER?N XOR ?LE "0" OLUP OLMADI?INI TEST ET.
BTFSS   STATUS,Z   ; OKUNANA DE?ER "0" ?SE ??LEM? SONLANDIR.   
RETURN
CLRF DIGIT_1
RETURN
;==============================================================================
;     DS1302 RUTINLER?
;------------------------------------------------------------------------------
DS1302_SAAT_OKU:
    MOVLW   DS1302_SAAT_R
 ;   MOVWF   RTC_DS_ADR
    CALL    DS1302_OKU
;    MOVWF   RTC_DS_SAAT  
        RETURN
DS1302_DAKIKA_OKU:
    MOVLW   DS1302_DAKIKA_R
 ;   MOVWF   RTC_DS_ADR
    CALL    DS1302_OKU
;    MOVWF   RTC_DS_DAKIKA
    RETURN
DS1302_SANIYE_OKU:
    MOVLW   DS1302_SANIYE_R
;    MOVWF   RTC_DS_ADR
    CALL    DS1302_OKU
 ;   MOVWF   RTC_DS_SANIYE
    RETURN
DS1302_YIL_OKU:
    MOVLW   DS1302_YIL_R
 ;   MOVWF   RTC_DS_ADR
    CALL    DS1302_OKU
;    MOVWF   RTC_DS_YIL
    RETURN
DS1302_AY_OKU:
    MOVLW   DS1302_AY_R
 ;   MOVWF   RTC_DS_ADR
    CALL    DS1302_OKU
 ;   MOVWF   RTC_DS_AY
    RETURN
DS1302_GUN_OKU:
    MOVLW   DS1302_GUN_R
 ;   MOVWF   RTC_DS_ADR
    CALL    DS1302_OKU
 ;   MOVWF   RTC_DS_GUN
    RETURN
DS1302_HGUN_OKU:
    MOVLW   DS1302_HGUN_R
 ;   MOVWF   RTC_DS_ADR
    CALL    DS1302_OKU
 ;   MOVWF   RTC_DS_HGUN
    RETURN
DS1302_YIL_YAZ:
    MOVLW   DS1302_YIL_W
    MOVWF   RTC_DS_ADR
    MOVLW   H'17'
    CALL    DS1302_YAZ
 ;   MOVWF   RTC_DS_HGUN
    RETURN
 ;;;;;;;;;;;;;rom yaz;;;;;;;;;;;;;;;;;;;;;;;;;
 DS1302_ROM_YAZ:
   BSF I2C_EN;I2C.START;?LET???ME BA?LA
    MOVLW   DS1302_RAM_W;YAZILACAK ADRES? YUKLE
    CALL    I2C_DATA_YAZ;DÜ?ÜK ADRES B?T?N? YAZ
    MOVLW    "M"    ;YAZILACAK VER? W YE AL
    CALL    I2C_DATA_YAZ;VER?Y? YAZ
    MOVLW    "U"    ;YAZILACAK VER? W YE AL
    CALL    I2C_DATA_YAZ;VER?Y? YAZ     
    MOVLW    "J"    ;YAZILACAK VER? W YE AL
    CALL    I2C_DATA_YAZ;VER?Y? YAZ     
    MOVLW    "D"    ;YAZILACAK VER? W YE AL
    CALL    I2C_DATA_YAZ;VER?Y? YAZ     
    MOVLW    "A"    ;YAZILACAK VER? W YE AL
    CALL    I2C_DATA_YAZ;VER?Y? YAZ     
    MOVLW    "T"    ;YAZILACAK VER? W YE AL
    CALL    I2C_DATA_YAZ;VER?Y? YAZ     
   BCF I2C_EN
    RETURN
 ;;;;;;;;;;;;;rom OKU;;;;;;;;;;;;;;;;;;;;;;;;;
 DS1302_ROM_OKU:
   BSF I2C_EN;I2C.START;?LET???ME BA?LA
    MOVLW   DS1302_RAM_R;YAZILACAK ADRES? YUKLE
    CALL    I2C_DATA_YAZ;DÜ?ÜK ADRES B?T?N? YAZ
    CALL    I2C_DATA_OKU;VER?Y? OKU
    MOVWF   RTEMP
 ;   SWAPF   RTEMP,F
     RS232.SEND RTEMP   
    CALL    I2C_DATA_OKU;VER?Y? OKU
    MOVWF   RTEMP
     RS232.SEND RTEMP   
    CALL    I2C_DATA_OKU;VER?Y? OKU
    MOVWF   RTEMP
     RS232.SEND RTEMP   
    CALL    I2C_DATA_OKU;VER?Y? OKU
    MOVWF   RTEMP
     RS232.SEND RTEMP   
    CALL    I2C_DATA_OKU;VER?Y? OKU
    MOVWF   RTEMP
     RS232.SEND RTEMP   
    CALL    I2C_DATA_OKU;VER?Y? OKU
    MOVWF   RTEMP
     RS232.SEND RTEMP   
    CALL    I2C_DATA_OKU;VER?Y? OKU
    MOVWF   RTEMP
     RS232.SEND RTEMP       
    BCF I2C_EN
GOTO ALT_SATIR;    RETURN
;;;;;;;;;;;;;;;;;;DS102 OKU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;   
DS1302_OKU:
  BsF I2C_EN ; I2C.START;?LET???ME BA?LA   
    CALL    I2C_DATA_YAZ;DÜ?ÜK ADRES B?T?N? YAZ ;I2C_DATA_SONRAKI_BIT_YAZ;   
    CALL    I2C_DATA_OKU;OKUMA KODUNU ÇA?IR.
    MOVWF   RTC_DS_DEGISKEN    ;OKUNAN DE?ER? RAM A YÜKLE     
    SWAPF   RTC_DS_DEGISKEN,W
   
    BCF I2C_EN  ;I2C.STOP ;OKUMA B?TT?. ?LET???M? KES.
  RETURN
;;;;;;;;;;;;;;;;;;DS1302 YAZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 DS1302_YAZ:
   MOVWF    RTC_DS_DEGISKEN
   BSF I2C_EN;I2C.START;?LET???ME BA?LA
    MOVFW   RTC_DS_ADR;YAZILACAK ADRES? YUKLE
    CALL    I2C_DATA_YAZ;DÜ?ÜK ADRES B?T?N? YAZ
    MOVFW    RTC_DS_DEGISKEN    ;YAZILACAK VER? W YE AL
    CALL    I2C_DATA_YAZ;VER?Y? YAZ
   BCF I2C_EN
 RETURN
;==============================================================================
; I2C RUT?NLER?
;==============================================================================
;------------------PORTLARI KUR------------------------------------------------
I2C_PORT_KUR:
    BANKSEL PIC_I2C_TRIS_SDA
    BCF PIC_I2C_TRIS_SDA,PIC_I2C_SDA_PIN
    BCF PIC_I2C_TRIS_SCL,PIC_I2C_SCL_PIN
    BCF PIC_I2C_TRIS_EN,PIC_I2C_EN_PIN
    BANKSEL PIC_I2C_PORT_SDA         
    BCF  I2C_EN
    BCF I2C_SCL
    BCF I2C_SDA
;---------KURULUM PARAMATRELER?---------------------------------------------
   BSF I2C_EN;I2C.START;?LET???ME BA?LA
    MOVLW   DS1302_KORUMA_W;YAZMA KORUMA ?PTAL?
    CALL    I2C_DATA_YAZ;DÜ?ÜK ADRES B?T?N? YAZ
    MOVLW    0;KORUMA ?PTAL
    CALL    I2C_DATA_YAZ;VER?Y? YAZ

    MOVLW   DS1302_ENERJI_W;YAZMA KORUMA ?PTAL?
    CALL    I2C_DATA_YAZ;DÜ?ÜK ADRES B?T?N? YAZ
    MOVLW    H'A4'
    CALL    I2C_DATA_YAZ;VER?Y? YAZ
   
    MOVLW   DS1302_SANIYE_W;
    CALL    I2C_DATA_YAZ;DÜ?ÜK ADRES B?T?N? YAZ
    MOVLW    0
    CALL    I2C_DATA_YAZ;VER?Y? YAZ
   BCF I2C_EN     
    RETURN
;------------------I2C DATA YAZMA(DS1302 ?Ç?N)----------------------------------
I2C_DATA_YAZ:
    MOVWF   SPI_I2C_DATA
    MOVLW   BIT_SAYISI
    MOVWF   SPI_I2C_CND
    BANKSEL PIC_I2C_TRIS_SDA
    BCF PIC_I2C_TRIS_SDA,PIC_I2C_SDA_PIN
    BANKSEL PIC_I2C_PORT_SDA     
I2C_DATA_SONRAKI_BIT_YAZ:
    BTFSS   SPI_I2C_DATA,0 ;C B?T?N? KONTROL ET GÖNDER?LECEK B?T? TESP?T ET.
    GOTO    I2C_DATA_0_BIT_YAZ
I2C_DATA_1_BIT_YAZ:     
    NOP
    NOP
    BSF I2C_SDA ;GÖNDER?LECEK B?T "1"
    NOP
    NOP
    GOTO    I2C_CLOCK_YAZ;CLK S?NYAL? GÖNDER
I2C_DATA_0_BIT_YAZ:   
    NOP
    NOP
    BCF I2C_SDA ;GÖNDER?LECEK B?T "0"
I2C_CLOCK_YAZ:
    NOP
    NOP
    BSF I2C_SCL ;SDA DAK? B?T? YAZ   
    NOP
    NOP
    BCF I2C_SCL ;SDA DAK? B?T? YAZ     
    NOP
    NOP   
    RRF SPI_I2C_DATA,F ;B?TLER? B?R ROLA KAYDIR (STATUS C YE YAZ)   
    DECFSZ  SPI_I2C_CND,F;8 B?T GER? SAYIM TEMEMLANDIMI?
    GOTO    I2C_DATA_SONRAKI_BIT_YAZ;HAYIR TEKRAR BA?A DÖN
    RETURN
;------------------I2C DATA OKUMA(DS1302 ?Ç?N)----------------------------------
;   OKU KODLARINDA KALDIN TAMAMLA
I2C_DATA_OKU:
    BANKSEL PIC_I2C_TRIS_SDA
    BSF PIC_I2C_TRIS_SDA,PIC_I2C_SDA_PIN
    BANKSEL PIC_I2C_PORT_SDA   
    CLRF   SPI_I2C_DATA
    MOVLW   BIT_SAYISI
    MOVWF   SPI_I2C_CND
    CLRC 
I2C_DATA_SONRAKI_BIT_OKU:
    RRF SPI_I2C_DATA,F ;B?R SOLA KAYDIR.
    BTFSS   I2C_SDA;SDA KONTROL ET, OKUNAN B?T   
    GOTO    I2C_DATA_0_BIT_OKU
I2C_DATA_1_BIT_OKU:
    NOP
    NOP
    BSF SPI_I2C_DATA,7 ;OKUNANA B?T? "1" VE EN DÜ?ÜK B?TE YAZ
    GOTO    I2C_CLOCK_OKU
I2C_DATA_0_BIT_OKU:   
    NOP
    NOP
   BCF SPI_I2C_DATA,7 ;OKUNANA B?T? "0" VE EN DÜ?ÜK B?TE YAZ
I2C_CLOCK_OKU:
    NOP
    NOP
    BSF I2C_SCL ;SDA DAK? B?T? YAZ     
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    BCF I2C_SCL ;SDA DAK? B?T? YAZ         
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    DECFSZ  SPI_I2C_CND,F;8 B?T GER? SAYIM TEMEMLANDIMI?
    GOTO    I2C_DATA_SONRAKI_BIT_OKU;HAYIR TEKRAR BA?A DÖN
   ; SWAPF   SPI_I2C_DATA,W
   MOVFW   SPI_I2C_DATA
 ;   BSF I2C_SCL ;SDA DAK? B?T? YAZ     
    RETURN
;==============================================================================
;     HEX TO BCD
;------------------------------------------------------------------------------
;Z ve C flag içeri?i ç?karma sonucu ?öyle etkilenir.
;SUBWF File_register,F/W
;File register > W Z=0 C=1
;File register = W Z=1 C=1
;File register < W Z=0 C=0   
DECTOHEX:
    MOVWF   D1
    CLRF    D2
    IfGoL   D1,5,.10,AYRISTIRMA_ISLEMI
    MOVFW   D1
    RETURN
AYRISTIRMA_ISLEMI:
    MOVLW   .10
    ADDWF   D2
    SUBWF   D1,F
    BTFSC   STATUS,C
    GOTO    AYRISTIRMA_ISLEMI
    MOVLW   .10
    ADDWF   D1,F
    SUBWF   D2,F
    MOVFW   D2
    ADDWF   D1,W
    RETURN
;==============================================================================
;     KESME VEKTÖRÜ
;------------------------------------------------------------------------------
KESME_VEKTORU
BCF INTCON,7;
MOVWF W_TEMP
MOVFW STATUS
MOVWF S_TEMP
;-----------------------------------
; CALL UART_AL
;-----------INT KESME BAYRA?I-------
;BITSC INTCON,T0IF,TMR0_KESME
;BITSC INTCON,INTF,RB0_INT_KESME
;BITSC INTCON,RBIF,RB_4_7_KESME
;------------PIR1 KESME BAYRAKLARI---
;BITSC PIR1,TMR1IF,TMR1_KESME
;BITSC PIR1,CMIF,KARSILASTIRMA_KESME
BITSC PIR1,RCIF,UART_ALMA_KESME
;BITSC PIR1,TXIF,UART_GONDERME_KESME
;BITSC PIR1,CCP1IF,YAKALAMA_KESME
;BITSC PIR1,TMR2IF,TMR2_KESME
;BITSC PIR1,EEIF,EEPROM_YAZMA_KESME
BCF PIR1,RCIF
MOVLW B'11111000'
ANDWF INTCON,F
;----------------------------------
MOVFW S_TEMP
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
BSF INTCON,EEIE;
retfie ;Kesmeden dön
;------------------------------------------------------------------------------
UART_ALMA_KESME:
    RETURN
;--------------LCD ?Ç?N GEREKL? GEC?KME---------------------
LED_BLINK
DECFSZ LED_DELAY,F
GOTO DELAY1MS 
TOGGLE   LED
MOVLF .2,LED_DELAY
    RETURN
;-----------------------------------------------------------------------------
 
END



Ana kodda referans verilen KOSUL.inc dosyası:
;*********************************************************
;;;;;;;;;;;;;;;;/Karþýlaþtýrma Komutlarý\;;;;;;;;;;;;;;;;;;
;* Adý Soyad: Müjdat TEKE
;* Mail:      Mujdat117@hotmail.com
;* Tarih :    17/05/2013
;
; Projelerde kullanýlmak üzere karþýlatýrma ve dallanma
; komutlarýndan oluþan makrolar içerir.
; Makrolar 16 adet komut ile yönlendirilir. bunlar yapýlacak iþlemin
; ne olduðunu belirlemeye yarar. Makrolardaki iþlem Parametresini
; altaki komutlarý veya sayý deðerleri yazýlýrsa açýklamada yeralan
; iþlemleri gerçekleþtirir.
; //Sabit Komutlar\\
; Esit=0;(w=L) parametreler yani deðiþken ve Sabit/Deðiþken2 birbirine
;              ;eþit olup olmadýðýný test eder.
;
; Büyük=1;(w>L) parametreler yani deðiþken ve Sabit/Deðiþken2 karþýlaþtýrýr
;              ;deðiþken Sabit/deðiþken2 den büyük olup olmadýðýný test eder.
;
; Kücük="2 (w<L)
; Esitdegil=3;(w!=L) parametreler yani deðiþken ve Sabit/Deðiþken2 karþýlaþtýrýr
;              ;deðiþken ve Sabit/deðiþken2 eþit deðil ise etikete dallanýr.
;
; KücükEsit=4;(w<=L) parametreler yani deðiþken ve Sabit/Deðiþken2 karþýlaþtýrýr
;              ;deðiþken Sabit/deðiþken2 den küçük ve eþit olup olmadýðýný test eder.
;
; BüyükEsit=5;(w>=L) parametreler yani deðiþken ve Sabit/Deðiþken2 karþýlaþtýrýr
;              ;deðiþken Sabit/deðiþken2 den büyük ve eþit olup olmadýðýný test eder.
;
;                                 /////Makrolar Tanýmlarý\\\\\
; Tanýmlanan makrolar ve parametreler Taným:
; 1. ******************************************************************************************
; IfGoL Macro Degisken,Islem,Sabit,Etiket ; Deðiþken ve Sabiti karþýlatýrýr.
; Deðiþken: Mcu nun ram ýnda tanýmlanan alan ör: SAYAC equ 200 ;sa
; Islem : Sabit komutlarda açýklanan komut parametresi buraya yazýlýr. karþlaþtýrmanýn neye göre yapýlacaðýný belirler.
; Sabit : Deðiþkenin karþýlaþtýrýlacak sabit sayý buryaya yazýlýr. örnek : .100 gibi
; Etiket : Deðiþken ve sabit Islem olarak belirtilen koþulu saðlarsa etiket olarak belirtilen
;   adrese Gider (Goto Etiket olarak çalýþýr)
; 2. ******************************************************************************************
; IfGo Macro Degisken,Islem,Deðiþken2,Etiket ; Deðiþken ve Sabiti karþýlatýrýr.
; Deðiþken : Mcu nun ram ýnda tanýmlanan alan ör: SAYAC equ 200 ;sa
; Islem : "Sabit komutlarda" açýklanan komut parametresi buraya yazýlýr. karþlaþtýrmanýn neye göre yapýlacaðýný belirler.
; Deðiþken2 : Deðiþkenin karþýlaþtýrýlacak 2. Degiþkeni buryaya yazýlýr. örnek : SAYI2 equ 21 gibi
; Etiket : Deðiþken ve Deðiþken2 ile Islem olarak belirtilen koþulu saðlarsa etiket olarak belirtilen
;       adrese Gider (Goto Etiket olarak çalýþýr)

; 3. ******************************************************************************************
; IfGotoL Macro Degisken,Islem,Sabit,DoðruEtiket,YanlýþEtiket ; Deðiþken ve Sabiti karþýlatýrýr.
; Deðiþken : Mcu nun ram ýnda tanýmlanan alan ör: SAYAC equ 200 ;sa
; Islem : Sabit komutlarda açýklanan komut parametresi buraya yazýlýr. karþlaþtýrmanýn neye göre yapýlacaðýný belirler.
; Sabit : Deðiþkenin karþýlaþtýrýlacak sabit sayý buryaya yazýlýr. örnek : .100 gibi
; DoðruEtiket : Deðiþken ve sabit Islem olarak belirtilen koþulu saðlarsa etiket olarak belirtilen
;   adrese Gider (Goto Etiket olarak çalýþýr)
; YanlýþEtiket: Deðiþken ve sabit Islem olarak belirtilen koþulu saðlamýyor ise bu etikete dallanýr.
;   adrese Gider (Goto Etiket olarak çalýþýr)
; 4. ******************************************************************************************
; IfGoto Macro Degisken,Islem,Deðiþken2,DoðruEtiket,YanlýþEtiket ; Deðiþken ve Sabiti karþýlatýrýr.
; Deðiþken : Mcu nun ram ýnda tanýmlanan alan ör: SAYAC equ 200 ;sa
; Islem : "Sabit komutlarda" açýklanan komut parametresi buraya yazýlýr. karþlaþtýrmanýn neye göre yapýlacaðýný belirler.
; Deðiþken2 : Deðiþkenin karþýlaþtýrýlacak 2. Degiþkeni buryaya yazýlýr. örnek : SAYI2 equ 21 gibi
; DoðruEtiket : Deðiþken ve Deðiþken2 ile Islem olarak belirtilen koþulu saðlarsa etiket olarak belirtilen
;       adrese Gider (Goto Etiket olarak çalýþýr)
; YanlýþEtiket: Deðiþken ve Deðiþken2 Islem olarak belirtilen koþulu saðlamýyor ise bu etikete dallanýr.
;   adrese Gider (Goto Etiket olarak çalýþýr)
; 5. *******************************************************************************************
; IfCallL Macro Degisken,Islem,Sabit,Etiket ; Deðiþken ve Sabiti karþýlatýrýr.
; Deðiþken: Mcu nun ram ýnda tanýmlanan alan ör: SAYAC equ 200 ;sa
; Islem : Sabit komutlarda açýklanan komut parametresi buraya yazýlýr. karþlaþtýrmanýn neye göre yapýlacaðýný belirler.
; Sabit : Deðiþkenin karþýlaþtýrýlacak sabit sayý buryaya yazýlýr. örnek : .100 gibi
; Etiket : Deðiþken ve sabit Islem olarak belirtilen koþulu saðlarsa etiket olarak belirtilen
;   adrese Gider (Call Etiket olarak çalýþýr)
; 6. ******************************************************************************************
; IfCall Macro Degisken,Islem,Deðiþken2,Etiket ; Deðiþken ve Sabiti karþýlatýrýr.
; Deðiþken : Mcu nun ram ýnda tanýmlanan alan ör: SAYAC equ 200 ;sa
; Islem : "Sabit komutlarda" açýklanan komut parametresi buraya yazýlýr. karþlaþtýrmanýn neye göre yapýlacaðýný belirler.
; Deðiþken2 : Deðiþkenin karþýlaþtýrýlacak 2. Degiþkeni buryaya yazýlýr. örnek : SAYI2 equ 21 gibi
; Etiket : Deðiþken ve Deðiþken2 ile Islem olarak belirtilen koþulu saðlarsa etiket olarak belirtilen
;       adrese Gider (Call Etiket olarak çalýþýr)

; 7. ******************************************************************************************
; IfCallElseL Macro Degisken,Islem,Sabit,DoðruEtiket,YanlýþEtiket ; Deðiþken ve Sabiti karþýlatýrýr.
; Deðiþken : Mcu nun ram ýnda tanýmlanan alan ör: SAYAC equ 200 ;sa
; Islem : Sabit komutlarda açýklanan komut parametresi buraya yazýlýr. karþlaþtýrmanýn neye göre yapýlacaðýný belirler.
; Sabit : Deðiþkenin karþýlaþtýrýlacak sabit sayý buryaya yazýlýr. örnek : .100 gibi
; DoðruEtiket : Deðiþken ve sabit Islem olarak belirtilen koþulu saðlarsa etiket olarak belirtilen
;   adrese Gider (Goto Etiket olarak çalýþýr)
; YanlýþEtiket: Deðiþken ve sabit Islem olarak belirtilen koþulu saðlamýyor ise bu etikete dallanýr.
;   adrese Gider (Call Etiket olarak çalýþýr)
; 8. ******************************************************************************************
; IfCallElse Macro Degisken,Islem,Deðiþken2,DoðruEtiket,YanlýþEtiket ; Deðiþken ve Sabiti karþýlatýrýr.
; Deðiþken : Mcu nun ram ýnda tanýmlanan alan ör: SAYAC equ 200 ;sa
; Islem : "Sabit komutlarda" açýklanan komut parametresi buraya yazýlýr. karþlaþtýrmanýn neye göre yapýlacaðýný belirler.
; Deðiþken2 : Deðiþkenin karþýlaþtýrýlacak 2. Degiþkeni buryaya yazýlýr. örnek : SAYI2 equ 21 gibi
; DoðruEtiket : Deðiþken ve Deðiþken2 ile Islem olarak belirtilen koþulu saðlarsa etiket olarak belirtilen
;       adrese Gider (Goto Etiket olarak çalýþýr)
; YanlýþEtiket: Deðiþken ve Deðiþken2 Islem olarak belirtilen koþulu saðlamýyor ise bu etikete dallanýr.
;   adrese Gider (Call Etiket olarak çalýþýr)
; 9. ******************************************************************************************
; BITSG Macro Reg,Bit,Label ; Regestirinin bitini kontrol et.
; Reg : Test edilcek regestiri veya deðiþken.
; Bit : test edilecek bit.
; DoðruEtiket : bit Set(1) ise gidilecek etikek (goto komutuyla)
; 10. ******************************************************************************************
; BITSC Macro Reg,Bit,Label ; Regestirinin bitini kontrol et.
; Reg : Test edilcek regestiri veya deðiþken.
; Bit : test edilecek bit.
; DoðruEtiket : bit Set(1) ise gidilecek etikek (call komutuyla)
; 11. ******************************************************************************************
; BITCG Macro Reg,Bit,Label ; Regestirinin bitini kontrol et.
; Reg : Test edilcek regestiri veya deðiþken.
; Bit : test edilecek bit.
; DoðruEtiket : bit Set(0) ise gidilecek etikek (goto komutuyla)
; 12. ******************************************************************************************
; BITCC Macro Reg,Bit,Label ; Regestirinin bitini kontrol et.
; Reg : Test edilcek regestiri veya deðiþken.
; Bit : test edilecek bit.
; DoðruEtiket : bit Set(0) ise gidilecek etikek (call komutuyla)
; 13. ******************************************************************************************
; Jz Macro Etiket ; Status reg. in Z bitini kontrol eder.
; Etiket :Z biti Set(1) ise etikete atla (goto komutuyla)
; 14. ******************************************************************************************
; Jnz Macro Etiket ; Status reg. in Z bitini kontrol eder.
; Etiket :Z biti clear(0) ise etikete atla (goto komutuyla)
; 15. ******************************************************************************************
; Jc Macro Etiket ; Status reg. in C bitini kontrol eder.
; Etiket :C biti Set(1) ise etikete atla (goto komutuyla)
; 16. ******************************************************************************************
; Jnc Macro Etiket ; Status reg. in C bitini kontrol eder.
; Etiket :Z biti clear(0) ise etikete atla (goto komutuyla)
;***********************************************************************************************************************************

;********************\Parametre olarak kullanýcalcak Deðerler/***********
#Define Esit 0 ; Deðiþken = Sabit/Deðiþken2
#define Büyük 1 ; Deðiþken > Sabit/Deðiþken2
#define Kücük 2 ; Deðiþken < Sabit/Deðiþken2
#define Esitdegil 3 ;Deðiþken != Sabit/Deðiþken2
#define KücükEsit 4 ;Deðiþken <= Sabit/Deðiþken2
#define BüyükEsit 5 ;Deðiþken >= Sabit/Deðiþken2
;variable BüyükEsit=5 ;Deðiþken >= Sabit/Deðiþken2;
;************************************************************************

;extern IfGoL
;extern IfGo
;extern IfGotoL
;extern IfGoto
;extern IfCallL
;extern IfCall
;extern IfCallElseL
;extern IfCallElse
;global IfGoL
;Global IfGo
;global IfGotoL
;global IfGoto
;global IfCallL
;global IfCall
;global IfCallElseL
;global IfCallElse
NOLIST
;*************************************************************************************************
; \\ Makrolar //
;*************************************************************************************************
; 1. Makro
;*********************** Deðiþken ve sabiti karþýlaþtýrýr. Etikete dallanýr.**********************
IfGoL macro Degisken,Islem,Sabit,Etiket
;Z ve C flag içeri?i ç?karma sonucu ?öyle etkilenir.
;File register > W Z=0 C=1
;File register = W Z=1 C=1
;File register < W Z=0 C=0
CLRZ
CLRZ
CLRDC
IF Islem==0;"="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;D1
btfss STATUS,Z ;Test et
goto $+2;Y;YAnlýþ
goto Etiket;Doðru
ENDIF
IF Islem==2;"<"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfsc STATUS,C ; iþlem negatif mi?
btfsc STATUS,Z ; sýfýrdan farklýmý
goto $+2
goto Etiket ;Doðru, W<L den etikete git.
ENDIF
IF Islem==1;">"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;D1
btfsc STATUS,C ;Test et
goto $+2;Y;YAnlýþ
goto Etiket;Doðru
ENDIF
IF Islem==3;"!=" karþýlastýrýlan sayýlar eþit deðilse
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfsc STATUS,Z ; Eþit deðilse (z=0 ise) Bir satýr atla
goto $+2; Sayýlar eþir (Z=1 ise) kadýðý yerden devam et
goto Etiket;Doðru sayýlar eþit deðil etikete dallan.
ENDIF
IF Islem==4;"<="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfss STATUS,C ; Küçük ve Eþit ise(C=1 ise) Bir satýr atla
goto $+2; Sayýlar eþir (C=0 ise) kadýðý yerden devam et
goto Etiket;Doðru sayýlar Küçük eþit etikete dallan.
ENDIF
IF Islem==5;">="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfss STATUS,Z ; iþlem sýfýrmý mi?
btfss STATUS,C ; iþlem negatifmi?
goto Etiket ;Doðru, W>L den etikete git.

ENDIF
ENDM
;**************************************************************************************
; 2. Makro
;*********************** Deðiþken ve Deðiþken2 karþýlaþtýrýr. Etikete dallanýr.********
IfGo macro Degisken,Islem,Degisken2,Etiket

IF Islem==0;"="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;D1
btfss STATUS,Z ;Test et
goto $+2;Y;YAnlýþ
goto Etiket;Doðru
ENDIF
IF Islem==2;"<"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfsc STATUS,C ; iþlem negatif mi?
btfsc STATUS,Z ; sýfýrdan farklýmý
goto $+2
goto Etiket ;Doðru, W<L den etikete git.
ENDIF
IF Islem==1;">"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;D1
btfsc STATUS,C ;Test et
goto $+2;Y;YAnlýþ
goto Etiket;Doðru
ENDIF
IF Islem==3;"!=" karþýlastýrýlan sayýlar eþit deðilse
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfsc STATUS,Z ; Eþit deðilse (z=0 ise) Bir satýr atla
goto $+2; Sayýlar eþir (Z=1 ise) kadýðý yerden devam et
goto Etiket;Doðru sayýlar eþit deðil etikete dallan.
ENDIF
IF Islem==4;"<="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfss STATUS,C ; Küçük ve Eþit ise(C=1 ise) Bir satýr atla
goto $+2; Sayýlar eþir (C=0 ise) kadýðý yerden devam et
goto Etiket;Doðru sayýlar Küçük eþit etikete dallan.
ENDIF
IF Islem==5;">="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfss STATUS,Z ; iþlem sýfýrmý mi?
btfss STATUS,C ; iþlem negatifmi?
goto Etiket ;Doðru, W>L den etikete git.

ENDIF
ENDM
;*************************************************************************************************
; 3. Makro
;*********************** Deðiþken ve sabiti karþýlaþtýrýr. DoðruEtikete deðilse Yanlýþetiket dallanýr.**********************
IfGotoL macro Degisken,Islem,Sabit,DoðruEtiket,Yanlýþetiket

IF Islem==0;"="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;D1
btfss STATUS,Z ;Test et
goto Yanlýþetiket;$+2;Y;YAnlýþ
goto DoðruEtiket;Doðru
ENDIF
IF Islem==2;"<"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfsc STATUS,C ; iþlem negatif mi?
btfsc STATUS,Z ; sýfýrdan farklýmý
goto Yanlýþetiket;$+2
goto DoðruEtiket ;Doðru, W<L den etikete git.
ENDIF
IF Islem==1;">"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;D1
btfsc STATUS,C ;Test et
goto Yanlýþetiket;$+2;Y;YAnlýþ
goto DoðruEtiket;Doðru
ENDIF
IF Islem==3;"!=" karþýlastýrýlan sayýlar eþit deðilse
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfsc STATUS,Z ; Eþit deðilse (z=0 ise) Bir satýr atla
goto Yanlýþetiket;$+2; Sayýlar eþir (Z=1 ise) kadýðý yerden devam et
goto DoðruEtiket;Doðru sayýlar eþit deðil etikete dallan.
ENDIF
IF Islem==4;"<="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfss STATUS,C ; Küçük ve Eþit ise(C=1 ise) Bir satýr atla
goto Yanlýþetiket;$+2; Sayýlar eþir (C=0 ise) kadýðý yerden devam et
goto DoðruEtiket;Doðru sayýlar Küçük eþit etikete dallan.
ENDIF
IF Islem==5;">="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfss STATUS,Z ; iþlem sýfýrmý mi?
btfss STATUS,C ; iþlem negatifmi?
goto DoðruEtiket ;Doðru, W>L den etikete git.
goto Yanlýþetiket
ENDIF
ENDM
;**************************************************************************************
; 4. Makro
;*********************** Deðiþken ve Deðiþken2 karþýlaþtýrýr. DoðruEtikete yada Yanlýþetiket dallanýr.********
IfGoto macro Degisken,Islem,Degisken2,DoðruEtiket,Yanlýþetiket

IF Islem==0;"="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;D1
btfss STATUS,Z ;Test et
goto Yanlýþetiket;$+2;Y;YAnlýþ
goto DoðruEtiket;Doðru
ENDIF
IF Islem==2;"<"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfsc STATUS,C ; iþlem negatif mi?
btfsc STATUS,Z ; sýfýrdan farklýmý
goto Yanlýþetiket;$+2
goto DoðruEtiket ;Doðru, W<L den etikete git.
ENDIF
IF Islem==1;">"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;D1
btfsc STATUS,C ;Test et
goto Yanlýþetiket;$+2;Y;YAnlýþ
goto DoðruEtiket;Doðru
ENDIF
IF Islem==3;"!=" karþýlastýrýlan sayýlar eþit deðilse
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfsc STATUS,Z ; Eþit deðilse (z=0 ise) Bir satýr atla
goto Yanlýþetiket;$+2; Sayýlar eþir (Z=1 ise) kadýðý yerden devam et
goto DoðruEtiket;Doðru sayýlar eþit deðil etikete dallan.
ENDIF
IF Islem==4;"<="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfss STATUS,C ; Küçük ve Eþit ise(C=1 ise) Bir satýr atla
goto Yanlýþetiket;$+2; Sayýlar eþir (C=0 ise) kadýðý yerden devam et
goto DoðruEtiket;Doðru sayýlar Küçük eþit etikete dallan.
ENDIF
IF Islem==5;">="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfss STATUS,Z ; iþlem sýfýrmý mi?
btfss STATUS,C ; iþlem negatifmi?
goto DoðruEtiket ;Doðru, W>L den etikete git.
goto Yanlýþetiket
ENDIF
ENDM
;*************************************************************************************************
; 5. Makro
;*********************** Deðiþken ve sabiti karþýlaþtýrýr. Etikete Altprogramýný çaðýrýr.*********
IfCallL macro Degisken,Islem,Sabit,Etiket

IF Islem==0;"="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;D1
btfss STATUS,Z ;Test et
goto $+2;Y;YAnlýþ
call Etiket;Doðru
ENDIF
IF Islem==2;"<"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfsc STATUS,C ; iþlem negatif mi?
btfsc STATUS,Z ; sýfýrdan farklýmý
goto $+2
call Etiket ;Doðru, W<L den etikete git.
ENDIF
IF Islem==1;">"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;D1
btfsc STATUS,C ;Test et
goto $+2;Y;YAnlýþ
call Etiket;Doðru
ENDIF
IF Islem==3;"!=" karþýlastýrýlan sayýlar eþit deðilse
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfsc STATUS,Z ; Eþit deðilse (z=0 ise) Bir satýr atla
goto $+2; Sayýlar eþir (Z=1 ise) kadýðý yerden devam et
call Etiket;Doðru sayýlar eþit deðil etikete dallan.
ENDIF
IF Islem==4;"<="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfss STATUS,C ; Küçük ve Eþit ise(C=1 ise) Bir satýr atla
goto $+2; Sayýlar eþir (C=0 ise) kadýðý yerden devam et
call Etiket;Doðru sayýlar Küçük eþit etikete dallan.
ENDIF
IF Islem==5;">="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfss STATUS,Z ; iþlem sýfýrmý mi?
btfss STATUS,C ; iþlem negatifmi?
call Etiket ;Doðru, W>L den etikete git.

ENDIF
ENDM
;**************************************************************************************
; 6. Makro
;*********************** Deðiþken ve Deðiþken2 karþýlaþtýrýr. Etikete dallanýr.********
IfCall macro Degisken,Islem,Degisken2,Etiket

IF Islem==0;"="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;D1
btfss STATUS,Z ;Test et
goto $+2;Y;YAnlýþ
call Etiket;Doðru
ENDIF
IF Islem==2;"<"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfsc STATUS,C ; iþlem negatif mi?
btfsc STATUS,Z ; sýfýrdan farklýmý
goto $+2
call Etiket ;Doðru, W<L den etikete git.
ENDIF
IF Islem==1;">"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;D1
btfsc STATUS,C ;Test et
goto $+2;Y;YAnlýþ
call Etiket;Doðru
ENDIF
IF Islem==3;"!=" karþýlastýrýlan sayýlar eþit deðilse
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfsc STATUS,Z ; Eþit deðilse (z=0 ise) Bir satýr atla
goto $+2; Sayýlar eþir (Z=1 ise) kadýðý yerden devam et
call Etiket;Doðru sayýlar eþit deðil etikete dallan.
ENDIF
IF Islem==4;"<="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfss STATUS,C ; Küçük ve Eþit ise(C=1 ise) Bir satýr atla
goto $+2; Sayýlar eþir (C=0 ise) kadýðý yerden devam et
call Etiket;Doðru sayýlar Küçük eþit etikete dallan.
ENDIF
IF Islem==5;">="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfss STATUS,Z ; iþlem sýfýrmý mi?
btfss STATUS,C ; iþlem negatifmi?
call Etiket ;Doðru, W>L den etikete git.

ENDIF
ENDM
;*************************************************************************************************
; 7. Makro
;*********************** Deðiþken ve sabiti karþýlaþtýrýr. DoðruEtikete deðilse Yanlýþetiket dallanýr.**********************
IfCallElseL macro Degisken,Islem,Sabit,DoðruEtiket,Yanlýþetiket

IF Islem==0;"="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;D1
btfss STATUS,Z ;Test et
call Yanlýþetiket;$+2;Y;YAnlýþ
call DoðruEtiket;Doðru
ENDIF
IF Islem==2;"<"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfsc STATUS,C ; iþlem negatif mi?
btfsc STATUS,Z ; sýfýrdan farklýmý
call Yanlýþetiket;$+2
call DoðruEtiket ;Doðru, W<L den etikete git.
ENDIF
IF Islem==1;">"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;D1
btfsc STATUS,C ;Test et
call Yanlýþetiket;$+2;Y;YAnlýþ
call DoðruEtiket;Doðru
ENDIF
IF Islem==3;"!=" karþýlastýrýlan sayýlar eþit deðilse
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfsc STATUS,Z ; Eþit deðilse (z=0 ise) Bir satýr atla
call Yanlýþetiket;$+2; Sayýlar eþir (Z=1 ise) kadýðý yerden devam et
call DoðruEtiket;Doðru sayýlar eþit deðil etikete dallan.
ENDIF
IF Islem==4;"<="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfss STATUS,C ; Küçük ve Eþit ise(C=1 ise) Bir satýr atla
call Yanlýþetiket;$+2; Sayýlar eþir (C=0 ise) kadýðý yerden devam et
call DoðruEtiket;Doðru sayýlar Küçük eþit etikete dallan.
ENDIF
IF Islem==5;">="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
sublw Sabit;,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfss STATUS,Z ; iþlem sýfýrmý mi?
btfss STATUS,C ; iþlem negatifmi?
call DoðruEtiket ;Doðru, W>L den etikete git.
call Yanlýþetiket
ENDIF
ENDM
;**************************************************************************************
; 8. Makro
;*********************** Deðiþken ve Deðiþken2 karþýlaþtýrýr. DoðruEtikete yada Yanlýþetiket dallanýr.********
IfCallElse macro Degisken,Islem,Degisken2,DoðruEtiket,Yanlýþetiket

IF Islem==0;"="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;D1
btfss STATUS,Z ;Test et
call Yanlýþetiket;$+2;Y;YAnlýþ
call DoðruEtiket;Doðru
ENDIF
IF Islem==2;"<"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfsc STATUS,C ; iþlem negatif mi?
btfsc STATUS,Z ; sýfýrdan farklýmý
call Yanlýþetiket;$+2
call DoðruEtiket ;Doðru, W<L den etikete git.
ENDIF
IF Islem==1;">"
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;D1
btfsc STATUS,C ;Test et
call Yanlýþetiket;$+2;Y;YAnlýþ
call DoðruEtiket;Doðru
ENDIF
IF Islem==3;"!=" karþýlastýrýlan sayýlar eþit deðilse
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfsc STATUS,Z ; Eþit deðilse (z=0 ise) Bir satýr atla
call Yanlýþetiket;$+2; Sayýlar eþir (Z=1 ise) kadýðý yerden devam et
call DoðruEtiket;Doðru sayýlar eþit deðil etikete dallan.
ENDIF
IF Islem==4;"<="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Wreg ve L sayýsýn karþýlaþtýr.
btfss STATUS,C ; Küçük ve Eþit ise(C=1 ise) Bir satýr atla
call Yanlýþetiket;$+2; Sayýlar eþir (C=0 ise) kadýðý yerden devam et
call DoðruEtiket;Doðru sayýlar Küçük eþit etikete dallan.
ENDIF
IF Islem==5;">="
movfw Degisken;karþýlaþtýmak için deðiþkeni w alýr.
subwf Degisken2,W ;Deðiþken ve sabit sayýyý karþýlaþtýr
btfss STATUS,Z ; iþlem sýfýrmý mi?
btfss STATUS,C ; iþlem negatifmi?
call DoðruEtiket ;Doðru, W>L den etikete git.
call Yanlýþetiket
ENDIF
ENDM
;******************************************************************************************
; Bit test komutlarý
;******************************************************************************************
; 9. Makro
;*************** bit set(1) ise etikete atlar.
BITSG macro Reg,Bit,Label ;regin bitini kontrol et set ise etikete atla
btfsc Reg,Bit ;regestirinni bitini kontrol et
goto Label ;Bit set durumdaysa etikete atla.
Endm
;******************************************************************************************
; 10. Makro
;*************** bit set(1) ise etiketi çaðýr.
BITSC macro Reg,Bit,Label ;regin bitini kontrol et set ise etiketi çaðýr.
btfsc Reg,Bit ;regestirinni bitini kontrol et
Call Label ;Bit set durumdaysa etiketi çaðýr.
Endm
;******************************************************************************************
; 11. Makro
;*************** bit clear(0) ise etikete atlar.
BITCG macro Reg,Bit,Label ;regin bitini kontrol et set ise etikete atla
btfss Reg,Bit ;regestirinni bitini kontrol et
goto Label ;Bit set durumdaysa etikete atla.
Endm
;******************************************************************************************
; 12. Makro
;*************** bit clear(0) ise etiketi çaðýr.
BITCC macro Reg,Bit,Label ;regin bitini kontrol et set ise etiketi çaðýr.
btfss Reg,Bit ;regestirinni bitini kontrol et
Call Label ;Bit set durumdaysa etiketi çaðýr.
Endm
;******************************************************************************************
; 13. Makro
;*************** Status reg. z bitini test et
Jz macro Etiket
BITSG STATUS,Z,Etiket ;SÝTATUSUN Z. BÝTÝ SETMÝ(1)?,Evetse etikete atla.
endm
;******************************************************************************************
; 14. Makro
;*************** Status reg. z bitini test et
Jnz macro Etiket
BITCG STATUS,Z,Etiket ;SÝTATUSUN Z. BÝTÝ clearMÝ(0)?,Evetse etikete atla.
endm
;******************************************************************************************
; 15. Makro
;*************** Status reg. C bitini test et
Jc macro Etiket
BITSG STATUS,C,Etiket ;SÝTATUSUN Z. BÝTÝ SETMÝ(1)?,Evetse etikete atla.
endm
;******************************************************************************************
; 16. Makro
;*************** Status reg. C bitini test et
Jnc macro Etiket
BITCG STATUS,C,Etiket ;SÝTATUSUN Z. BÝTÝ clearMÝ(0)?,Evetse etikete atla.
endm
;******************************************************************************************
; 17. Makro
;*************** SELECT CASE YAPISI
;SELECT MACRO PARAM
; MOVF PARAM,W
;ENDM
;CASE MACRO KOSUL,PARAM
; IF
;ENDM

;***************************Makro Son******************************************************
LIST
;end

Ana kodda kullanılan picConf.inc dosyası:
;Pic Donaným ayarlarý
;#DEFINE XTAL 4000000
SUBTITLE "PIC STANDART MAKRO"
; /RS232\
; RS232.WRITE MACRO TEXT
; RS232.READ MACRO TEXT
; RS232.STRING MACRO LEN,TEXT
; RS232.CONFIG MACRO BRATE,Kesme,Alma,Giden
; RS232.BEGIN MACRO BRATE
; /PWM\
; PWM.SETUP
; PWM.SETUP MACRO PERIOT,DUTY
; /GENEL\
; TOGGLEBIT macro Reg,Bit
; MOVFF MACRO REG1,REG2
; MOVLF MACRO Sabit,REG2
;#INCLUDE <UART.ASM> ;
;extern RS232_WRITE
;global RS232_WRITE
;-------------------------------------------------------
; /Deðiþken TANIMLAMALAR\
#DEFINE PORT_RX PORTB,1 ;RX PÝNÝ
#DEFINE PORT_TX PORTB,2 ;TX PÝNÝ
#DEFINE CCP1_PIN 3 ;PWM 1 PÝNÝ
#DEFINE TMR2_ON BSF T2CON,TMR2ON ;TMR2 ÇALIÞTIR
#DEFINE TMR2_OFF BCF T2CON,TMR2ON ;TMR2 KAPAT


; SAYAC_DEG_0 EQU RW_IND-3
; SAYAC_DEG_1 EQU SAYAC_DEG_0-1
;*********DEÐÝÞKEN TANIMLAMA***************************
; BANK0 RAM ADRESLERÝ
VARIABLE RAM_START=0X20
VARIABLE RAM_END=0X6F
; BANK1 RAM ADRESÝ
VARIABLE RAM_START1=0XA0
VARIABLE RAM_END1=0XEF
; BANK2 RAM ADRESÝ
VARIABLE RAM_START2=0X120
VARIABLE RAM_END2=0X14F
; BANK3 RAM ADRESÝ
;VARIABLE RAM_START3=0X20
;VARIABLE RAM_END3=0X6F
;
VARIABLE RAM_BANK_IND=0 ;BANK ÝNDEKSÝ
VARIABLE DEGISKEN_IND=.0;TANIMLANANA RAM ÝNDEKSÝ
VARIABLE DEGISKEN_ADRES=RAM_START
VARIABLE _BTN_SAY = 0
;*********YAZILIMDA KULLANILACAK DEÐÝÞKENLER***********

DEGISKEN_TANIMLARI:  UDATA  ;H'a0' 0X20;udata_shr;udata_ovr ;UDATA   ;0X20
;RW_IND EQU RAM_END;6FH;
;EELEN_IND EQU RAM_END-1;6EH;
;EEIND_1 EQU RAM_END-2;6DH;
;COUND_1 EQU RAM_END-3;6CH;
;COUND_2 EQU RAM_END-4;6BH;

;******************************************************
;KOD_BASLANCICI CODE
;---------------------8 bit tanýmlama-----------------
INT8 macro D
;UDATA_OVR
D   RES 1
;CODE
endm
;----------------------16 bit tanýmlama---------------
INT16 macro D
;UDATA_OVR
D   RES 2
;CODE
endm
;----------------------24 bit tanýmlama--------------
INT24 macro D
;UDATA_OVR
D   RES 3
;CODE
endm
;----------------------32 bit tanýmlama--------------
INT32 macro D
;UDATA_OVR
D   RES 4
CODE
endm
;----------------------Dizi tanýmlama--------------
INTARRAY macro D,ALEN
;UDATA_OVR
D   RES ALEN
KOD CODE
endm
;;;;;;;;;;;;;;;;;;;;;;;;;;GEREKL? RAM ADRES? YÜKLEND?;;;;;;;;;;;;;;;;;;;;;;;;;;;
;INT8 RW_IND ;RES 1
;INT8 EELEN_IND ;RES 1
;INT8 EEIND_1 ;RES 1
;INT8 COUND_1 ;RES 1
;INT8 COUND_2 ;RES 1
;INT8 ADRH ;RES 1
;INT8 S_PCH ;RES 1 ;PROGRAM COUNTER IN YUKSEK B?TLER? YEDEKLEND?
;INT8 ROM_ADR_H ;RES 1 ;P?C ?N ROM ADRES? YUKSEK B?T? TAK?B? ?Ç?N KULLANILACAK
;INT8 ROM_ADR_L ;RES 1;P?C ?N ROM ADRES? DÜ?ÜK B?T? TAK?B? ?Ç?N KULLANILACAK
;INT8 CW_DATA ;RES 1;W REGEST?R?S? YEDE??
;INT8 LOOPCNT; RES 1;GEC?KME RUTUN? DE???KEN?
;;;;;;;;;;;;;;;;;;;;;;;;;RAM ADRES TANIMLARI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
NOLIST
;---------------sabit sayý atama-----------------------
MOVLF MACRO Sabit,REG7
MOVLW Sabit
MOVWF REG7
;MOVLW REG7
;MOVWF FSR
;MOVLW Sabit
;MOVWF INDF
;RAMLF Sabit,REG7
ENDM
MOVLF16 MACRO Sabit,REG2
MOVLF (Sabit & 0XFF),REG2
MOVLF ((Sabit & 0XFF00)/0X100),REG2+1
; MOVLF LOW (Sabit),REG2
; MOVLF HIGH (Sabit),(REG2)+1
ENDM
MOVLF24 MACRO Sabit,REG2
MOVLF (Sabit & 0XFF),REG2
MOVLF ((Sabit & 0XFF00)/0X100),REG2+1
MOVLF ((Sabit & 0XFF0000)/0X10000),REG2+2
;MOVLF ((Sabit & 0XFF000000)/0X1000000),REG2+3
ENDM
MOVLF32 MACRO Sabit,REG2
MOVLF (Sabit & 0XFF),REG2
MOVLF ((Sabit & 0XFF00)/0X100),REG2+1
MOVLF ((Sabit & 0XFF0000)/0X10000),REG2+2
MOVLF ((Sabit & 0XFF000000)/0X1000000),REG2+3
ENDM
;----------------------------------------------------
FRETURN MACRO; GITETIKET
MOVF ADRH,W
MOVWF PCLATH
RETURN
ENDM
FCALL MACRO GITETIKET
MOVLW HIGH GITETIKET
MOVWF ADRH
MOVWF PCLATH
CALL GITETIKET
;--------------RAM BÖLGES?N? BEL?RT?LEN ?NDEK KADAR TEM?ZLER
;RAMCLRI MACRO RM1_CNT,_RMBASLANGIC
;VARIABLE    _RAM_IND=0
;_RAM_IND    SET _RAM_IND+1;RAM SAYDIRMA SATIRI SAYICI
;LOCAL _SONTAKI_RAM#V(_RAM_IND);RAM SAYDIRMA ET?KET?
; MOVLW _RMBASLANGIC;BA?LANGIÇ RAM BÖLGES? ADRES?N? W'YE AL
; MOVWF FSR ;BÖLGE ADRES?N? DOLAYLI ADRES BÖLGES?NE YÜKLE
; MOVLW RM1_CNT;S?L?NECEK ADRES ?NDEKS?N? W'YE AL
;_SONTAKI_RAM#V(_RAM_IND):
; CLRF INDF;FSR DEK? RAM BÖLGES?N? S?L
; INCF FSR,F;SONRAK? RAM BÖLGES?N? ÇA?IR
; SUBLW 1   ;W'DEN 1 EKS?LT
; BTFSS STATUS,Z;SONUÇ 0 ?SE ??LEM? B?T?R,DE??LSE DEVAM ET
; GOTO _SONTAKI_RAM#V(_RAM_IND);SONUC 0 DAN FARKLI
; ENDM
;--------------RAM BÖLGES?N? BEL?RT?LEN ?NDEK KADAR TEM?ZLER
RAMCLRI MACRO RAMSTART,RAM_CNT
LOCAL SONTAKI_RAM_;RAM SAYDIRMA ET?KET?
VARIABLE    _PIC_RAM_IND=0
_PIC_RAM_IND SET _PIC_RAM_IND+1;RAM SAYDIRMA SATIRI SAYICI
MOVLW RAMSTART;BA?LANGIÇ RAM BÖLGES? ADRES?N? W'YE AL
MOVWF FSR ;BÖLGE ADRES?N? DOLAYLI ADRES BÖLGES?NE YÜKLE
MOVLW RAM_CNT;S?L?NECEK ADRES ?NDEKS?N? W'YE AL
SONTAKI_RAM_#V(_PIC_RAM_IND):
CLRF INDF;FSR DEK? RAM BÖLGES?N? S?L
INCF FSR,F;SONRAK? RAM BÖLGES?N? ÇA?IR
SUBLW 1   ;FSR DE?ER?NDEN(STOP) RAM BÖLGES?N? KAR?ILA?TIR
BTFSS STATUS,Z;SONUÇ 0 ?SE ??LEM? B?T?R,DE??LSE DEVAM ET
GOTO SONTAKI_RAM_#V(_PIC_RAM_IND);SONUC 0 DAN FARKLI

ENDM
;--------------RAM BÖLGES?N? BEL?RT?LEN ?NDEK KADAR TEM?ZLER
RAMCLR MACRO RAMSTART,RAMSTOP
LOCAL SONTAKI_RAM;RAM SAYDIRMA ET?KET?
VARIABLE    _PIC_RAM_IND=0
_PIC_RAM_IND SET _PIC_RAM_IND+1;RAM SAYDIRMA SATIRI SAYICI
MOVLW RAMSTART;BA?LANGIÇ RAM BÖLGES? ADRES?N? W'YE AL
MOVWF FSR ;BÖLGE ADRES?N? DOLAYLI ADRES BÖLGES?NE YÜKLE
SONTAKI_RAM#V(_PIC_RAM_IND):
CLRF INDF;FSR DEK? RAM BÖLGES?N? S?L
INCF FSR,F;SONRAK? RAM BÖLGES?N? ÇA?IR
MOVFW FSR;BITI? RAM BÖLGES? ADRES?N? W'YE AL
SUBLW RAMSTOP   ;FSR DE?ER?NDEN(STOP) RAM BÖLGES?N? KAR?ILA?TIR
BTFSS STATUS,Z;SONUÇ 0 ?SE ??LEM? B?T?R,DE??LSE DEVAM ET
GOTO SONTAKI_RAM#V(_PIC_RAM_IND);SONUC 0 DAN FARKLI
CLRF INDF;FSR DEK? RAM BÖLGES?N? S?L
ENDM
;-------------BEL?RT?LEN RAM ADRE?N? S?LER
CLRRAM MACRO RMADR
MOVLW RMADR
MOVWF FSR
CLRF INDF
ENDM
;--------------SAB?T DE?ER? RAM ADRES?NE YÜKLER
RAMLF MACRO RMSABIT,RMADR
MOVLW RMADR
MOVWF FSR
MOVLW RMSABIT
MOVWF INDF
ENDM
;--------------B?R?NC? DE???KENDEK? DE?ER? W'YE AL VE ?K?NC? DE???KENE YÜKLE
RAMFF MACRO RMBIR,RMIKI
MOVLW RMBIR;ADRES? W YE AL
MOVWF FSR ;DOLAYLI ADRESLEME BÖLGES?NE YAZ
MOVF INDF,W;FSR Y? W YE AL
MOVLW RMIKI;?K?NC? RAM ADRES?N? W YE AL
MOVWF FSR ;?K?NC? RAM ADRES?N? DOLAYLI ADRESLEME ?Ç?N YÜKLE
MOVWF INDF;W DEK?(B?R?NC? ADRES?N ?ÇER???) ?K?NC? ADRESE YÜKLE
ENDM
;______________________________________________________

;******************************************************
; /PWM AYARLARI\
;______________________________________________________
PWML.SETUP MACRO PERIOT,DUTY
BANKSEL TRISB
BCF TRISB,CCP1_PIN
MOVLF PERIOT,PR2 ;PWM FREKANSI BELÝRLENDÝ
BANKSEL PORTB
bCf T2CON,T2CKPS0;;IF (PERIOT<=0XFF)
bCf T2CON,T2CKPS1
IF (PERIOT>0XFF)
IF (PERIOT<=.1023);(PERIOT<=0XFFFF)
bSf T2CON,T2CKPS0
bcf T2CON,T2CKPS1
ELSE
bCf T2CON,T2CKPS0
bSf T2CON,T2CKPS1
ENDIF
ENDIF
MOVLF 0X0C,CCP1CON ;PWM MODUNA GEÇÝLDÝ
BCF CCP1CON,CCP1X ;1. BÝT SIFIRLANDI
BCF CCP1CON,CCP1Y ;0. BÝT SIFIRLANDI
IF (DUTY>=0X01) ; IF (DUTY<0X200)
BSF CCP1CON,CCP1Y ;0. BÝT
ENDIF
IF DUTY>=0X02
BSF CCP1CON,CCP1X ;1. BÝT
ENDIF
; MOVLF (DUTY/100),CCPR1H ;PWM DOLULUK ORANI BELÝRLENDÝ.
MOVLF DUTY & 0XFF,CCPR1L ;PWM DOLULUK ORANI BELÝRLENDÝ.
TMR2_ON ;TMR2 ÇALIÞTIR PWM BAÞLAT
ENDM
;--------------------------------------------------------
PWM.SETUP MACRO PERIOT,DUTY
BANKSEL TRISB
BCF TRISB,CCP1_PIN
MOVLF PERIOT,PR2 ;PWM FREKANSI BELÝRLENDÝ
BANKSEL PORTB
IF (PERIOT<=0XFF)
bCf T2CON,T2CKPS0
bCf T2CON,T2CKPS1
ENDIF
IF (PERIOT>0XFF)
IF (PERIOT<=.1023);(PERIOT<=0XFFFFFFFF)
bSf T2CON,T2CKPS0
bcf T2CON,T2CKPS1
ELSE
bCf T2CON,T2CKPS0
bSf T2CON,T2CKPS1
ENDIF
ENDIF
MOVLF 0X0C,CCP1CON ;PWM MODUNA GEÇÝLDÝ
BCF CCP1CON,CCP1X ;1. BÝT
BCF CCP1CON,CCP1Y ;0. BÝT
BTFSC DUTY,0
BSF CCP1CON,CCP1Y ;0. BÝT
BTFSC DUTY,1
BSF CCP1CON,CCP1X ;1. BÝT
MOVLF LOW DUTY,CCPR1L ;PWM DOLULUK ORANI BELÝRLENDÝ.
TMR2_ON ;TMR2 ÇALIÞTIR PWM BAÞLAT
ENDM
;--------------------------------------------------------
PWM MACRO DEGER1
BANKSEL CCP1CON
MOVFF DEGER1,COUND_1
BCF CCP1CON,CCP1X ;1. BÝT
BCF CCP1CON,CCP1Y ;0. BÝT
; BTFSC DEGER1,0; BSF CCP1CON,CCP1Y ;0. BÝT; BTFSC DEGER1,1; BSF CCP1CON,CCP1X ;1. BÝT
rRf COUND_1,F
BTFSC STATUS,C
BSF CCP1CON,CCP1Y ;0. BÝT
rRf COUND_1,F
BTFSC STATUS,C
BSF CCP1CON,CCP1X ;1. BÝT
MOVFF COUND_1,CCPR1L
ENDM
;---------------------------------------------------------
PWM16 MACRO DEGER1
BANKSEL CCP1CON
MOVFF DEGER1,COUND_1
; MOVFF DEGER1+1,COUND_2
BCF CCP1CON,CCP1X ;1. BÝT
BCF CCP1CON,CCP1Y ;0. BÝT
; BTFSC COUND_1,0;DEGER1,0
; BSF CCP1CON,CCP1Y ;0. BÝT
; BTFSC COUND_1,1;DEGER1,1
; BSF CCP1CON,CCP1X ;1. BÝT
rRf COUND_1,F
BTFSC STATUS,C
BSF CCP1CON,CCP1Y ;0. BÝT
rRf COUND_1,F
BTFSC STATUS,C
BSF CCP1CON,CCP1X ;1. BÝT
;;
BCF COUND_1,6;
BCF COUND_1,7
BTFSC DEGER1+1,0;COUND_2,0
BSF COUND_1,6 ;0. BÝT
BTFSC DEGER1+1,1;COUND_2,1
BSF COUND_1,7 ;1. BÝT
MOVFF COUND_1,CCPR1L
ENDM
;------------------------------------------------------------
PWML MACRO DEGER
BANKSEL CCP1CON
BCF CCP1CON,CCP1X ;1. BÝT
BCF CCP1CON,CCP1Y ;0. BÝT
IF (DEGER & 0X01)
BSF CCP1CON,CCP1Y ;0. BÝT
ENDIF
IF DEGER & 0X02
BSF CCP1CON,CCP1X ;1. BÝT
ENDIF
MOVLF (DEGER>>2),CCPR1L;(DEGER/4),CCPR1L
ENDM
;______________________________________________________
;------------------------------------------------------
; /EEPROM\
EEPROM.CONFIG macro KESME

ENDM
;--------------------ADRES YAZ
EEPROM.ADRESL macro ADRS
BANKSEL EEADR ;ADRESÝ BANKINA GEÇ
; MOVLF ADRS,EEADR ;ADRES BÝLGÝSÝNÝ ADRES YAZMACINA YÜKLE
movlw ADRS
MOVWF EEADR
BANKSEL PORTA ;BANK0 GEÇ
ENDM
EEPROM.ADRES macro ADRS
MOVFW ADRS
BANKSEL EEADR ;ADRESÝ BANKINA GEÇ
MOVWF EEADR ;ADRES BÝLGÝSÝNÝ ADRES YAZMACINA YÜKLE
BANKSEL ADRS ;BANK0 GEÇ
ENDM
;-------------------SABÝT DEÐER YAZMA---------------------
WRITEL MACRO VERI
; BANKSEL PORTA ;BANK0 GEÇ
MOVLW VERI ;GÖNDERÝLECEK VERÝYÝ W YÜKLLE
BANKSEL EEDATA
MOVWF EEDATA ;KAYDEDÝLECEK VERÝ YÜKLE
;BCF EECON1,EEPGD
        BSF EECON1,WREN ;YAZMA ÝÞLEMÝ AKTÝF
MOVLF 0X55,EECON2;YAZMA KOMUTU 1
MOVLF 0XAA,EECON2;YAZMA KOMUTU 2
BSF EECON1,WR ;EPROMA YAZMA TAMAMLANDI
BCF EECON1,EEIF ;KESME BÝTÝNÝ TERMÝZLE
; BITSG EECON1,WR,$-1;YAZMA BÝTTÝMÝ KOMTROL ET,
BTFSC EECON1,WR
GOTO $-1
BCF EECON1,WREN ;YAZMA ÝÞLEMÝNÝ KAPAT
BANKSEL PORTA
ENDM
;-------------------DEÐÝÞKEN YAZMA------------------------
WRITE MACRO VERI
BANKSEL VERI ;BANK0 GEÇ
MOVFW VERI ;GÖNDERÝLECEK VERÝYÝ W YÜKLLE
BANKSEL EEDATA
MOVWF EEDATA ;KAYDEDÝLECEK VERÝ YÜKLE
;BCF EECON1,EEPGD
        BSF EECON1,WREN ;YAZMA ÝÞLEMÝ AKTÝF
MOVLF 0X55,EECON2;YAZMA KOMUTU 1
MOVLF 0XAA,EECON2 ;YAZMA KOMUTU 2
BSF EECON1,WR ;EPROMA YAZMA TAMAMLANDI
BCF EECON1,EEIF ;KESME BÝTÝNÝ TERMÝZLE
; BITSG EECON1,WR,$-1;YAZMA BÝTTÝMÝ KOMTROL ET,
BTFSC EECON1,WR
GOTO $-1
BCF EECON1,WREN ;YAZMA ÝÞLEMÝNÝ KAPAT
BANKSEL PORTA
ENDM
EEPROM.WRITEL macro ADRES,VERI
EEPROM.ADRESL ADRES ;ADRESÝ YÜKLE
WRITEL VERI ;VERÝYÝ YAZ
ENDM
EEPROM.WRITELF macro ADRES,VERI
EEPROM.ADRESL ADRES ;ADRESÝ YÜKLE
WRITE VERI ;VERÝYÝ YAZ
ENDM
EEPROM.WRITE macro ADRES,VERI
EEPROM.ADRES ADRES ;ADRESE GÝT
WRITE VERI ;VERÝYÝ KAYDET
ENDM
;<<<<<<<<<<<<<<<<<<<<<<<<<<KÜME YAZDIRMA PROSÖDÜRÜN YAZDIR>>>>>>>>>>>>>
EEPROM.LONGWRITEL MACRO ADR,EELEN,RAMADR
LOCAL READ_LABEL
; EELEN_IND RES 1
; EEIND_1 RES 1
CLRF EEIND_1
MOVLF (EELEN),EELEN_IND
READ_LABEL
MOVFW EEIND_1 ;BÝR SONRAKÝ ADRES ÝNDÝSÝNÝ YÜKLE
ADDLW ADR
BANKSEL EEADR ;ADRESÝ BANKINA GEÇ
MOVWF EEADR ;ADRES BÝLGÝSÝNÝ ADRES YAZMACINA YÜKLE
BANKSEL RAMADR
MOVFW EEIND_1
ADDLW RAMADR
MOVWF FSR
WRITE INDF;SIRADAKÝ RAM ADRESÝNE YAZ
INCF EEIND_1,F
DECFSZ EELEN_IND,F
GOTO READ_LABEL
ENDM
;CLRF EEIND_2
;MOVLF .9,EELEN_IND1
; READ_LABEL
; MOVFW EEIND_2 ;BÝR SONRAKÝ ADRES ÝNDÝSÝNÝ YÜKLE
; ADDLW 0;ADR
; BANKSEL EEADR ;ADRESÝ BANKINA GEÇ
; MOVWF EEADR ;ADRES BÝLGÝSÝNÝ ADRES YAZMACINA YÜKLE
; BANKSEL IND
; MOVFW (EELEN_IND1);EEIND_2
; ADDLW EEMETIN-1;RAMADR
; MOVWF FSR
; READL ;BÝLGÝYÝ EEPROMDAN AL
; MOVWF INDF;SIRADAKÝ RAM ADRESÝNE YAZ
; INCF EEIND_2,F
; DECFSZ EELEN_IND1,F
; GOTO READ_LABEL
EEPROM.LONGWRITE MACRO ADR,LEN,RAMADR
LOCAL READ_LABEL
MOVFF (LEN),EELEN_IND
READ_LABEL
MOVFW ADR ;BÝR SONRAKÝ ADRES ÝNDÝSÝNÝ YÜKLE
BANKSEL EEADR ;ADRESÝ BANKINA GEÇ
MOVWF EEADR ;ADRES BÝLGÝSÝNÝ ADRES YAZMACINA YÜKLE
BANKSEL RAMADR
MOVLF RAMADR,FSR
WRITE INDF;SIRADAKÝ RAM ADRESÝNE YAZ
INCF ADR,F
INCF RAMADR,F
DECFSZ EELEN_IND,F
GOTO READ_LABEL
ENDM
;-------------------OKUMA--------------------------------------
READL MACRO
BANKSEL EECON1 ;BAKA GEÇ
BSF EECON1,RD ;OKUYMAYI AKTÝF ET
MOVFW EEDATA ;VERÝ AL
BCF EECON1,RD ;OKUMA KAPAT
BANKSEL PORTA
ENDM
EEPROM.READ MACRO ADR,VERI
EEPROM.ADRES ADR
READL
BANKSEL VERI
MOVWF VERI
ENDM
;--------------------BELÝRTÝLEN ADETTE VERÝ OKUR--------------
EEPROM.LONGREADL MACRO EADR,LEN,RAMADR
LOCAL READ_LABEL
CLRF EEIND_1
MOVLF LEN,EELEN_IND
READ_LABEL
MOVFW EEIND_1 ;BÝR SONRAKÝ ADRES ÝNDÝSÝNÝ YÜKLE
ADDLW EADR
BANKSEL EEADR ;ADRESÝ BANKINA GEÇ
MOVWF EEADR ;ADRES BÝLGÝSÝNÝ ADRES YAZMACINA YÜKLE
BANKSEL RAMADR
MOVFW EEIND_1
ADDLW RAMADR
MOVWF FSR
READL ;BÝLGÝYÝ EEPROMDAN AL
MOVWF INDF;SIRADAKÝ RAM ADRESÝNE YAZ
INCF EEIND_1,F
DECFSZ EELEN_IND,F
GOTO READ_LABEL
ENDM
EEPROM.LONGREAD MACRO EPADR,LEN,RAMADR
LOCAL READ_LABEL
MOVLF RAMADR,EEIND_1
MOVFF LEN,EELEN_IND
READ_LABEL
MOVFW ADR ;BÝR SONRAKÝ ADRES ÝNDÝSÝNÝ YÜKLE
BANKSEL EEADR ;ADRESÝ BANKINA GEÇ
MOVWF EEADR ;ADRES BÝLGÝSÝNÝ ADRES YAZMACINA YÜKLE
BANKSEL RAMADR
MOVFF EEIND_1,FSR
READL ;BÝLGÝYÝ EEPROMDAN AL
MOVWF INDF;SIRADAKÝ RAM ADRESÝNE YAZ
INCF ADR,F
INCF EEIND_1,F
DECFSZ EELEN_IND,F;LEN,F
GOTO READ_LABEL
ENDM
;---------------------SABÝT DEÐER YÜKLEMEYE YARAR-------
EEPROM.YUKLE MACRO EPADR,EDATA
;ORG 0x2100+EPADR;YAZILACAK ADRES GÝT
DE EDATA
ENDM
;______________________________________________________
;******************************************************
; /GENEL MAKOLAR\
;----------------bit tersleme--------------------------
TOGGLEBIT macro Reg,Bit
MOVLW 1<<Bit
xorwf Reg,F
ENDM
;---------------deðiþken taþýma------------------------
MOVFF MACRO REG1,REG2
MOVFW REG1
MOVWF REG2
ENDM
MOVFF16 MACRO REG1,REG2
MOVFF REG1,REG2
MOVFF (REG1)+1,(REG2)+1
ENDM
MOVFF24 MACRO REG1,REG2
MOVFF REG1,REG2
MOVFF (REG1+1),(REG2+1)
MOVFF (REG1)+2,(REG2)+2
MOVFF (REG1)+3,(REG2)+3
ENDM
MOVFF32 MACRO REG1,REG2
MOVFF REG1,REG2
MOVFF (REG1+1),(REG2+1)
MOVFF (REG1)+2,(REG2)+2
MOVFF (REG1)+3,(REG2)+3
ENDM
;=======================D??ER MAKROLAR==================================

;HEXTODEC MACRO HEXSAYI,DSP3
; LOCAL NEXTHEX
; LOCAL NEXTDEC
; LOCAL HEXTODEC_END
;#DEFINE HEXDEGER
; MOVFF HEXSAYI,EEIND_1
; MOVLF 3,RW_IND ;SAYAÇ DEÐÝÞKENÝ (HEX BASAMAK SAYISI)
; MOVLF DSP3,FSR;EEIND_1;DÝJÝTLERÝN DEÐERÝNÝ SAKLAYAN DEÐÝKENLERÝN BAÞLANGIÇ ADRESÝ
; ÖZETLEMEK GEREKÝRSE 0XFF=255 YANÝ HEX OLARAK 8BÝTLÝK ENYÜKSEK DEÐER
; 0XFF YANÝ 2 BASAMAKLI BÝR DEÐER; BUNUN DEC YANÝ NORMAL SAYI KARÞILIÐI 255 YANÝ 3 BASMAKLI BÝR
; SAYIDIR. BUNA GÖRE 8BÝTLÝK HEX SAYISINI DENÜÞTÜRMEK ÝÇÝN 24BÝT(3 BASASMAK) BÝR DEÐÝÞKEN TANIMLAMAK
; VE BUNU DECÝMEL SAYI ÝÇÝN KULLANMAK GEREKECEK
; CLRF DSP3
; CLRF DSP3+1
; CLRF DSP3+2

; MOVLF 0X0A,EELEN_IND;



; DECFSZ EEIND_1,F;SAYIYI AZALT
; GOTO NEXTDEC ;DEC ÇEVÝR
; GOTO HEXTODEC_END
;NEXTHEX
; clrf INDF
; INCF FSR,F ;SIRADAKÝ ADRESÝ GETÝR
; DECFSZ RW_IND,F;BASAMAK ÝNDEKSÝ AZALT
; GOTO NEXTHEX;BÝTMEDÝ DEVAM ET
; GOTO HEXTODEC_END

;NEXTDEC
; DECF EELEN_IND,F

;GOTO HEXTODEC_END

;HEXTODEC_END
;ENDM
;----------------------------------------------------
SN74LS164 MACRO DPORT,_DPIN,CPORT,_CPIN,SIFDATA;
;____________________________________________________
;SEND_DATA
LOCAL CLOCK
LOCAL SEND1
MOVLF .8,RW_IND
SEND1
RRF SIFDATA,F;74LS164'E GÖNDERÝLECEK DATAYI BÝR BÝT SAÐA KAYDIR.
BTFSS STATUS,C;KAYAN BÝT DEÐERÝNÝ 1 MÝ?
GOTO $+2;HAYIR,BÝT 0 DATA PÝNÝNÝ 0 YAPAN KODA GÝT
GOTO $+3;EVET, BÝTÝN DEÐERÝ 1 DATA PÝNÝNÝ SET ET
BCF DPORT,_DPIN ;DEÐER 0 (PÝN 0 A ÇEK)
GOTO CLOCK ;CLOCK PALSI ÜRET
BSF DPORT,_DPIN ;DEÐER 1
CLOCK ;CLOK PALSI ÜRETEN KOD
BCF CPORT,_CPIN ;CLOK PÝNÝ RESETLE
NOP;CALL DELAY;BEKLE
NOP
NOP
BSF CPORT,_CPIN ;CLOCK PÝNÝ SETT DURUMA GETÝR
NOP;CALL DELAY;BEKLE
NOP
NOP
BCF CPORT,_CPIN
DECFSZ RW_IND,F ;GÖNDERÝLEN BÝTSAYISIN 1 DÜÞÜR VE 0 MI KONTROL ET
GOTO SEND1;8 ADET DATA BÝTMEDÝ
RRF SIFDATA,F
ENDM

;*******************BUTON FONKS?YONU*******************************************
BUTON_TIKLA MACRO BTNPORT,BTNPIN,BTNETIKET
_BTN_SAY    SET _BTN_SAY+1
LOCAL BTN_TEST_ET#v(_BTN_SAY)
LOCAL BTN_SONU#v(_BTN_SAY)
BITCG BTNPORT,BTNPIN,BTN_TEST_ET#v(_BTN_SAY)
GOTO BTN_SONU#v(_BTN_SAY)
BTN_TEST_ET#v(_BTN_SAY):
BITCG BTNPORT,BTNPIN,BTN_TEST_ET#v(_BTN_SAY)
CALL BTNETIKET
BTN_SONU#v(_BTN_SAY):
NOP
ENDM
;*************************BEKLEM RUT?N?****************************************
GLOBAL DELAY1MS,DELAYL10US
YAZILIM_KOD_BASLANGICI:CODE
DELAY1MS:                            ;lms PAUSE
    MOVLW    .155;.155;.100    ;1CYC
    MOVWF    LOOPCNT    ;1CYC
DELAYL10US:       
    NOP        ;lCYC
    NOP        ;lCYC
    NOP        ;lCYC
    NOP        ;lCYC
    NOP        ;lCYC
    NOP        ;lCYC
    NOP        ;lCYC
    DECFSZ    LOOPCNT,F    ;8*LOOPCNT
    GOTO DELAYL10US    ;2CYC, (8*LOOPCNT-1)*2
RETURN  ;2CYC
; TOPLAM GEC?KME=1+1+(8*LOOPCNT-1)+(8*LOOPCNT-1)*2+2
; LOOPCNT=155DECIMAL   
; TOPLAM GEC?KME=   1+1+(8*155-1)+(8*155-1)*2+2
; TOPLAM GEC?KME=C   
BEKLE_10CYC:GOTO BEKLE_08CYC
BEKLE_08CYC:GOTO BEKLE_06CYC
BEKLE_06CYC:GOTO BEKLE_04CYC
BEKLE_04CYC:RETURN     
;****************son***********************************

;;global RS232_WRITE
;R_WRITE macro
;;local RS232_WRITE
;;RS232_WRITE
;; MOVWF TXREG
; BANKSEL TXSTA
; BTFSS TXSTA,TRMT;1
; GOTO $-1
; BANKSEL TXREG
; RETURN
;endm
LIST


Ana kodda kullanılan UART_MACRO.inc dosyası:
VARIABLE    UART_SEND_IND
VARIABLE    RS232_SEND_IND,RS232_TEXT_IND
CODE
;******************************************************
; /RS232 AYARLARI\
;-------------GELEN VERÝYÝ OKU-------------------------
RS232.READ MACRO TEXT
BITSG PIR1,RCIF,-1
MOVFF RCREG,TEXT
ENDM
;-------------GÖNDERME---------------------------------
RS232.WRITEL MACRO TEXT
LOCAL UART_SEND_TXT#V(UART_SEND_IND)
UART_SEND_IND SET UART_SEND_IND+1
MOVLF TEXT,TXREG
BANKSEL TXSTA
UART_SEND_TXT#V(UART_SEND_IND): BTFSS TXSTA,TRMT;1
GOTO UART_SEND_TXT#V(UART_SEND_IND);$-1
BANKSEL TXREG
ENDM
;-----------16BIT SABÝT VERÝ GÖNDERME-----------------
RS232.WRITE16 MACRO TEXT
RS232.WRITE LOW TEXT
RS232.WRITE HIGH TEXT
ENDM
;-------------------------24BIT SABÝT VERÝ GÖNDERME-----------------
RS232.WRITE24 MACRO Sabit
RS232.WRITE (Sabit & 0XFF)
RS232.WRITE ((Sabit & 0XFF00)/0X100)
RS232.WRITE ((Sabit & 0XFF0000)/0X10000)
ENDM
;-------------------------32BIT SABÝT VERÝ GÖNDERME-----------------
RS232.WRITE32 MACRO Sabit
RS232.WRITE (Sabit & 0XFF)
RS232.WRITE ((Sabit & 0XFF00)/0X100)
RS232.WRITE ((Sabit & 0XFF0000)/0X10000)
RS232.WRITE ((Sabit & 0XFF000000)/0X1000000)
ENDM
;--------------------8BÝT VERÝ GÖNDERME------------------------
RS232.SEND MACRO RS_TEXT
    local RS_GONDER#V(RS232_SEND_IND)
    RS232_SEND_IND SET RS232_SEND_IND+1
MOVFF RS_TEXT,TXREG
BANKSEL TXSTA
RS_GONDER#V(RS232_SEND_IND): BTFSS TXSTA,TRMT;1
GOTO RS_GONDER#V(RS232_SEND_IND);$-1
BANKSEL TXREG
;R_WRITE
ENDM

;-------------------------16BÝT VERÝ GÖNDERME-----------------
RS232.SEND16 MACRO TEXT
RS232.SEND (TEXT)+1
; incf FSR,F
RS232.SEND (TEXT);+1

ENDM
;-------------------------24BÝT VERÝ GÖNDERME-----------------
RS232.SEND24 MACRO TEXT
; RW_IND24 RES 1
LOCAL TEKRAR_RW
MOVLF 3,RW_IND;24 ;GÖNDERÝLEN VERÝ BOYUTU
MOVLF TEXT+2,FSR ;BELLEK ADRESÝNÝ YÜKLE
CALL RS232_SAYARAK_YAZ
ENDM
;---------------------32BÝT VERÝ GÖNDERME---------------
RS232.SEND32 MACRO TEXT
; RW_IND32 RES 1
LOCAL TEKRAR_RW32
MOVLF 4,RW_IND;32 ;GÖNDERÝLEN VERÝ BOYUTU
MOVLF TEXT+3,FSR ;BELLEK ADRESÝNÝ YÜKLE
CALL RS232_SAYARAK_YAZ
ENDM
; -----------SABÝT METÝNLERÝ GÖNDERME METNÝ------------
;RS232.STRING MACRO LEN,TEXT
; COUNT RES 1
; TADRES RES 1
;LOCAL STRING_NEXT
;LOCAL _MESAJ ;;EXTERN
; MOVLF LEN,COUNT
; CLRF TADRES
; GOTO STRING_NEXT
;_MESAJ
; PAGESEL _MESAJ
; addwf PCL,F ;ADRESE DALLAN
; DT TEXT
;STRING_NEXT
; MOVFW TADRES ;TABLO ADRESÝ
; CALL _MESAJ; MOVWF PCL;,F ;ADRESE DALLAN
; MOVWF TXREG ;TABLO BÝLGÝSÝNÝ GÖNDER
; BANKSEL TXSTA ;BANK1 GEÇ
; BTFSS TXSTA,1;TRMT
; GOTO $-1 ;GÖNDERME TAMAMLANDI
; BANKSEL TXREG ;BANK0 GEÇ
; INCF TADRES,F;ADRESÝ ARTIR
; DECFSZ COUNT,F ;KARAKTER SAY
; GOTO STRING_NEXT ;TÜM KAREKTERLER BÝTENEKADAR DEVAM ET
;ENDM



; -----------VER?LEN YAZIYI UARTTAN GÖNDEREN MAKRO------------
RS232.TEXT MACRO RS_TEXT
LOCAL RS232_TXT_MESAJ#V(RS232_TEXT_IND)  ;YAZDIRILACAK MESAJ ADRES TABLOSU
LOCAL RS232_YENIDEN_YAZ#V(RS232_TEXT_IND)  ;YAZMA KOD ADRES?
RS232_TEXT_IND SET RS232.TEXT+1
MOVLF HIGH RS232_TXT_MESAJ,ROM_ADR_H
MOVLF LOW RS232_TXT_MESAJ,ROM_ADR_L
MOVFF PCLATH,S_PCH
GOTO RS232_YENIDEN_YAZ#V(RS232_TEXT_IND);RS232_YENIDEN_YAZ
RS232_TXT_MESAJ#V(RS232_TEXT_IND): DT RS_TEXT,H'0'
RS232_YENIDEN_YAZ#V(RS232_TEXT_IND):CALL RS232_Karakter_YAZ
ENDM
;---------------------------------------------------------------------------

RS232.SENDSTRINGL MACRO LEN,TEXT
MOVLF LEN,RW_IND;32 ;GÖNDERÝLEN VERÝ BOYUTU
MOVLF TEXT,FSR ;BELLEK ADRESÝNÝ YÜKLE
CALL RS232_SAYARAK_YAZ
ENDM
; -----------RAMDAKÝ METÝNLERÝ GÖNDERME------------
RS232.SENDSTRING MACRO LEN,TEXT
MOVFF LEN,RW_IND;32 ;GÖNDERÝLEN VERÝ BOYUTU
MOVLF TEXT,FSR ;BELLEK ADRESÝNÝ YÜKLE
CALL RS232_SAYARAK_YAZ
ENDM

;-------------AYARLAR----------------------------------
RS232.CONFIG MACRO BRATE,Kesme,Alma,G

VARIABLE    HIZ=0;LOW SPID,1 HIG SPID
BANKSEL SPBRG ;BANK1
IF BRATE==19200
        HIZ SET 1;0 LOW SPID,1 HIG SPID
MOVLW .12
ENDIF
IF BRATE==2400
        HIZ SET 0;0 LOW SPID,1 HIG SPID
MOVLW .103
ENDIF
IF BRATE==9600
MOVLW .25
        HIZ SET 1;0 LOW SPID,1 HIG SPID
ENDIF
IF BRATE==1200
        HIZ SET 0;0 LOW SPID,1 HIG SPID
MOVLW .207
ENDIF
IF BRATE==28800
        HIZ SET 1;0 LOW SPID,1 HIG SPID
MOVLW .8
ENDIF
IF BRATE==33600
        HIZ SET 1;0 LOW SPID,1 HIG SPID
MOVLW .6
ENDIF
IF BRATE==57600
        HIZ SET 1;0 LOW SPID,1 HIG SPID
MOVLW .3
ENDIF
CONSTANT _TXSTA=((HIZ<<2)|(G<<5));BRGH=2 TXEN=5
;movlw 4000000/(.64(x+1))
MOVWF SPBRG ;ERÝÞÝM HIZI BELÝRLENDÝ
movlw _TXSTA;(1<<2)|(Gönderme<<TXEN);((Gönderme<<5)|(1<<2));
MOVWF TXSTA ;ÇALIÞMA MODU AYARÞANDI
if Kesme==1
BSF INTCON,PEIE ;ÇEVRESEL KESMELERE ÝZÝN VER
BSF PIE1,RCIE ;UART ALMA KESMESÝ KESME AÇIK
; BSF PIE1,TXIE ;UART GÖNDERME KESMESÝ KESME AÇIK
endif
BSF PORT_RX
BCF PORT_TX
BANKSEL RCSTA ;bak0
MOVLW ((1<<SPEN)|(Alma<<CREN));4 B'10010000' ;SÜREKLÝ VERÝ ALMA AÇIK,PORT AÇIK
MOVWF RCSTA ;PORT AYARLARI TAMAM PORT AÇIK

ENDM
RS232.BEGIN MACRO BRATE
BANKSEL SPBRG
IF BRATE=9600
MOVLW .25
ENDIF
IF BRATE=19200
MOVLW .12
ENDIF
IF BRATE=2400
MOVLW .103
ENDIF
IF BRATE=9600
MOVLW .25
ENDIF
IF BRATE=1200
MOVLW .207
ENDIF
IF BRATE=28800
MOVLW .8
ENDIF
IF BRATE=33600
MOVLW .6
ENDIF
IF BRATE=57600
MOVLW .3
ENDIF
MOVWF SPBRG ;ERÝÞÝM HIZI BELÝRLENDÝ
BANKSEL RCSTA ;bak0
ENDM

;______________________________________________________________________________
;CODE
; -----------VER?LEN YAZIYI UARTTAN GÖNDEREN MAKRO------------
RS232_Karakter_YAZ:
;CALL MEMORY_KARAKTER_0KU
MOVWF CW_DATA
XORLW   B'00000000'         ; OKUNNAN DE?ER?N XOR ?LE "0" OLUP OLMADI?INI TEST ET.
BTFSC   STATUS,Z           ; OKUNANA DE?ER "0" ?SE ??LEM? SONLANDIR.
RETURN;GOTO    RS_YAZMA_SONA_ERDI
RS232.SEND CW_DATA
INCFSZ ROM_ADR_L,F
GOTO RS232_Karakter_YAZ
INCF ROM_ADR_H,F
GOTO RS232_Karakter_YAZ

;-----------RAMDAKÝ METÝNLERÝ GÖNDERME------------
RS232_SAYARAK_YAZ:
RS232.SEND INDF
INCF FSR,F ;BÝRSONRAKÝ ADRESÝ YÜKLEDECF
DECFSZ RW_IND,F;32,F ;BÝTTÝM
GOTO RS232_SAYARAK_YAZ ;HAYIR BAÞA DON TEKRARLA
RETURN

Simülasyon dosyası görüntüsü
(http://www.imgim.com/sim%C3%BClasyong%C3%B6r%C3%BCnt%C3%BCs%C3%BC.jpg)

Bord'dan okunan veri görüntüsü
(http://www.imgim.com/boartekran%C4%B1.jpg)
Başlık: Ynt: DS1302 Saat bilgisi okuma sorunu
Gönderen: ByTEK - 25 Haziran 2018, 10:24:51
Hocam bende ayni sorunu yaşamıştım geçmişte. Bozuk diyerek ayni yerden baska aldım. Guzelmeyince Baska bir satıcıdan rtc yi aldim. Düzelmişti. Birde kristali eski pc anakartından söktüm ve kullandım. 2-3 günümü aldı sorunu çözmek. İmkanınız varsa Başka donanım deneyin. Kodlara baktım ama asm ye hakim değilim.
Başlık: Ynt: DS1302 Saat bilgisi okuma sorunu
Gönderen: Mujdat117 - 25 Haziran 2018, 21:25:54
Hocam ilginiz için teşekkürler,

elimde aşağıdaki modülden ayrıca bir tanede yedek entegre var her ikisinde de aynı durun RAM bölgesinden okuma yazma sorunsuz yapabiliyorum. İş SAAT bilgisi okumaya geldiğinde sabit değer okuyorum. Elimde Arduino UNO var hazır kütüphane ile test ettim her iki entegre de sorunsuz çalışıyor gibi görünüyor.
Kodda ve entegre de hata olmadığını düşündürüyor ancak Kodda eksiklik olabilir. Yani ilk kurulumda güncel saat bilgisini yükledikten sonra RTC'yi çalıştırmak için bir start komutu göndermek mi gerekiyor?
Arduino kütüphanesini inceleyeceğim bakalım bir sonuç elde edebilecek miyim.


Başlık: Ynt: DS1302 Saat bilgisi okuma sorunu
Gönderen: ByTEK - 25 Haziran 2018, 22:25:57
Alıntı yapılan: Mujdat117 - 25 Haziran 2018, 21:25:54Hocam ilginiz için teşekkürler,

elimde aşağıdaki modülden ayrıca bir tanede yedek entegre var her ikisinde de aynı durun RAM bölgesinden okuma yazma sorunsuz yapabiliyorum. İş SAAT bilgisi okumaya geldiğinde sabit değer okuyorum. Elimde Arduino UNO var hazır kütüphane ile test ettim her iki entegre de sorunsuz çalışıyor gibi görünüyor.
Kodda ve entegre de hata olmadığını düşündürüyor ancak Kodda eksiklik olabilir. Yani ilk kurulumda güncel saat bilgisini yükledikten sonra RTC'yi çalıştırmak için bir start komutu göndermek mi gerekiyor?
Arduino kütüphanesini inceleyeceğim bakalım bir sonuç elde edebilecek miyim.


Ayar yaparken Stop ettirip sonra start ettirmek gerekiyor diye biliyorum. Çünkü kodu öyle yazmışım.

Ben Jalv2 ile yazmıştım. onun kütüphanesinden aşağıdaki örneği verebilirim. Start kısmını inceleyin. Sizin kodta varmı bilmiyorum.

procedure rtc_start() is
   var byte second = rtc_read_second()
   rtc_write_reg_(rtc_reg_second_, second & 0b0111_1111)  -- clear halt bit
end procedure


Buda Hitech-C için örnek

void ds1302_init(void)
{
unsigned char x;
RST=0;
DelayUs(2);
SCLK=0;
DelayUs(2);
ds1302_write(0x8E,0);
ds1302_write(0x90,0xA6);

-- RTC Start
x=ds1302_read(0x81);
if((x & 0x80)!=0)
ds1302_write(0x80,0);

}
Başlık: Ynt: DS1302 Saat bilgisi okuma sorunu
Gönderen: FMY - 26 Haziran 2018, 09:35:33
ds1302 ile bende hep sorun yaşadım. Bence ds1307 kullanırsanız sorun çözülecektir.
Başlık: Ynt: DS1302 Saat bilgisi okuma sorunu
Gönderen: Andromeda - 26 Haziran 2018, 10:03:55
..ds1302 de sorun yok.ben ilk başta 2*16 lcd ye yazdıran hazır kod kullanmıştım picbasic..
zaten iki bölümden oluşan basit bir kod..
Başlık: Ynt: DS1302 Saat bilgisi okuma sorunu
Gönderen: RaMu - 26 Haziran 2018, 15:16:38
Kod DsPic30F2010 için,
biraz karışık pekte hoş bir örnek değil ama çalışıyor.
https://rmtulay.wordpress.com/2015/05/22/asm-dspic-ds18b20-2x16-lcd-ile-termometre-uygulamasi/

Başlatma için şöyle bir şey yapmışım:
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<AÇIILIŞ DEĞERLERİ KURMA SON<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>CH WP KALDIRMA SARZ AYARLAM>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DSKUR:  MOV #0x008E,w0 ;WP KALDIRMA
CALL DSYAZ
CLR w0
CALL DSYAZ
BCLR PORTB,#CE
REPEAT #14
NOP

;MOV #0X0090,W0     ;SARZ AYARLAMA
;CALL DSYAZ

;mov #0X00A5,W0
;CALL DSYAZ
;BCLR PORTB,#CE
;REPEAT #14
;NOP

MOV #0x80,w0 ; SANİYE YAZMA ADRESİ(CH KALDIRMA)
CALL DSYAZ

MOV #0x45,w0         ;W8 İDİİİİİİİİİİİİİ     SANİYEYİ 45 DEN BAŞLAT  (CH I DA KALDIRIR AYNI ZAMANDA)
CALL DSYAZ
BCLR PORTB,#CE
REPEAT #14
NOP
RETURN
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>GEREKİRSE SAAT DURDURMA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
SAATDURDUR: MOV #0x80,w0 ; SANİYE YAZMA ADRESİ BIT7SET EDİLİRSE (CH SET) SAAT DURDURULUR
    CALL DSYAZ

    MOV #0x80,w0         ;W8 İDİİİİİİİİİİİİİ     SANİYEYİ 18 DEN BAŞLAT
    CALL DSYAZ
    BCLR PORTB,#CE
    REPEAT #14
      NOP
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;1302 YE YAZMA İŞLEMİ
DSYAZ: BCLR TRISB,#IO
REPEAT #14
NOP
BSET PORTB,#CE
REPEAT #14
NOP

MOV #8,w1
DO #7,SAR
RRC.B w0,w0                 
BCLR PORTB,#IO
BTSC SR,#C
BSET PORTB,#IO
REPEAT #14
NOP
BSET PORTB,#SCLK
REPEAT #14
NOP
dec w1,w1
btss SR,#Z
BCLR PORTB,#SCLK
REPEAT #14
NOP
SAR:    NOP
BSET TRISB,#IO
REPEAT #14
NOP
BCLR PORTB,#SCLK
REPEAT #14
NOP
    RETURN
;;;;;
Başlık: Ynt: DS1302 Saat bilgisi okuma sorunu
Gönderen: Mujdat117 - 29 Haziran 2018, 00:02:49
Öncelikle ilginiz ve yardımlarınız için hepinize teşekkür ederim.

şuanda kod istediğin gibi çalışıyor kod içerisinde 2 adet hata yaptığımı fark ettim;
1.si ds1302 Kurulum için bir kod yazdım fakat kodu mcu başlatırken çağırmayı gözden kaçırmışım.
ikinci hatam ise RTC kurulum ve saat ayarlarını yüklerken her adres ve veri yazılmadan önce RESET/CE pini durumunu değiştirmeyi atlamışım.

DS1302 Veri yazmak için:
1-RST/En pini set edilecek
2-adres verisi byte yazma rutini ile yazılır,
3-yazılacak veri için byte yazma rutini tekrar çağrılır,
4-RST/En pini low edilerek yazma işlemi sonlandırılır.

DS1302 Veri okuma için:
1-RST/En pini set edilecek
2-adres verisi byte yazma rutini ile yazılır,
3-byte okuma rutini çağrılır, ve okunan veri bir değişkene(ram adresi) aktarılır,
4-RST/En pini low edilerek yazma işlemi sonlandırılır.

ben 1. ve 4. işlemleri atlamışım şuan düzeltim ve sorun çözüldü.
Projem bittiğinde tüm dosyaları paylaşmayı düşünüyorum şimdilik iyi akşamlar diklerim.