Thông báo

Collapse
No announcement yet.

Mạch đếm xung dùng at89c52

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

  • Mạch đếm xung dùng at89c52

    mọi người kiểm tra giúp mình mạch và code với. Mình mô phỏng Protues thì nó chạy nhưng khi làm mạch thì nó k chạy. Mong được mọi người giúp đỡ. Tks
    Click image for larger version

Name:	Capturehfjyj.jpg
Views:	1
Size:	112.1 KB
ID:	1420184
    còn đây là code. Mình dùng PORT 3.5 đếm xung trong 15s và xuất kết quả ra LED 7 đoạn :
    ORG 000H
    MOV DPTR, #LUT
    MOV P1, #00000000B // Cho P1 làm cổng xuất
    MOV P0, #00000000B // Cho P0 làm cổng xuất
    MAIN:
    MOV R6, #230D
    SETB P3.5 // Cho phép nhập từ P3.5
    MOV TMOD, #01100001B // Timer 1 : Counter 1, mode 2 ; Timer 0 mode 2
    MOV TL1, #00000000B // Đếm số xung
    SETB TR1 // Cho chạy counter 1
    BACK:
    MOV TH0, #00000000B
    MOV TL0, #00000000B
    SETB TR0 // Cho timer 0 chạy
    HERE:
    JNB TF0, HERE // Đợi timer 0 tràn
    CLR TR0 // Dừng timer 0
    CLR TF0 // Xóa cờ báo tràn timer 0
    DJNZ R6, BACK // Lặp lại chương trình con BACK 230 lần
    CLR TR1 // Ngưng counter 1
    CLR TF0 // Xóa cờ báo tràn timer 0
    CLR TF1 // Xóa cờ báo tràn timer 1
    ACALL DLOOP
    SJMP MAIN // Nhảy về chương trình chính
    DLOOP:
    MOV R5, #252D
    BACK1:
    MOV A, TL1 // Copy số đếm ở TL1
    MOV B, #4D
    MUL AB // Nhân số xung đếm được với 4
    MOV B, #100D
    DIV AB // Lấy giá trị hàng trăm
    ACALL DISPLAY // Lấy mã LED hàng trăm
    MOV P0, A // Xuất dữ liệu ra PORT 0
    SETB P1.0 // Cho phép hiển thị
    ACALL DELAY
    ACALL DELAY
    MOV A, B
    MOV B, #10D
    DIV AB // Lấy giá trị hàng chục
    CLR P1.0
    ACALL DISPLAY // Lấy mã LED hàng chục
    MOV P0, A // Xuất dữ liệu ra PORT 0
    SETB P1.1 // Cho phép hiển thị
    ACALL DELAY
    ACALL DELAY
    MOV A, B // Lấy giá trị hàng đơn vị
    CLR P1.1
    ACALL DISPLAY // Lấy mã LED hàng đơn vị
    MOV P0, A // Xuất dữ liệu ra PORT 0
    SETB P1.2 // Cho phép hiển thị
    ACALL DELAY
    ACALL DELAY
    CLR P1.2
    DJNZ R5, BACK1 // Quét 252 lần
    RET
    DELAY:
    MOV R7, #250D // Tạo trễ 0.5ms
    DEL1:
    DJNZ R7, DEL1
    RET

    DISPLAY:
    MOVC A, @A+DPTR // Lấy mã LED
    CPL A
    RET
    LUT:
    DB 3FH
    DB 06H
    DB 5BH
    DB 4FH
    DB 66H
    DB 6DH
    DB 7DH
    DB 07H
    DB 7FH
    DB 6FH
    END

Về tác giả

Collapse

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

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

Collapse

Đang tải...
X