Thông báo

Collapse
No announcement yet.

8051 và 74HC595

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

  • 8051 và 74HC595

    Chào mọi người. Mình có đoạn code và chương trình mô phỏng sau
    http://www.mediafire.com/?jejh4nbpy8u6sta
    (Lấy ở http://machdientu.net/74hc595/)
    Tuy nhiên mình chưa hiểu dòng lệnh số 17:
    x*=2; //dich bit lay bit trong so thap
    Các bạn làm ơn giải thích giúp mình với.
    Cảm ơn mọi người rất rất nhiều.
    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/


  • #2
    Bác nào giúp em với. Ko hiểu được dòng lệnh đó làm em rất khó chịu. hic.
    x*=2 ==> x=x*2. Vậy là ntn hả các bác. Cụ thể trong ví dụ phía dưới là ntn? Em hiểu là nó có chức năng dịch bít sang bit có trọng số thấp hơn để and với 0x80(10000000) nhưng chưa hiểu bản chất của lệnh x*=2 là ntn. Các bác chỉ giúp.

    #include"regx52.h"
    sbit DATA = P2^1;
    sbit SCK = P2^0;
    sbit SCL = P2^2;

    void quet(unsigned char x)
    {
    int i,temp;
    for(i=0;i<8;i++)
    {
    temp=x;//gan bien
    temp=temp&0x80;//lay ra bit dau tien (bit 7)
    if(temp==0x80)//so sanh bit
    DATA=1; //bang 1 thi xuat vao chip =1
    else
    DATA=0; //nguoc lai bang 0
    x*=2; //dich bit lay bit trong so thap

    SCK=0; //tao xung tren chan 11
    SCK=1; //1 xung dua vào 1 bít
    }
    SCL=0; //xuat du lieu ra output
    SCL=1;
    }
    void delay()
    {
    unsigned int i;
    for(i=0;i<33000;i++);
    }

    void main()
    {
    unsigned int i, k=0;
    unsigned char ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};//ma led 7
    while(1)
    {
    for(i=0;i<10;i++)
    {
    quet(ma[i]);
    delay();
    }
    }}
    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


    • #3
      x=x*2 có thể tương đương với lệnh dịch bit sang trái 1 bit.


      Add: 97 Quán Nam - Lê Chân - Hải Phòng.
      Tel: 031 518648 Phone: 0904 283 505

      Comment


      • #4
        Nguyên văn bởi hoangdai Xem bài viết
        x=x*2 có thể tương đương với lệnh dịch bit sang trái 1 bit.
        uhm. Em cũng đoán là vậy. Nhưng vẫn chưa hiểu tại sao nữa. Bác có thể chỉ qua 1 chút được ko?
        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


        • #5
          Giả sử bạn có 8 bit=1 byte_Giờ phải đẩy 8 cái bit ra. Hãy tưởng tưởng bạn đẩy lần lượt từng bit 1 ra ngoài Port. Lệnh dịch giúp bạn duyệt từng cái bit này. Để bit đc nó là 0 hay 1 thì phải mặt lạ nó hay nhân nó với 1, tùy dịch phải hay trái mà nhân với 0x80 hay 0x01.


          Add: 97 Quán Nam - Lê Chân - Hải Phòng.
          Tel: 031 518648 Phone: 0904 283 505

          Comment


          • #6
            Ơ hơ. Bác hoangdai thay avata mới kìa. Nhìn lạ quá, thế mà ko dùng cái ảnh nào có đầy đủ hẳn chân dung cho anh em nhìn rõ mặt (để gặp ngoài đường còn xin chữ ký)hi. Cái vụ nhận biết bit 1,0 (bằng cách nhân với 0x80) thì em hiểu rồi, nhưng em chưa hiểu lệnh dịch trái bít bằng cách nhân với 2 ý. (x=x*2)
            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
              x*=2 nếu bạn phân tích bất kỳ một số thập phân nào thành nhị phân thì bạn phải làm gì ?

              Comment


              • #8
                Nguyên văn bởi vietthanh123 Xem bài viết
                Ơ hơ. Bác hoangdai thay avata mới kìa. Nhìn lạ quá, thế mà ko dùng cái ảnh nào có đầy đủ hẳn chân dung cho anh em nhìn rõ mặt (để gặp ngoài đường còn xin chữ ký)hi. Cái vụ nhận biết bit 1,0 (bằng cách nhân với 0x80) thì em hiểu rồi, nhưng em chưa hiểu lệnh dịch trái bít bằng cách nhân với 2 ý. (x=x*2)
                2 có mã nhị phân(nếu là 8 bits) là 0000.0010, như vậy nếu ta nhân x với 2 thì sẽ tương đương dịch trái 1 bit.
                Ví dụ, x=11111111 khi dịch trái sẽ là 1111.1110
                mà 1111.1111*0000.00010=1111.1110
                Nhưng người ta thường dùng phép dịch trái 1bit để thay cho phép nhân với 2, chứ không ai làm ngược lại vì để thực hiện phép nhân phải mất nhiêu thời gian hơn khi thực hiện phép dịch. Em nói không biết có đúng không, bác nào biết chính xác thì vào giải thích hộ anh em. Thanks!
                Last edited by quangtung112; 28-12-2011, 20:22.
                WS:
                Blog:

                Comment


                • #9
                  quet(ma[i]);
                  câu nảy nghia la sao vậy mình chẳng hiểu ai giải thick giùm với

                  Comment


                  • #10
                    Nguyên văn bởi ichitea606 Xem bài viết
                    quet(ma[i]);
                    câu nảy nghia la sao vậy mình chẳng hiểu ai giải thick giùm với
                    quet(); là 1 hàm đã được khai báo và có chương trình thực hiện ở phần trên : void quet(unsigned char x), như vậy lệnh [I] quet(ma); chính là việc gọi hàm quet ra với biễn x chính là giá trị của từng phần tử của ma trận "ma[]" đã được khai báo. Chỉ số [I] chính là vị trí của phần tử trong ma trận "ma". Chúc b thành công.
                    WS:
                    Blog:

                    Comment


                    • #11
                      Các bác ơi em giúp em mới. Em mua 100 con 74hc595 nhưng nó ko hợp với mạch sẵn của em. Em muốn hỏi có dụng cụ nào hay thiết bị nào để chuyển code nó về cùng loại em dang dùng không ạ. Bác nào biết pm em qua zalo hay fb 0961945799
                      Em cảm ơn nhiều nhé

                      Comment


                      • #12
                        Nguyên văn bởi Trungtoc87 Xem bài viết
                        Các bác ơi em giúp em mới. Em mua 100 con 74hc595 nhưng nó ko hợp với mạch sẵn của em. Em muốn hỏi có dụng cụ nào hay thiết bị nào để chuyển code nó về cùng loại em dang dùng không ạ. Bác nào biết pm em qua zalo hay fb 0961945799
                        Em cảm ơn nhiều nhé
                        IC 74HC595 là IC logic , IC cứng thì làm sao mà thay đổi cấu trúc [ dữ liệu ] mạch được .

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X