RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Giúp e làm sao quét led từ P0--->P3 32 cổng at89c52

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • Lenh Ho
    Thành viên tích cực
    • Mar 2010
    • 378

    #16
    =)) em thua bác kidteam rồi
    Be quan. Plz contact through email:

    Comment

    • kidteam
      Thành viên tích cực
      • Nov 2010
      • 1633

      #17
      anh có nói sai gì à chú
      theo hiểu biết ít ỏi của anh thì là thế thôi
      cái tay mast này nhiều khi chém bậy ghê luôn nên thấy ghét

      Comment

      • lenhoc91
        Thành viên tích cực
        • Oct 2011
        • 208

        #18
        Nguyên văn bởi Lenh Ho Xem bài viết
        khổ quá : 'hic' của em làm a sợ đó
        tức là giả sử e có 1 biến 32 bit kiểu long nha gọi nó là x

        giả sử trạng thái của nó là: x = 00000000111111110000000011111111 được chưa ( đếm coi có đủ 23 bit ko ^^) ( a viết kiểu nhị phân)


        #define BYTE1(v) ((unsigned char) (v))
        #define BYTE2(v) ((unsigned char) (((unsigned long) (v)) >> 8))
        #define BYTE4(v) ((unsigned char) (((unsigned long) (v)) >> 16))
        #define BYTE4(v) ((unsigned char) (((unsigned long) (v)) >> 24))


        sau đó e gọi :

        void xuat (void) {
        p0 = BYTE1(x);
        p1 = BYTE1(x);
        p2 = BYTE1(x);
        p3 = BYTE1(x);
        }

        trình biên dịch thực hiện lệnh p0 = BYTE1(x);
        đến đấy nó ko hiểu BYTE1(x) là gì
        nó chạy lên đầu và nhìn vào khai báo
        #define BYTE1(v) ((unsigned char) (v))
        nó thấy à thì ra BYTE1(biến) tức lấy được 8 bit thấp nhất của byte đó ; luc này 8 bit thấp nhất của x là 1111111 và đưa ra p1 nhé
        tuơng tự
        đến dòng:
        p2 = BYTE2(x)
        nó chạy lên đầu thấy khai báo:
        #define BYTE2(v) ((unsigned char) (((unsigned long) (v)) >> 8))

        nó hiểu à thì ra đầu tiên ta dịch biến x đi 8 lần sang phải: e thấy sau khi dịch 8 lần x lúc này là :
        x = 00000000111111110000000011111111 ( ban đầu)
        dịch 8 lần x = (00000000 - 8 bit số 0 được dịch vào)(00000000)(11111111)(00000000) còn 8 bit 1 cuối cùng của bị đầy ra ngoài và đưa vào 8 bit số 0 a ghi ở đầu đó
        sau khi dịch e thấy ta sẽ lấy 8 bit thấp nhất = 00000000 và đưa ra p2

        tương tự nha
        hj.giò thì e đã hiểu nhưng nếu e muốn viết x là kểu hex thì vậy hả a 0x00ff00ff

        Comment

        • mast090
          Thành viên tích cực
          • Oct 2010
          • 1018

          #19
          Nguyên văn bởi dtcn_112 Xem bài viết
          em thấy code bạn ấy viết m=~m;là lấy phần bù theo bit của m,theo khai báo ban đầu của tác giả thì ban đầu m=0x55;sau lệnh gán m=~m;thì m=0xaa;em chỉ hiểu như vậy không biết nó có sai thật không mong được các huynh chỉ giáo.
          cái này tôi biết, và tôi đang đưa ra ví dụ về ý nghĩa của cái dấu "~"
          @kidteam: dường như chú này có vẻ ganh ghét j đó vs mình, mình làm j có lỗi vs cậu chăng =)). Diễn đàn là nơi chia sẻ kinh nghiệm và những thứ mình biết và mình làm đc, nên tôi biết j tôi nói đó, và những thứ đó nhiều khi có thể ko đúng. Cậu có dám chắc rằng những thứ cậu đưa nên k sai j ko, đã tối ưu ko. Code trên tôi đọc ko hiểu, k thấy logic tôi bảo ko logic, chẳng nhẽ tôi đi nói là quá logic. còn về lập trình C, C++ và nhất là lập trình C cho vdk tôi tự tin nói rằng những cái tôi nói ra là tôi biết tôi mới nói chứ ko phải bịa ra, và tôi thấy cậu dường như đang quan trọng hóa những thứ rườm rà xung quanh
          Website chính thức đổi địa chỉ website thành
          Mời các bạn ghé thăm !!!

          Comment

          • lenhoc91
            Thành viên tích cực
            • Oct 2011
            • 208

            #20
            thui 2 a đừng cải tội cho e

            Comment

            • lenhoc91
              Thành viên tích cực
              • Oct 2011
              • 208

              #21
              mấy a đâu rồi

              Comment

              • Lenh Ho
                Thành viên tích cực
                • Mar 2010
                • 378

                #22
                Nguyên văn bởi lenhoc91 Xem bài viết
                hj.giò thì e đã hiểu nhưng nếu e muốn viết x là kểu hex thì vậy hả a 0x00ff00ff
                đúng đó em
                e ko nên làm lun
                mà nên viết từng phần để test code đã đúng chưa nhé
                Be quan. Plz contact through email:

                Comment

                • lenhoc91
                  Thành viên tích cực
                  • Oct 2011
                  • 208

                  #23
                  thế e bắt đầu đây có ji a chỉ e với mấy ngày nay gặp code nào cũng đọc riết rồi đầu e qay qay lun.thank a

                  Comment

                  • lenhoc91
                    Thành viên tích cực
                    • Oct 2011
                    • 208

                    #24
                    như vậy đúng ko anh.


                    #include <regx51.h>
                    unsigned long x=0x00ff00ff;
                    #define BYTE1(v) ((unsigned char) (v))
                    #define BYTE2(v) ((unsigned char) (((unsigned long) (v)) >> 8))
                    #define BYTE3(v) ((unsigned char) (((unsigned long) (v)) >> 16))
                    #define BYTE4(v) ((unsigned char) (((unsigned long) (v)) >> 24))
                    void delay()////delay xung 555///////
                    {
                    while(!P1_0);
                    while(P1_0);
                    }
                    void xuat (void)
                    {
                    P0 = BYTE1(x);
                    P1 = BYTE1(x);
                    P2 = BYTE1(x);
                    P3 = BYTE1(x);
                    }
                    void main(void)
                    {
                    while(1)
                    {
                    xuat();
                    delay();
                    }
                    }


                    e dịch mà đem mô phỏng nó im ru ah a ơi

                    Comment

                    • Lenh Ho
                      Thành viên tích cực
                      • Mar 2010
                      • 378

                      #25
                      #include <regx51.h>
                      unsigned long x=0x00ff00ff;
                      #define BYTE1(v) ((unsigned char) (v))
                      #define BYTE2(v) ((unsigned char) (((unsigned long) (v)) >> 8))
                      #define BYTE3(v) ((unsigned char) (((unsigned long) (v)) >> 16))
                      #define BYTE4(v) ((unsigned char) (((unsigned long) (v)) >> 24))

                      void xuat (void)
                      {
                      P0 = BYTE1(x);
                      P1 = BYTE2(x);
                      P2 = BYTE3(x);
                      P3 = BYTE4(x);
                      }
                      void main(void)
                      {
                      while(1)
                      {
                      xuat();
                      }
                      }


                      tạm thời e thử cái này thôi - delay làm gì
                      phải là byte1 - 2 - 3 -4 chứ ( sao toàn byte1) nó tắt là phải vì byte 1 toàn là số 0 mà em)
                      ^^
                      Be quan. Plz contact through email:

                      Comment

                      • lenhoc91
                        Thành viên tích cực
                        • Oct 2011
                        • 208

                        #26
                        Nguyên văn bởi Lenh Ho Xem bài viết
                        #include <regx51.h>
                        unsigned long x=0x00ff00ff;
                        #define BYTE1(v) ((unsigned char) (v))
                        #define BYTE2(v) ((unsigned char) (((unsigned long) (v)) >> 8))
                        #define BYTE3(v) ((unsigned char) (((unsigned long) (v)) >> 16))
                        #define BYTE4(v) ((unsigned char) (((unsigned long) (v)) >> 24))

                        void xuat (void)
                        {
                        P0 = BYTE1(x);
                        P1 = BYTE2(x);
                        P2 = BYTE3(x);
                        P3 = BYTE4(x);
                        }
                        void main(void)
                        {
                        while(1)
                        {
                        xuat();
                        }
                        }


                        tạm thời e thử cái này thôi - delay làm gì
                        phải là byte1 - 2 - 3 -4 chứ ( sao toàn byte1) nó tắt là phải vì byte 1 toàn là số 0 mà em)
                        ^^
                        ổn rồi a. nhưng e lấy xung 555 vào p0.1 vậy x của e thế nào 31 byte ha a.
                        thế này thì có quét led được ko anh

                        Comment

                        • Lenh Ho
                          Thành viên tích cực
                          • Mar 2010
                          • 378

                          #27
                          em nói rõ ý đồ thiết kế đi
                          Be quan. Plz contact through email:

                          Comment

                          • lenhoc91
                            Thành viên tích cực
                            • Oct 2011
                            • 208

                            #28
                            dạ là thế này a:
                            e quét led chạy từ Po.1 đến P3.7 dùng xung555 để chỉnh delay cho89 vi vậy mất 1 chân của P0 để lấy xung 555 nên có phải x=0000000111111110000000011111111 (31 byte)

                            Comment

                            • Lenh Ho
                              Thành viên tích cực
                              • Mar 2010
                              • 378

                              #29
                              cứ làm bình thường
                              khi em xuất ra 1 bit sẽ ko sử dụng
                              Be quan. Plz contact through email:

                              Comment

                              • lenhoc91
                                Thành viên tích cực
                                • Oct 2011
                                • 208

                                #30
                                e xuất rôi nhưg ko được a ơi chân P0.1 vẫn được kic âm

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...