Thông báo

Collapse
No announcement yet.

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

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

  • #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, 17:07.

    Comment


    • #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, 18:27.

      Comment


      • #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, 19:11.

        Comment


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

          Comment


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

            Comment


            • #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...
              X