Thông báo

Collapse
No announcement yet.

các anh cho em hỏi chút về đọc giá trị thanh ghi THx và TLx

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

  • các anh cho em hỏi chút về đọc giá trị thanh ghi THx và TLx

    tình hình là em đang tìm hiểu về chế độ định thời của họ 8051.đến chỗ cài đặt chế độ timer ở chế độ 16 bit thì em không biết đọc giá trị của thanh gi đếm như thế nào?
    ví dụ:khi có ngắt ngoài 0 xảy ta thì cho timer0 bắt đầu đếm TH0=0;TL0=0;đếm khi có ngắt ngoài 1 xảy ra thì dừng đếm
    em muốn sử dụng số chu kì máy đếm được nhưng mà ko biết đọc nó thế nào?? ai biết chỉ em với ( em dùng kiel C nha).
    cảm ơn các anh trước nha

  • #2
    xl làm phiền mọi người em nghĩ ra rùi hix.dọc nhìu quá nú mất rùi hihi.cảm ơn mọi người đã xem

    Comment


    • #3
      khi có ngắt ngoài 1 cho dừng timer rồi lấy giá trị thanh ghi TH và TL mà dùng. ASM thì mov a,tl0

      Comment


      • #4
        vâng biết là lấy nhưng mà câu lệnh viết thế nào ấy chứ ạ.hình như cách lấy giá trị của anh chỉ lấy giá trị của 1 thanh ghi TL0 thui mà?giá trị còn luu ở thanh ghi TH0 nũa.em chỉ biết dùng C thui.hix.ko biết em dùng lệnh này có đúng ko?:a=TL0 +TH0 *16*16;

        Comment


        • #5
          Ví dụ mình đặt timer là 1000 chu kỳ máy nếu đếm hết 1000 thì đếm lại hoặc dừng có cờ báo tràn với C ta làm như sau : TH0=-1000/256 ; TL0=-1000%256;

          mặc định bộ đếm đến 0 thì tràn nên mình cho đếm từ -1000 đến 0 vẫn đúng 1000 . còn cái /256 hay % 256 chắc bạn hiểu rồi chứ TH0 2^8 bit cao nên ta lấy phần nguyên , ngược lại TL0

          Comment


          • #6
            Nguyên văn bởi magic_kid Xem bài viết
            vâng biết là lấy nhưng mà câu lệnh viết thế nào ấy chứ ạ.hình như cách lấy giá trị của anh chỉ lấy giá trị của 1 thanh ghi TL0 thui mà?giá trị còn luu ở thanh ghi TH0 nũa.em chỉ biết dùng C thui.hix.ko biết em dùng lệnh này có đúng ko?:a=TL0 +TH0 *16*16;
            uhm. Khi có ngắt 0 cho Timer 0 chạy (TR0=1)và khi có ngắt ngoài 1 thì cho dừng timer0 (TR0=0) rồi đọc thanh ghi đó (a=TL0+TH0*256) như bạn nói là ok.
            Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
            http://diencongnghiep360.com/
            http://tudienhathe.vn/

            Comment


            • #7
              em muốn dùng timer và ngắt ngoài để đo độ rộng của xung dương (từ 1ms-2ms) và điều chỉnh PWM theo tỉ lệ của xung dương vào.ko biet em viết có lỗi gì không mà kết quả nó chạy lung tung hết cả lên. mọi người xem giùm em vs.
              #include <REGX51.H>
              int dem=0,tg,phantramxung=100;
              void khoitaotimer(void)
              {
              TMOD= 0x29;
              ET0=1;
              ET1=1;
              EA=1;
              TH0=0;
              TL0=0;
              TL1=0xf0;
              TH1=0xf0;
              TR0=1;
              TR1=1;
              }
              void khoitaongat(void)
              {
              EX0=1;
              IT0=1;
              }
              void timer1(void) interrupt 3
              {
              TR1=0;
              TF1=0;
              if ( dem < phantramxung) P2_0=1;
              else P2_0=0;
              dem++;
              if (dem==200) dem=0;
              TR1=1;
              }
              void int0(void) interrupt 0
              {
              TR0=0;
              phantramxung=(TL0+TH0 * 255 -1000)/4;
              TL0=0x00;
              TH0=0x00;
              TR0=1;
              }

              void main()
              {
              khoitaotimer();
              khoitaongat();
              }
              Last edited by magic_kid; 28-11-2011, 22:33.

              Comment


              • #8
                mọi người giúp em vs.làm mãi mấy hôm rùi mà nó ko chạy hix

                Comment


                • #9
                  chán ghê.....

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  • Andrea14
                    Vấn đề về tốc độ quay
                    bởi Andrea14
                    Chào mọi người,

                    Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
                    hôm nay, 12:42
                  • 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
                  Đang tải...
                  X