单片机原理综合实训指导书v2(201306)(7)

2019-01-12 13:18

MOV A,R0 MOV R2,#08H WRI_02:

RRC A ;传输数据到DS1302 NOP

CLR SCLK NOP NOP

MOV IO_DATA,C NOP NOP

SETB SCLK NOP NOP

DJNZ R2,WRI_02 CLR SCLK NOP NOP CLR RST NOP NOP RET

;================================================= ;读 DS1302 子程序

;================================================= READ: CLR SCLK NOP NOP

SETB RST NOP NOP

MOV A,R1 MOV R2,#08H READ_01: RRC A

NOP ;先传输地址到DS1302 MOV IO_DATA,C NOP NOP

SETB SCLK NOP NOP

CLR SCLK

NOP NOP

DJNZ R2,READ_01 NOP NOP

SETB IO_DATA CLR A CLR C

MOV R2,#08H READ_02: CLR SCLK NOP NOP

MOV C,IO_DATA NOP NOP

RRC A ;再从DS1302接收数据 NOP NOP

SETB SCLK NOP NOP

DJNZ R2,READ_02 MOV R0,A CLR RST RET

;============================================== ;实时时间、日期数据处理子程序

;============================================== CHULI:

MOV A,40H ;处理秒数据 ANL A,#0FH MOV 50H,A MOV 70H,A MOV A,40H

ANL A,#11110000B SWAP A MOV 51H,A MOV 71H,A

;--------------------------------------------- MOV A,41H ;处理分数据 ANL A,#0FH MOV 52H,A MOV 72H,A

MOV A,41H

ANL A,#11110000B SWAP A MOV 53H,A MOV 73H,A

;--------------------------------------------- MOV A,42H ;处理时数据 ANL A,#0FH MOV 54H,A MOV 74H,A MOV A,42H

ANL A,#11110000B SWAP A MOV 55H,A MOV 75H,A

;---------------------------------------------- MOV A,43H ;处理日数据 ANL A,#0FH MOV 60H,A MOV 76H,A MOV A,43H

ANL A,#11110000B SWAP A MOV 61H,A MOV 77H,A

;--------------------------------------------- MOV A,44H ;处理月数据 ANL A,#0FH MOV 62H,A MOV 78H,A MOV A,44H

ANL A,#11110000B SWAP A MOV 63H,A MOV 79H,A

;--------------------------------------------- MOV A,45H ;处理年数据 ANL A,#0FH MOV 64H,A MOV 7AH,A MOV A,45H

ANL A,#11110000B SWAP A MOV 65H,A

MOV 7BH,A

;---------------------------------------------- MOV A,46H ;处理周数据 MOV 66H,A MOV 7CH,A RET

;============================================= ;实时时间、日期查表取数子程序

;============================================= DISP: ;MOV R0,#TIME_DATA MOV R3,#06H

DISP1: MOV A,@R0 MOV DPTR,#TAB_NU MOVC A,@A+DPTR MOV @R0,A INC R0

DJNZ R3,DISP1 RET

;==================================================== ;时间、日期显示子程序

;==================================================== TIME_DISPLAY:

;MOV R0,#TIME_DATA ;取得显示单元首地址 MOV R1,#07FH ;从第一个数码管开始 MOV R2,#08H ;共8个数码管

DISLP: MOV P0,@R0 ;获得当前单元数据 MOV A,R1

MOV P2,A ;数码显示

JB ACC.5,DISLP1 ;第三位数码管显示 - MOV P0,#0f7H JMP DISLP3

DISLP1: JB ACC.2,DISLP2 ;第六位数码管显示 - MOV P0,#0f7H JMP DISLP3 DISLP2: INC R0

DISLP3: MOV A,R1 ;为下一个数准备 RR A ;下一个单元 MOV R1,A ;保存

LCALL DELAY ;为了保证数码管亮度,延时

DJNZ R2,DISLP ;重复显示,直到全部数据刷新过 RET ;返回

DELAY:

MOV R4,#0AH

L15: MOV R5,#64H L16: DJNZ R5,L16 DJNZ R4,L15 RET

;****************************************************** SET_KEY:

SETB K1 ;增加键 SETB K2 ;减少键 SETB K3 ;选择键

SETB K4 ;定时设定功能键 NOP

JB K4,KEY01 LCALL BEEP_BL

JMP DS_KEY ;进入定时值设定子程序 KEY01: JB K2,KEY02 LCALL BEEP_BL

JMP SET_TIME ;进入时间设定子程序 KEY02: JB K3,KEY03 LCALL BEEP_BL

CPL 20H.0 ;止闹标记取反 KEY03: RET

;----------------------------------------------------- DS_KEY:

CALL DS_DELAY JNB K4,$ LCALL DSSET CALL DS_DELAY RET

;============================================== ;实时时间设定子程序

;K1为加键、K2为减键、K3为选择键

;============================================== SET_TIME:

MOV R1,#8EH ;写保护寄存器 MOV R0,#00H ;允许写入 LCALL WRITE

MOV R1,#80H ;写秒寄存器 MOV R0,#80H ;停止振荡器工作 LCALL WRITE

SETB TR0


单片机原理综合实训指导书v2(201306)(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2005年日语能力考试2级真题及答案

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

马上注册会员

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