Thông báo

Collapse
No announcement yet.

Anh chi giúp em sửa code điều khiển ĐCB dùng 8051 này với ạ!

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Anh chi giúp em sửa code điều khiển ĐCB dùng 8051 này với ạ!

    Code gốc của 1 bác trên này, e thêm phần tốc độ vào. Nhưng khi nhấn nút thì nó vẫn nhận giá trị a =500 bác nào sửa giúp e với !

    #include <regx52.h>
    #include <stdio.h>

    sbit TRAI = P1^0;
    sbit PHAI = P1^1;
    sbit NUT = P1^2;

    unsigned char M[] = {0x0e,0x0d,0x0b,0x07};
    int i=0,j=0,a;

    //-------------------------

    void tocdo(){
    a = 500;
    while(NUT){
    a = a + 500;
    if (a > 5000) a = 500;
    }
    }

    void delay(){
    unsigned int t,time=10;
    tocdo();
    while(time--)
    for(t=0;t<a;t++);
    }
    //--------------------------
    void dc_thuan(){
    while(TRAI){
    delay();
    P2 = M[i--];
    if(i < 0)
    i = 3;
    }
    i++;
    }
    //-------------------------
    void dc1_dao(){
    while(PHAI){
    delay();
    P2 = M[i++];
    if(i > 3)
    i = 0;
    }
    i--;
    }


    void main(){
    P2 = 0;
    while(1){
    dc_thuan();
    dc_dao();
    }
    }

  • #2
    Theo mình có chỗ này không hợp lý nhé. Bất kì khi quay trái hay quay phải thì hàm tocdo() dòng đầu luôn gán a=500 -> biến tocdo =500 -> khong có sự thay đổi nào?. Nếu muốn khởi tạo tốc độ thì phải khởi tạo ở hàm main().

    Comment


    • #3
      Bạn băm xung mà k dùng ngắt timer ?? K hiểu lúc mạch thật động cơ giật cỡ nào .

      Comment


      • #4
        Thank các bác đã chỉ giáo. Thực tình là e chả bik j về mấy cái này. Đi nhặt code về xong edit ạ. E mô phỏng trên Proteus thì công nhận thấy nó giật ghê. Bác chỉ em ngắt timer thế nào đi ạ

        Comment

        Về tác giả

        Collapse

        nbking Tìm hiểu thêm về nbking

        Bài viết mới nhất

        Collapse

        Đang tải...
        X