Thông báo

Collapse
No announcement yet.

Các bro help giùm em cai lập trình đếm ( dùng interrupt ) đang dang dở của em ...

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

  • Các bro help giùm em cai lập trình đếm ( dùng interrupt ) đang dang dở của em ...

    Xin báo cáo với các bác là em đang gặp problem với cái interrupt, ai biết giúp cái. Đây là phần lập trình của em ( nhìn rấy ư rookie, đừng chê ... ^^). Mới tìm hiểu cái này lần đầu.

    THOUSAND equ 1000H
    HUNDRED equ 1001H
    TEN equ 1002H
    UNIT equ 1003H

    ORG 0000H
    Ljmp Main
    ORG 0013H
    Ljmp Count0

    ORG 0030H
    ;************************************************* ***************
    ;Main program
    Main:
    Mov UNIT,#00H
    Mov TEN,#00H
    Mov HUNDRED,#00H
    Mov THOUSAND,#00H
    Setb TCON.2
    Mov IE,#84H
    Mov A,#00H
    Lcall Display
    Here:
    Sjmp Here

    ;************************************************* ***************
    ;Subroutine for interrupt
    ORG 0100H
    Count0:
    Mov A,UNIT; count the unit digit
    Inc A
    Mov UNIT,A
    Mov R3,UNIT
    Lcall Display
    Cjne A,#09H,Count0
    Mov UNIT,#00H
    Mov R3,UNIT

    Count1:
    Mov A,TEN; count the ten digit
    Inc A
    Mov TEN,A
    Mov R2,TEN
    Mov UNIT,#00H
    Mov R3,#00H
    Lcall Display
    Lcall Delay2
    Sjmp Count0
    Cjne A,#09H,Count1
    Mov TEN,#00H
    Mov R2,TEN

    Count2:
    Mov A,HUNDRED; count the hundred digit
    Inc A
    Mov HUNDRED,A
    Mov R1,HUNDRED
    Mov TEN,#00H
    Mov UNIT,#00H
    Lcall Display
    Lcall Delay2
    Sjmp Count1
    Cjne A,#09H,Count2
    Mov HUNDRED,#00H
    Mov R1,HUNDRED

    Count3:
    Mov A,THOUSAND; count the thousand digit
    Inc A
    Mov R0,A
    Mov THOUSAND,A
    Mov HUNDRED,#00H
    Mov TEN,#00H
    Mov UNIT,#00H
    Lcall Display
    Lcall Delay2
    Sjmp Count2
    Cjne A,#09H,Count0
    Reti

    ;************************************************* ***************
    ;Subroutine for display to 7 segments led
    Display:
    Mov P2,#11111110B
    Mov P0,THOUSAND
    Lcall Delay1

    Mov P2,#11111101B
    Mov P0,HUNDRED
    Lcall Delay1

    Mov P2,#11111011B
    Mov P0,TEN
    Lcall Delay1

    Mov P2,#11110111B
    Mov P0,UNIT
    Lcall Delay1
    Ret

    ;************************************************* ******************
    ;Delay program
    Delay1:
    Mov R7,#0FFH
    Ck2:
    Mov R6,#0FFH
    Ck1:
    Djnz R6,Ck1
    Djnz R7,Ck2
    Ret

    Delay2:
    Mov R7,#08H
    Kt3:
    Mov R6,#0FFH
    Kt2:
    Mov R5,#0FFH
    Kt1:
    Djnz R5,Kt1
    Djnz R6,Kt2
    Djnz R7,Kt3
    Ret
    ;************************************************* ***************
    ;End of the program
    End

    Đếm thì nó làm được rồi nhưng mà có ngắt hay ko ngắt nó đều đếm, cái này em ga` ko biết sử dụng cai RETI sao cho hợp lí sau mỗi lần đếm thi nó phải thoát khỏi ngắt ngay nhưng mà cái này em chả biết gi` nhiều nên chả biết xử lí sao. Mong mấy huynh giúp em cái, sắp nộp report rồi T_T
    Thx mấy huynh nhiều

  • #2
    bạn ui có phần cứng của mạch này hok cho mình với nhé mình đang làm đồ án đếm sản phẩm nhưng chưa có phần cứng mong bạn giúp đở thank
    làm sao hiểu hết được công nghệ :)

    Comment


    • #3
      bạn kiểm tra lại cái lệnh nhảy "cjne a,#09h,count0" và mấy cái lệnh nhảy như thế ở dưới nữa .cái lênh nhảy này hinh như là nhảy nếu thanh ghi a khác 09h
      nế như thế thì mỗi lần ngắt thì nó sẽ tự đếm liên tục

      Comment


      • #4
        Mình thấy chương trình của bạn có hai vấn đề:
        1) Các hàng hoạt động độc lập với nhau
        Ví dụ: UNIT khi đếm từ 0 đến 9 nghĩa là được chục thì TEN không tăng; hàng trăm hàng nghìn cũng vậy.
        2) sau khi mỗi hàng đếm từ 0 đến 9 thì bạn lại xoá đi và lưu giá trị bằng 0 cho lần xử lý sau
        Ví dụ: ở đoạn count1
        count1:
        mov a,ten
        .............
        mov ten,#00h
        mov r2,ten
        ;Chúc bạn hoàn thiện bài viết
        |

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...
        X