PC AT klavye kodları hayırlı olsun

Başlatan mhk, 29 Kasım 2004, 02:57:35

mhk

Sevgili dostlar hazırladığım PC AT klavye kod okuma ve Türkçe Q klavye shift ve caps lock tuş duyarlı ,karakterleri LCD ekranda gösteren program ilgilenenlere hayırlı olsun.

' Yazan: mhk 
' Tarih : 03.11.2004 Yalova
' PC AT pic basic pro klavye programı
' 2x16 LCD ekran kullanılmıştır.
' PC AT klavyelerde bir tuşa basma esnasında
' senkron iletişim ile her tuşa ait kod gönderilir.
' basılı tuşun bırakılması ile F0 basılan tuş bilgisi gönderilir.
' örneğin A tuşuna basıldığında ilk önce Hex 1C bilgisi senkron
' olarak gönderilir. Basmaya devam edildiği müddetçe bu bilgi 
' gönderilmeye devam edilecektir. Eğer tuştan elimizi çekersek
' F0 sonra 1C bilgisi gönderilecektir. Daha detaylı bilgi için
' AT klavye haberleşme protokolüne bakınız.

 
define osc 20
@ device HS_OSC
@ device WDT_OFF  &  pwrt_on


ADCON1 = 7      				' PORTA ve  E dijital giriş çıkış olarak ayarla

TRISA = %111111     			' A portunu giriş olarak tanımla
TRISB = %11111111   			' B portunu giriş olarak tanımla
TRISC = %11111111   			' C portunu giriş olarak tanımla
TRISD = %11111111   			' D portunu giriş olarak tanımla


Define  LCD_DREG        PORTD 	' LCD bağlantı uçları tanımlaması
Define  LCD_DBIT        4       ' LCD 4 bit modda portD 7 6 5 4 uçlarına bağlı
Define  LCD_RSREG       PORTC   ' LCD RS ucu PortC.6 ya bağlı
Define  LCD_RSBIT       6
Define  LCD_EREG        PORTC   ' LCD EN ucu PortC.7 ye bağlı
Define  LCD_EBIT        7
DEFINE LCD_BITS  4
DEFINE LCD_LINES 2

option_reg=%00000000            'Pull up enable yap 
portb=0:portc=0:portd=0

CLKPIN   var     PORTB.0        ' Klavye clock pin PORTB.0 olarak tanımla
DATAPIN  var     PORTB.1       ' Klavye Data pin PORTB.1 olarak tanımla

'************** Değişken tip tanımlama blokları *********
klavyedeg    var     byte
dvm01 var byte
dvm02 var byte
dvm03 var byte
dvm04 var byte
dvm05 var byte
deg var BYTE
satir var byte 
kodcozdeg var byte
harf var byte
parity var bit
bitsay var byte
parbit var byte
txdeg var byte
rx_byte var byte
LEDs var byte
rx_ok var byte
turk var byte[8]

'**************** değişken başlangıç değerleri ***********
klavyedeg=0
dvm01=0
dvm02=0
dvm03=0
dvm04=0
dvm05=0
kodcozdeg=0
deg=0
satir=0
harf=1
txdeg=0
rx_byte=0
LEDs=0
bitsay=0
rx_ok=0

gosub ekransil                   ' LCD ekran temizleme alt programına git. 
lcdout $Fe,2,"PC AT Klavye"
lcdout $Fe,$C0,"Deneme programi" 


pause 2000
gosub turkkar                    'LCD CGRAM hücrelerine türkçe karakterleri yükle
gosub ekransil
           LEDs =0               
           txdeg=$ED             ' PC AT klavye caps num ve scrlock ledlerini söndür.
           GOSUB TX_hazir
           GOSUB tx_gonder
           
'AAAAAAAAAAAAAAAAAAAAAAA-------  Ana Program ------AAAAAAAAAAAAAAAAA

anaprogram: 
rx_byte =0
    gosub RX_klavye
if rx_ok=0 then anaprogram
rx_ok=0

 IF rx_byte=$12 or rx_byte=$59 THEN M4 ' Eğer shift tuşuna basılmışsa M4 e git
 
 
 if rx_byte=$F0 then dvm02=1:goto anaprogram ' Eğer klavye tuşu bırakılma kodu olan F0 gelmişse
 if rx_byte=$E0 then dvm05=1:goto anaprogram ' Eğer klavye tuşu bırakılma kodu olan E0 gelmişse

 if dvm02=1 then dvm02=0:goto anaprogram     ' Eğer klavye tuşu bırakıldığında tuş tekrarını önler

    IF rx_byte = $FA THEN	   				 ' Klavye caps num ve scrlock ledlerini yakmaya hazır  
                                             ' olduğunda FA bilgisini gönderir.
           GOSUB TX_hazir
           txdeg=LEDs
           GOSUB ledcaps
           rx_byte =0
     ENDIF

     IF rx_byte = $12 THEN	   				 ' Eğer shift tuşuna basılmışsa if bloğu içindekileri yap
M4: 

           LEDs = LEDs | %00000001			 ' scroll lock LED'i 1 ile OR işlemi yaparak 1' le
		    IF dvm02 = 1 THEN                 
		      LEDs =LEDS ^ %00000001         ' Scroll lock LED'i değille 
              dvm02=0
			ENDIF  
		   txdeg=$ED
           GOSUB TX_hazir
           GOSUB tx_gonder
           GOTO anaprogram
	ENDIF       

    IF rx_byte = $58 THEN	   				 ' Eğer shift caps lock basılmışsa if bloğu içindekileri yap
           LEDs = LEDs ^ %00000100           ' Caps ledini değilleyerek her basışta yanması yada
           txdeg=$ED                         ' sönmesini sağlar
           GOSUB TX_hazir
           GOSUB tx_gonder
           goto anaprogram 
	 ENDIF


		IF LEDs = 0 THEN	   				  ' caps = 0, shift = 0 
           harf=1                             ' ( Caps ve Shift basılmamışsa normal durum)
		   gosub kodcoz
		   GOTO anaprogram
		ENDIF

		IF LEDs = 1 THEN	   				  ' caps = 0, shift = 1
           harf=2                             ' Normal durumda klavyede shift tuşuna basılma işlemi
		    gosub kodcoz
		   GOTO anaprogram
		ENDIF		

		IF LEDs = 4 THEN 	  		   		  ' Caps = 1, shift = 0
           harf=3
		    gosub kodcoz
		   GOTO anaprogram
		ENDIF

           harf=4
        	    gosub kodcoz
goto anaprogram

'*************** KLAVYE OKUMA ******************************
' Klavye bilgi alma işlemi burada gerçekleşir.
' Senkron iletişimde clock pals ve ardından bilgiler 
' gönderilir. Bu işlem için clock palsin her işlenmesinde 
' datpindeki bilgi bir değişkene aktarılır ve  
' 1 byte lık bilgi elde edilinceye kadar kaydırılır.
' PC AT klavyelerde bilgi 11 bit ile iletilir. İlk bit start 
' sonra 8 bit bilgi , partiy ( doğrulama biti *) ve stop bitidir.
' *parity bit hesaplama:Gönderilen 1 ler çift ise parity=1
' tek ise parity=0 olacak şekilde ayarlanır.

RX_klavye:
        gosub clock
        if deg=1 then RX_klavye

        if deg<10 then
                klavyedeg=klavyedeg>>1
                klavyedeg.7=DATAPIN
              
        endif       
       
    if deg>10 then deg=0:rx_byte=klavyedeg:rx_ok=1:return

GOTO RX_klavye
return
'******************** CLOCK ************************
clock:
' Klavyenin gönderdiği her clock pals bu kısımda değerlendirilir.
' Klavye clock hattının 0 olmasını bekler.
if CLKPIN=1 then dvm01=0:goto clock

if dvm01=1 then clock

if CLKPIN=0 then
        deg=deg+1
        dvm01=1
endif

return
'************* Seri bilgi gönderme alt programı ********
' Klavyeye bilgi gönderme için ilk önce kontrol biti gönderilmelidir.
' Bunun için  TX_hazir alt programını inceleyiniz.

tx_gonder:

gosub clock
        if deg<9 then
                datapin=txdeg.0
                txdeg=txdeg>>1
        endif       
    if deg=9 then datapin=1
    if deg=10 then
            option_reg=0                      ' Pull up devrede
            TRISB = %00000011                 ' Clock ve data giriş tanımlandı
    endif
    
     if deg=11 then deg=0:return              ' 11. bite ulaşıldıysa geri dön

goto tx_gonder 
return
'*******************************************************
ledcaps:
'parity bit hesaplama: Gönderilen 1 ler çift ise parity=1, tek ise parity=0 olacak
gosub clock

        if deg<9 then
                datapin=txdeg.0
                txdeg=txdeg>>1
        endif       
    if deg=9 then 
                datapin=parity
    endif

    if deg=10 then
            option_reg=0
            TRISB = %00000011
    endif
   if deg=11 then deg=0:return

goto ledcaps 
return
'*******************************************************
TX_hazir:
' Alt kısımda klavyeye bilginin nasıl gönderileceğini sırasıyla açıklayalım
' İlk önce data ve clock hattını çıkş olarak tanımla TRISB = 0
'1)   Clock hattını low yap.(clock=0) yaklaşık olarak 80 mikrosaniye bekle
'2)   Data pini low yap ( Datapin=0 ) yaklaşık 20 mikrosaniye bekle
'3)   Clock pin giriş datapin çıkış olarak ayarla TRISB = %00000001
'4)   Klavye clock hattı low ( 0 ) olana kadar bekle
'5)   Data hattına göndereceğiniz bilginin ilk bitini yerleştirin
'6)   Klavye clock hattı high( 1 ) olana kadar bekle
'7)   Klavye clock hattı low ( 0 ) olana kadar bekle
'8)   Diğer 7 bit ve parity bit için 5 ve 7 arasındaki işlemleri takip edin.
'9)   Data pin ve clock pin giriş olarak ayarla TRISB = %00000011
'10)  Klavye data hattı low ( 0 ) olana kadar bekle
'11)  Klavye clock hattı low ( 0 ) olana kadar bekle

parbit=LEDs
for deg=0 to 2
         if parbit.0=1 then bitsay=bitsay+1    ' Parity bit hesalama için gönderilecek  
        parbit=parbit>>1                       ' bilgideki 1 lerin sayısı bitsay değişkeninde 
                                               ' saklanır.
next
 parity=0
 if bitsay//2=0 then parity=1                  ' Eğer bitsay çift ise parity=1 
 bitsay=0:parbit=0                             ' Değilse parity=0 olarak hesaplanır.
 
deg=0
       option_reg=0
		TRISB = 0
	    clkpin=0:pauseus 80
	    datapin=0:pauseus 20
        TRISB = %00000001   

       

return
'****************** KOD COZME ******************************
kodcoz:

if rx_byte=$66 then                       ' ESC tuşunun kodu , eğer bu tuşa basılmışsa
  kodcozdeg=" ":satir=satir-1             ' LCD ekran temizlenir.
        if satir>15 then satir=0          ' 2x16 LCD ekranda 16.satıra gelindiğinde ekran 
        gosub lcdgoster                   ' temizlenir ve satır başı yapılır.
    return
endif

if rx_byte=$0E then kodcozdeg=34:goto gec02 ' OE kodu " karakterini oluşturmak için kullanılır.
if rx_byte=$54 then kodcozdeg=0:goto gec02  ' Türkçe Ğ karakteri
if rx_byte=$49 then kodcozdeg=1:goto gec02  ' Türkçe Ç karakteri
if rx_byte=$5B then kodcozdeg=2:goto gec02  ' Türkçe Ü karakteri
if rx_byte=$4C then kodcozdeg=3:goto gec02  ' Türkçe Ş karakteri
if rx_byte=$41 then kodcozdeg=5:goto gec02  ' Türkçe ö karakteri
'if rx_byte=$54 then kodcozdeg=64:goto gec02' @ karakteri

' Keypad / tuşunun aktif yapılması için kullanıldı.
if dvm05=1 THEN 
       if rx_byte=$4A then dvm05=0:kodcozdeg="/":goto gec02
endif
' Bakspace tuş kodu, bu tuşa basıldığında yazılan son karakter silinir.
if rx_byte=$76 then satir=0:kodcozdeg=" ":gosub ekransil:gosub lcdgoster:return

' Klavyede kullanılmayacak tuşların ekranda kodlarının görüntülenmesini engeller.
if rx_byte>126 or rx_byte<20 then return

' Keypad tuşlarının kullanımı ile ilgili kodları çözmek için kullanılır.
if rx_byte>104 THEN harf=5

gec01:
gosub harfbul              
gec02:                     
if satir>15 then satir=0:gosub ekransil
gosub lcdgoster
satir=satir+1
rx_byte=0 
return

'**************** LCD TÜRKÇE KARAKTER OLUŞTURMA **************
turkkar:
' Türkçe karakterlerin LCD CGRAM hücrelerine yerleştirilmesi
' LCD CGRAM hücrelerine custom karakter ekleyebilirsiniz.
' Bunun için LCDOut $FE,64 yazmanız gerekir.
' 64 LCD CGRAM hüzresinin ( Custom karakter ) yada ram başlangıç
' adresidir. Max 64 byte yazabilirsiniz. Her karakter 5x8 matrix 
' şeklinde oluştuğuna göre  8 karakter kapasiteye sahiptir.
' LCD CGRAM hücresine yazma işlemi ilk adres olan $64 ten başlar
' $7 F ile biter. LCDOUT ile ilk adrese veriler yazılır.
' Daha sonra adres otomatik artar ve sonuncu bit yazıldıktan sonra
' LCD CGRAM doldurulmuş olur. LCD CGRAM doldurulan bilgi yada karakterleri 
' ilk adresten itibaren okumak gerekir. Bunun için 
' LCDOUT $FE,2,0 yazıldığında 1. adresteki karakter ekrana yazılır.
' LCDOUT $FE,2,1 yazıldığında 2. adresteki karakter ekrana yazılır.

	   LCDOut $FE,64 

for deg=0 to 63
' Türkçe ğ karakteri 
if deg=0 then 
turk[0]=$0E:turk[1]=$00:turk[2]=$0E:turk[3]=$11:turk[4]=$11:turk[5]=$0F:turk[6]=$01:turk[7]=$0E
    gosub yerlestir
endif

' Türkçe ç karakteri 
if deg=8 then
 turk[0]=$00:turk[1]=$0E:turk[2]=$11:turk[3]=$10:turk[4]=$11:turk[5]=$0E:turk[6]=$04:turk[7]=$08
    gosub yerlestir
endif

' Türkçe ü karakteri 
if deg=16 then
 turk[0]=$00:turk[1]=$0A:turk[2]=$00:turk[3]=$11:turk[4]=$11:turk[5]=$11:turk[6]=$0E:turk[7]=$00
    gosub yerlestir
endif

' Türkçe ş karakteri 
if deg=24 then
 turk[0]=$00:turk[1]=$0F:turk[2]=$10:turk[3]=$0E:turk[4]=$01:turk[5]=$1E:turk[6]=$04:turk[7]=$00
    gosub yerlestir
endif

' Türkçe ı karakteri 
if deg=32 then
 turk[0]=$00:turk[1]=$00:turk[2]=$0C:turk[3]=$04:turk[4]=$04:turk[5]=$04:turk[6]=$0E:turk[7]=$00
    gosub yerlestir
endif

' Türkçe ö karakteri 
if deg=40 then
 turk[0]=$0A:turk[1]=$00:turk[2]=$0E:turk[3]=$11:turk[4]=$11:turk[5]=$11:turk[6]=$0E:turk[7]=$00
    gosub yerlestir
endif

next

return
yerlestir:
       LCDOut turk[0]
       LCDOut turk[1]
       LCDOut turk[2]
       LCDOut turk[3]
       LCDOut turk[4]
       LCDOut turk[5]
       LCDOut turk[6]
       LCDOut turk[7]

return
'**************************** HARF ÇÖZME **********************
Harfbul:
' Klavyaden alınan tuş bilgilerini çözmek için
' kullanılan kod karşılık tablosu.
' Klavyeden çözülen kodların karşılıkları ilgili 
' tablodan alınarak LCD ekranda yazdırılır.

' caps = 0, shift = 0 ise harf=1  küçük harf modu , nümerik tuşlar normal
' caps = 0, shift = 1 ise harf=2  büyük harf modu , nümerik tuşlar ikinci karakterde
' Caps = 1, shift = 0 ise harf=3  büyük harf modu , nümerik tuşlar normal
' Caps = 1, shift = 1 ise harf=4  küçük harf modu , nümerik tuşlar ikinci karakterde
' Harf = 5 ise keypad tuşlarındaki kodlar tablodan alınır.           
if harf=1 then                                                                             
'************************************************************************************************************
'*****************************1111111111222222222233333333334444444444555555555566666666667777777777888888888
'*******************01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
LOOKUP rx_byte-21,["q1   zsaw2  cxde43   vftr5  nbhgy6   mju78   k o09   .l p*=  i  -       ,   <"],kodcozdeg
'Türkçe ı karakteri
if rx_byte=$43 then kodcozdeg=4

endif

if harf=2 then                                                                             
'************************************************************************************************************
'*****************************1111111111222222222233333333334444444444555555555566666666667777777777888888888
'*******************01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
LOOKUP rx_byte-21,["Q!   ZSAW'  CXDE+^   VFTR%  NBHGY&   MJU/(   KIO=)   :L P?=  I  _       ;   >"],kodcozdeg
endif

if harf=3 then                                                                             
'************************************************************************************************************
'*****************************1111111111222222222233333333334444444444555555555566666666667777777777888888888
'*******************01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
LOOKUP rx_byte-21,["Q1   ZSAW2  CXDE43   VFTR5  NBHGY6   MJU78   KIO09   .L P*=  I  -       ,   <"],kodcozdeg
endif

if harf=4 then                                                                             
'************************************************************************************************************
'*****************************1111111111222222222233333333334444444444555555555566666666667777777777888888888
'*******************01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
LOOKUP rx_byte-21,["q!   zsaw'  cxde+^   vftr%  nbhgy&   mju/(   k o=)   :l p?=  i  _       ;   >"],kodcozdeg
endif


if harf=5 then                                                                             
'*****************************************************
'******************************11111111112222222222333
'********************012345678901234567890123456789012
LOOKUP rx_byte-105,["1 47   0,2568   +3-*9"],kodcozdeg
endif
return

'*************** LCD GÖSTERME ****************************
lcdgoster:
lcdout $FE,2,"Kod=",hex2 rx_byte," Satir=",dec2 satir
lcdout $FE,$C0+satir ,kodcozdeg'," "
return
'*************** EKRAN TEMİZLEME ALT PROGRAMI ************
ekransil:
lcdout $FE,1
return

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

mhk

Kullanılan mikro 16 F877 20 Mhz

mhk hocam, kod ları tag içine aldım bir daha kontrol edin bozulmuş olmasın, teşekkürler
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

tnr

mhk arkadaşım eline sağlık teşekkür ederiz. AT klavye haberleşme protokolünü nereden bulabilirim? (bu soruyu sormamın nedeni benim pbp bilmediğim için).


tnr

Ben Pic'e PC klavyesi  bağlamak istiyorum ve bunun üzerinde çalışıyorum. Şu andaki bağlantım sizin yapmış olduğunuz gibi (CLK>PB0; DATA>PB1). Klavyeden gelen her clk palsinde  kesme oluşuyor. 16F877'nin dahili USART'ı var. Klavyeden gönderilen bilgileri bu usart ile alabilir miyiz? Usart konusunda pek bilgim olmadığı için soruyorum? Teşekkür Ederim.

efe1409

Bu programı çalıştıran varmı acaba?
Vatanın bağrına düşman dayamış hançerini, Yok mudur kurtaracak bahtı kara maderini (Anasını)                                                                       Namık Kemal

XX_CİHAN_XX

Alıntı yapılan: "tnr"Ben Pic'e PC klavyesi  bağlamak istiyorum ve bunun üzerinde çalışıyorum. Şu andaki bağlantım sizin yapmış olduğunuz gibi (CLK>PB0; DATA>PB1). Klavyeden gelen her clk palsinde  kesme oluşuyor. 16F877'nin dahili USART'ı var. Klavyeden gönderilen bilgileri bu usart ile alabilir miyiz? Usart konusunda pek bilgim olmadığı için soruyorum? Teşekkür Ederim.
Klavyeden gelen datayı doğrudan usart kullanarak alman çok zor çünkü baud rate bilinmiyor.Fakat manuel usart rogramını kendin yazarak bir alış yapabilirsin ama önce yine baud ratesini tespit etmen gerekir.Yinede çok sağlıklı olmaz.Bu şekilde RB0 kesmesi ile çok daha saglıklı veri alışı yapmak mümkün.Düşen kenar rb0 kesmesi ile çalışılacak.Clock her "0" a indiğinde data hattındaki sıradaki bit alınacak.Bu şekilde
Start    8bit data    stop  parity  olmak üzere 11 bit dediğim şekilde okunduğunda klavyeden vgelen 1 byte lık veriyi okumuş oluyoruz.Fakat şunuda söylemek gerekir.Her tuşa bastığımızda 1 byte gelmiyor.Normal tuşlarda 3 byte bazı özel tuşlarda 5 byte bazılarında ise dahada fazla veri geliyor.Bu verilerin hepsi basıldıgı anda gitmiyor bir kısmı tuştan parmak çekilince gönderiliyor......


mhk hocam birşeyi merak ettim caps lock u çalıştırdığınızı söylediniz sadece tuş olarak mı yoksa ledi ile birlikte mi ?
Eğer ledini yakabildiyseniz nasıl?
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

mhk

Alıntı yapılan: "XX_CİHAN_XX"
mhk hocam birşeyi merak ettim caps lock u çalıştırdığınızı söylediniz sadece tuş olarak mı yoksa ledi ile birlikte mi ?
Eğer ledini yakabildiyseniz nasıl?
   IF rx_byte = $58 THEN                   ' Eğer shift caps lock basılmışsa if bloğu içindekileri yap 
           LEDs = LEDs ^ %00000100           ' Caps ledini değilleyerek her basışta yanması yada 
           txdeg=$ED                         ' sönmesini sağlar 
           GOSUB TX_hazir 
           GOSUB tx_gonder 
           goto anaprogram 
    ENDIF


Burayı incelemende yarar var.
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

e3

MHK hocam, ben bu devreyi RF alıcı ve verici devresine adapte etmek istiyorum.Proton kullanıyorum, gerekli bazı değişiklikleri yaptım ancak program bir yerde durmadan hata veriyor.
IF rx_byte=$12 or rx_byte=$59 THEN GOTO M4 ' Eğer shift tuşuna basılmışsa M4 e git

Bu satırı derlemeye çalıştığımda süreki hata veriyor M4 satırını bulamıyorum diye.M4 satırının adını değiştirdim Goto etiketini de haliyle ona göre düzenledim yine hata veriyor, bir türlü anlayamadım.Acaba sorun ne olabilir? Ayrıca bunu UDEA modüllerine entegre etmek istesem yani seri porttan HSROUT komutları ile bilgi gönderip karşıdan almak istesem gönderme kısmını halledebilirim sanıyorum ama sizin kodda değişiklik yapmam gerekir mi, yani klavye okuma alt yordamında?Şimdiden teşekkür ediyorum.İyi çalışmalar.İyi günler.
.eem.

Lütfi AYYILDIZ

'*************** LCD GÖSTERME **************************** 
lcdgoster: 
lcdout $FE,2,"Kod=",hex2 rx_byte," Satir=",dec2 satir 
lcdout $FE,$C0+satir ,kodcozdeg'," " 
return

Bu kısımda bir değişiklik yapmak gerekir diye düşünüyorum
lcdgöster:
Serout2 CIKIS,1646,[REP$AA\5,REP$00\5,REP$FF\5]
SerOut2 CIKIS,1646,[("E"),("R"),kodcözdeg] 
SerOut2 CIKIS,1646,[("E"),("R"),kodcözdeg] 
SerOut2 CIKIS,1646,[("E"),("R"),kodcözdeg]
SerOut2 CIKIS,1646,[("E"),("R"),kodcözdeg]
return


IF rx_byte=$12 or rx_byte=$59 THEN
GOTO M4
endif
birde bu şekilde dene,mcs bazen çileden çıkartıyor insanı.

kasif

Alıntı yapılan: "cobra07"bir değişiklik yapmak gerekir diye düşünüyorum
lcdgöster:
Serout2 CIKIS,1646,[REP$AA\5,REP$00\5,REP$FF\5]
SerOut2 CIKIS,1646,[("E"),("R"),kodcözdeg] 
SerOut2 CIKIS,1646,[("E"),("R"),kodcözdeg] 
SerOut2 CIKIS,1646,[("E"),("R"),kodcözdeg]
SerOut2 CIKIS,1646,[("E"),("R"),kodcözdeg]
return


IF rx_byte=$12 or rx_byte=$59 THEN
GOTO M4
endif
birde bu şekilde dene,mcs bazen çileden çıkartıyor insanı.

"kodcözdeg" değil "kodcozdeg" olacak.

e3

@ Cobra07 hocam, MCS değil Proton IDE kullanıyorum, sorunu çözdüm, Proton "Goto M4" karakterinden sonraki birkaç adet boşluğu da karaktere dahil saydı, ilginçtir.Sonra boşlukları silip tekrar düzenleyince derleme başarıyla yapıldı.LCD yazdırma komutlarıyla oynamaya gerek yok zira Proton o kodları içeriyor zaten.Sadece başlangıçtaki tanımlamalar DECLARE ifadesiyle yapılıyor.Bir de Pic'i tanıttıktan sonra sorun kalmıyor.Devreyi bu değişmiş haliyle denemedim.İnşallah en kısa zamanda deneyeceğim.RF ile iletişimi şu şekilde sağlamayı düşünüyorum.Programın klavye okuma kısmı verici ünitesinde klavye kodlarını çözen diğer kısmını da alıcı ünitesine yerleştirmeyi düşünüyorum.Daha sonra tekrar sorum olacaktır. :D İyi çalışmalar.İyi günler.
.eem.

kasif

Merhaba,

Programı 18F4550 için derlemek istediğimde

define osc 20 
@ device HS_OSC 
@ device WDT_OFF  &  pwrt_on


ve

           option_reg=0


satırlarında hata alıyorum, bunları silince problemsiz derleme oluyor ama program çalışmıyor. 18F4550 de çalıştırabilmek için ne yapmam gerekir?

Teşekkürler.

e3

Hocam komik gelebilir tam emin değilim ama 4550'nin kataloğunda Option Registere rastlamadım.En son index e baktım orada da göremedim.Hem "O" harfinde hemde "Register" indeksinde Option yok, acaba hata buradan kaynaklanıyor olabilir mi?Bir de hocam Proton mu kullanıyorsunuz PicBasic mi acaba ?İyi çalışmalar.
.eem.

kasif

Pic basic kullanıyorum, McStudio, MPlab, hepsi en fazla 6 aylık.(son versiyon olmasa da, eski değil.

Tuhafdır ki bende rastlamadım, acaba timer la ilgili başka birşey mi yapmalıyım.