các bạn trả lời giúp mình một câu hỏi này nhé: nội dung : mình làm bài tập đọc encoder, gửi chiều quay và số xung đọc được của chiều quay đó lên cho máy tính (mình dùng encoder tuơng đối)(mình có kèm theo code viết trong c)- trên máy tính khi mình thử với nút nhấn thì nó nhận ổn định lắm, nhưng khi đưa encoder thât nối với VDK thì nó nhảy loạn xạ, trong chuơng trình viết cho VDK mình dùng ngắt ngoài 1 nối với 1 chân tạo xung encoder, khi nào có ngắt ngoài thì mình kiểm tra tiếp xung còn lại, nếu xung còn lại đang ở mức 1 thì xác định nó dang quay thuận - nếu đang ở mức 0 thì là quay nghịch, code mình viết như vậy đấy, mà sao khi mình thử với encoder quay bằng tay(chỉ quay theo một chiều duy nhất) thế mà có lúc nó nó gửi lên cho máy tính đang quay thuận có lúc gửi cho máy tính là quay nghịch- còn đếm xung cũng vậy, đếm lung tung. huhu ai đã làm về encoder rồi vui lòng giúp em với
em cảm ơn
code:
#include<reg51.h>
#include<math.h>
sbit xung_a=P3^3; // thu xung a cua encoder-ngat ngoai 1 -PIN 13
sbit xung_b=P1^7; //thu xung b cua encoder
bit thu;
void isr_external1(void) interrupt 2
{
//delayms(14);
thu=xung_b;
if(thu==1)
gui_serial('k'); //gui kt quay nguoc chieu kim dong ho
else
gui_serial('c'); //quay cung chieu dong ho
led=~led;
}
void main(void)
{
TMOD=0x20;
TH1=-3;
TR1=1;
SM1=1;
REN=1;
EA=1;
EX1=1;
IT1=1;
xung_a=1;
xung_b=1;
TI=0;
while(1);
}
void gui_serial(unsigned char tam)
{
TI=0;
SBUF=tam;
while(TI==0);
}
em cảm ơn
code:
#include<reg51.h>
#include<math.h>
sbit xung_a=P3^3; // thu xung a cua encoder-ngat ngoai 1 -PIN 13
sbit xung_b=P1^7; //thu xung b cua encoder
bit thu;
void isr_external1(void) interrupt 2
{
//delayms(14);
thu=xung_b;
if(thu==1)
gui_serial('k'); //gui kt quay nguoc chieu kim dong ho
else
gui_serial('c'); //quay cung chieu dong ho
led=~led;
}
void main(void)
{
TMOD=0x20;
TH1=-3;
TR1=1;
SM1=1;
REN=1;
EA=1;
EX1=1;
IT1=1;
xung_a=1;
xung_b=1;
TI=0;
while(1);
}
void gui_serial(unsigned char tam)
{
TI=0;
SBUF=tam;
while(TI==0);
}
Comment