51单片机实验报告(4)

2018-11-19 21:45

;;;

//平年的每月天数表 MONTHS: END

DB 31D,28D,31D,30D,31D,30D,31D,31D,30D,31D,30D,31D

MOV MONTH,#2 MOV DAY,#14

SETB SOUND_ON ;开声音 RET

4.2 主时钟设置模块:

4.2.1 主时钟设置模块代码:

;*********************************主时钟设置模块*******************************************; ;***外部接口:SET_TIME ;*** 参数:无 ;*** 日期:2012/2/20 NAME SETTING_CLOCK

EXTRN CODE (DISP,GET_KEY,CONVERT,BEEP) PUBLIC SET_TIME

SETTING_CLOCK_SEG SEGMENT CODE RSEG SETTING_CLOCK_SEG

HOUR_TP EQU 2AH MIN_TP EQU 2BH SEC_TP EQU 2CH HOUR EQU 36H ;小时 MIN EQU 37H ;分钟 SEC EQU 38H ;秒 VAR_HOUR EQU 40H VAR_MIN EQU 41H VAR_SEC EQU 42H ;;;设置时间 SET_TIME:

;CLR TR0 ;时间停止(定时器暂停) MOV HOUR_TP,HOUR MOV MIN_TP,MIN MOV SEC_TP,SEC CJNE A,#0,TO_9 LJMP NO_KEY

L0: LCALL GET_KEY

TO_9:

CJNE A,#9,TO_13 LCALL BEEP ;SETB TR0 RET

CJNE A,#13,TO_10 CLR TR0

MOV HOUR,HOUR_TP MOV MIN,MIN_TP MOV SEC,SEC_TP LCALL BEEP SETB TR0 RET

CJNE A,#10,TO_14 INC HOUR_TP MOV A,HOUR_TP

CJNE A,#24,SHOW_SET_TIME MOV HOUR_TP,#0 LCALL BEEP

MOV VAR_HOUR,HOUR_TP MOV VAR_MIN,MIN_TP MOV VAR_SEC,SEC_TP LCALL CONVERT LCALL DISP JMP L0

CJNE A,#14,TO_11 DEC HOUR_TP MOV A,HOUR_TP

CJNE A,#-1,SHOW_SET_TIME MOV HOUR_TP,#23 JMP SHOW_SET_TIME CJNE A,#11,TO_15 INC MIN_TP MOV A,MIN_TP

CJNE A,#60,SHOW_SET_TIME MOV MIN_TP,#0 LJMP SHOW_SET_TIME CJNE A,#15,TO_12

TO_13:

TO_10:

SHOW_SET_TIME: NO_KEY:

TO_14:

TO_11:

TO_15:

;;; END

DEC MIN_TP MOV A,MIN_TP

CJNE A,#-1,SHOW_SET_TIME MOV MIN_TP,#59 LJMP SHOW_SET_TIME CJNE A,#12,TO_16 INC SEC_TP MOV A,SEC_TP

CJNE A,#60,SHOW_SET_TIME MOV SEC_TP,#0 LJMP SHOW_SET_TIME CJNE A,#16,NO_KEY DEC SEC_TP MOV A,SEC_TP

CJNE A,#-1,SHOW_SET_TIME MOV SEC_TP,#59 LJMP SHOW_SET_TIME

TO_12:

TO_16:

4.3 闹钟功能模块

4.3.1 闹钟功能模块代码:

;**************************************闹钟功能模块***************************************; ;***外部接口:SET_ALARM_TIME ;*** 参数:无 ;*** 日期:2012/2/21

NAME SETTING_ALARM_CLOCK PUBLIC SET_ALARM_TIME

EXTRN CODE (DISP,CONVERT,BEEP,GET_KEY) S_A_CLOCK_SEG SEGMENT CODE RSEG S_A_CLOCK_SEG

HOUR_TP EQU 2AH MIN_TP EQU 2BH SEC_TP EQU 2CH

ALARM EQU 20H.0 ;闹钟设置标志 HOUR EQU 36H ;小时 MIN EQU 37H ;分钟 SEC EQU 38H ;秒 HOUR_ALARM EQU 3AH MIN_ALARM EQU 3BH

SEC_ALARM EQU 4BH VAR_HOUR EQU 40H VAR_MIN EQU 41H VAR_SEC EQU 42H ;;;设置闹钟时间 SET_ALARM_TIME: N0:

LCALL GET_KEY CJNE A,#0,TO_10 LJMP NO_KEY

;MOV VAR_HOUR,HOUR_ALARM ;MOV VAR_MIN,MIN_TP ; MOV VAR_SEC,SEC_ALARM

;LCALL CONVERT ;传入参数后等效于 CONVERTA

;LCALL CONVERTA ;加载闹钟数据 ;LCALL DISP

MOV HOUR_TP,HOUR_ALARM MOV MIN_TP,MIN_ALARM MOV SEC_TP,SEC_ALARM

N00:LJMP N0 TO_10:

CJNE A,#10,TO_14 INC HOUR_TP MOV A,HOUR_TP

CJNE A,#24,SHOW_ALARM_TIME MOV HOUR_TP,#0 LCALL BEEP

MOV VAR_HOUR,HOUR_TP MOV VAR_MIN,MIN_TP MOV VAR_SEC,SEC_TP

LCALL CONVERT ;传入参数后等效于 CONVERTA LCALL DISP JMP N0

CJNE A,#14,TO_11 DEC HOUR_TP MOV A,HOUR_TP

CJNE A,#-1,SHOW_ALARM_TIME MOV HOUR_TP,#23 JMP SHOW_ALARM_TIME

SHOW_ALARM_TIME: NO_KEY:

TO_14:

TO_11:

CJNE A,#11,TO_15 INC MIN_TP MOV A,MIN_TP

CJNE A,#60,SHOW_ALARM_TIME MOV MIN_TP,#0

LJMP SHOW_ALARM_TIME CJNE A,#15,TO_12 DEC MIN_TP MOV A,MIN_TP

CJNE A,#-1,SHOW_ALARM_TIME MOV MIN_TP,#59

LJMP SHOW_ALARM_TIME CJNE A,#12,TO_16 INC SEC_TP MOV A,SEC_TP

CJNE A,#60,SHOW_ALARM_TIME MOV SEC_TP,#0

LJMP SHOW_ALARM_TIME CJNE A,#16,TO_9 DEC SEC_TP MOV A,SEC_TP

CJNE A,#-1,SHOW_ALARM_TIME MOV SEC_TP,#59

LJMP SHOW_ALARM_TIME CJNE A,#9,TO_13 LCALL BEEP RET

CJNE A,#13,N00

MOV HOUR_ALARM,HOUR_TP MOV MIN_ALARM,MIN_TP MOV SEC_ALARM,SEC_TP LCALL BEEP RET

/* MOV VAR_HOUR,HOUR MOV VAR_MIN,MIN MOV VAR_SEC,SEC

LCALL CONVERT ;加载当前时间数据,设置闹钟时,原来的计时仍在继续,现在让它显示出来 RET */

TO_15:

TO_12:

TO_16:

TO_9:

TO_13:


51单片机实验报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:马斯洛需求理论在华为公司的应用案例

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

马上注册会员

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