Thông báo

Collapse
No announcement yet.

Timer/Counter

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

  • #31
    Theo BinhAnh thì đặt mảng là kiểu bit, nhưng tôi học ASM thì có đặt được kiểu bit còn ngôn ngữ C không mạnh về định bit.
    Tôi khai báo thế này : unsigned char MAHOA[15],i;
    for (i=0;i<15;i++)
    { xuất }
    Thay char (1 byte) cho 1 bit nhưng nghe chừng tốn tài nguyên bộ nhớ quá
    Có cách nào định trực tiếp là kiểu bit không ???.
    Tài nguyên thằng 2051 đã hạn hẹp thì chớ, cái mảng càng to thì càng tốn
    nhất là mới học ( giải thuật loằng ngoằng) càng tốn hơn, chắc vượt quá 2KB phải dùng thằng 4051 mất ( thằng này đắt ngang ngửa con C51 đó) HIC HIC.


    //// thấu đáo tất cả các vấn đề về $$$ làm người ta phải đau đầu
    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

    Comment


    • #32
      Theo tui thì làm thế này có được không :

      unsigned int Dulieu,i;

      .......
      for (i=0;i<15;i++)
      {
      out=(Dulieu & 0x0001);
      Dulieu>>=1;
      }

      làm như trên thì chỉ cần khai báo 2 byte để lưu dữ liệu . Mỗi bit sẽ tương ứng với dữ liệu cần truyền đi .

      Comment


      • #33
        Nguyên văn bởi trungkt
        Theo tui thì làm thế này có được không :
        unsigned int Dulieu,i;
        .......
        for (i=0;i<15;i++)
        {
        out=(Dulieu & 0x0001);
        Dulieu>>=1;
        }
        làm như trên thì chỉ cần khai báo 2 byte để lưu dữ liệu . Mỗi bit sẽ tương ứng với dữ liệu cần truyền đi .
        Ko phải được ... mà là quá được
        Làm như bác Trungkt thì tiết kiệm RAM, còn làm như tui thì phung phí RAM bởi phải khai báo 1 mảng 14 byte. Nhưng bù lại thì xử lý dễ, trực quan, nhất là khi dữ liệu có mã hóa, chèn thêm phần dư thừa.... Trong VĐK, tôi thấy rất ít trình dịch nào support kiểu mảng bit. Nguyên nhân? phải chăng họ ko khuyến khích dùng kiểu mảng bit vì lý do tốn tài nguyên xử lý.
        Còn chuyện Flash thì bác QD khỏi lo nếu bác chỉ dùng VĐK làm chừng đó công việc. Dùng con 89C1051 chắc cũng đủ.

        Comment


        • #34
          Sử dụng mạch điều khiển BIT trong Keil C

          Nguyên văn bởi BinhAnh
          Ko phải được ... mà là quá được
          Làm như bác Trungkt thì tiết kiệm RAM, còn làm như tui thì phung phí RAM bởi phải khai báo 1 mảng 14 byte. Nhưng bù lại thì xử lý dễ, trực quan, nhất là khi dữ liệu có mã hóa, chèn thêm phần dư thừa.... Trong VĐK, tôi thấy rất ít trình dịch nào support kiểu mảng bit. Nguyên nhân? phải chăng họ ko khuyến khích dùng kiểu mảng bit vì lý do tốn tài nguyên xử lý.
          Còn chuyện Flash thì bác QD khỏi lo nếu bác chỉ dùng VĐK làm chừng đó công việc. Dùng con 89C1051 chắc cũng đủ.
          Chào các bác, em thấy các bác ra tay giúp bác Dương hào hứng quá
          em cũng xin góp 1 tay.

          Muốn lập trình truy cập từng bit trong C không phải là không có cách, thậm chí còn có nhiều cách khác nhau nữa, nhưng phải có khả năng cứng 1 tí.

          Còn theo em, bác D mới tập tễnh vào lập trình C thì nên dùng những cách đơn giản nhất. Em thấy điều khiển tất tần tật mọi thứ theo mảng là 1 phương pháp cực hay, nhanh và dễ hiểu.

          Em góp bác 1 cách lập trình thao tác Mảng bít trong C, rất đơn giản.
          Như ví dụ:
          " Con người nhờ có ước mơ mà trở nên vĩ đại"
          -----------------------------------------------

          Comment


          • #35
            Nhân tiên chủ đề Timer/counter ở đây, em có bài toán thế này, nhờ các bác chỉ giúp vớilập trình bằng C nhé):
            - Bài toán dùng 89c51 đếm xung đưa vào chân To của 89c51, và gửi tần số của xung đó ra cổng khác.
            ??Lập trình thế nào để xác định được tần số xung đưa vào To???
            - Cách làm của em là: đếm số xung vào trong một khoảng thời gian,rồi chia số xung đếm được cho thời gian sẽ ra tần số.như vậy phải dùng một Timer, một counter?
            - em vẫn loay hoay chưa bit lập trình thế nào vì cũng mới tìm hiểu C của keil???
            - mong các cao thủ chỉ giáo???
            **nhanh lên vì em đang cần gấp>>>Thanks
            mail: [/email] :->

            Comment


            • #36
              Các bác giúp em sử dụng cái timer 2 của con 89C52 với, em đọc rồi nhưng vẫn chưa sủ dụng được.
              các bác cho 1 cái ví dụ cụ hoàn chỉnh thì càng tốt. cảm ơn các bác trước!

              Comment


              • #37
                các bác cho em hỏi về bộ counter của 8051
                em muốn đếm xung từ 000--999 dùng counter 0 của 89c51 hiển thị led7 thì làm ntn?
                em làm chỉ đếm đến 255 là lại quay trở về 0! hic em ko biết làm thế nào nữa

                Comment


                • #38
                  Nguyên văn bởi mr.ngoc Xem bài viết
                  các bác cho em hỏi về bộ counter của 8051
                  em muốn đếm xung từ 000--999 dùng counter 0 của 89c51 hiển thị led7 thì làm ntn?
                  em làm chỉ đếm đến 255 là lại quay trở về 0! hic em ko biết làm thế nào nữa
                  Vậy là anh bạn khai báo biến đếm kiểu unsigned char rồi, giờ đổi kiểu biến đếm đó thành kiểu unsigned int đi.

                  Comment


                  • #39
                    Nguyên văn bởi mr.ngoc Xem bài viết
                    các bác cho em hỏi về bộ counter của 8051
                    em làm chỉ đếm đến 255 là lại quay trở về 0! hic em ko biết làm thế nào nữa

                    Sao bạn ko dùng anh counter 1 nhỉ?
                    Học đến bao giờ mới thành tài?

                    Comment


                    • #40
                      chương trình tạo sóng vuông sử dụng ngắt timer viết bằng assembly

                      cách sử dụn ngắt timer trong c thì mình hiểu tàm tạm rồi ,giờ gặp phải bài tập làm ra cái sóng vuông sử dụng timer mà lại viết bằng assembly nữa.hic,bác nào biết giúp e với,làm sao tạo chương trình assembly để tạo sóng vuông thế ,xuất ra file hex là ok

                      Comment


                      • #41
                        Nguyên văn bởi namth.vp Xem bài viết
                        Sao bạn ko dùng anh counter 1 nhỉ?
                        mình cũng sử dụng chế độ 1 , mục đích là đếm đến hàng nghìn
                        nhưng không biết cách đọc TH, TL thế nào để có thể hiện đựoc hàng nghìn hix , đọc TL thì đương nhiên chỉ đọc đựoc đến 255
                        chưong trình của mình

                        unsigned int y, x ; // x là biến 2 bye giá trị từ 0--65536
                        void dem()
                        {
                        TMOD =0x51; // time 1counter , time0 dinh thoi
                        TF1=0;
                        TR1=1;
                        x =TL1; // đinh làm thế này nữa : { y =TH1; X=TL1, xong x , y làm thế nào thì chịu ròi

                        }
                        hix ặc bạn nào làm bài này ròi cho mình xin code để đếm >255 với

                        Comment


                        • #42
                          hay đó, cái timer này ứng dụng rất nhiều
                          bác nào quan tâm đến sản phẩm EMIC pm e nhé

                          Comment


                          • #43
                            hix ngừoi mới học thường nôn nóng như mình chẳng hạn hix hổ thẹn hổ thẹn vừa post xong bài thì cũng nghĩ ra đựoc

                            Comment


                            • #44
                              Bạn lấy TH*256+TL là ra kết quả rồi

                              Comment


                              • #45
                                xin phép đào mộ ak.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X