Thông báo

Collapse
No announcement yet.

Kết hợp timer với counter

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

  • Kết hợp timer với counter

    Chào các bác ạ,
    Em đang làm cái mạch này. Dùng ngắt của counter đếm các sự kiện xảy ra từ sensor. Cái này thì chạy tốt rồi. Nhưng do tính chất của sensor, em chỉ cần hiển thị là 1 phút là sẽ có bao nhiêu sự kiện xảy ra, counter đếm được bao nhiêu sự kiện. Hiển thị từng phút một thôi. Nhưng giờ em lập trình vẫn chưa ra, chưa hiểu thuật toán là gì. Các bác có thể giúp em được không ạ? Em xin chân thành cảm ơn.

  • #2
    Bạn dùng một timer khác tạo ngắt trong 1 phút. Trong hàm ngắt thì đọc giá trị counter.

    Comment


    • #3
      Nguyên văn bởi Đức_CDT Xem bài viết
      Bạn dùng một timer khác tạo ngắt trong 1 phút. Trong hàm ngắt thì đọc giá trị counter.
      Ngắt gì mà tới 1 phút hả bác???

      Comment


      • #4
        Nguyên văn bởi tranhieu_ece Xem bài viết
        Ngắt gì mà tới 1 phút hả bác???
        Đấy, em cũng hơi bị khó hiểu khoản ngắt tới 1 phút như thế bác ạ. Số là cái nhiệm vụ của em là dùng trong vật lý nên phải đếm số tín hiệu trong vòng 1 phút bác ạ. Em chưa xài ngắt tới 1 phút nên chưa biết viết ntn. Bác nào biết viết không chỉ em với? Em xin cảm ơn.

        Comment


        • #5
          bác dùng thêm vài biến nữa là có thể làm đc mà. Ví dụ ngắt 1ms thì bác chỉ cần đếm 60000 là đc 1 phút rồi, khi vào ngắt thì tăng biến a lên 1 đơn vị, tăng đến 250 khi tràn thì tăng biến b lên 1. khi nào b bằng 240 thì bác đọc giá trị counter, a x b = 60000 là 1 phút rùi

          Comment


          • #6
            Nguyên văn bởi tranhieu_ece Xem bài viết
            bác dùng thêm vài biến nữa là có thể làm đc mà. Ví dụ ngắt 1ms thì bác chỉ cần đếm 60000 là đc 1 phút rồi, khi vào ngắt thì tăng biến a lên 1 đơn vị, tăng đến 250 khi tràn thì tăng biến b lên 1. khi nào b bằng 240 thì bác đọc giá trị counter, a x b = 60000 là 1 phút rùi
            Em không hiểu lắm ạ. Bác viết thử code cho em được không ạ? Em viết thử kiểu này rồi, nhưng mà nó cứ sai lè ra í, ko chạy được ạ.

            Comment


            • #7
              a & b là biến toàn cục nha bác.
              a++;
              if (a == 250)
              {
              b++;
              a = 0;
              if(b == 240)
              {
              b=0;
              xuat gia tri ra;
              }
              }

              Comment


              • #8
                Nguyên văn bởi tranhieu_ece Xem bài viết
                a & b là biến toàn cục nha bác.
                a++;
                if (a == 250)
                {
                b++;
                a = 0;
                if(b == 240)
                {
                b=0;
                xuat gia tri ra;
                }
                }
                Vâng ạ, để em thử xem sao ạ. Cái này là ở trong hàm ngắt bác nhỉ

                Comment


                • #9
                  Bạn viết hàm ngắt 1ms rồi đưa code của bạn tranhieu vào hàm con phục vụ ngắt.
                  Last edited by Đức_CDT; 20-10-2012, 14:38.

                  Comment


                  • #10
                    Mình làm thử mà nó vẫn không chạy bạn ạ. Các bạn xem hộ mình nhé.
                    void timer(void) interrupt 1
                    {
                    TH0=0xf6;
                    TL0=0x36;
                    j++;
                    if(j==5000)
                    {
                    j=0;

                    i=0;
                    }


                    }
                    void main(void)
                    {
                    EA=1;
                    EX1=1;
                    //ET0=1
                    TMOD=0x01;
                    TH0=0xf6;
                    TL0=0x36;
                    IT1=1;
                    TR0=1;
                    lcdinit();
                    lcdcontrol(0x80);
                    lcdwrites("Counts:");
                    lcdcontrol(0xc0);
                    lcdwrites(" HUS-VNU");

                    //lcdcontrol(0x0);
                    //lcdwrites("Cpm");

                    while(1)

                    {
                    lcdcontrol(0x87);


                    number(i);


                    }
                    }
                    Em chả hiểu lỗi ở đâu nữa

                    Comment

                    Về tác giả

                    Collapse

                    qwerty68 Trịnh Ngọc Duy Tìm hiểu thêm về qwerty68

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

                    Collapse

                    • bqviet
                      Trả lời cho Đấu tắt điện cho máy tính bảng
                      bởi bqviet
                      Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
                      06-12-2025, 17:17
                    • nguyendinhvan
                      Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
                      bởi nguyendinhvan
                      Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
                      05-12-2025, 19:59
                    • afrendly
                      Trả lời cho Đấu tắt điện cho máy tính bảng
                      bởi afrendly
                      Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
                      04-12-2025, 01:27
                    • nick22
                      Trả lời cho Máy điện châm ?
                      bởi nick22
                      Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
                      01-12-2025, 13:23
                    Đang tải...
                    X