Chào cả nhà ạ.
Em nhờ mọi người dịch giúp em đoạn code asm này sang c ạ. Vì em k biết chút nào về asm và cũng k rành về C và 8051 nhưng em có thể mò mò và sử dụng tạm thời được.
Code:
Code này em tìm được là dùng 89c51 để hẹn giờ. Nguyên lý hoạt động của mạch là khi có nhấn nút ở nút nhấn p3.3 thì bộ đếm ở led tăng lên 1 ,nhấn nút giảm ở chân p3.4 thì bộ đếm giảm 1.khi nhấn nút Start ở p3.2 thì bộ đếm bắt đầu đếm ngược cho đến khi = 0 thì đưa ra tín hiệu ở chân p3.5 làm led sáng
Sơ đồ mạch ạ.

Mong mọi người giúp em dịch nó sang C và giải thích em chỗ thời gian của code trên ạ.
Em cảm ơn mọi người nhiều.
Em nhờ mọi người dịch giúp em đoạn code asm này sang c ạ. Vì em k biết chút nào về asm và cũng k rành về C và 8051 nhưng em có thể mò mò và sử dụng tạm thời được.
Code:
Code:
;PHAN KHAI BAO BIEN NGO VAO
TANG BIT P3.2
GIAM BIT P3.3
START BIT P3.4
;PHAN KHAI BAO BIEN NGO RA
DATA_LED1 EQU P2
DATA_LED2 EQU P1
DENBAO BIT P3.5
;PHAN KHAI BAO O NHO SU DUNG TRONG CHUONG TRINH
SODEM EQU 30H
DEM_TG EQU 31H
TT_GIAM BIT 7FH
ORG 0000H
LJMP SETUP
ORG 000BH
LJMP NGAT_TIMER_0 ;NGAT DE GIAM SO DEM
ORG 0030H
SETUP:
SETB EA ;CHO PHEP NGAT TOAN CUC
SETB ET0 ;CHO PHEP NGAT TIMER0
MOV TH0,#HIGH(-50000)
MOV TL0,#LOW(-50000)
SETB TR0
SETB DENBAO ;TAT DEN BAO HIEU
MOV SODEM,#90
MOV DEM_TG,#0
CLR TT_GIAM ;MAC DINH LA CHUA CHO GIAM
MOV DPTR,#TB_LED
MAIN:
LCALL HIENTHI
JB TANG,KTGIAM
JNB TANG,$
INC SODEM
MOV A,SODEM
CJNE A,#100,THOATTANG
MOV SODEM,#99
THOATTANG:
JMP MAIN
KTGIAM:
JB GIAM,KTSTART
JNB GIAM,$
DEC SODEM
MOV A,SODEM
CJNE A,#-1,THOATGIAM
MOV SODEM,#0
THOATGIAM:
JMP MAIN
KTSTART:
JB START,MAIN
JNB START,$
SETB TT_GIAM
JMP MAIN
NGAT_TIMER_0:
CLR TR0
MOV TH0,#HIGH(-50000)
MOV TL0,#LOW(-50000)
SETB TR0
PUSH ACC
INC DEM_TG
MOV A,DEM_TG
CJNE A,#200,THOATNGAT
MOV DEM_TG,#0
JNB TT_GIAM,THOATNGAT
MOV A,SODEM
CJNE A,#0,TIEPTUC
CLR DENBAO
JMP THOATNGAT
TIEPTUC:
DEC SODEM
THOATNGAT:
POP ACC
RETI
HIENTHI:
MOV A,SODEM
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV DATA_LED1,A
MOV A,B
MOVC A,@A+DPTR
MOV DATA_LED2,A
RET
TB_LED:
DB 01000000B ;0
DB 01111001B ;1
DB 00100100B ;2
DB 00110000B ;3
DB 00011001B ;4
DB 00010010B ;5
DB 00000010B ;6
DB 01011000B ;7
DB 00000000B ;8
DB 00010000B ;9
END
Sơ đồ mạch ạ.
Mong mọi người giúp em dịch nó sang C và giải thích em chỗ thời gian của code trên ạ.
Em cảm ơn mọi người nhiều.

Comment