AT89C51单片机用4位数码管做秒表,要求用动态扫描做,汇编语言
重赏之下心有勇夫^_^
;汇编时钟程序。4位共阳管。P0口段码,P2.0~P2.3位码。显示毫秒和秒。三个按键一个控制时钟开始走,一个控制暂停和继续。。。一个按键清0
;12M晶振 2011 04 20 调试完成
STRT EQU P3.2
STP EQU P3.3
CLRR EQU P3.5
ORG 00H
SJMP MAIN
ORG 0BH
AJMP T0INT
ORG 30H
MAIN: MOV SP,#60H
MOV R3,#10
MOV R4,#20
MOV TMOD,#01H ;定时器T0工作方式1
MOV TH0,#0D8H ;10MS定时初值
MOV TL0,#0F0H
SETB ET0
SETB EA
k1: LCALL DISP
JB STRT,K2
LCALL DISP
JNB STRT,$-3
AJMP START
k2: LCALL DISP
JB STP,K3
LCALL DISP
JNB STP,$-3
AJMP SS
K3: LCALL DISP
JB CLRR,K1
LCALL DISP
JNB CLRR,$-3
AJMP CLEAR
START: SETB TR0
CLR F0 ;如无此条,暂停后,不是按继续键,而是按开始键继续走时,下次按暂停键时,不能暂停
AJMP K1
SS: CPL F0
JNB F0,START
STOP: CLR TR0
AJMP K2
CLEAR: CLR TR0
MOV A,#0
MOV 20H,A
MOV 21H,A
MOV 22H,A
MOV 23H,A
MOV 24H,A
MOV 25H,A
AJMP K3
DISP: MOV A,24H
MOV B,#10
DIV AB
MOV 20H,B ;余数(MS个位数)
MOV 21H,A ;商(MS十位数)
MOV A,25H
MOV B,#10
DIV AB
MOV 22H,B ;余数(S个位数)
MOV 23H,A ;商(S十位数)
MOV A,20H ;MS个位
ACALL SEG7
MOV P0,A
SETB P2.4
ACALL DLY
CLR P2.4
MOV A,21H ;MS十位
ACALL SEG7
MOV P0,A
SETB P2.5
ACALL DLY
CLR P2.5
MOV A,22H ;S个位
ACALL SEG7
MOV P0,A
CLR P0.7
SETB P2.6
ACALL DLY
CLR P2.6
MOV A,23H ;S十位
ACALL SEG7
MOV P0,A
SETB P2.7
ACALL DLY
CLR P2.7
RET
T0INT: MOV TH0,#0D8H
MOV TL0,#0F0H
INC 24H
MOV A,24H
CJNE A,#99,T0INTR
MOV 24H,#0
INC 25H
MOV A,25H
CJNE A,#60,T0INTR
MOV 25H,#0
T0INTR: RETI
DLY: MOV R7,#10
D1: MOV R6,#50
DJNZ R6,$
DJNZ R7,D1
RET
SEG7: INC A
MOVC A,@A+PC
RET
DB 0C0H;0
DB 0F9H;1
DB 0A4H;2
DB 0B0H;3
DB 099H;4
DB 092H;5
DB 082H;6
DB 0F8H;7
DB 080H;8
DB 090H;9
END
4位数码管动态扫描的电路,并编程实现6位数码管同时显示"135。
STRT EQU P1.0
CLRR EQU P1.1
ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT0
ORG 30H
MAIN:
MOV SP,#60H
MOV R4,#20
MOV TMOD,#01H
MOV TH0,#3CH;12M晶振时定时初值取#3CB0H,还可细调如 TL=#0B7H,可以更准
MOV TL0,#0B0H
SETB ET0
SETB EA
扩展资料:
比起机器语言,汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。汇编语言仍是面向机器的语言,很难从其代码上理解程序设计意图,设计出来的程序不易被移植,故不像其他大多数的高级计算机语言一样被广泛应用。所以在高级语言高度发展的今天,它通常被用在底层,通常是程序优化或硬件操作的场合。
参考资料来源:百度百科-汇编语言