本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
ORG 0000H
AJMP START
ORG 0003H
LJMP ST1
ORG 000BH
AJMP TT0
ORG 0030H
START: MOV 30H,#00H ;秒个位内存单元
MOV 31H,#00H ;秒十位内存单元
MOV 32H,#00H ;分个位内存单元
MOV 33H,#00H ;分十位内存单元
MOV 34H,#00H ;时个位内存单元
MOV 35H,#00H ;时十位内存单元
MOV TMOD,#01H ;定时器T0,工作方式1,
MOV TH0,#3CH ;定时50MS
MOV TL0,#0B0H ;
MOV R0,#30H ;指针指向显示单元
MOV R5,#0FEH ;选中秒个位
MOV R1,#20 ;
MOV 36H,#00H ;时位键盘判断时用
MOV R3,#6 ;秒十位判断时用
MOV R2, #6 ;分十位判断时用
MOV R4,#10 ;
MOV 40H,#10
MOV IE, #81H ;
SETB EA ;开中断
SETB ET0 ;开T0中断
SETB TR0 ;记时开始
MAIN: LCALL DIS
LJMP MAIN
;#################显示子程序###################
DIS: MOV A,R5 ;先位码
MOV DPTR,#7FFFH ;位码选择p2.7
MOVX @DPTR,A
MOV A,@R0 ;再段码
MOV DPTR,#TAB ;表地址
MOVC A,@A+DPTR ;查表
MOV DPTR,#0BFFFH ;段码选择p2.6
;###############显示小数点###################
CJNE R0,#32H,GO111 ;小数点选择(R0)=/=32H转移
ORL A,#80H
GO111: CJNE R0,#34H,MIN
ORL A,#80H
MIN: MOVX @DPTR,A ;送出去显示
LCALL DELAY ;1MS延时
LCALL DELAY
LCALL DELAY
INC R0 ;修改指针指向下一显示单元
MOV A,R5 ;也可写为XCH A,R5
JNB ACC.5,LH ;判断显示完否?
RL A ;也可写为XCH R5,A
MOV R5,A
AJMP ENR ;返回循环显示
LH: MOV R0,#30H ;重心定义显示指针
MOV R5,#0FEH ;重设位码,形成循环ACC.0-ACC.3
ENR: RET
;###############定时中断###########################
TT0:
MOV TH0,#3CH ;
MOV TL0,#0B0H ;
DJNZ R1,FANHUI ;判断1秒到否?未到跳转
MOV R1,#20 ;
INC 30H ;秒个位加一
DJNZ R4,FANHUI ;判断10秒到否?未到跳转
MOV R4,#10 ;
MOV 30H,#00H ;
INC 31H ;
DJNZ R3,FANHUI ;
MOV R3,#6 ;
MOV 31H,#00H ;
INC 32H
DJNZ 40H,FANHUI ;
MOV 40H,#10
MOV 32H,#00H
INC 33H
DJNZ R2,FANHUI
MOV R2,#6
MOV 33H,#00H
INC 36H ;时位判断时用
MOV A,36H
CJNE A,#24,JUMP
MOV 36H,#00H
JUMP: MOV A,36H
MOV B,#10
DIV AB
MOV 34H,B
MOV 35H,A
FANHUI: RETI
;*********键盘处理程序***********
ST1: CLR EX0 ;键盘1判断时用
PUSH B
PUSH ACC
JB P1.0,ST2
LCALL DELAY111
JNB P1.0,$
LCALL DELAY111
DJNZ R3,GO
MOV R3,#6
GO: INC 31H
MOV A,31H
CJNE A,#6,$+3
JNB P1.0,$
JC ST2
MOV 31H,#00H
MOV A,31H
ST2: JB P1.1,ST3 ;键盘2判断时用
LCALL DELAY111
JNB P1.1,$
LCALL DELAY111
DJNZ 40H,GO1
MOV 40H,#10
GO1: INC 32H
MOV A,32H
CJNE A,#10,$+3
JNB P1.1,$
JC ST3
MOV 32H,#00H
MOV A,32H
ST3: JB P1.2,ST4 ;键盘3判断时用
LCALL DELAY111
JNB P1.2,$
LCALL DELAY111
DJNZ R2,GO2
MOV R2,#6
GO2: INC 33H
MOV A,33H
CJNE A,#6,$+3
JNB P1.2,$
JC ST4
MOV 33H,#00H
MOV A,33H
ST4: JB P1.3,ST6 ;键盘4判断时用
LCALL DELAY111
JNB P1.3,$
LCALL DELAY111
INC 36H
MOV A,36H
CJNE A,#24,JUMP1
MOV 36H,#00H
JUMP1: MOV A,36H
MOV B,#10
DIV AB
MOV 34H,B
MOV 35H,A
ST6: POP ACC ;键盘中断返回
POP B
SETB EX0
RETI
;##########延时1MS子程序###########
DELAY: MOV R7,#02H
DE1: MOV R6,#0FEH
DE2: DJNZ R6,DE2
DJNZ R7,DE1
RET
;########键盘延时消抖程序#########
DELAY111:MOV 50H,#2 ;键盘消抖程序
DE1111: MOV 51H,#255
DJNZ 51H,$
DJNZ 50H,DE1111
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H
END
|