Thông báo

Collapse
No announcement yet.

[HỎI] mã hex và nhị phân 0-1

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

  • [HỎI] mã hex và nhị phân 0-1

    mình ko chuyên điện tử, đam mê thôi(biết dùng 89c51 và 52). nhưng còn nghèo nàn về lập trình. mình mới tìm hiểu về phần cứng, mô phỏng, vẽ layout,nạp mạch 2 tuần và làm xong led trai tim với code mượn trên google
    nay đang học hỏi thêm lập trình cho vdk ưu tiên lập trình C cho nó trực quan và gon gàng, không như ASM 0 và 1 viết dài dòng mà dễ nhậm lẫn khi phải viết chuơng trình nháy led dài
    thắc mắc của mình là như "tít" đã đưa mã hex và nhị phân
    Ví dụ:
    ORG 0000H
    MAIN:
    MOV P0,#00H
    MOV P2,#00H
    MOV P3,#00H
    LCALL DELAY
    ;**************************** KIEU 1
    MOV P0,#11111111B
    MOV P2,#11111111B
    MOV P3,#01100000B
    LCALL DELAY
    MOV P0,#00000000B
    MOV P2,#00000000B
    MOV P3,#10100000B
    LCALL DELAY
    ...v..v..........
    trong C thường dùng dàng mã như vậy

    unsigned char A[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
    unsigned char B[]={0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};
    với MOV P0,#11111111B thì dãy số 1 đó chuyễn thành hex như thế nào, nguyên tắc chuyển ra sao. cái này mình phân vân rất nhiều, kiếm tài liệu mà hơi bị khó.
    MOV P3,#01100000B thì có 2 led sáng thì nguyên tác sang mã hex thế nào.
    -mình thấy bên lập trình C toàn sài mã hex chứ ko thấy 1 và 0. và đọc ví dụ về C tuy hiểu sơ câu lệnh, nhưng bó tay (0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff).
    -0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff: mấy số sau 0x làm sao mình biết 00 là mở port 1 led 1 sáng, 01 led 2, 03 led 3...

    hoặc có phần mềm nào chuyễn không.

    đừng ném gạch cho người mới bắt đầu

  • #2
    phần mềm chuyển đổi mã có ngay trên tất cả máy tính mà bạn ko biết đó thôi. Cái calculator trong windows (start->all programs->accessories->calculator chuyển chế độ tính scientific) có thể dùng để tính toán cũng như chuyển mã HEX DEC BIN OCT đấy. Máy tính FX570MS và 570ES cũng có thể tính và chuyển mã nữa

    Comment


    • #3
      thanks bạn. mình có biết nhưng lúc đó không biết sài. jiờ test thử bin 10100110 ---> Hex A6. khi ghi trong code là 0xA6 phải hok. nhưng mà nếu 01110000 trong máy tính nó hok nhận giá trị 0 đứng trước thì sao nhỉ.
      Last edited by suinayun; 30-10-2011, 16:22.

      Comment


      • #4
        Nhị phân. Trong ví dụ này là 8 bít ( 8 số 0 hoặc 1 ). Biến thành hex làm như sau :
        Tách ra làm 2 phần, 4 số đầu và 4 số cuối.
        Tra bảng:
        0000-0
        0001-1
        0010-2
        0011-3
        0100-4
        0101-5
        0110-6
        0111-7
        1000-8
        1001-9
        1010-A
        1011-B
        1100-C
        1101-D
        1110-E
        1111-F.
        Rồi ghép vào nhau. Ví dụ 01010010=> tác dc là 0101 và 0010. Tra bảng trên dc hex là : 0x52.
        Hoặc như ví dụ trên là 10100110 tách được 1010 và 0110 => tra bảng dc 0xA6
        Last edited by duong_act; 30-10-2011, 18:09.

        Comment


        • #5
          thanks. đây mới gọi là phương pháp chứ

          Comment


          • #6
            mình mới học lập trình phọt phẹt thôi. khi đọc đến mã hex thì mình chịu. hôm nay đọc được phần này của bạn mới hiểu rõ cách tính mã hex. rất cảm ơn bạn

            Comment


            • #7
              mình mới học lập trình phọt phẹt thôi. khi đọc đến mã hex thì mình chịu. hôm nay đọc được phần này của bạn mới hiểu rõ cách tính mã hex. rất cảm ơn bạn

              Comment


              • #8
                cảm ơn bạn nhiều lắm mình cũng đang thắc mắc về vấn đề này, thì hôm nay mình đã có lời giải, một lần nữa cảm ơn bạn nhiều và chúc bạn gặp nhiều may mắn:
                bạn vui lòng cho mình hỏi thêm, với cách tính ở trên thì mình tính 8 bit, vậy 16 bit thì còn tính như thế nào nữa không xin bạn cho mình cung như các bạn đang học hỏi từ diễn đàn.
                thank you bạn nhiều.

                Comment


                • #9
                  Nguyên văn bởi giusetung71 Xem bài viết
                  cảm ơn bạn nhiều lắm mình cũng đang thắc mắc về vấn đề này, thì hôm nay mình đã có lời giải, một lần nữa cảm ơn bạn nhiều và chúc bạn gặp nhiều may mắn:
                  bạn vui lòng cho mình hỏi thêm, với cách tính ở trên thì mình tính 8 bit, vậy 16 bit thì còn tính như thế nào nữa không xin bạn cho mình cung như các bạn đang học hỏi từ diễn đàn.
                  thank you bạn nhiều.
                  Với 16bits, 32bit, 64bit, nbits.... cũng làm như thế bạn nhé. Cũng tách thành từng cụm 4 số từ cuối lên đầu. Nếu đến cụm cuối cùng mà không đủ 4 số thì thêm số 0 vào trước rồi tra. Sau đó cũng ghép lại.
                  Ví dụ số 16bits: 0b0011000101110110 tách đựoc 0011-0001-0111-0101 = 0x3175.

                  Comment


                  • #10
                    Học thầy không tày học bạn mà! Số trên 4 số cuối là 0110 => 3176H. Chắc bạn Duong_act thử mọi người...

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    Đang tải...
                    X