Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Assembly prg yardım

Başlatan theredkid, 14 Ağustos 2014, 14:33:26

theredkid

Merhabalar,

Aşağıdaki prg ı anlayan varsa bana biraz anlatabilir mi lütfen?  Bir şirkette bu proje üzerinde çalışıyorum ve bunu anlamadan geçemem.  Temel seviyede assembly biliyorum.  Şimdiden tşk yardımlarınız için:

;______________      FARKLI YERLERDE GECEN KODLAR
;_____________G      _CONFIG
;_____________S      _Sürücü_Kontrol
;_____________M      MAIN_MRS_000
;_____________Z      MAIN_MRS_001_OSC_Zaman_Sabitleri.asm
;_____________T      Src_Tetikleme....
;____________IO      MAIN_MRS_006_IO..

   variable   KAPALI=.1
   variable   ACIK=.2
   variable   AYRIAYRI=.3
   variable   Hata_Var
   
   variable   Proje_No______________________
   variable   Ana_Kart______________________
   variable   Kristal_ve_Çalışma_Tipi______G
   variable   ÇalışmaHızı_Mhz______________G
   variable   Ekran_Kartı___________________
   variable   Kullanilan_İşlemci____________
   variable   Kullanilan_Program____________

   variable   Hücre_Sayısı_________________G
   variable   Cihaz_Voltu__________________G
   variable   CihazAkımı___________________G

   variable   Haberlesme___________________G
   variable   Baud_Hızı____________________G
   variable   RXTX_Parity__________________G
   variable   Haberlesme_Protokolu_________G
   variable   Haberlesme_Hataya_Gitme_Süre_G
   variable   Cihaz_Haberlesme_Adresi______G

   variable   Güç_Kontrolu_________________G
   variable   Cihaz_Power__________________G
   variable   Harici_Start_Stop____________G
   
   variable   Sürücü_Modu_________________MS
   variable   Sürme_Tipi__________________MS
   variable   Volt_PWM_Ters_Düz____________T
   variable   Akim_PWM_Ters_Düz____________T
   variable   Akim_Volt_Kiyas______________T
   variable   Volt_PWMi_Bosta______________T         
   variable   Akim_PWMi_Bosta______________T
   
   variable   Tetikleme_Örnek_Tipi_________T   ;1-->Nötrlü Örnek
                  ;2-->Nötrsüz Örnek

   variable   Tetikleme_Puls_Adedi_________T   ;1-->1 Pulse
                  ;2-->2 Pulse
                  ;6-->6 Pulse
                  ;12-->12 Pulse

   variable   Tetikleme_Örnek_Adedi________T   ;2-->Monofaz
                  ;6-->TriFaz

   variable   Tetikleme_PWM_TipNo__________T   ;1-->Pwm Kapalı
                  ;2-->Pwm Tetikleme İle Birlikte
                  ;3-->Pwm CCP1 de Tetiklemeden Bağımsız
                  ;4-->Pwm CCP1 de Tek Tetikleme

   variable   PwmFrekansı__________________T   ;1-->50Khz
                  ;2-->8Khz

   variable   CCP1_Set_____________________T   ;1-->NC
                  ;2-->Pwm Modu
                  ;3-->Compare Modu

   variable   CCP2_Set_____________________T   ;1-->NC
                  ;2-->Pwm Modu
                  ;3-->Compare Modu
   variable   TMR0_Prescaler______________IO
   variable   TMR1_Prescaler_______________T
   variable   TMR3_Prescaler_______________T
   variable   Tet_Izleme___________________T

   variable   Firma_Kodu___________________G   
   

;*************************************************-**************************************************
;************************************  KAPALI BÖLGE ANA ŞABLON  *************************************
;*************************************************-**************************************************
;      include   "_VARIABLE.asm"
;*************************************************-**************************************************
;**********************************   VOLT AKIM ADRES GÜÇ SET   *************************************
;*************************************************-**************************************************
;Hücre_Sayısı_________________G=.4      ;(Min : 1 <-----> Max : 255)
;               ;Değer 0 ise Cihaz_Voltuna Göre Hesap Yapar
;         ;*******************-**************************************************
;Cihaz_Voltu__________________G=.0      ;(Min : 1 <-----> Max : 640)
;CihazAkımı___________________G=.40      ;(Min : 1 <-----> Max : 9999)
;         ;*******************-**************************************************
;GüçKontrolu__________________G= KAPALI      ;ACIK/KAPALI
;CihazPower___________________G=.2000      ;(Min : 100W <-----> Max : 25500W) Adımlar 100'lü
;         ;*******************-**************************************************
;Harici_Start_Stop____________G= ACIK      ;ACIK/KAPALI/AYRIAYRI (RE1+RE2)
;               ;ACIK   RE1-->1 Start RE1-->0 Stop
;               ;AYRIAYRI   RE1-->1 Start RE2-->1 Stop
;         ;*******************-**************************************************
;Kullanilan_Program____________=.1         ;1--> Standart
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************



;*************************************************-**************************************************
;*************************************   FİRMA SECENEKLERİ   ****************************************
;*************************************************-**************************************************
;Firma_Kodu___________________G=.1      ;1--> MRS Elektronik
               ;2--> Artronic
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************

















;*************************************************-**************************************************
;**************************************  DONANIM TANIMLARI  *****************************************
;*************************************************-**************************************************
;Ana_Kart______________________=.1      ;1--> PWMPLUS
;               ;2--> SLV_V5_01
;               ;3--> PWM_Minus
;         ;*******************-**************************************************
;Kullanilan_İşlemci____________=.1      ;1--> PIC18F452
;               ;2--> PIC18F4520
;               ;3--> PIC18F4620
;               ;4--> PIC18F252
;         ;*******************-**************************************************
;Kristal_ve_Çalışma_Hızı______G=.1      ;1-->  4Mhz     = 4Mhz
;               ;2--> 10Mhz    = 10Mhz
               ;3-->  4Mhz x 4PLL    = 16Mhz
;               ;4--> 10Mhz x 4PLL    = 40Mhz
;         ;*******************-**************************************************
;Ekran_Kartı___________________=.1         ;1--> DISP7500v4NT(4*20 Display+8Tuş+8Led+Buzzer)
;         ;*******************-**************************************************
;Kullanilan_Program____________=.1          ;1--> Standart
;*************************************************-**************************************************
;*************************************  HABERLESME TANIMLARI  ***************************************
;*************************************************-**************************************************
;Haberlesme___________________G= ACIK      ;ACIK/KAPALI
;Haberlesme_Adresi____________G=.241   
;         ;*******************-**************************************************
;Haberlesme_Protokolu_________G=.3      ;1-->Cem_Bus
;               ;2-->UKP_Cemal_Bus (SLV4 İle)
;               ;3-->ModBus
;         ;*******************-**************************************************
;Baud_Hızı____________________G=.2      ;1-->Baud=9600
;               ;2-->Baud=19200
;               ;3-->Baud=25000
;               ;4-->Baud=38400
;               ;5-->Baud=57600
;               ;6-->Baud=76800
;         ;*******************-**************************************************
;RXTX_Parity__________________G=.1      ;1-->Parity Yok
;               ;2-->Parity Odd
;               ;3-->Parity Even
;               ;4-->Parity Stop
;         ;*******************-**************************************************      
;Haberlesme_Hataya_Gitme_Süre_G=.060      ;Saniye   (Min : 1 <-----> Max : 1300)
;*************************************************-**************************************************
;**************************************  SÜRÜCÜ TANIMLARI  ******************************************
;*************************************************-**************************************************
;Sürücü_Modu_________________MS=.1      ;SW Çıkışlar
;Sürme_Tipi__________________MS=.1XX      ;100-->2 PWM Çıkışı Volt-Akım Ayrı Seri-Paralel
;               ;101-->2 PWM Çıkışı Volt-Akım Ayrı Besleme Kaynağı
;               ;102-->1-2 PWM Çıkışı Yanlız Volt PWMi Akım Sonda
;               ;103-->1-2 PWM Çıkışı Yanlız Akım PWMi Volt Sonda
;               ;104-->1 OPTO PWM Çıkışı Yanlız Volt PWMi
;               ;NOT PWM TERS DÜZ DURUMALARI SRC_CONFIG te
;         ;*******************-**************************************************
;Sürücü_Modu_________________MS=.2      ;TCA Çıkışları
;Sürme_Tipi__________________MS=.2XX      ;200-->Henüz Yazılmadı
;               ;201-->Henüz Yazılmadı
;               ;202-->Henüz Yazılmadı
;         ;*******************-**************************************************
;Sürücü_Modu_________________MS=.3      ;Tetikleme Çıkışlar Sarj
;Sürme_Tipi__________________MS=.3XX      ;300-->Trifaze 12(6) Pulse Ayrı PWM
;               ;      KartNo:   COIL3P3      
;               ;301-->Trifaze 12(6) Pulse PWM Yok
;                     KartNo:   OPTO52 
;               ;302-->MonoFaz 2 Pulse PWM Kendinden 2 Çıkış
;                     KartNo:   Yok
;               ;303-->MonoFaz 2 Pulse PWM Yok 2 Çıkış   
;                     KartNo:   OPTO3
;               ;304-->MonoFaz 1 Pulse PWM Kendinden 1 Çıkış
;                     KartNo:   TET1PU3,TET2PU
;*************************************************-**************************************************
;Sürücü_Modu_________________MS=.4      ;Tetikleme Çıkışlar Sarj
;Sürme_Tipi__________________MS=.4XX      ;400-->Trifaze 6 Pulse Ayrı PWM
;               ;      KartNo:   COIL3P3      
;               ;401-->Trifaze 6 Pulse PWM Yok
;                     KartNo:   OPTO52 
;               ;402-->MonoFaz 2 Pulse PWM Kendinden 2 Çıkış
;                     KartNo:   Yok
;               ;403-->MonoFaz 2 Pulse PWM Yok 2 Çıkış   
;                     KartNo:   OPTO3
;               ;404-->MonoFaz 1 Pulse PWM Kendinden 1 Çıkış
;                     KartNo:   TET1PU3,TET2PU
;*************************************************-**************************************************
;**********************  DAHA FAZLA AYRINTI MAIN_MRS_009_SRC_CONFIG.asm İÇİNDE  *********************
;*************************************************-**************************************************
;      end
;*************************************************-**************************************************
;******************************************  ŞABLON SONU  *******************************************
;*************************************************-**************************************************
;______________      FARKLI YERLERDE GECEN KODLAR
;_____________G      Burada Setlenen Değerler
;_____________S      _Sürücü_Kontrol
;_____________M      MAIN_MRS_000
;_____________Z      MAIN_MRS_001_OSC_Zaman_Sabitleri.asm
;*************************************************-**************************************************
   if (Hata_Var==.0)
        if (Hücre_Sayısı_________________G==.0 && Cihaz_Voltu__________________G==.0)
Hata_Var=.1
          error "Hücre_Sayısı ve Cihaz_Voltu Birlikte Sıfır Olamaz YANLIŞ TANIMLANMIŞ"
   endif
   endif
   ;***********************************************************
   if (Hata_Var==.0)
        if (Hücre_Sayısı_________________G<.0 || Hücre_Sayısı_________________G>.238)
Hata_Var=.1
             error "Hücre_Sayısı 0 ile 238 Sayıları Arasında Olmalı"
      else
HücreSayisi_S       equ   Hücre_Sayısı_________________G
      endif
   endif
   ;***********************************************************
   if (Hata_Var==.0)
        if (Cihaz_Voltu__________________G<.1 || Cihaz_Voltu__________________G>.65500)
        if (Hücre_Sayısı_________________G==.0)
Hata_Var=.1
             error "Cihaz_Voltu: Hücre Sayısı 0 İse , 1 ile 65500 Arasında Olmalı"
        endif
      endif
   endif
   if (Hata_Var==.0)
CihazVoltu__S        equ   Cihaz_Voltu__________________G
   endif
;*************************************************-**************************************************
   if (Hata_Var==.0)
        if (CihazAkımı___________________G<.1 || CihazAkımı___________________G>.65500)
Hata_Var=.1
             error "CihazAkımı YANLIŞ TANIMLANMIŞ MAXIMUM=65500 MİNUMUM=1"
      else
CihazAkimi__S        equ   CihazAkımı___________________G
      endif
   endif
;*************************************************-**************************************************
   if (Hata_Var==.0)
      if (Haberlesme___________________G!=ACIK && Haberlesme___________________G!=KAPALI)
Hata_Var=.1
          error "Haberlesme YANLIŞ TANIMLANMIŞ ACIK veya KAPALI olmalı"
   endif
   endif
   ;***********************************************************
   if (Hata_Var==.0 && Haberlesme___________________G!=ACIK)
      if (Haberlesme_Adresi____________G<.1 || Haberlesme_Adresi____________G>.255)
Hata_Var=.1
          error "Cihaz_Haberlesme_Adresi YANLIŞ TANIMLANMIŞ"
   endif
   endif
   ;***********************************************************
Haberlesme__S       equ    Haberlesme___________________G   ;Kod İçinde Kullan
CihazAdresi_S       equ   Haberlesme_Adresi____________G
;*************************************************-**************************************************
   if (Hata_Var==.0 && Haberlesme___________________G!=ACIK)
        if (Haberlesme_Protokolu_________G<.1 || Baud_Hızı____________________G>.3)
Hata_Var=.1
          error "HABERLEŞME PROTOKOLU YANLIŞ TANIMLANMIŞ"
      endif
      ;*****************************-*****************************
      if (Haberlesme_Protokolu_________G==.2 && Ana_Kart______________________==.1)
Hata_Var=.1
        error "PWMPLUS KARTINDA BU HABERLESME PROTOKULU KULLANILAMAZ"
      endif
   endif
;*************************************************-**************************************************
   if (Hata_Var==.0 && Haberlesme___________________G!=ACIK)
        if (Baud_Hızı____________________G<.1 || Baud_Hızı____________________G>.6)
Hata_Var=.1
          error "BAUD HIZI YANLIŞ TANIMLANMIŞ"
   endif
      if (Haberlesme_Protokolu_________G==.2 && Baud_Hızı____________________G!=.3)
Hata_Var=.1
          error "BU PROTOLOLDE BAUD HIZI 25000 OLMALI "
   endif
   endif
;*************************************************-**************************************************
   if (Hata_Var==.0 && Haberlesme___________________G!=ACIK)
        if (RXTX_Parity__________________G<.1 || RXTX_Parity__________________G>.4)
Hata_Var=.1
          error "PARITY YANLIŞ TANIMLANMIŞ"
   endif
   endif
;*************************************************-**************************************************
   if (Hata_Var==.0 && Haberlesme___________________G!=ACIK)
        if (Haberlesme_Hataya_Gitme_Süre_G<.1 || Haberlesme_Hataya_Gitme_Süre_G>.1300)
Hata_Var=.1
          error "PARITY YANLIŞ TANIMLANMIŞ"
   endif
   endif
   ;***********************************************************
HaberleşmeHataSüresi_S   equ   Haberlesme_Hataya_Gitme_Süre_G
;*************************************************-**************************************************
   if (Hata_Var==.0)
      if (GüçKontrolu__________________G!=ACIK && GüçKontrolu__________________G!=KAPALI)
Hata_Var=.1
          error "GüçKontrolu YANLIŞ TANIMLANMIŞ"
   endif
   endif
   ;***********************************************************
   if (Hata_Var==.0 && GüçKontrolu__________________G!=ACIK)
        if (CihazPower___________________G<.100 || CihazPower___________________G>.25500)
Hata_Var=.1
          error "CihazPower YANLIŞ TANIMLANMIŞ"
   endif
   endif
   ;***********************************************************
      if (GüçKontrolu__________________G==KAPALI)
GüçKontrolu__________________G=.0
      endif
GüçKontrolu_S       equ    GüçKontrolu__________________G
CihazPower__S       equ   (CihazPower___________________G/.100)   ;Kod İçinde Kullan
;*************************************************-**************************************************
   if (Hata_Var==.0)
      if (Harici_Start_Stop____________G!=ACIK && Harici_Start_Stop____________G!=KAPALI && Harici_Start_Stop____________G!=AYRIAYRI)
Hata_Var=.1
          error "Harici_Start_Stop YANLIŞ TANIMLANMIŞ ACIK , KAPALI veya AYRIAYRI olmalı"
   endif
      if (Ana_Kart______________________!=.1 && Harici_Start_Stop____________G!=KAPALI)
Hata_Var=.1
        error "BU ANA KARTTA BU ÖZELLİK KULLANILAMAZ. KAPALI OLMALI."
      endif
   endif
;*************************************************-**************************************************
   if (Hata_Var==.0)
        if (Firma_Kodu___________________G<.1 || Firma_Kodu___________________G>.99)
Hata_Var=.1
          error "Firma_Kodu YANLIŞ TANIMLANMIŞ"
   endif
   endif
;*************************************************-**************************************************
   if (Hata_Var==.0)
     if (Kullanilan_İşlemci____________<.1 || Kullanilan_İşlemci____________>.4)
Hata_Var=.1
          error "Kullanılan_İşlemci YANLIŞ TANIMLANMA."
     endif
   endif
;*************************************************-**************************************************
   if (Hata_Var==.0)
     if (Kristal_ve_Çalışma_Tipi______G<=.0 || Kristal_ve_Çalışma_Tipi______G>=.5)
Hata_Var=.1
          error "Kristal_ve_Çalışma_Hızı YANLIŞ TANIMLANMIŞ"
     endif
   endif   
   ;***********************************************************
ÇalışmaHızı_Mhz______________G=.0
   if (Kristal_ve_Çalışma_Tipi______G==.1)
ÇalışmaHızı_Mhz______________G=.004
   endif
   if (Kristal_ve_Çalışma_Tipi______G==.2)
ÇalışmaHızı_Mhz______________G=.010
   endif
   if (Kristal_ve_Çalışma_Tipi______G==.3)
ÇalışmaHızı_Mhz______________G=.016
   endif
   if (Kristal_ve_Çalışma_Tipi______G==.4)
ÇalışmaHızı_Mhz______________G=.040
   endif
   if (ÇalışmaHızı_Mhz______________G==.0)
Hata_Var=.1
      error "Kristal YANLIŞ TANIMLANMIŞ"
   endif
;*************************************************-**************************************************
;****************************************  SÜRÜCÜ AYARLARI  *****************************************
;*************************************************-**************************************************
   if (Hata_Var==.0)
;*************************************************-**************************************************
;*******************************************  ANAKART=1  ********************************************
;*************************************************-**************************************************
     if(Ana_Kart______________________==.1)
       if (Sürücü_Modu_________________MS==.1)
Hata_Var=.1
          error "HENÜZ YAZILMADI"
       endif
       if (Sürücü_Modu_________________MS==.2)
Hata_Var=.1
          error "HENÜZ YAZILMADI"
       endif
       if (Sürücü_Modu_________________MS==.3)
         if (Sürme_Tipi__________________MS==.300 || Sürme_Tipi__________________MS==.301)
Hata_Var=.1
          error "BU KART SECİLEN SÜRÜCÜ TİPİNE DESTEK VEREMEZ"
                endif
         if (Sürme_Tipi__________________MS==.302 || Sürme_Tipi__________________MS==.304)
Hata_Var=.1
          error "HENÜZ YAZILMADI"
                endif
       endif
       if (Sürücü_Modu_________________MS==.4)
         if (Sürme_Tipi__________________MS==.400 || Sürme_Tipi__________________MS==.401)
Hata_Var=.1
          error "BU KART SECİLEN SÜRÜCÜ TİPİNE DESTEK VEREMEZ"
                endif
       endif
     endif
;*************************************************-**************************************************
;*******************************************  ANAKART=2  ********************************************
;*************************************************-**************************************************
     if(Ana_Kart______________________==.2)
       if (Sürücü_Modu_________________MS==.1)
Hata_Var=.1
          error "BU KART SECİLEN SÜRÜCÜ TİPİNE DESTEK VEREMEZ"
       endif
       if (Sürücü_Modu_________________MS==.2)
Hata_Var=.1
          error "BU KART SECİLEN SÜRÜCÜ TİPİNE DESTEK VEREMEZ"
       endif
       if (Sürücü_Modu_________________MS==.3)
         if(Tetikleme_Örnek_Tipi_________T==.1)
           if (Sürme_Tipi__________________MS==.301 || Sürme_Tipi__________________MS==.302 || Sürme_Tipi__________________MS==.403 || Sürme_Tipi__________________MS==.404)
Hata_Var=.1
          error "HENÜZ YAZILMADI"
                  endif
                endif
         if(Tetikleme_Örnek_Tipi_________T==.2)
           if (Sürme_Tipi__________________MS==.301 || Sürme_Tipi__________________MS==.302 || Sürme_Tipi__________________MS==.403 || Sürme_Tipi__________________MS==.404)
Hata_Var=.1
          error "HENÜZ YAZILMADI"
                  endif
                endif
       endif
       if (Sürücü_Modu_________________MS==.4)
         if(Tetikleme_Örnek_Tipi_________T==.1)
           if (Sürme_Tipi__________________MS==.401 || Sürme_Tipi__________________MS==.402 || Sürme_Tipi__________________MS==.403 || Sürme_Tipi__________________MS==.404)
Hata_Var=.1
          error "HENÜZ YAZILMADI"
                  endif
                endif
         if(Tetikleme_Örnek_Tipi_________T==.2)
           if (Sürme_Tipi__________________MS==.401 || Sürme_Tipi__________________MS==.402 || Sürme_Tipi__________________MS==.403 || Sürme_Tipi__________________MS==.404)
Hata_Var=.1
          error "HENÜZ YAZILMADI"
                  endif
                endif
       endif
            endif
;*************************************************-**************************************************
          endif
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************
   if (Hata_Var==.0)
     if (Sürücü_Modu_________________MS<.1 || Sürücü_Modu_________________MS>.4)
Hata_Var=.1      
      error "TANIMSIZ SÜRME MODU"
     endif
   ;***************************************-*******************
   if (Hata_Var==.0)
            if (Sürücü_Modu_________________MS==.1)
       if (Sürme_Tipi__________________MS<.100 || Sürme_Tipi__________________MS>.104)
Hata_Var=.1
      error "SÜRÜCÜ TİPİ LİSTEDEN 100-104 ARASINDA OLMALI"
              endif
            endif
   endif
   ;***************************************-*******************
     if (Sürücü_Modu_________________MS==.2)
Hata_Var=.1      
      error "BU SÜRÜCÜ MODU HENÜZ YAZILMADI"
     endif
   endif
   ;***************************************-*******************
   if (Hata_Var==.0)
            if (Sürücü_Modu_________________MS==.3)
       if (Sürme_Tipi__________________MS<.300 || Sürme_Tipi__________________MS>.304)
Hata_Var=.1
      error "SÜRÜCÜ TİPİ LİSTEDEN 300-304 ARASINDA OLMALI"
              endif
            endif
   endif
   ;***************************************-*******************
   if (Hata_Var==.0)
            if (Sürücü_Modu_________________MS==.4)
       if (Sürme_Tipi__________________MS<.400 || Sürme_Tipi__________________MS>.404)
Hata_Var=.1
      error "SÜRÜCÜ TİPİ LİSTEDEN 400-404 ARASINDA OLMALI"
              endif
            endif
   endif
;*************************************************-**************************************************
   if (Hata_Var==.0)
     if (Sürme_Tipi__________________MS==.300 || Sürme_Tipi__________________MS==.301)
              if (Tetikleme_Örnek_Tipi_________T<.1 || Tetikleme_Örnek_Tipi_________T>.2)
Hata_Var=.1
      error "Tetikleme_Örnek_Tipi YANLIŞ TANIMLANMIŞ."
       endif
            endif
          endif
   if (Hata_Var==.0)
     if (Sürme_Tipi__________________MS==.400 || Sürme_Tipi__________________MS==.401)
              if (Tetikleme_Örnek_Tipi_________T<.1 || Tetikleme_Örnek_Tipi_________T>.2)
Hata_Var=.1
      error "Tetikleme_Örnek_Tipi YANLIŞ TANIMLANMIŞ."
       endif
            endif
          endif
;****************************************  SÜRÜCÜ AYARLARI  *****************************************
;*************************************************-**************************************************












      



























;*************************************ÇALIŞMA MODUNA GÖRE********************************************
;*************************************************-**************************************************
;Volt_Akım_Birlikte_SP_Çalış_S   equ    .0   ;İki Pwm Dönüşümlü(Seri-Paralel)
;Volt_Akım_Birlikte_Nm_Çalış_S   equ   .1   ;İki Pwm Aynı Anda(İdeal Besleme Kaynağı)   
;Volt_Pwmi_İle_Çalış_S   equ   .0   ;Tek Volt Pwmi(Akım Sonda)
;Akım_Pwmi_İle_Çalış_S   equ   .0   ;Tek Akım Pwmi(Volt Sonda)
;*************************************************-**************************************************
;********************************KULLANILAN CİHAZA GÖRE ZAMANLAR*************************************
;*************************************************-**************************************************
;Pwm_SW___Çalışma_S     equ   .1   ;Normal Çift veya Tek Pwm SW Cihazlar
;Pwm_Opto_Çalışma_S      equ   .0   ;Opto Kuplor Tek PWM Cihazlar(Yavaş Çalışma)
;Pwm_TCA__Çalışma_S      equ   .0   ;TCA lı Cihazlar
;Pwm_Tet__Çalışma_S       equ   .0   ;Tristor Tetikleme
;*************************************************-**************************************************





;*************************************************-**************************************************
;FrekansGöster_S       equ    .001   ; (1-->Göster - 0-->Kapalı)
;*************************************************-**************************************************





;ALTA CONFIGI YAZ , SONRA YÜKLEME KISMINA GİR
      include   "C:\MRSMAIN\_VARIABLE.asm"
;*************************************************-**************************************************
;**********************************   VOLT AKIM ADRES GÜÇ SET   *************************************
;*************************************************-**************************************************
Hücre_Sayısı_________________G=.0      ;(Min : 1 <-----> Max : 238)
               ;Değer 0 ise Cihaz_Voltuna Göre Hesap Yapar
         ;*******************-**************************************************
Cihaz_Voltu__________________G=.900      ;(Min : 1 <-----> Max : 65500)
CihazAkımı___________________G=.900      ;(Min : 1 <-----> Max : 65500)
         ;*******************-**************************************************
GüçKontrolu__________________G= KAPALI      ;ACIK/KAPALI
CihazPower___________________G=.2000      ;(Min : 100W <-----> Max : 25500W) Adımlar 100'lü
         ;*******************-**************************************************
Harici_Start_Stop____________G= KAPALI      ;ACIK/KAPALI/AYRIAYRI (RE1+RE2)
               ;ACIK   RE1-->1 Start RE1-->0 Stop
               ;AYRIAYRI   RE1-->1 Start RE2-->1 Stop
         ;*******************-**************************************************
Kullanilan_Program____________=.99         ;1--> Standart
                  ;
                  ;99-->Tetikleme İzleme Ekranı
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************

;*************************************************-**************************************************
FrekansGöster_S       equ    .001   ; (1-->Göster - 0-->Kapalı)
;*************************************************-**************************************************

;*************************************************-**************************************************
;*************************************   FİRMA SECENEKLERİ   ****************************************
;*************************************************-**************************************************
Firma_Kodu___________________G=.1      ;1--> MRS Elektronik
               ;2--> Artronic
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************


;*************************************************-**************************************************
;**************************************  DONANIM TANIMLARI  *****************************************
;*************************************************-**************************************************
Ana_Kart______________________=.1      ;1--> PWMPLUS
         ;*******************-**************************************************
Kullanilan_İşlemci____________=.1      ;1--> PIC18F452
               ;2--> PIC18F4520
               ;3--> PIC18F4620
               ;4--> PIC18F252
         ;*******************-**************************************************
Kristal_ve_Çalışma_Tipi______G=.3      ;1-->  4Mhz     = 4Mhz
               ;2--> 10Mhz    = 10Mhz
               ;3-->  4Mhz x 4PLL    = 16Mhz
               ;4--> 10Mhz x 4PLL    = 40Mhz
         ;*******************-**************************************************
Ekran_Kartı___________________=.1         ;1--> DISP7500v4NT(4*20 Display+8Tuş+8Led+Buzzer)
;*************************************************-**************************************************
;*************************************  HABERLESME TANIMLARI  ***************************************
;*************************************************-**************************************************
Haberlesme___________________G= ACIK      ;ACIK/KAPALI
Haberlesme_Adresi____________G=.241   
         ;*******************-**************************************************
Haberlesme_Protokolu_________G=.3      ;1-->Cem_Bus
               ;2-->UKP_Cemal_Bus (SLV4 İle)
               ;3-->ModBus
         ;*******************-**************************************************
Baud_Hızı____________________G=.2      ;1-->Baud=9600
               ;2-->Baud=19200
               ;3-->Baud=25000
               ;4-->Baud=38400
               ;5-->Baud=57600
               ;6-->Baud=76800
         ;*******************-**************************************************
RXTX_Parity__________________G=.2      ;1-->Parity Yok
               ;2-->Parity Odd
               ;3-->Parity Even
               ;4-->Parity Stop
         ;*******************-**************************************************      
Haberlesme_Hataya_Gitme_Süre_G=.060      ;Saniye   (Min : 1 <-----> Max : 1300)
;*************************************************-**************************************************
;**************************************  SÜRÜCÜ TANIMLARI  ******************************************
;*************************************************-**************************************************
;Sürücü_Modu_________________MS=.1      ;SW Çıkışlar
;Sürme_Tipi__________________MS=.1XX      ;100-->2 PWM Çıkışı Volt-Akım Ayrı Seri-Paralel
;               ;101-->2 PWM Çıkışı Volt-Akım Ayrı Besleme Kaynağı
;               ;102-->1-2 PWM Çıkışı Yanlız Volt PWMi Akım Sonda
;               ;103-->1-2 PWM Çıkışı Yanlız Akım PWMi Volt Sonda
;               ;104-->1 OPTO PWM Çıkışı Yanlız Volt PWMi
;               ;NOT PWM TERS DÜZ DURUMALARI SRC_CONFIG te
;         ;*******************-**************************************************
;Sürücü_Modu_________________MS=.2      ;TCA Çıkışları
;Sürme_Tipi__________________MS=.2XX      ;200-->Henüz Yazılmadı
;               ;201-->Henüz Yazılmadı
;               ;202-->Henüz Yazılmadı
;         ;*******************-**************************************************
;Sürücü_Modu_________________MS=.3      ;Tetikleme Çıkışlar Sarj
;Sürme_Tipi__________________MS=.3XX      ;300-->Trifaze 12(6) Pulse Ayrı PWM
;               ;      KartNo:   COIL3P3      
;               ;301-->Trifaze 12(6) Pulse PWM Yok
;                     KartNo:   OPTO52 
;               ;302-->MonoFaz 2 Pulse PWM Kendinden 2 Çıkış
;                     KartNo:   Yok
;               ;303-->MonoFaz 2 Pulse PWM Yok 2 Çıkış   
;                     KartNo:   OPTO3
;               ;304-->MonoFaz 1 Pulse PWM Kendinden 1 Çıkış
;                     KartNo:   TET1PU3,TET2PU
;*************************************************-**************************************************
;Sürücü_Modu_________________MS=.4      ;Tetikleme Çıkışlar DeSarj
;Sürme_Tipi__________________MS=.4XX      ;400-->Trifaze 6 Pulse Ayrı PWM
;               ;      KartNo:   COIL3P3      
;               ;401-->Trifaze 6 Pulse PWM Yok
;                     KartNo:   OPTO52 
;               ;402-->MonoFaz 2 Pulse PWM Kendinden 2 Çıkış
;                     KartNo:   Yok
;               ;403-->MonoFaz 2 Pulse PWM Yok 2 Çıkış   
;                     KartNo:   OPTO3
;               ;404-->MonoFaz 1 Pulse PWM Kendinden 1 Çıkış
;                     KartNo:   TET1PU3,TET2PU
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************
Sürücü_Modu_________________MS=.3      ;1-->SW Çıkışlar
               ;2-->TCA Çıkışları
               ;3-->Tetikleme Çıkışlar Sarj
               ;4-->Tetikleme Çıkışlar DeSarj
Sürme_Tipi__________________MS=.303      ;Yukardaki Listeye Bakın
;*************************************************-**************************************************
;**********************  DAHA FAZLA AYRINTI MAIN_MRS_009_SRC_CONFIG.asm İÇİNDE  *********************
;*************************************************-**************************************************


;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************
      include   "C:\MRSMAIN\MAIN_MRS_000_AK01_PWMPLUS.asm"
      end


;ALTA CONFIGI YAZ , SONRA YÜKLEME KISMINA GİR
      include   "C:\MRSMAIN\_VARIABLE.asm"
;*************************************************-**************************************************
;**********************************   VOLT AKIM ADRES GÜÇ SET   *************************************
;*************************************************-**************************************************
Hücre_Sayısı_________________G=.0      ;(Min : 1 <-----> Max : 238)
               ;Değer 0 ise Cihaz_Voltuna Göre Hesap Yapar
         ;*******************-**************************************************
Cihaz_Voltu__________________G=.400      ;(Min : 1 <-----> Max : 65500)
CihazAkımı___________________G=.030      ;(Min : 1 <-----> Max : 65500)
         ;*******************-**************************************************
GüçKontrolu__________________G= KAPALI      ;ACIK/KAPALI
CihazPower___________________G=.2000      ;(Min : 100W <-----> Max : 25500W) Adımlar 100'lü
         ;*******************-**************************************************
Harici_Start_Stop____________G= KAPALI      ;ACIK/KAPALI/AYRIAYRI (RE1+RE2)
               ;ACIK   RE1-->1 Start RE1-->0 Stop
               ;AYRIAYRI   RE1-->1 Start RE2-->1 Stop
         ;*******************-**************************************************
Kullanilan_Program____________=.1      ;1--> Standart
               ;
               ;99-->Tetikleme İzleme Ekranı
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************

;*************************************************-**************************************************
FrekansGöster_S       equ    .001   ; (1-->Göster - 0-->Kapalı)
;*************************************************-**************************************************

;*************************************************-**************************************************
;*************************************   FİRMA SECENEKLERİ   ****************************************
;*************************************************-**************************************************
Firma_Kodu___________________G=.1      ;1--> MRS Elektronik
               ;2--> Artronic
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************


;*************************************************-**************************************************
;**************************************  DONANIM TANIMLARI  *****************************************
;*************************************************-**************************************************
Ana_Kart______________________=.2      ;2--> SLV_V5_01
         ;*******************-**************************************************
Kullanilan_İşlemci____________=.1      ;1--> PIC18F452
               ;2--> PIC18F4520
               ;3--> PIC18F4620
               ;4--> PIC18F252
         ;*******************-**************************************************
Kristal_ve_Çalışma_Tipi______G=.4      ;1-->  4Mhz     = 4Mhz
               ;2--> 10Mhz    = 10Mhz
               ;3-->  4Mhz x 4PLL    = 16Mhz
               ;4--> 10Mhz x 4PLL    = 40Mhz
         ;*******************-**************************************************
Ekran_Kartı___________________=.1         ;1--> DISP7500v4NT(4*20 Display+8Tuş+8Led+Buzzer)
;*************************************************-**************************************************
;*************************************  HABERLESME TANIMLARI  ***************************************
;*************************************************-**************************************************
Haberlesme___________________G= ACIK      ;ACIK/KAPALI
Haberlesme_Adresi____________G=.241   
         ;*******************-**************************************************
Haberlesme_Protokolu_________G=.3      ;1-->Cem_Bus
               ;2-->UKP_Cemal_Bus (SLV4 İle)
               ;3-->ModBus
         ;*******************-**************************************************
Baud_Hızı____________________G=.2      ;1-->Baud=9600
               ;2-->Baud=19200
               ;3-->Baud=25000
               ;4-->Baud=38400
               ;5-->Baud=57600
               ;6-->Baud=76800
         ;*******************-**************************************************
RXTX_Parity__________________G=.2      ;1-->Parity Yok
               ;2-->Parity Odd
               ;3-->Parity Even
               ;4-->Parity Stop
         ;*******************-**************************************************      
Haberlesme_Hataya_Gitme_Süre_G=.060      ;Saniye   (Min : 1 <-----> Max : 1300)
;*************************************************-**************************************************
;**************************************  SÜRÜCÜ TANIMLARI  ******************************************
;*************************************************-**************************************************
;Sürücü_Modu_________________MS=.1      ;SW Çıkışlar
;Sürme_Tipi__________________MS=.1XX      ;100-->2 PWM Çıkışı Volt-Akım Ayrı Seri-Paralel
;               ;101-->2 PWM Çıkışı Volt-Akım Ayrı Besleme Kaynağı
;               ;102-->1-2 PWM Çıkışı Yanlız Volt PWMi Akım Sonda
;               ;103-->1-2 PWM Çıkışı Yanlız Akım PWMi Volt Sonda
;               ;104-->1 OPTO PWM Çıkışı Yanlız Volt PWMi
;               ;NOT PWM TERS DÜZ DURUMALARI SRC_CONFIG te
;         ;*******************-**************************************************
;Sürücü_Modu_________________MS=.2      ;TCA Çıkışları
;Sürme_Tipi__________________MS=.2XX      ;200-->Henüz Yazılmadı
;               ;201-->Henüz Yazılmadı
;               ;202-->Henüz Yazılmadı
;         ;*******************-**************************************************
;Sürücü_Modu_________________MS=.3      ;Tetikleme Çıkışlar Sarj
;Sürme_Tipi__________________MS=.3XX      ;300-->Trifaze 12(6) Pulse Ayrı PWM
;               ;      KartNo:   COIL3P3      
;               ;301-->Trifaze 12(6) Pulse PWM Yok
;                     KartNo:   OPTO52 
;               ;302-->MonoFaz 2 Pulse PWM Kendinden 2 Çıkış
;                     KartNo:   Yok
;               ;303-->MonoFaz 2 Pulse PWM Yok 2 Çıkış   
;                     KartNo:   OPTO3
;               ;304-->MonoFaz 1 Pulse PWM Kendinden 1 Çıkış
;                     KartNo:   TET1PU3,TET2PU
;*************************************************-**************************************************
;Sürücü_Modu_________________MS=.4      ;Tetikleme Çıkışlar DeSarj
;Sürme_Tipi__________________MS=.4XX      ;400-->Trifaze 6 Pulse Ayrı PWM
;               ;      KartNo:   COIL3P3      
;               ;401-->Trifaze 6 Pulse PWM Yok
;                     KartNo:   OPTO52 
;               ;402-->MonoFaz 2 Pulse PWM Kendinden 2 Çıkış
;                     KartNo:   Yok
;               ;403-->MonoFaz 2 Pulse PWM Yok 2 Çıkış   
;                     KartNo:   OPTO3
;               ;404-->MonoFaz 1 Pulse PWM Kendinden 1 Çıkış
;                     KartNo:   TET1PU3,TET2PU
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************
Sürücü_Modu_________________MS=.3      ;1-->SW Çıkışlar
               ;2-->TCA Çıkışları
               ;3-->Tetikleme Çıkışlar Sarj
               ;4-->Tetikleme Çıkışlar DeSarj
         ;*******************-**************************************************
Sürme_Tipi__________________MS=.300      ;Yukardaki Listeye Bakın
         ;*******************-**************************************************
Tetikleme_Örnek_Tipi_________T=.2      ;1-->Nötrlü Örnek
               ;2-->Nötrsüz Örnek
;*************************************************-**************************************************
;**********************  DAHA FAZLA AYRINTI MAIN_MRS_009_SRC_CONFIG.asm İÇİNDE  *********************
;*************************************************-**************************************************


;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************
      include   "C:\MRSMAIN\MAIN_MRS_000_AK02_SLV_V5.asm"
      end

;*************************************************-**************************************************
Hata_Var=.0
   ;***************************************-*******************
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\CONFIG_MRS.asm"
   endif
   ;***************************************-*******************
   if (Hata_Var==.0)
        if (Ana_Kart______________________!=.1)
Hata_Var=.1
          error "Ana Kart YANLIŞ TANIMLANMIŞ"
   endif
   endif
   ;***************************************-*******************
   if (Hata_Var==.0)
        if (Ekran_Kartı___________________!=.1)
Hata_Var=.1
          error "Ekran_Kartı YANLIŞ TANIMLANMIŞ"
   endif
   endif
   ;***************************************-*******************
   if (Hata_Var==.0)
     if (Kullanilan_İşlemci____________!=.1)
Hata_Var=.1
          error "Kullanılan_İşlemci YANLIŞ TANIMLANMIŞ"
     endif
   endif
   ;***************************************-*******************
   if (Hata_Var==.0)
     if ((Kullanilan_Program____________<.1 || Kullanilan_Program____________>.1) && Kullanilan_Program____________!=.99)
Hata_Var=.1
          error "Kullanılan_Program YANLIŞ TANIMLANMIŞ"
            endif
   endif
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_001_OSC_Zaman_Sabitleri.asm"
   endif
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_002_RamBellekAdlari.asm"
   endif
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_003_Flag_ve_Katsayi_Tanim.asm"
      endif
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_004_CONFIG ve FLASH.asm"
   endif
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_005_InOut_Basla_Tanim.asm"
   endif
   if (Hata_Var==.0)
             include   "C:\MRSMAIN\MAIN_MRS_006_INTERRUPT.asm"
   endif
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_007_AnaDongu.asm"
   endif
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_008_AnaKartaOzel.asm"
   endif
   ;***************************************-**************************************************
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\Z_Bellek_Fonksiyonlari.asm"
      include   "C:\MRSMAIN\Z_DisPlay00.asm"
      include   "C:\MRSMAIN\Z_Matematik_ve_Kiyas_Fonksiyonlari.asm"
      include   "C:\MRSMAIN\Z_Buton_Fonksiyonlari.asm"
      include   "C:\MRSMAIN\Z_Nokta_Yeri_Kaydirma._4H3NS012.asm"
      include   "C:\MRSMAIN\Z_SistemNokta012.asm"
      include   "C:\MRSMAIN\Z_Volt_Akim_Okuma_Adim_Kiyas.asm"
   endif
   ;***************************************-**************************************************   
   if (Hata_Var==.0)
;      include   "C:\MRSMAIN\_Display3x4LED.asm"
;      include   "C:\MRSMAIN\Ekran2x16.asm"
;      include   "C:\MRSMAIN\Z_Ekran4x20.asm"
      include   "C:\MRSMAIN\Z_Ekran_Rakkam_4x20_Display.asm"
      ;include   "C:\MRSMAIN\Z_Ekran_Yazilari_4x20_Display.asm"
      endif
   ;***************************************-**************************************************
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_009_SRC_CONFIG.asm"      ;Sürücü
   endif
   ;***************************************-**************************************************
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_010_HBR_CONFIG.asm"      ;Haberleşme
   endif
   ;***************************************-**************************************************
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\PP_V0_001_Arizalar.asm"
      include   "C:\MRSMAIN\PP_V0_001_Ayar_Modu.asm"
      include   "C:\MRSMAIN\PP_V0_001_Calisma_Modu.asm"   
      ;include   "C:\MRSMAIN\MAIN_MRS_099_Firma_Tanimlari.asm"   
   endif
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************




;*************************************************-**************************************************
Hata_Var=.0
   ;***************************************-*******************
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\CONFIG_MRS.asm"
   endif
   ;***************************************-*******************
   if (Hata_Var==.0)
        if (Ana_Kart______________________!=.2)
Hata_Var=.1
          error "Ana Kart YANLIŞ TANIMLANMIŞ"
   endif
   endif
   ;***************************************-*******************
   if (Hata_Var==.0)
        if (Ekran_Kartı___________________!=.1)
Hata_Var=.1
          error "Ekran_Kartı YANLIŞ TANIMLANMIŞ"
   endif
   endif
   ;***************************************-*******************
   if (Hata_Var==.0)
     if (Kullanilan_İşlemci____________!=.1)
Hata_Var=.1
          error "Kullanılan_İşlemci HENUZ TANIMLANMADI"
     endif
   endif
   ;***************************************-*******************
   if (Hata_Var==.0)
     if ((Kullanilan_Program____________<.1 || Kullanilan_Program____________>.1) && Kullanilan_Program____________!=.99)
Hata_Var=.1
          error "Kullanılan_Program YANLIŞ TANIMLANMIŞ"
            endif
   endif
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_001_OSC_Zaman_Sabitleri.asm"
   endif
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_002_RamBellekAdlari.asm"
   endif
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_003_Flag_ve_Katsayi_Tanim.asm"
      endif
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_004_CONFIG ve FLASH.asm"
   endif
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_005_InOut_Basla_Tanim.asm"
   endif
   if (Hata_Var==.0)
             include   "C:\MRSMAIN\MAIN_MRS_006_INTERRUPT.asm"
   endif
   ;***************************************-**************************************************
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_007_AnaDongu.asm"
   endif
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_008_AnaKartaOzel.asm"
   endif
   ;***************************************-**************************************************
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\Z_Bellek_Fonksiyonlari.asm"
      include   "C:\MRSMAIN\Z_DisPlay00.asm"
      include   "C:\MRSMAIN\Z_Matematik_ve_Kiyas_Fonksiyonlari.asm"
      include   "C:\MRSMAIN\Z_Buton_Fonksiyonlari.asm"
      include   "C:\MRSMAIN\Z_Nokta_Yeri_Kaydirma._4H3NS012.asm"
      include   "C:\MRSMAIN\Z_SistemNokta012.asm"
      include   "C:\MRSMAIN\Z_Volt_Akim_Okuma_Adim_Kiyas.asm"
   endif
   ;***************************************-**************************************************   
   if (Hata_Var==.0)
;      include   "C:\MRSMAIN\_Display3x4LED.asm"
;      include   "C:\MRSMAIN\Ekran2x16.asm"
;      include   "C:\MRSMAIN\Z_Ekran4x20.asm"
      include   "C:\MRSMAIN\Z_Ekran_Rakkam_4x20_Display.asm"
      endif
   ;***************************************-**************************************************
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_009_SRC_CONFIG.asm"      ;Sürücü
   endif
   ;***************************************-**************************************************
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\MAIN_MRS_010_HBR_CONFIG.asm"      ;Haberleşme
   endif
   ;***************************************-**************************************************
   if (Hata_Var==.0)
      include   "C:\MRSMAIN\PP_V0_001_Arizalar.asm"
      include   "C:\MRSMAIN\PP_V0_001_Ayar_Modu.asm"
      include   "C:\MRSMAIN\PP_V0_001_Calisma_Modu.asm"
   endif
;*************************************************-**************************************************
;*************************************************-**************************************************
;*************************************************-**************************************************


   ;***************************************-***************************************   
Hata_Var=.1            ;ADC Değişme Zamanı (Min 15us)
   if(ÇalışmaHızı_Mhz______________G==.4)   ;4 Mhz
Hata_Var=.0            ;Formul   ZG=15/12*MHz-1
ADCOkumaZamanSbt_S   equ   .004   
   endif
   if(ÇalışmaHızı_Mhz______________G==.10)   ;10 Mhz
Hata_Var=.0
ADCOkumaZamanSbt_S   equ   .012         
   endif
   if(ÇalışmaHızı_Mhz______________G==.16)   ;16 Mhz
Hata_Var=.0
ADCOkumaZamanSbt_S   equ   .020         
   endif
   if(ÇalışmaHızı_Mhz______________G==.40)   ;40 Mhz
Hata_Var=.0
ADCOkumaZamanSbt_S   equ   .049         
   endif
   if (Hata_Var==.1)
        error "ADC Değişme Zamanı TANIMLAMA"
   endif
   ;***************************************-***************************************
Hata_Var=.1            ;Tus Zaman Sabiti
   if(ÇalışmaHızı_Mhz______________G==.4)   ;4 Mhz
Hata_Var=.0
Tus_Sıfırlama_Zaman_Sabiti_S   equ   .004
Uzun_Bekleme_Zaman_Sabiti_S   equ   .020
   endif
   if(ÇalışmaHızı_Mhz______________G==.10)   ;10 Mhz
Hata_Var=.0
Tus_Sıfırlama_Zaman_Sabiti_S   equ   .009
Uzun_Bekleme_Zaman_Sabiti_S   equ   .049
   endif
   if(ÇalışmaHızı_Mhz______________G==.16)   ;16 Mhz
Hata_Var=.0
Tus_Sıfırlama_Zaman_Sabiti_S   equ   .014
Uzun_Bekleme_Zaman_Sabiti_S   equ   .078
   endif
   if(ÇalışmaHızı_Mhz______________G==.40)   ;40 Mhz
Hata_Var=.0
Tus_Sıfırlama_Zaman_Sabiti_S   equ   .035
Uzun_Bekleme_Zaman_Sabiti_S   equ   .196
   endif
   if (Hata_Var==.1)
        error "Z_Ekran_Rakkam_4x20_Display.asm EKSİK TANIMLAMA"
   endif
   ;***************************************-**********************************


Hata_Var=.1
;*************************************************-**************************************************
   if (Ana_Kart______________________==.1)
Hata_Var=.0
        include   "C:\MRSMAIN\MAIN_MRS_002_RB_AK01.h"   ;PWMPLUS+Standart+PWM+Tetikleme
   endif
;*************************************************-**************************************************
   if (Ana_Kart______________________==.2)
      include   "C:\MRSMAIN\MAIN_MRS_002_RB_AK02.h"   ;SLV_V4+Firing Standart
Hata_Var=.0
   endif
;*************************************************-**************************************************
   if (Hata_Var==.1)
      error "RAMBELLEK YANLIŞ TANIMLANMIŞ"
   endif
;*************************************************-**************************************************



W   equ   0x0
F   equ   0x1
   cblock   0x00
;************************************************
      WShadow                     ;Interrupt Shadows
      StatusShadow
      BSRShadow      
      FSR0HShadow      
      FSR0LShadow                  ;.05
;************************************************
      Sistem                     ;Sistem
      SistemA
      HücreSayısı   
      CihazVoltuSL
      CihazVoltuSH   
      CihazVoltuL
      CihazVoltuH
      CihazAkimiSL
      CihazAkimiSH
      CihazAkimiL
      CihazAkimiH
      CihazAdresi
      SistemFlag                  ;Flag   
      SistemFlag1                                 
      DöngüSayacı
      SaniyeSayacı               ;BirSaniye
      DakikaSayacı               ;BirDakika
      EkranResetSayacı
      AdımlıFlag                  ;FLAG
      Adım         
      AdımSayısı
      ProgramSayacı               ;.022;.027
;************************************************
      VSNoktaYeri                  ;Sistem Mokta Yerleri
      ASNoktaYeri
      ENoktaYeri
      NoktaSay
      VANoktaFlag                  ;.005;.032
;************************************************
      LedFlag                     ;Sistem
;************************************************
      SetVoltH                  ;Sistem
      SetVoltL
      SetAkimH
      SetAkimL
      ADCSetVoltH         
      ADCSetVoltL
      ADCSetAkimH
      ADCSetAkimL
      OkunanVoltH
      OkunanVoltL   
      OkunanAkimH   
      OkunanAkimL
      ADCOkunanVoltH            
      ADCOkunanVoltL
      ADCOkunanAkimH
      ADCOkunanAkimL
      SüreHigh                        
      SüreLow                     ;.018;.051
;************************************************
      IslemBilgisi               ;Genel Kullanım      ISLEMBILGISI
      Temp0
      Temp1
      Sayici0   
      Sayici1      
      Sayici2
      Sayici3                     ;.007;.058
;************************************************
      VASFlag                     ;ArananıBul
      ButonFlag
      ButonFlagSet               ;ButonFlağı
      ButonFlagRemote               ;.004;.062
;************************************************
      LowByte                     ;Matematik İşlemler
;      TempL
      HighByte
;      TempH
      HighByteH
;      TempHH
      HighByteHH
;      TempHHH
      Kalan
      KalanH
      BölenL
      BölenH
      TempÇarp
;      LoopCount                  ;.009;.071
;************************************************
      ArttırEksiltAdımı            ;Kıyas
      TempAHigh                  
      TempALow      
      TempBHigh      
      TempBLow   
      TempCHigh
      TempCLow
      Kıyas
      KıyasL         
      KıyasH                     ;.010;.081
;************************************************
      PwmALow                     ;PWM
      PwmAHigh
      PwmVLow
      PwmVHigh
      PwmYavaslatma
      PwmYavaslatmaKatsayı
      PwmYavaslatmaA
      PwmYavaslatmaKatsayıA   
      PwmFlağı
      PwmBölen
      PwmVoltSınırLow   
      PwmVoltSınırHigh
      PwmAkımSınırLow   
      PwmAkımSınırHigh
      PwmVoltMaxLow
      PwmVoltMaxHigh
      PwmAkımMaxLow
      PwmAkımMaxHigh
      VoltFarkıL
      VoltFarkıH
      AkımFarkıL
      AkımFarkıH                  ;.022;.103
;************************************************
      PwmFlağıE                  ;PWM Max Pwm Değeri Belirleme
      AkimSetDegeriL
      AkimSetDegeriH
      EOkunanAkimL
      EOkunanAkimH   
      EOkunanVoltL
      EOkunanVoltH   
      OkunanHareketSayacı            ;.008;.111

efsanepoldem


Kabil ATICI

tek işlemci için program yazdığınızda bu tür şeylerle uğraşmanıza gerek kalmıyor. Yazdığınız program birden fazla işlemci üzerinde kullanılması gerektiğinde bu tür macrolarla uğraşmak gerekiyor.
örneğin belli şartlar altında bazı asm bölümleri devreye girerken, bazı şartlar altında örneğin ekranda gösterilecek hatalar ile ilgili bölüm devreye giriyor.

bunlarda variable ile tanımlanan değişkenlere yapılan atamalar ile yapılıyor. Tam anlayabilmek için asm dosyaları ile birlikte incelemen gerekir.

http://ww1.microchip.com/downloads/en/DeviceDoc/33014J.pdf
bazı fikirler verecektir
ambar7

Pyrodigy

Temel ASM biliyorsanız, bu kodların ASM olmadığını bizden daha iyi biliyorsunuz demektir :)
Persistance is the name of the game in this business....

kimlenbu

"include" edilen .asm dosya içeriklerini vermemişsiniz, verseniz de inceleyecek birisinin çıkacağından şüpheliyim. Ayrıca çalıştığınız şirket kodları dışarı sızdırdığınızı görürse muhtemelen başınız oldukça ağrır.

94220039

#5
Bu dosya muhtemelen uzantısı inc olan bir dosyadır. Belli başlı bazı tanımlamalar yapılmış. Program compile edilirken girilen değerler hatalı ise hata mesajları falan görüntüleniyordur. Burdaki kodların ne iş yaptığını bilmesenizde olur. Esas öğrenmeniz gereken kısım uzantısı asm olan dosyalarda bulunan kodlardır.

RaMu

Alıntı yapılan: Pyrodigy - 14 Ağustos 2014, 17:08:56
Temel ASM biliyorsanız, bu kodların ASM olmadığını bizden daha iyi biliyorsunuz demektir :)

Asm olmadığını nereden anladın?

Burada kullanılan if ler ise
if endif şeklinde yazım
şartı sağlıyorsa bu kodu derle
manasında derleyiciye hükmeden komutlar,
yoksa program derlendikten sonra çalıştırılırken bu ifadelerle işin kalmıyor,
aynısı c dilinde program yazarkende kullanılıyor aslında.

OkunanHareketSayacı            ;.008;.111
gibi ifadelerde macro lar,
bunlarda asm koduna veya kod grubuna bir başlık vermişsiniz gibidir,
örneğin bu ifade için

#macro OkunanHareketSayacı            ;
...
asm komutlar
...
#endmacro

gibi yazılır, sonra program içinde
OkunanHareketSayacı            ;
dediğin yere hemen tanımladığın macrodaki komutları yerleştirir.
Yararı zararı var, ama konumuz değil.

Bu arada kodları paylaşsanda kim niye inceleyecek ve sen bilmiyorsan sana nasıl anlatacak?
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Pyrodigy

#7
Alıntı yapılan: RaMu - 15 Ağustos 2014, 00:10:51

Burada kullanılan if ler ise
if endif şeklinde yazım
şartı sağlıyorsa bu kodu derle
manasında derleyiciye hükmeden komutlar,
yoksa program derlendikten sonra çalıştırılırken bu ifadelerle işin kalmıyor,
aynısı c dilinde program yazarkende kullanılıyor aslında.

Masal anlatmaya gerek yok. Burada ASM kodu yok. Zaten asm de if veya endif komutları yoktur. Hele derleyiciye hükmeden ASM kodu hiç duymadım olsa olsa MPLAB Derleyicisinin kendi direktif veya makro özelliğidir.
Yada isterseniz şöyle yapın full kodları kopyalayıp bir derleyin, disassembly Listesinde nasıl bir ASM kodu ! çıkacak hep beraber bakalım.
Persistance is the name of the game in this business....

RaMu

Mesajındaki masal kısmınıda değiştir, hikaye yap, gerçek olma ihtimali kalsın :)
Sen duymadın diye yok demek değil,
örnek vereyim;
;ERRORLEVEL	-203,-205,-302
INCLUDE "P18F4520.INC"
LIST P=18f4520

variable hata=0;

bu macro 
nop
nop
nop
 endm

asm macro
nop
nop
endm

değilmi macro
nop
endm


;include "if_makro_header.h"
ORG	00H


        if (hata==.0)
		MESSG "hata değişkeni 0 ise bu mesajı gösterir"    
		else
		MESSG "hata değişkeni 1 ise bu mesajı gösterir"     
		endif
bu
asm
değilmi
end


Mplab yüklüyse, proje dosyası aşağıda,
kendinde deneyip derlendiğini görebilirsin.
https://www.dropbox.com/s/zlabywu5zq5v37l/asmde_if_makro.rar
RaMu[/code]
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Pyrodigy

Alıntı yapılan: RaMu - 15 Ağustos 2014, 02:29:09
Mesajındaki masal kısmınıda değiştir, hikaye yap, gerçek olma ihtimali kalsın :)
Sen duymadın diye yok demek değil,
örnek vereyim;
;ERRORLEVEL	-203,-205,-302
INCLUDE "P18F4520.INC"
LIST P=18f4520

variable hata=0;

bu macro 
nop
nop
nop
 endm

asm macro
nop
nop
endm

değilmi macro
nop
endm


;include "if_makro_header.h"
ORG	00H


        if (hata==.0)
		MESSG "hata değişkeni 0 ise bu mesajı gösterir"    
		else
		MESSG "hata değişkeni 1 ise bu mesajı gösterir"     
		endif
bu
asm
değilmi
end


Mplab yüklüyse, proje dosyası aşağıda,
kendinde deneyip derlendiğini görebilirsin.
https://www.dropbox.com/s/zlabywu5zq5v37l/asmde_if_makro.rar
RaMu[/code]
Öncelikle uğraşmışsın tebrik ediyorum ama keşke Yazdıklarımı dikkatli okusaydın. Ozaman Tekrar ediyorum.
Yada isterseniz şöyle yapın full kodları kopyalayıp bir derleyin, disassembly Listesinde nasıl bir ASM kodu ! çıkacak hep beraber bakalım.
Kendi kodların içinde aynısını yapabilirsin.
Persistance is the name of the game in this business....

RaMu

Ne dediysem o çıkacak,
neden şüphe ediyorsun anlamıyorum,
öğrenmek istiyorsan verdiğim proje dosyası üzerinden denemelerini kendin yapabilirsin,
yok sadece karşı çıkmak istiyorum diyorsan söyle ki boşuna uğraşmayayım.

Onuda yaptım ama paylaşmamıştım,
https://www.dropbox.com/s/jff4mmrk3rvjuev/asmde_if_makro_2.rar
hadi sen kendin denemeyi sevmiyorsun birde foto ile göstereyim;
derle=0 iken derlenirse;


derle=1 ien derlenirse;


Bilgisayarında mplab yüklümü?

Arkadaşın paylaştığını derleyemem
bahsedildiği gibi
projenin gerektirdiği bütün dosyalar olması lazım,
bunlar paylaşılmamış o yüzden kısmen paylaşılan projeyi deneyemem,
ama mantık aynı,
bahsettiğim husus bilinmeyen birşeyde değil,
asmde if gördüm diye şaşırmaya gerek yok.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Kabil ATICI

@Pyrodigy

Asm'da program yazarken zaten derleyicinin özelliklerini kullanırız veya kullanıyoruz. port tanımı veya port çıkışında, portlara verilen isimler, veya registerlere verilen isimler , ilk başta verilen işlemci inc ,kullandığımız etiketler bunların hepsi derleyici özelliklerinden.

disasm yapan programını özeliklerine bağlı olarak registerler, portlar vs gibi değerler doğrudan hex sayı olarak gelebilmekte. Programda etiket olarak girilmiş yapılar doğrudan hex sayı (adres) olarak gelebilmekte.

Bunlar derleyicinin özelliği diye yok sayıp kullanmamazlık da yapmıyoruz.

Derleyici kullanmadan kendin program oluşturup bunu elle kağıt üzerinde hex kodunu oluşturuyorsan dediğiniz doğrudur.

Program yaparken derleyici kullandığımız sürece onun sunduğu avantajları kullanırız. Siz konuşmakta olduğumuz asm'nin bir parçası olarak kabul etmesenizde, kabul edenler var (kendi adıma). Sizi bilemem ama benim işimi kolaylaştırıyor.
ambar7

Pyrodigy

#12
Alıntı yapılan: RaMu - 15 Ağustos 2014, 10:58:33
Ne dediysem o çıkacak,
neden şüphe ediyorsun anlamıyorum,
öğrenmek istiyorsan verdiğim proje dosyası üzerinden denemelerini kendin yapabilirsin,
yok sadece karşı çıkmak istiyorum diyorsan söyle ki boşuna uğraşmayayım.

Onuda yaptım ama paylaşmamıştım,
https://www.dropbox.com/s/jff4mmrk3rvjuev/asmde_if_makro_2.rar
hadi sen kendin denemeyi sevmiyorsun birde foto ile göstereyim;
derle=0 iken derlenirse;
(Resim gizlendi görmek için tıklayın.)

derle=1 ien derlenirse;
(Resim gizlendi görmek için tıklayın.)

Bilgisayarında mplab yüklümü?

Arkadaşın paylaştığını derleyemem
bahsedildiği gibi
projenin gerektirdiği bütün dosyalar olması lazım,
bunlar paylaşılmamış o yüzden kısmen paylaşılan projeyi deneyemem,
ama mantık aynı,
bahsettiğim husus bilinmeyen birşeyde değil,
asmde if gördüm diye şaşırmaya gerek yok.
Kendinizi haklı çıkarmak için oldukça gayret göstermişsiniz. Konuyu açan kişinin gönderdiği tanımlamalar ve yönlendirmeler ile sizin hazırladığınız makrolar arasında bir bağlantı kuramadım yada gözden kaçırmışta olabilirim. sizin gönderdiğiniz makrolarda Nop ve End gibi ASM komutları olduğu için disasembly listesinde doğal olarak bu kodlar yer almakta.  Ayrıca If deyimi C dilinde bulunan komut gibi algılanmaz. ASM de IF komutu yoktur.
Alıntı yapılan: ambar7 - 15 Ağustos 2014, 11:25:30
@Pyrodigy

Asm'da program yazarken zaten derleyicinin özelliklerini kullanırız veya kullanıyoruz. port tanımı veya port çıkışında, portlara verilen isimler, veya registerlere verilen isimler , ilk başta verilen işlemci inc ,kullandığımız etiketler bunların hepsi derleyici özelliklerinden.

disasm yapan programını özeliklerine bağlı olarak registerler, portlar vs gibi değerler doğrudan hex sayı olarak gelebilmekte. Programda etiket olarak girilmiş yapılar doğrudan hex sayı (adres) olarak gelebilmekte.

Bunlar derleyicinin özelliği diye yok sayıp kullanmamazlık da yapmıyoruz.

Derleyici kullanmadan kendin program oluşturup bunu elle kağıt üzerinde hex kodunu oluşturuyorsan dediğiniz doğrudur.

Program yaparken derleyici kullandığımız sürece onun sunduğu avantajları kullanırız. Siz konuşmakta olduğumuz asm'nin bir parçası olarak kabul etmesenizde, kabul edenler var (kendi adıma). Sizi bilemem ama benim işimi kolaylaştırıyor.

benimde anlatmak istediğim aslında buydu. Derleyicinin kullanıcının işini kolaylaştırmak için kullanılan yönlendirme makro ve direktiflerini hazır olarak kullanıyoruz. Program başlangıcında derleyiciye şu kodu derle veya bunu derle gibi yönlendirmeler yapabiliyoruz. Ben bunları ASM kodu olarak görmüyorum. Hex kısmına gelirsek Konuyu açan kişinin gönderdiği kodlarda (.... .asm) uzantılı dosyalar boş yada eksik çıktığında derleme esmasında hex kodu oluşmayacaktır veya disasembly boş çıkacaktır.  Aynı şey ramu isimli arkadaşın yazdığı kodlar içinde geçerli.
Persistance is the name of the game in this business....

RaMu

#13
Kendimi haklı çıkarmak için değil
okuyanlar birşeyler öğrensin diye yazıyorum,
haklı olmamın bana bir faydası yok,
haksız olsam senden birşeyler öğrenebilirdim ne güzel.

Bence daha fazla uzatmayalım,
benim bildiğim bana seninki sana.

Mesajının devamını şimdi gördüm,
aslında aynı şeyleri söylüyoruz
arada bakış açısı var diyebiliriz.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

LukeSkywalker

Asm komutlari bellidir, islemcinin datasheetinde yer alir.
Buradaki kodlar asm degil. Makrolar tanimlanmis sadece ve gerekli asm dosyalari cagrilmis. Buna asm diyemeyiz.