Thông báo

Collapse
No announcement yet.

Thuật toán chuyển từ mã HEX qua BCD và ngược lại.

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

  • Thuật toán chuyển từ mã HEX qua BCD và ngược lại.

    Các bác có tài liệu hay thuật toán gì chuyển đổi HEX qua BCD và ngược lại không send giùm em với. Em đang cần gấp.

    Em có thuật toán thế này không biết đúng hay sao mong mọi người chỉ giùm:

    BCD--->HEX
    1. 4 bit cao x10 +4 bit thấp = X
    2. X chia 16=?. Thương số là 4 bit cao, số dư là 4 bit thấp
    HEX--->BCD
    1 4 bit cao x 16 + 4 bit thấp= Y
    2. Y chia 10=?? thương số là 4 bit cao, số dư là 4 bit thấp.

    Các bác chỉ giùm em với nhá


  • #2
    Ứng dụng của em ở đây là nạp thời gian cho con ds1307. Ví dụ như là muốn chỉnh giây cho nó là 59s thì em phải nạp vào thanh ghi 00h là: 0101 1001. Nhưng mà lệnh mov A,#59 sẽ ghi vào thanh ghi A là 3Bh hay là 0011 1011, Như vậy thì không thể chuyển 3Bh vào thanh ghi 00h được mà phải chuyển qua mã BCD rồi mối đưa vào thanh ghi 00h. Lúc lấy đọc thời gian từ con ds1307 ra lại phải chuyển từ BCD qua HEX đã rồi mới tính toán tiếp..Mọi người giúp em nhé..Thank nhiều!

    Comment


    • #3
      Sao chẳng có ai giúp hết vậy trời!..

      Comment


      • #4
        Bạn muốn chuyển số 0101 1001B vào thanh ghi A, thì lệnh đơn giản chỉ là Mov A,#0101 1001B, hoặc Mov A,#59H. Bạn lưu ý là phải có chữ "H" hoặc chữ "B" ở đằng sau để chương trình hiểu bạn đang thực hiện trong hệ nào. Nếu ko có thì nó sẽ hiểu bạn đang thực hiện trong hệ nhị phân.

        Thân ái !

        Comment


        • #5
          Đoạn code dưới đây mình viết để giải mã đó. Bạn xem có dùng dc không nhé.

          Code:
          ; chuong trinh con giai ma hex sang ma bcd & su dung 7447 de giai ma cho LED 7 thanh
          hextobcd:
          mov A,16h ; giai ma so thu nhat
          mov B,#10
          div AB
          mov 36h,A
          mov 37h,B
          
          mov A,17h ; giai ma so thu hai
          mov B,#10
          div AB
          mov 26h,A
          mov 27h,B
          ret

          Comment


          • #6
            Nguyên văn bởi pk178 Xem bài viết
            Bạn muốn chuyển số 0101 1001B vào thanh ghi A, thì lệnh đơn giản chỉ là Mov A,#0101 1001B, hoặc Mov A,#59H. Bạn lưu ý là phải có chữ "H" hoặc chữ "B" ở đằng sau để chương trình hiểu bạn đang thực hiện trong hệ nào. Nếu ko có thì nó sẽ hiểu bạn đang thực hiện trong hệ nhị phân.

            Thân ái !
            Oh. Em hiểu ý của bác rồi. Thế nhưng khi lấy dữ liệu từ con 1307 ra thì phải chuyển qua mã hex lại. Bác có code gì không gửi cho em tham khảo với..

            Comment


            • #7
              Nguyên văn bởi Brilliant8x Xem bài viết
              Đoạn code dưới đây mình viết để giải mã đó. Bạn xem có dùng dc không nhé.

              Code:
              ; chuong trinh con giai ma hex sang ma bcd & su dung 7447 de giai ma cho LED 7 thanh
              hextobcd:
              mov A,16h ; giai ma so thu nhat
              mov B,#10
              div AB
              mov 36h,A
              mov 37h,B
              
              mov A,17h ; giai ma so thu hai
              mov B,#10
              div AB
              mov 26h,A
              mov 27h,B
              ret
              Cảm ơn chương trình của bạn nhưng mình không xài được. Bạn có chương trình nào chuyển Hex 8 bit qua BCD không.

              Comment


              • #8
                bạn xem thử cái này:
                BCD-HEX:
                MOV B,#16
                PUSH A
                DIV ab
                CJNE A,#00h,tru6
                POP A
                SJMP thoat
                tru6: CJNE A,#01h,tru12
                POP A
                SUBB A,#06
                SJMP thoat
                tru12: CJNE A,#02h,tru18
                POP A
                SUBB A,#012
                SJMP thoat
                tru18:CJNE A,#03h,tru24
                POP A
                SUBB A,#018
                SJMP thoat
                tru24:CJNE A,#04h,tru30
                POP A
                SUBB A,#024
                SJMP thoat
                tru30:CJNE A,#05h,lap
                POP A
                SUBB A,#030
                thoat: ret
                ......................................

                Comment


                • #9
                  vạy muốn chuyển 4 bit cao của p.0 vào 1 thanh ghi và chuyển 4 bit tháp của p0 vào 1 thanh ghi nủa thì làm thế nào

                  Comment


                  • #10
                    bạn ITnho ơi theo mình nghi bạn có thể chuyển p0 vào một ô nhớ sau đó dùng nó and với 11110000b để lấy 4 bit cao sau đó dùng lệnh swap để hoán đổi 4 bit cao thành 4 bit thấp,đối với 4 bit thấp cũng làm tương tự.

                    Comment


                    • #11
                      chuyển từ BCD sang HEX trên c nhé:
                      HEX = (((BCD/16)*10)+ (BCD & 0x0f))
                      từ HEX sang BCD:
                      BCD = (((HEX/10)*16)|(HÊX %10))
                      đã tét

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...
                      X