Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

pbp+proteus+lcd

Başlatan dombilik, 05 Şubat 2004, 14:59:24

Veli B.

Aynen bu şekilde yazdı isen çalışmaması normal ;)

******************************************
       IF

ADSONUC>ADSONUC3 THEN HIGH PORTD.0

******************************************

ETİKET KULLANMAK

İSTİYORSAN
;

******************************************

       IF ADSONUC>ADSONUC3 THEN

DENEME

.
.
.
.
DENEME:

       HIGH PORTD.0
.
.
.
END
**********************************************

sezgin05

Maalesef ben yapamadım.İki değeri birbiyle karşılaştırıp.Portlardan birine çıkış alamadım.MCS hata vermiyor.Fakat proteusta

o port çıkışı ya sürekli HIGH yada LOW.Galiba bir püf noktayı atlıyorum.Katana lütfen biraz daha yardım.
Acaba ADSONUC0-...1-...2 lerin word yada byte olması yada Bin Hex Dec olamsı

mı etkiliyor?Yoksa proteus Sp2.5 ten yüksek  mi olmalı?Varsa  yüksek versiyon için link yazarmısınız?teşekkürler?

Veli B.

Örneklemeyi asm ile yapmayı seviyorum.Aşağıda ki örnek gibi. 8 bit için BYTE

tanımlayabilirsin.
**********************************************************
.
.
.
.
.

asm
saymac EQU 51
endasm
SEBEKE VAR

BYTE
CIKIS VAR BYTE
YUK VAR BYTE
MAIN:
ADCON1=%10000001 ' taban ADRESL( 8 bit) ve msb ADRESH ta(2 bit)                               'VREF +

referans.

ASM
       movlw    193        'AN0 seç
       movwf   ADCON0
       movlw   3  
       movwf   saymac
       decfsz  saymac,f
       goto    $-1
 

     bsf     ADCON0.2  
       btfsc   ADCON0.2
       goto    $-1
       ENDASM
       YUK=ADRESL   ' 8 bitlik sonucu Yuk değişkenine yükle
ASM
       movlw    

201  ' AN1 seç
       movwf   ADCON0
       movlw   3  
       movwf   saymac
       decfsz  saymac,f
       goto    $-1
       bsf     ADCON0.2  
       btfsc  

ADCON0.2
       goto    $-1
       ENDASM
        CIKIS=ADRESL
ASM
       movlw   209 ' AN2 seç
       movwf   ADCON0
       movlw   3  
       

movwf   saymac
       decfsz  saymac,f
       goto    $-1
       bsf     ADCON0.2  
       btfsc   ADCON0.2
       goto    $-1
       ENDASM
       

SEBEKE=ADRESL

.
.
.
END
***********************************************************

Bu da PBP komutları

ile.
***********************************************************
.
.
DEFINE ADC_BITS 10       ' Set number of bits in result
DEFINE ADC_CLOCK 3     ' Set clock source

(rc = 3)
DEFINE ADC_SAMPLEUS 25 ' Set sampling
SEBEKE VAR WORD
CIKIS VAR WORD
YUK VAR WORD
TRISA = %11111111 ' PORTA

GİRİŞ
ADCON1 = 129  ' PORTA  analog, sonuç sağa yaslı

MAIN:
ADCIN 0, SEBEKE
ADCIN 1, CIKIS
ADCIN 2,

YUK
.
.
END
*********************************************************

Kolay gelsin.

Veli B.

Board ta arama yaparsan ziyadesi ile link var.
Ben sonsivriden indirmiştim ama şu an sorun var diyor bazı arkadaşlar

bir de mcu da varmış ama ben incelemedim.En sağlıklısı bir arama yaptır.

sezgin05

Katana öncelikle ilgine teşekkürler.Fakat bu başlığın birinci sayfasında şemaya ve basic code bakarsanız.ADSONUC lar

zaten byte cinsinden Ama ben bu değişkenleri kendi aralarında karşılaştırmak ve çıkış almak istiyorum.IF-THEN ile yapamadım.
Ayrıca Proteus6.4 Sp1 çıkmış(gerçi ben henüz 3.1'i bile

bulamadım).Bulan varsa yardım istiyorum.
Teşekkürler...

Veli B.

Kusura bakma henüz ne yapmak istediğini anlayamadım.
sanırım AN1 AN2 VE AN3 ü kendi aralarında

karşılaştırmak ve hangisi buyukse onu en büyük ve ya en küçük diye tanımlayabilmek istiyorsun.
Ne istediğini tam olarak anlatırsan daha sağlıklı olacak.

Veli B.

Kaynaği yani hangi kanaldan geldiğini tanımlamak öenmli değilse sadece sonuçların içinden en küçüğü bulmak istiyorsan ,

en büyük için max kullan min yerine;

x1 var byte
A var byte
B var byte
C var byte
X1= A MIN B
X1= X1 MIN C
' x1 de en küçük değer yüklenmiş

durumda,10 bit çalışırsan registerları ayrı ayrı işleme sokman lazım.Desteği 8 bit(255)

****************************************************

kaynağı ve değeri bulmak istiyorsan(

işaretlerin yönünü değiştirerek en büyüğüde bulabilrsin;
IF A< B THEN
       IF A<C THEN
              LCDOUT "A EN KUÇUK :",#A
              ELSE    
       

     LCDOUT "C EN KUCUK:",#C
       ENDIF

       ELSE
       IF B<C THEN
              LCDOUT "B EN KUÇUK:",#B
              ELSE
             

LCDOUT "C EN KUÇUK",#C
       ENDIF
ENDIF

mhk

Mutlaka eksik yazdığın bir yer olabilir. Aşağıdaki pic basic kodunu olduğu gibi yazıp derledikten sonra proteusta simule

edebilirsin. Dikkat etmen gereken, proteusta LCD bağlantılarını doğru yapman. Aşağıda define kısmında LCD yi nereye hangi porta bağlayacağın tanımlanıyor. Başarılar.


define osc

20

Define  LCD_DREG        PORTD
Define  LCD_DBIT        4
Define  LCD_RSREG       PORTE
Define  LCD_RSBIT       0
Define  LCD_EREG        

PORTE
Define  LCD_EBIT        1

' Define ADCIN parameters
DEFINE  ADC_BITS        10        ' Set number of bits in result
DEFINE  ADC_CLOCK       3        '

Set clock source (3=rc)
DEFINE  ADC_SAMPLEUS    50       ' Set sampling time in uS

adval0        VAR WORD         ' Create adval to store result
adval1        VAR

WORD         ' Create adval to store result

      TRISA = %11111111      ' Set PORTA to all input
      TRISd = %00000000      ' Set PORTA to all input
       

ADCON1 = %10000010      ' Set PORTA analog and right justify result

       Pause 500             ' Wait .5 second
       LCDOut $FE, 1               ' Clear the

display

loop:

ADCIN 0, adval0               ' Read channel 0 to adval0 (0-1023)
ADCIN 1, adval1               ' Read channel 1 to adval1 (0-1023)

if

adval1>adval0 then high portd.0
if adval1<adval0 then low portd.0

goto loop
       End
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

sezgin05

Sevgili MHK aynen istediğim gibi oldu.Anlamadığım şu:senin senin yazdığın coddaki

değişkenler WORD(adval0-1),diğerinde ise BYTE(adsonuc0-1) sorun buradamı?
Ayrıca sendedeni yok Proteus6 2.5 'in üstü.Teşekkürler..

lovely_man

Hocam geç olmuş ama bir tanede ben albilirmiyim?
lovely_man@mynet.com

dombilik

micro code studio ile (2.43) LCDOUT komutunu
$FE,$C0,"DEGER=",VERI   şeklinde kulandığımızda ekrana ASCII karakterini yazıyor.
$FE,$C0,"DEGER=",#VERI    şeklinde ise desimal değeri yazıyor..
peki bu  VERI değişkenini  LCDOUT komutunu kullanarak ikili sayı siteminde ekrana nasıl verebilirim? :?:  (Yani ekranda VERI değişkeni ikili tabanda yazılacak). :!:
Tüm forumdaşlara şimdiden teşekkürler.herkese kolay gelsin..
Bildiklerini kime miras bıraktın?kimseyemi? O zaman bildiklerinin ne önemi kalır. ******** /////////// ******** PROTON-ASM PROTEUS 7.4 SP3 EAGLE 5.40

ustunemrah

BU DEVRE NE İŞE YARİO SORMASI AYIP
"Bu memleket tarihte Türktü, bugün Türktür ve ebediyyen Türk olarak yaşayacaktır." (1923) "Türk Milleti, kendinin ve memleketinin yüksek menfaatleri aleyhine çalışmak isteyen bozguncu alçak, vatansız, milliyetsiz, beyinsizlerin saçmalamala