[ Cấp cứu ] Giúp code về hiển thị led 7 thanh qua 89C51 + 74HC595

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • kubjn810
    Thành viên mới
    • Jan 2014
    • 13

    #16
    thanks bạn...bạn sao khi mình mô phỏng thử á kìa...mình cho 1 cái là 100 thì led nó k hiên ra 00 mà hiên ra 80, 101 thì nó hiện ra 81 là sao ta @@
    Last edited by kubjn810; 21-02-2014, 16:07.

    Comment

    • tramng
      Thành viên chính thức
      • Jan 2014
      • 90

      #17
      [/COLOR][/COLOR]
      Nguyên văn bởi kubjn810 Xem bài viết
      thanks bạn...bạn sao khi mình mô phỏng thử á kìa...mình cho 1 cái là 100 thì led nó k hiên ra 00 mà hiên ra 80, 101 thì nó hiện ra 81 là sao ta @@
      Ý bạn là nạp 1 số bất kỳ, nhưng không được lớn hơn 100 : Bạn sửa lại đoạn chuyển đổi từ hex sang bcd như sau nhé
      HEXTOBCD1:
      MOV A,R1
      MOV B,#10
      ;===chia lan 1 de lay so don vi====
      DIV AB
      MOV DONVI1,B
      MOV B,#10
      ;===chia lan 2 de lay so hang chuc va hang tram===
      DIV AB
      MOV CHUC1,B
      ;===so sanh so hang tram====
      ;neu ton tai so hang tram tuc la so hang tram #0 thi nhay den nhan~ TRAR1VE0
      ;neu khong ton tai so hang tram tuc la so hang tram =0 thi thoat khoi ham con

      CJNE A,#0,TRAR1VE0
      JMP EXIT1
      ;======nap gia tri R1 =0======
      TRAR1VE0:
      MOV R1,#0
      ;sau khi nap R1 = 0 thi quay lai chuyen hex sang bcd de hien thi
      JMP HEXTOBCD1
      EXIT1:
      RET
      Hàm main :

      MAIN:
      MOV R1,#200
      MOV R2,#255
      LCALL HEXTOBCD1
      LCALL HEXTOBCD2
      LCALL GIAIMA1
      LCALL GIAIMA2
      LCALL DELAY_HIENTHI1
      LCALL DELAY_HIENTHI2
      JMP MAIN
      Last edited by tramng; 21-02-2014, 17:27.

      Comment

      • kubjn810
        Thành viên mới
        • Jan 2014
        • 13

        #18
        MAIN:
        MOV R3,#200
        MOV R4,#66
        LCALL HEXTOBCD1
        LCALL HEXTOBCD2
        LCALL GIAIMA1
        LCALL GIAIMA2
        LCALL DELAY_HIENTHI1
        LCALL DELAY_HIENTHI2
        JMP MAIN
        ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX
        ;CHUYEN KET QUA DEM TRONG THANH GHI TL0 SANG SO BCD
        ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXX
        HEXTOBCD1:
        MOV A,R3
        MOV B,#10
        ;===chia lan 1 de lay so don vi====
        DIV AB
        MOV DONVI1,B
        MOV B,#10
        ;===chia lan 2 de lay so hang chuc va hang tram===
        DIV AB
        MOV CHUC1,B
        ;===so sanh so hang tram====
        ;neu ton tai so hang tram tuc la so hang tram #0 thi nhay den nhan~ TRAR1VE0
        ;neu khong ton tai so hang tram tuc la so hang tram =0 thi thoat khoi ham con
        CJNE A,#0,TRAR1VE0
        JMP EXIT1
        ;======nap gia tri R1 =0======
        TRAR1VE0:
        MOV R1,#00
        ;sau khi nap R1 = 0 thi quay lai chuyen hex sang bcd de hien thi
        JMP HEXTOBCD1
        EXIT1:
        RET

        HEXTOBCD2:
        MOV A,R4
        MOV B,#10
        ;===chia lan 1 de lay so don vi====
        DIV AB
        MOV DONVI2,B
        MOV B,#10
        ;===chia lan 2 de lay so hang chuc va hang tram===
        DIV AB
        MOV CHUC2,B
        ;===so sanh so hang tram====
        ;neu ton tai so hang tram tuc la so hang tram #0 thi nhay den nhan~ TRAR1VE0
        ;neu khong ton tai so hang tram tuc la so hang tram =0 thi thoat khoi ham con
        CJNE A,#0,TRAR1VE0_1
        JMP EXIT2
        ;======nap gia tri R1 =0======
        TRAR1VE0_1:
        MOV R1,#00
        ;sau khi nap R1 = 0 thi quay lai chuyen hex sang bcd de hien thi
        JMP HEXTOBCD2
        EXIT2:
        RET
        mình làm như bạn nói nhưng khi mô phỏng 1 trong 2 số mà trên 100 thì cả 2 nó đều trả về 88
        còn chỗ mà chia lần thứ 2 thì phải chuyển MOV CHUC2,A chứ bạn A mới là phần nguyên mà
        Last edited by kubjn810; 21-02-2014, 18:11.

        Comment

        • tramng
          Thành viên chính thức
          • Jan 2014
          • 90

          #19
          Bạn xem lại code mà bạn sửa nhé !

          Comment

          • kubjn810
            Thành viên mới
            • Jan 2014
            • 13

            #20
            thanks...mình biết sai chỗ nào rồi

            Comment

            • tramng
              Thành viên chính thức
              • Jan 2014
              • 90

              #21
              Nguyên văn bởi kubjn810 Xem bài viết
              còn chỗ mà chia lần thứ 2 thì phải chuyển MOV CHUC2,A chứ bạn A mới là phần nguyên mà
              Giả sử bạn nạp vô R2 = 230 thì :
              -khi chia lần 1 : A = 23 (phần nguyên), B = 0 (số dư) => lấy số 0 (số ở vị trí hàng đơn vị) nạp vào DONVI
              -khi chia lần 2 (tức là lấy giá trị đang có trong A = 23 để chia tiếp) : A = 2 (phần nguyên), B = 3 (số dư) => ta lấy số 3 (số ở vị trí hàng chục) nạp vo CHUC => MOV CHUC2,B và A là số hàng trăm.

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...