编一个AT89S52的时钟秒表汇编程序,原理图我有,满意加分。因为比较急,所以能帮忙的朋友我表示相当感谢。

有意帮忙的好人请百度消息联系我
2024-12-15 18:51:52
推荐回答(1个)
回答1:

;////////////////////////////////////////////
;////////////////////////////////////////////
;////////////////////////////////////////////
;00--99
;主控芯片89C51,晶振12MHZ,共阴极数码管
;P0送字型码,P2作位选,
;////////////////////////////////////////////
;////////////////////////////////////////////
;////////////////////////////////////////////
;变量地址申明
smg equ p0
gewei bit p2.1
shiwei bit p2.0
;////////////////////////////////////////////
;主程序
org 0000h
ljmp start
org 000bh
ljmp intr0
org 0030h
start: mov sp,#60h ;设堆栈指针
mov r4,#00h ;中断次数
mov r5,#00h ;显示值
mov dptr,#seg1
mov tmod,#01h ;定时器0工作于方式1
mov tl0,#0f0h ;装定时初值,10MS中断一次
mov th0,#0d8h
setb ea ;开中断
setb et0
setb tr0 ;启动定时器
loop:
cjne r5,#64h,next
mov r5,#00h
next:
mov a,r5
mov b,#0ah
div ab
ACALL display
sjmp loop
;////////////////////////////////////////////
;显示部分
display:
movc a,@a+dptr
mov smg,a
clr shiwei
lcall delay ;调用1ms延时子程序
setb shiwei
mov a,b
movc a,@a+dptr
mov smg,a
clr gewei
lcall delay
setb gewei
ret
;////////////////////////////////////////////
;定时器0中断服务子程序
intr0:
mov tl0,#0f0h ;重装计数初值
mov th0,#0d8h
inc r4
cjne r4,#64h,over ;够1S,清零计数,显示数值+1
mov r4,#00h
inc r5
over:
reti
;////////////////////////////////////////////
;1ms延时子程序
delay: mov r7,#02h
dl: mov r6,#0ffh
djnz r6,$
djnz r7, dl
ret

;////////////////////////////////////////////
;字型码
seg1: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;0,1,2,3,4,5,6,7,8,9,
END