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

                  Đang tải...
                  X