Em đang dùng KeilC, phần viết code e chưa được thành thạo nên mới lên mạng xin được 1 đoạn code như sau:
#include <sfr51.inc>
org 0h
main:
mov sp,#60h
mov r1,#0
lap:
mov r1,p1
mov a,r1
mov b,#100
div ab
mov dptr,#ma7vach
movc a,@a+dptr
setb p2.0
mov p0,a
lcall delay2ms
clr p2.0
;******************
mov a,b
mov b,#10
div ab
mov dptr,#ma7vach
movc a,@a+dptr
setb p2.1
mov p0,a
lcall delay2ms
clr p2.1
;*******************
mov a,b
mov dptr,#ma7vach
movc a,@a+dptr
setb p2.2
mov p0,a
lcall delay2ms
clr p2.2
;******************
inc r3 ; 1 lan quet qua 3 led mat 2x3=6ms
cjne r3,#15,lap ; quet 15 lan de so sp dc hien thi toi thieu trong 90ms
mov r3,#0
;*****************
sjmp lap
;***************************
delay2ms:
mov tmod,#01H ; dat timer hoat dong o che do 1
delay1:
mov TL0,#30H ; t=2ms => so xung N=t.Fta/12=2000 xung=> >65536:dung bo dinh thoi 0 cdo 16bit
mov TH0,#0F8H ; 2^16-N = 63536 = F830h => TL=30h, TH=F8h
clr TF0 ; xoa co TF ve 0 de phuc vu viec kiem tra dem tran
setb TR0 ; khoi dong bo dinh thoi 0
delay2: jnb TF0,delay2 ; kiem tra co tran:neu co TF =0 (chua tran) thi lap lai,TF=1 thi ket thuc
clr TR0 ; dung bo dinh thoi
ret ; quay ve chuong trinh chinh
;**************************
ma7vach: db 40H,79H,24H,30H,19H,12H,02H,78H,0H,10H
END
Các pro xem hộ em nó sai ở đâu mà e không thể chuyển nó sang HEX để nạp chạy mô phỏng cho 89c51 đc.
#include <sfr51.inc>
org 0h
main:
mov sp,#60h
mov r1,#0
lap:
mov r1,p1
mov a,r1
mov b,#100
div ab
mov dptr,#ma7vach
movc a,@a+dptr
setb p2.0
mov p0,a
lcall delay2ms
clr p2.0
;******************
mov a,b
mov b,#10
div ab
mov dptr,#ma7vach
movc a,@a+dptr
setb p2.1
mov p0,a
lcall delay2ms
clr p2.1
;*******************
mov a,b
mov dptr,#ma7vach
movc a,@a+dptr
setb p2.2
mov p0,a
lcall delay2ms
clr p2.2
;******************
inc r3 ; 1 lan quet qua 3 led mat 2x3=6ms
cjne r3,#15,lap ; quet 15 lan de so sp dc hien thi toi thieu trong 90ms
mov r3,#0
;*****************
sjmp lap
;***************************
delay2ms:
mov tmod,#01H ; dat timer hoat dong o che do 1
delay1:
mov TL0,#30H ; t=2ms => so xung N=t.Fta/12=2000 xung=> >65536:dung bo dinh thoi 0 cdo 16bit
mov TH0,#0F8H ; 2^16-N = 63536 = F830h => TL=30h, TH=F8h
clr TF0 ; xoa co TF ve 0 de phuc vu viec kiem tra dem tran
setb TR0 ; khoi dong bo dinh thoi 0
delay2: jnb TF0,delay2 ; kiem tra co tran:neu co TF =0 (chua tran) thi lap lai,TF=1 thi ket thuc
clr TR0 ; dung bo dinh thoi
ret ; quay ve chuong trinh chinh
;**************************
ma7vach: db 40H,79H,24H,30H,19H,12H,02H,78H,0H,10H
END
Các pro xem hộ em nó sai ở đâu mà e không thể chuyển nó sang HEX để nạp chạy mô phỏng cho 89c51 đc.
Comment