Pic ile adc yada darbe sayici icin yardim edebilirmisiniz?

username1

Üye
Katılım
8 Haz 2009
Mesajlar
10
Puanları
1
Yaş
35
merhaba,
bir haftadir arastiriyorum deniyorum isin icinden cikamadim. iki pic kullaniyorum bunlardan birincisinde iki buton bagli ve butona bastigim zaman c0 portundan 10101 seklinde bir dalga uretiriyorum. Bu dalgayi ikinci picte a0 girisine bagliyorum ve tum bildiklerim burda sona eriyor :) picten benim 10101 seklinde bilgi okumam ve buna gore herhangi bir portun bir bitinde led yakmam gerekiyor.
Ornegin; ikinci pic surekli dinleme modunda olacak ve birinci picten gonderilen deger ile o degere verilen karsiligi calistiracak. birinci picin bir pininden gelen bilgi 11001 ise ikinci picin bir pini bunu 11001 olarak okuyacak ve eger gelen bilgi 11001 ise birinci ledi yak, 11100 ise ikinci ledi yak gibi sonuc verecek. Gecenin bu saatinde anlatmasi biraz guc oluyor :)
Bu konuda bana yardimci olabilirmisiniz? adc, kesme, pwm herhangi bir cozum isime yarar. pic olarak f84, 628, 877, 890, 18f4550 var elimde bunlardan biri olabilir. yazilim asm harici anlayabilirim :) simdiden tesekkurler
 
Verilerini gönderirken kendine Start biti ayarlayabilirsin.
Böylelikle, veri kafasına göre geldiğinde, o veriyi alan PIC de düzgün bir şekilde alır.
Dinlemeleri o şekilde gerçekleştirebilirsin.
Ayrıca seri iletişim yaptığın için kendine bir veri gönderme hızı belirlemen lazım.
Yoksa karşıdaki PIC anlamaz.
Yani göndereceğin bitlerin sırasıyla aynı süre ile gitmesi lazım.
Örneğin 2. PIC'in atıyorum C_1 bacağını giriş olarak kabul edersek;
Onu 4.7k bir direnç ile pull-down yap.
Senin verin atıyorum 11011011 ise start biti olarak başına bir tane daha bir koy. (111011011)
2. PIC'in C_1 bacağını devamlı olarak dinle.
Eğer bu bacakta 1 görüyorsan, veri gelmeye başlamıştır demektir.
İşte o zaman yukarıda belirlediğin veri gönderme hızına göre verileri sırası ile okumaya başlayabilirsin.
 
cevabiniz icin tesekkur ederim. gonderecegim veriyiye bir start birde stop biti ekledim. gonderme islemini tamam sayilir. peki ornegin picin c_1 bacagindan bu veriyi nasil okuyup bir degiskene atiyacagim kucuk bir ornek kod yazabilirmisiniz?
input(pin_c1) ile mi almam gerekiyor ve eger boyle alacaksam birden fazla biti bu komut ile nasil alip bir degiskene 11011 seklinde iletecegim?
 
İlk PIC'ten gönderdiğin verinin hızı ne?
Yani her bir bitin süresi kaç mS ya da uS?
 
su an icin 50us lik 4bit gonderiyorum. start ve stop biti ile toplam 6 bit gonderiyorum. ilk picte b0 pinine bir buton bagladim ve butona bastigim zaman c0 pinine yukaridaki 6 biti gonderen fonksiyonu cagiriyorum.
 
Bak 2004 yılında PIC16F84A için UART modülü yazmıştım.
Onu bir incele, eğer anlamadığın bir nokta olursa sorabilirsin...


Kod:
;==============SERİ PORT UYGULAMASI=============================================23.08.2004===========PAZARTESİ===============
;==============YARARMAN TARAFINDAN GELİŞTİRİLDİ==============================================================================
;____________________________________________________________________________________________________________________________
               LIST     P=16F84
               INCLUDE  "P16F84.INC"
;____________________________________________________________________________________________________________________________

;PROGRAMDA ZAMAN GECİKMESİ SAĞLANMASI İÇİN PIC'İN RAM'İNDE SAYAC ADLI BİR REGISTER TANIMLANIR 
SAYAC          EQU      H'0C'

;DATA GÖNDERİLİMİ İÇİN PIC'İN RAM'İNDE GONDER ADLI BİR REGISTER TANIMLANIR
GONDER	       EQU      H'0E'

;PIC'E GELEN VERİYİ KAYDETMEK İÇİN PIC'İN RAM'İNDE ARACI ADLI BİR REGISTER TANIMLANIR
ARACI	       EQU      H'0F'

;
YEDEK          EQU      H'10'

;
SAYAC1         EQU      H'11'

;
SAYAC2         EQU      H'12'

;----------------------------------------------------------------------------------------------------------------------------

               BSF      STATUS,5             ;STATUS REGISTER'ININ 5. BİTİ 1 YAP, BANK1'E GEÇ.                   
               CLRF     TRISB                ;PORTB'NİN BÜTÜN PİNLERİNİ ÇIKIŞ YAP.
               MOVLW    H'FF'                ;H'FF' VERİSİNİ , W REGISTER'INA YÜKLE.
               MOVWF    TRISA                ;W REGISTER'INI PORTA'YA YÜKLE BÜTÜN PİNLERİ GİRİŞ YAP.
               BCF      STATUS,5             ;STATUS REGISTER'ININ 5. BİTİNİ 0 YAP BANK0'A GEÇ.
               CLRF     PORTB                ;PORTB'NİN BÜTÜN PİNLERİNİ 0 YAP. 

;----------------------------------------------------------------------------------------------------------------------------
         
;============================================================================================================================
               
;----------------------------------------------------------------------------------------------------------------------------

;START BİTİ OKUNUP VERI1'E, GELEN DATAYI YÜKLEME İŞİ BAŞLATILIR
START
               BTFSC    PORTA,0              ;PORTA'NIN 0. BİTİNİ KONTROL ET.
               GOTO     START                ;START'A GİT. 

   	       MOVLW    H'20' 	             ;VERİLERİN YÜKLENECEĞİ İLK REGISTER'I W REGISTER'INA YÜKLE.
	       MOVWF    FSR	             ;W REGISTER'INI FSR REGISTER'INA YÜKLE.
YUKLE
               CALL     GECIKME              ;BİLGİSAYARIN 9600bps HIZINI YAKALAMAK İÇİN BİR GECİKME SAĞLA.  
               CALL     GECIKME1             ;AYRICA GELEN BİTİ TAM ORTASINDA OKUMAK İÇİN GECİKME SAĞLA.
                                             ;BÖYLECE VERİ KAYBI ENGELLENMİŞ OLUR.
               CALL     ALMA                 ;ALMA FONKSİYONUNU ÇAĞIR.                 
               MOVF     ARACI,0              ;ARACI'YI W REGISTER'INA YÜKLE.
	       MOVWF    INDF	             ;INDF, O ANDAKİ ADRESİN YERİNE GEÇER.		
	       INCF     FSR		     ;FSR ADRESİ BİR ARTTIR.

;EN SON KAÇINCI ADRESTE KALDIĞINI ÖĞRENMEK İÇİN FSR YEDEKLENİR.
               MOVF     FSR,0                ;FSR REGISTER'INI W REGISTER'INA YÜKLE.
               MOVWF    YEDEK                ;W REGISTER'INI YEDEK REGISTER'INA YÜKLE.

               MOVLW    H'21'                ;H'21' VERİSİNİ , W REGISTER'INA YÜKLE.
               MOVWF    SAYAC2               ;W REGISTER'INI SAYAC2'YE YÜKLE.
DONGU3
               BTFSS    PORTA,0              ;PORTA'NIN 0. BİTİNİ KONTROL ET.
               GOTO     YUKLE                ;CHIP'E GİT.
               DECFSZ   SAYAC2               ;SAYAC2'DEN 1 ÇIKAR.
               GOTO     DONGU3               ;DONGU3'E GİT.
	       GOTO	YAZDIR               ;YAZDIR'A GİT.

;****************************************************************************************************************************
ALMA                                         ;"ALMA" FONKSİYONU 
;****************************************************************************************************************************                                             
;----------------------------------------------------------------------------------------------------------------------------
;GELEN VERİNİN 0. BİTİ OKUNUP TEST EDİLİR VE ARACI REGISTER'ININ 0. BİTİNE KAYDEDİLİR
BIT0
               BTFSS    PORTA,0              ;PORTA'NIN 0. BİTİNİ KONTROL ET.     
               GOTO     SIFIR0               ;SIFIR0'A GİT.
               BSF      ARACI,0              ;ARACI REGISTER'ININ 0. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR. 
               GOTO     BIT1                 ;BIT1'E GİT.
SIFIR0
               BCF      ARACI,0              ;ARACI REGISTER'ININ 0. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FONSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
;GELEN VERİNİN 1. BİTİ OKUNUP TEST EDİLİR VE ARACI REGISTER'ININ 1. BİTİNE KAYDEDİLİR
BIT1
               BTFSS    PORTA,0              ;PORTA'NIN 0. BİTİNİ KONTROL ET.     
               GOTO     SIFIR1               ;SIFIR1'E GİT.
               BSF      ARACI,1              ;ARACI REGISTER'ININ 1. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
               GOTO     BIT2                 ;BIT2'YE GİT.
SIFIR1
               BCF      ARACI,1              ;ARACI REGISTER'ININ 1. BİTİNİ 0 YAP. 
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
;GELEN VERİNİN 2. BİTİ OKUNUP TEST EDİLİR VE ARACI REGISTER'ININ 2. BİTİNE KAYDEDİLİR
BIT2
               BTFSS    PORTA,0              ;PORTA'NIN 0. BİTİNİ KONTROL ET.
               GOTO     SIFIR2               ;SIFIR2'YE GİT.   
               BSF      ARACI,2              ;ARACI REGISTER'ININ 2. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.  
               GOTO     BIT3                 ;BIT3'E GİT.
SIFIR2
               BCF      ARACI,2              ;ARACI REGISTER'ININ 2. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FOKSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
;GELEN VERİNİN 3. BİTİ OKUNUP TEST EDİLİR VE ARACI REGISTER'ININ 3. BİTİNE KAYDEDİLİR
BIT3
               BTFSS    PORTA,0              ;PORTA'NIN 0. BİTİNİ KONTROL ET.
               GOTO     SIFIR3               ;SIFIR3'E GİT.
               BSF      ARACI,3              ;ARACI REGISTER'ININ 3. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
               GOTO     BIT4                 ;BIT4'E GİT.
SIFIR3
               BCF      ARACI,3              ;ARACI REGISTER'ININ 3. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
;GELEN VERİNİN 4. BİTİ OKUNUP TEST EDİLİR VE ARACI REGISTER'ININ 4. BİTİNE KAYDEDİLİR
BIT4
               BTFSS    PORTA,0              ;PORTA'NIN 0. BİTİNİ KONTROL ET.
               GOTO     SIFIR4               ;SIFIR4'E GİT.
               BSF      ARACI,4              ;ARACI REGISTER'ININ 4. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
               GOTO     BIT5                 ;BIT5'E GİT.
SIFIR4
               BCF      ARACI,4              ;ARACI REGISTER'ININ 4. BİTİNİ 0 YAP.              
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
;GELEN VERİNİN 5. BİTİ OKUNUP TEST EDİLİR VE ARACI REGISTER'ININ 5. BİTİNE KAYDEDİLİR
BIT5
               BTFSS    PORTA,0              ;PORTA'NIN 0. BİTİNİ KONTROL ET.
               GOTO     SIFIR5               ;SIFIR5'E GİT.
               BSF      ARACI,5              ;ARACI REGISTER'ININ 5. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
               GOTO     BIT6                 ;BIT6'YA GİT.
SIFIR5   
               BCF      ARACI,5              ;ARACI REGISTER'ININ 5. BİTİNİ 0 YAP. 
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
;GELEN VERİNİN 6. BİTİ OKUNUP TEST EDİLİR VE ARACI REGISTER'ININ 6. BİTİNE KAYDEDİLİR
BIT6
               BTFSS    PORTA,0              ;PORTA'NIN 0. BİTİNİ KONTROL ET. 
               GOTO     SIFIR6               ;SIFIR6'YA GİT.
               BSF      ARACI,6              ;ARACI REGISTER'ININ 6. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSIYONUNU ÇAĞIR.
               GOTO     BIT7                 ;BIT7'YE GİT.
SIFIR6                                  
               BCF      ARACI,6              ;ARACI REGISTER'ININ 6. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR. 
;----------------------------------------------------------------------------------------------------------------------------
;GELEN VERİNİN 7. BİTİ OKUNUP TEST EDİLİR VE ARACI REGISTER'ININ 7. BİTİNE KAYDEDİLİR
BIT7
               BTFSS    PORTA,0              ;PORTA'NIN 0. BİTİNİ KONTROL ET.
               GOTO     SIFIR7               ;SIFIR7'YE GİT.
               BSF      ARACI,7              ;ARACI REGISTER'ININ 7. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
               GOTO     STOP                 ;STOP'A GİT.
SIFIR7
               BCF      ARACI,7              ;ARACI REGISTER'ININ 7. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR
;----------------------------------------------------------------------------------------------------------------------------                                                                                
;STOP BİTİ GELDİKTEN SONRA ARACI REGISTER'INA YÜKLEME İŞLEMİ SONLANIR
STOP
               BSF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 1 YAP.
               RETURN                        ;GERİ DÖN.
;----------------------------------------------------------------------------------------------------------------------------

;****************************************************************************************************************************              
YAZDIR                                       ;"YAZDIR" FONKSİYONU
;****************************************************************************************************************************
;============================================================================================================================
;PORTA'NIN 1. BİTİ KONTROL EDİLİR.EĞER BU BİT SIFIRSA RAM'DEKİ VERİLER GÖNDERİLMEYE BAŞLAR
CONTROL               
               BTFSC    PORTA,1              ;PORTA'NIN 1. BİTİNİ KONTROL ET.    
               GOTO     CONTROL              ;CONTROL'A GİT.

               MOVLW    H'20' 	             ;VERİLERİN OKUNACAĞI İLK REGISTER'I W REGISTER'INA YÜKLE.
               MOVWF    FSR	             ;W REGISTER'INI FSR REGISTER'INA YÜKLE.
	
               MOVLW    H'20'                ;H'12' VERİSİNİ W REGISTER'İNE YÜKLE. 
               SUBWF    YEDEK,1              ;YEDEK REGISTER'INDAN W REGISTER'İNİ ÇIKAR.
YENIBYTEYAZ
	       MOVF     INDF,0 	             ;O ANDAKİ REGISTER'I W REGISTER'INA YÜKLE.
	       MOVWF    GONDER               ;W REGISTER'C
               CALL     GONDERME             ;GONDERME FONKSİYONUNU ÇAĞIR                 
	       INCF	FSR	             ;FSR ADRESİ 1 ARTTIR.
               DECFSZ   YEDEK,F              ;YEDEK REGISTER'INDAN 1 ÇIKAR , YEDEK REGISTER'INA YÜKLE.
               GOTO     YENIBYTEYAZ          ;YENİBYTEYAZ'A GİT.
               GOTO     SON                  ;SON'A GİT.

;GÖNDERME İŞİ BİTTİKTEN SONRA , PROGRAM RESETLENDİRİLMİŞ GİBİ BAŞTAN ÇALIŞTIRILIR
SON
               GOTO     START                ;START'A GİT.
;============================================================================================================================



;****************************************************************************************************************************
GONDERME                                     ;"GONDERME" FONKSİYONU
;****************************************************************************************************************************
;----------------------------------------------------------------------------------------------------------------------------
               BCF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
BIT00
               BTFSS    GONDER,0             ;GONDER REGISTER'NIN 0. BİTİNİ KONTROL ET.
               GOTO     SIFIR00              ;SIFIR00'A GİT.
               BSF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKMR FONKSİYONUNU ÇAĞIR.
               GOTO     BIT01                ;BIT01'E GİT.
SIFIR00
               BCF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
BIT01
               BTFSS    GONDER,1             ;GONDER REGISTER'ININ 1. BİTİNİ KONTROL ET.
               GOTO     SIFIR01              ;SIFIR01'E GİT.
               BSF      PORTB,0              ;PORTB'NİN 0.BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
               GOTO     BIT02                ;BIT02'YE GİT.
SIFIR01
               BCF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
BIT02
	       BTFSS    GONDER,2             ;GONDER REGISTER'ININ 2. BİTİNİ KONTROL ET.
               GOTO     SIFIR02              ;SIFIR02'YE GİT.
               BSF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
               GOTO     BIT03                ;BIT03'E GİT.
SIFIR02
               BCF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
BIT03
               BTFSS    GONDER,3             ;GONDER REGISTER'ININ 3. BİTİNİ KONTROL ET.
               GOTO     SIFIR03              ;SIFIR03'E GİT.
               BSF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
               GOTO     BIT04                ;BIT04'E GİT.
SIFIR03
               BCF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
BIT04
               BTFSS    GONDER,4             ;GONDER REGISTER'ININ 4. BİTİNİ KONTROL ET.
               GOTO     SIFIR04              ;SIFIR04'E GİT.
               BSF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
               GOTO     BIT05                ;BIT05'E GİT.
SIFIR04
               BCF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU YAP.
;----------------------------------------------------------------------------------------------------------------------------
BIT05
               BTFSS    GONDER,5             ;GONDER REGISTER'ININ 5. BİTİNİ KONTROL ET.
               GOTO     SIFIR05              ;SIFIR05'E GİT.
               BSF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
               GOTO     BIT06                ;BIT06'YA GİT. 
SIFIR05
               BCF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
BIT06
               BTFSS    GONDER,6             ;GONDER REGISTER'ININ 6. BİTİNİ KONTROL ET.
               GOTO     SIFIR06              ;SIFIR06'YA GİT.
               BSF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
               GOTO     BIT07                ;BIT07'YE GİT.
SIFIR06
               BCF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
BIT07
               BTFSS    GONDER,7             ;GONDER REGISTER'ININ 7. BİTİNİ KONTROL ET.
               GOTO     SIFIR07              ;SIFIR07'YE GİT.
               BSF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
               GOTO     STOP1                ;STOP1'E GİT.
SIFIR07
               BCF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 0 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
;----------------------------------------------------------------------------------------------------------------------------
STOP1 
               BSF      PORTB,0              ;PORTB'NİN 0. BİTİNİ 1 YAP.
               CALL     GECIKME              ;GECIKME FONKSİYONUNU ÇAĞIR.
               RETURN                        ;GERİ DÖN.
;----------------------------------------------------------------------------------------------------------------------------
                
;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
;GECİKMELER BÖLÜMÜ
;////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
               
;****************************************************************************************************************************
GECIKME                                      ;"GECIKME" FONKSİYONU
;****************************************************************************************************************************
;GECIKME = 9600 bps' LİK GECİKME
               MOVLW    H'21'                ;H'21' VERİSİNİ , W REGISTER'INA VERİSİNİ YÜKLE.
               MOVWF    SAYAC                ;W REGISTER'INI , SAYAC REGISTER'INA YÜKLE.
DONGU1
	       DECFSZ   SAYAC,F              ;SAYAC REGISTER'INDAN 1 ÇIKAR , SAYAC REGISTER'INA YÜKLE.
               GOTO     DONGU1               ;DONGU1'E GİT.
               RETURN                        ;GERİ DÖN.
;****************************************************************************************************************************
GECIKME1                                     ;"GECIKME1" FONKSİYONU
;****************************************************************************************************************************
;GECIKME1 = BİTLERİ ORTASINDA OKUMAK İÇİN GECİKME
               MOVLW    H'05'                ;H'05' VERİSİNİ , W REGISTER'INA YÜKLE.
               MOVWF    SAYAC                ;W REGISTER'INI , SAYAC REGISTER'INA YÜKLE.
DONGU2        
               DECFSZ   SAYAC,F              ;SAYAC REGISTER'INDAN 1 ÇIKAR , SAYAC REGISTER'INA YÜKLE.
               GOTO     DONGU2               ;DONGU2'YE GİT.
               RETURN                        ;GERİ DÖN.

;END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_END_

               END                           ;PROGRAM BİTTİ.
 
bu biraz asm mi :D abi start bitinin baslangici haricinde anladim yazdigini sanirim. a0'i surekli dinleyip onu farkli degiskenlerde bloklara yazdiriyordun anladigim kadariyla. daha sonrada sirayla bloklardaki verileri portb ye yukluyor. mantik olarak tamda isimi gorecek program. ama asm oldugundan mi bana biraz karisik geldi :D bu start bitinden sonraki tarama islemini istedigimiz bit sayisi kadar yapiyoruz degil mi?
 
Ya ASM böyle bir şey işte. :)
Esas ASM'de yazmak zor böyle şeyler.
Ben bu modülde iletişimi 8 bit ile yapıyordum.
Yani 8 Bitlik veri gönderip alıyordum.
Bir şeyler atıştırıp geliyorum, sen incelemeye devam et.
Önemli olan mantık.
C'de daha kolay yaparsın.
Eğer yapamazsan, beraber yapmaya çalışırız.
Elimde önemli bir proje var, onu yetiştirmeye çalışıyorum.
O yüzden kodlar ile fazla ilgilenemiyorum.
Yüzeysel olarak yardımcı olmaya çalışıyorum.
 
abi tesekkur ederim. ben bi bunun ciktisini alip c ye cevirmeye caliscam. sanirim geceyi yarilarim bununla hemde mantigini iyice anlamis olurum cunku 8 bit veriyi daha ultrasonik sensorle gondercem :) asm yi sevemedim nedense bi turlu. yardimin icin cok tesekkur ederim seni de oyalamak istemiyorum proje yetistirme calismalarini iyi bilirim :D kolay gelsin takildigim yerde tekrar yazarim
 
Anlayışın için teşekkür ederim.
Dediğin gibi ne yaparsan yap, temelinde ASM'yi bilmek zorundasın.
Arkaplanda işlerin nasıl yürüdüğünü çok daha iyi anlarsın, ASM'yi iyi bilirsen.
Sen uğraş, takıldığın bir nokta olursa yine buraya yazarsın.
Hadi kolay gelsin...
 

Forum istatistikleri

Konular
129,720
Mesajlar
929,253
Kullanıcılar
452,437
Son üye
omes14

Yeni konular

Geri
Üst