Thông báo

Collapse
No announcement yet.

Các bác cho em hỏi em đang muốn dùng timer để quét led?

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

  • Các bác cho em hỏi em đang muốn dùng timer để quét led?

    Ví dụ đơn giản như thế này:
    PHP Code:
    #include <AT89X52.H>

    #define Date1        P2_0
    #define Date2        P2_1
    #define Mth1        P2_2
    #define Mth2        P2_3
    #define Year1        P2_4
    #define Year2        P2_5
    #define Year3        P2_6
    #define Year4        P2_7

    #define Thu            P1_4

    #define Hour1        P3_3
    #define Hour2        P3_4
    #define Min1        P3_5
    #define Min2        P3_6
    #define Sec1        P3_7
    #define Sec2        P1_3

    #define Display_Date_Chuc {\
    Date1 0;\
    Date2 1;\
    Mth1 1;\
    Mth2 1;\
    Year1  1;\
    Year2  1;\
    Year3  1;\
    Year4  1;\
    Thu 1;\
    Hour1 1;\
    Hour2 1;\
    Min1 1;\
    Min2 1;\
    Sec1 1;\
    Sec2 1;\
    }
    #define Display_Date_DV {\
    Date1 1;\
    Date2 0;\
    Mth1 1;\
    Mth2 1;\
    Year1  1;\
    Year2  1;\
    Year3  1;\
    Year4  1;\
    Thu 1;\
    Hour1 1;\
    Hour2 1;\
    Min1 1;\
    Min2 1;\
    Sec1 1;\
    Sec2 1;\
    }
    #define Display_Month_Chuc {\
    Date1 1;\
    Date2 1;\
    Mth1 0;\
    Mth2 1;\
    Year1  1;\
    Year2  1;\
    Year3  1;\
    Year4  1;\
    Thu 1;\
    Hour1 1;\
    Hour2 1;\
    Min1 1;\
    Min2 1;\
    Sec1 1;\
    Sec2 1;\
    }

    #define Display_Month_DV {\
    Date1 1;\
    Date2 1;\
    Mth1 1;\
    Mth2 0;\
    Year1  1;\
    Year2  1;\
    Year3  1;\
    Year4  1;\
    Thu 1;\
    Hour1 1;\
    Hour2 1;\
    Min1 1;\
    Min2 1;\
    Sec1 1;\
    Sec2 1;\
    }
    #define Display_Year_Nghin {\
    Date1 1;\
    Date2 1;\
    Mth1 1;\
    Mth2 1;\
    Year1  0;\
    Year2  1;\
    Year3  1;\
    Year4  1;\
    Thu 1;\
    Hour1 1;\
    Hour2 1;\
    Min1 1;\
    Min2 1;\
    Sec1 1;\
    Sec2 1;\
    }
    #define Display_Year_Tram {\
    Date1 1;\
    Date2 1;\
    Mth1 1;\
    Mth2 1;\
    Year1  1;\
    Year2  0;\
    Year3  1;\
    Year4  1;\
    Thu 1;\
    Hour1 1;\
    Hour2 1;\
    Min1 1;\
    Min2 1;\
    Sec1 1;\
    Sec2 1;\
    }
    #define Display_Year_Chuc {\
    Date1 1;\
    Date2 1;\
    Mth1 1;\
    Mth2 1;\
    Year1  1;\
    Year2  1;\
    Year3  0;\
    Year4  1;\
    Thu 1;\
    Hour1 1;\
    Hour2 1;\
    Min1 1;\
    Min2 1;\
    Sec1 1;\
    Sec2 1;\
    }
    #define Display_Year_DV {\
    Date1 1;\
    Date2 1;\
    Mth1 1;\
    Mth2 1;\
    Year1  1;\
    Year2  1;\
    Year3  1;\
    Year4  0;\
    Thu 1;\
    Hour1 1;\
    Hour2 1;\
    Min1 1;\
    Min2 1;\
    Sec1 1;\
    Sec2 1;\
    }
    #define Display_Thu {\
    Date1 1;\
    Date2 1;\
    Mth1 1;\
    Mth2 1;\
    Year1  1;\
    Year2  1;\
    Year3  1;\
    Year4  1;\
    Thu 0;\
    Hour1 1;\
    Hour2 1;\
    Min1 1;\
    Min2 1;\
    Sec1 1;\
    Sec2 1;\
    }
    #define Display_Hour_Chuc {\
    Date1 1;\
    Date2 1;\
    Mth1 1;\
    Mth2 1;\
    Year1  1;\
    Year2  1;\
    Year3  1;\
    Year4  1;\
    Thu 1;\
    Hour1 0;\
    Hour2 1;\
    Min1 1;\
    Min2 1;\
    Sec1 1;\
    Sec2 1;\
    }
    #define Display_Hour_DV {\
    Date1 1;\
    Date2 1;\
    Mth1 1;\
    Mth2 1;\
    Year1  1;\
    Year2  1;\
    Year3  1;\
    Year4  1;\
    Thu 1;\
    Hour1 1;\
    Hour2 0;\
    Min1 1;\
    Min2 1;\
    Sec1 1;\
    Sec2 1;\
    }

    #define Display_Min_Chuc {\
    Date1 1;\
    Date2 1;\
    Mth1 1;\
    Mth2 1;\
    Year1  1;\
    Year2  1;\
    Year3  1;\
    Year4  1;\
    Thu 1;\
    Hour1 1;\
    Hour2 1;\
    Min1 0;\
    Min2 1;\
    Sec1 1;\
    Sec2 1;\
    }
    #define Display_Min_DV {\
    Date1 1;\
    Date2 1;\
    Mth1 1;\
    Mth2 1;\
    Year1  1;\
    Year2  1;\
    Year3  1;\
    Year4  1;\
    Thu 1;\
    Hour1 1;\
    Hour2 1;\
    Min1 1;\
    Min2 0;\
    Sec1 1;\
    Sec2 1;\
    }

    #define Display_Sec_Chuc {\
    Date1 1;\
    Date2 1;\
    Mth1 1;\
    Mth2 1;\
    Year1  1;\
    Year2  1;\
    Year3  1;\
    Year4  1;\
    Thu 1;\
    Hour1 1;\
    Hour2 1;\
    Min1 1;\
    Min2 1;\
    Sec1 0;\
    Sec2 1;\
    }
    #define Display_Sec_DV {\
    Date1 1;\
    Date2 1;\
    Mth1 1;\
    Mth2 1;\
    Year1  1;\
    Year2  1;\
    Year3  1;\
    Year4  1;\
    Thu 1;\
    Hour1 1;\
    Hour2 1;\
    Min1 1;\
    Min2 1;\
    Sec1 1;\
    Sec2 0;\
    }

    #define Khoi_tao{\
    Date1 1;\
    Date2 1;\
    Mth1 1;\
    Mth2 1;\
    Year1  1;\
    Year2  1;\
    Year3  1;\
    Year4  1;\
    Thu 1;\
    Hour1 1;\
    Hour2 1;\
    Min1 1;\
    Min2 1;\
    Sec1 1;\
    Sec2 1;\
    }
    unsigned char dem=0;
    unsigned char led7_data[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 };

    void Timer_setup(void)
    {
    TMOD=0x11;
    TH0=0xF4TL0=0x48;
    ET1=0ET0=1;    EA=1;
    TF0=0TF1=0;    TR0=1;    TR1=0;
    }

    void T0_ISR() interrupt 1
    {
    TR0=0;TF0=0;TH0=0xF4TL0=0x48;
    dem++;
    switch(
    dem)
        {
            case 
    1:
                
    P0=0xff;
                
    Display_Hour_DV;
                
    P0=led7_data[2];
                break;
            case 
    2:
                
    P0=0xff;
                
    Display_Hour_Chuc;
                
    P0=led7_data[3];
                
    dem=0;
                break;    
        }
    TR0=1;
    }
    void main(void)
    {
        
    Timer_setup();


    Mà sao không được các bác nhỉ kqua nó ra thế này các bác ạ.
    Click image for larger version

Name:	Kqua.jpg
Views:	1
Size:	125.5 KB
ID:	1419328
    Ý em là muốn cho 1 con led sáng số 2, 1 con số 3 là nó lại ra như thế này, nghĩ mãi mà không biết sai chỗ nào nữa! Các bác giúp em với!

  • #2
    Bạn bỏ con trans đi rồi chạy mô phỏng nhé. Trong protues dùng tran nó ko đáp ứng kịp và làm sai đó. Thực tế thì ta nối trans vào. Và chú ý trong CT chính thì thêm lệnh while ( 1 ) ; ở cuối nhé.ko thực tế nó sẽ ko chạy đâu vì khi kết thúc ct nó sẽ ko biết đi đâu cả.
    Click image for larger version

Name:	1.jpg
Views:	1
Size:	123.5 KB
ID:	1387279

    Comment


    • #3
      Nguyên văn bởi phuphuongbk Xem bài viết
      Bạn bỏ con trans đi rồi chạy mô phỏng nhé. Trong protues dùng tran nó ko đáp ứng kịp và làm sai đó. Thực tế thì ta nối trans vào. Và chú ý trong CT chính thì thêm lệnh while ( 1 ) ; ở cuối nhé.ko thực tế nó sẽ ko chạy đâu vì khi kết thúc ct nó sẽ ko biết đi đâu cả.
      [ATTACH=CONFIG]76515[/ATTACH]
      Nếu mình không nhầm khi kết thúc truơng trình chính nó sẽ quay lại với chính nó. Có nghĩa là bắt đầu lại từ đầu hàm mainS.

      Comment


      • #4
        Nguyên văn bởi myth-coder Xem bài viết
        Nếu mình không nhầm khi kết thúc truơng trình chính nó sẽ quay lại với chính nó. Có nghĩa là bắt đầu lại từ đầu hàm mainS.
        đúng thế khi bộ đếm PC bị tràn tự nó sẽ reset về 0 tức là vị trí đầu chương trình, nhưng như thế sẽ có 1 khoảng thời gian trễ vì phải làm các lệnh NOP

        Comment


        • #5
          Nếu bạn cứ để thế này thì rồi có lúc vxl sẽ bị treo chỉ trong time sớm hay muộn thôi và theo mình được biết thì ko nên làm như vậy. Hoàn toàn ko tốt và ko có ý nghĩa lắm.

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X