单片机课程设计—定时闹钟设计 - 图文(4)

2019-04-08 20:15

7.3程序源代码

ORG 0000H LJMP MAIN ORG 000BH LJMP TIME ×××××主程序部分××××× ORG 0100H

MAIN:MOV SP,#50H MOV 20H,#00H MOV 21H,#00H MOV 22H,#00H MOV 23H,#01H MOV 24H,#01H MOV 25H,#00H MOV 30H,#00H MOV 31H,#00H MOV 32H,#00H MOV 33H,#00H MOV 34H,#00H MOV 35H,#00H MOV 36H,#01H MOV 37H,#00H MOV 38H,#01H MOV 39H,#00H

MOV TMOD,#01H ;16 位计数器

MOV TH0,#03CH ;赋计数初值

MOV TL0,#0B0H MOV IE,#10000111B

SETB TR0 ;T0 启动计数 MOV R2,#14H MOV P2,#0FFH

LOOP: LCALL TIMEPRO LCALL DISPLAY1 JB P1.0,M1

LCALL SETTIME ;调用设定时间程序 LJMP LOOP M1:JB P1.1,M2 LCALL SETATIME LJMP LOOP M2:JB P1.3,M4

LCALL LOOKA TIME M4:LJMP LOOP

DELAY:MOV R4,#030H DL00:MOV R5,#0FFH DL11:MOV R6,#9H DL12:DJNZ R6,DL12 DJNZ R5,DL11 DJNZ R4,DL00 RET ; ×××××设定时间程序××××× SETTIME:

L0:LCALL DISPLAY1 MM1: JB P1.1,L1 MOV C,P1.1 JC MM1

LCALL DELAY1 ;调用延时

JC MM1

MSTOP1: MOV C,P1.1 JNC MSTOP1 ;判断 P1.1 是否释放?释放则继续

LCALL DELAY1 ;调用延时

MOV C,P1.1 JNC MSTOP1 INC 22H MOV A,22H

CJNE A,#18H,GO12

12

MOV 22H,#00H MOV 34H,#00H MOV 35H,#00H LJMP L0

L1:JB P1.2,L2 MOV C,P1.2 JC L1

LCALL DELAY1 JC L1

MSTOP2: MOV C,P1.2 JNC MSTOP2;判断 P1.2 是否释放?释放则继续 LCALL DELAY1 ;调用延时

MOV C,P1.2 JNC MSTOP2 INC 21H MOV A,21H

CJNE A,#3CH,GO11 MOV 21H,#00H MOV 32H,#00H MOV 33H,#00H LJMP L0

GO11:MOV B,#0AH DIV AB

MOV 34H,B MOV 35H,A LJMP L0

L2:JB P1.3,L0 MOV C,P1.3 JC L2

LCALL DELAY1 MOV C,P1.3 JC L2

STOP1: MOV C,P1.3 JNC STOP1

LCALL DELAY1 MOV C,P1.3 JNC STOP1 LJMP LOOP ×××××设置闹钟时间×××××

SETATIME:LCALL DISPLAY2

N0:LCALL DISPLAY2 MM2: JB P1.2,N1;判断 P1.2 是否按下? MOV C,P1.2 JC MM2

LCALL DELAY1 JC MM2

MSTOP3: MOV C,P1.2 JNC MSTOP3 LCALL DELAY1

13

MOV C,P1.2 JNC MSTOP3 INC 24H MOV A,24H

CJNE A,#24,GO22 MOV 24H,#00H MOV 38H,#00H MOV 39H,#00H LJMP N0 N1:JB P1.0,N2 MOV C,P1.0 JC N1

LCALL DELAY1 JC N1

MSTOP4: MOV C,P1.0 JNC MSTOP4 LCALL DELAY1 MOV C,P1.0 JNC MSTOP4 INC 23H MOV A,23H

CJNE A,#60,GO21 MOV 23H,#00H MOV 36H,#00H MOV 37H,#00H LJMP N0 GO21:MOV DIV AB MOV 36H,B MOV 37H,A LJMP N0

GO22: MOV B,#0AH ;将A 中的内容分成高低两部分

DIV AB MOV 38H,B MOV 39H,A LJMPN0

N2:JB P1.3 ,N0 ;判断P1.3 是否按下? MOV C,P1.3 JC N2

LCALL DELAY1 MOV C,P1.3

JC N2

STOP2: MOV C,P1.3 ;判断 P1.3 是否释放? JNC STOP2 LCALL DELAY1 MOV C,P1.3 JNC STOP2 LJMP LOOP

TIMEPRO:MOV A,21H MOV B,23H CJNE A,B,BK MOV A,22H MOV B,24H CJNE A,B,BK SETB 25H.0 MOV C,25H.0 JC XX

XX: LCALL TIMEOUT ;调用时间闹钟响应程序 BK:RET TIMEOUT: X1:LCALL BZ LCALL DISPLAY2 CLR 25H.0

JB P1.3, X1 ;调用喇叭响应程序

LCALL DELAY CLR 25H.0

LJMP DISPLAY1 BZ: CLR P3.7 MOV R7,#250 T2: MOV R6,#124 T3: DJNZ R6,T3

DJNZ R7,T2 SETB P3.7 RET

LOOKATIME:LCALL DISPLAY2 MM: JB P1.3,LOOKATIME ;判断按键 P1.3 是否按下 MOV C,P1.3 JC MM

LCALL DELAY1 MOV C,P1.3

14

JC MM STOP3:

MOV C,P1.3 JNC STOP3 LCALL DELAY1 MOV C,P1.3 JNC STOP3 LJMP LOOP

DELAY1: MOV R4,#14H DL001: MOV R5,#0FFH DL111: DJNZ R5,DL111

DJNZ R4,DL001

RET ×××××时间运行程序×××××

TIME: PUSH ACC PUSH PSW

MOV TH0,#03CH MOV TL0,#0B0H DJNZ R2,RET0 MOV R2,#14H MOV A,20H CLR C

INC A ;秒钟自加 1

CJNE A,#3CH,GO1 ;判断秒钟是否到 60 秒?

MOV 20H,#0 ;到 60 秒复位

MOV 30H,#0 MOV 31H,#0 MOV A,21H

INC A ;分钟自加 1

CJNE A,#3CH,GO2 ;判断分钟是否到 60 分? MOV 21H,#0H ; 到 60 分复位

MOV 32H,#0 MOV 33H,#0 MOV A,22H

INC A ;时钟自加 1

CJNE A,#18H,GO3 ;判断时钟是否到 24 时?

MOV22H,#00H ;到 24 时复位

MOV 34H,#0 MOV 35H,#0 AJMP RET0

GO1: MOV 20H,A MOV B,#0AH DIV AB

MOV 31H,A MOV 30H,B AJMP RET0

GO2: MOV 21H,A MOV B,#0AH DIV AB

MOV 33H,A MOV 32H,B AJMP RET0

GO3: MOV 22H,A MOV B,#0AH MOV 35H,A MOV 34H,B AJMP RET0

RET0: POP PSW ;恢复现场

POP ACC RETI ×××××运行部分××××× DISPLAY1: MOV R0,#30H

MOV R3,#0FEH

MOV A,R3

PLAY1: MOV P2,A MOV A,@R0

MOV DPTR,#DSEG1 ;表首地址送 DPTR

MOVC A,@A+DPTR MOV P0,A LCALL DL1

MOV P2,#0FFH ;送高电平到 P2

MOV RL A,R3 RL A

JNB ACC.6,LD1 INC R0 MOVR3,A

LJMP PLAY1 ;调用查表程序

LD1: RET

DISPLAY2: PUSH ACC ;现场保护 PUSH PSW MOV R0,#36H MOV R3,#0FBH MOV A,R3

PLAY2: MOV P2,A MOV A,@R0

MOV DPTR,#DSEG1;表首地址送 DPTR

15

MOVC A,@A+DPTR ;查 ASCII 特码

MOV P0,A;查表结果送 A LCALL DL1

MOV P2,#0FFH ;送高电平到 P2

MOV A,R3 RL A

JNB ACC.6,LD2 INC R0 MOV R3, A LJMP PLAY2

LD2: POP PSW ;恢复现场 POP ACC RET ×××××延时时间××××× DL1: MOV R7,#02H ;延时时间

DL: MOV R6,#0200H DL6: R6,$ DJNZ R7,DL RET

DSEG1:DB

3FH,06H,5BH,4FH,66H DB

6DH,7DH,07H,7FH,6FH END

7.4元器件清单

名称 电阻(欧姆) 晶振 芯片 按钮 蜂鸣器 无极电容 有极电容 三极管 4位一体数码管 稳压集成电路 桥堆 波动开关 二极管

16

型号 470 10K 100 10K 12MHz AT89S51 5V 30P 10uF PNP 8550 7805 2W10 LED 数量 15 9 1 8 1 1 4 1 2 1 7 2 1 1 1 1

指导教师评语: 课程设计报告成绩: ,占总成绩比例: 30% 课程设计其它环节成绩: 环节名称: 考勤 ,成绩: ,占总成绩比例: 20% 环节名称: 综合 ,成绩: ,占总成绩比例: 50% 总 成 绩: 指导教师签字: 年 月 日 本次课程设计负责人意见: 负责人签字: 年 月 日

17


单片机课程设计—定时闹钟设计 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《美学原理》考试复习参考资料汇编

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: