#include <D:\CC5\16F877.H>
#include <D:\CC5\int16CXX.H>
#pragma config |= 0b.11.111101.11.00.10
#pragma bit En1 @ PORTB.7
#pragma bit En2 @ PORTB.6
#pragma origin 4
bit n1,n2;
int16 Enkoder;
interrupt int_server( void)
{
int_save_registers
if ( RBIF)
{
if (En1!=n1)
{
if (En2==n1)
{
Enkoder--;
}
else
{
Enkoder++;
}
n1=En1;
n2=En2;
}
W = PORTB;
RBIF = 0;
}
int_restore_registers
}
void main(void)
{
TRISB=0b.1100.0000;
TRISC=0b.0000.0000;
PORTC=0;
TRISD=0b.0000.0000;
PORTD=0;
Enkoder=50;
GIE=1;
RBIE=1;
while(1)
{
PORTC=Enkoder.high8;
PORTD=Enkoder.low8;
}
}
daha hassas konum değişimlerini yakalamak mümkündür.Oran 4/1 dir.
evet abuzittin arkadaşın dediğine katılıyorum benm tek öğrenmek istediğim nasıl bi mantıkla çalıştığıydı ve tyildizdak arkadaş burada çok açıklayıcı bi şekilde anlatmış teşekürler. Ve musallim arkadaşın dediğne göre de anlaşılan tyildizdak arkadaşın yazdığını kapılara uygulamak kalıyor heralde bize.tyildizak ' Alıntı:Basit bir açıklama olacak fakat sanırım böylesi daha anlaşılır olur:
a=1 olduğu anda b=1 ise , bir yöne
a =1 olduğu anda b=0 ise, diğer yöne dönüyor demektir.