51单片机课程设计之日历闹钟文档格式.docx
- 文档编号:22867757
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:16
- 大小:70.57KB
51单片机课程设计之日历闹钟文档格式.docx
《51单片机课程设计之日历闹钟文档格式.docx》由会员分享,可在线阅读,更多相关《51单片机课程设计之日历闹钟文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
ORG0000H
LJMPMAIN
ORG001BH;
T1断入口
LJMPINT_INT1
ORG0030H
MAIN:
MOVR0,#AD1
MOVR7,#06H
LOOP0:
MOVA,#00H
MOV@R0,A
INCR0
DJNZR7,LOOP0;
R0~R7清零
MOVAD1,#23H
MOVAD2,#0CH
MOVAD3,#09H
MOVAD4,#18H
MOVAD5,#06H
MOVAD6,#08H;
初始化时间为9:
12:
35,日期为08年6月24日
SETBEA
SETBET1;
允许T1中断
MOVTMOD,#10H;
T1许工作,选择方式1
MOVTH0,#3CH
MOVTL0,#0B0H;
送入计数初值0.05s
MOVR5,#14H;
定时1s,初始化结束
SETBTR1;
开启T1
LOOP:
LCALLKEY;
扫描键盘
MOVP0,A
CJNEA,#0FEH,NEXT1;
0FEH为1键
LCALLDY1MS
LCALLKEYDONE
NEXT1:
SJMPLOOP;
扫描键盘看是否需要调整日历
DISPLAY:
CJNEA,#0DFH,L1;
0DFH为6键
SETBPSW.1;
显示十二小时
LJMPM
L1:
CJNEA,#0EFH,L2;
0EFH为5键
CLRPSW.1;
显示二十四小时
CLRTW2
L2:
CJNEA,#0CFH,L;
0CFH为5+6键
SETBPSW.1
SETBTW2;
TW2=1表示把十二表示法转换成二十四小时
L:
M:
LCALLKEY
CJNEA,#9FH,NEXTL;
7FH为8键
SETBPSW.5
LJMPZHUAN1
NEXTL:
CJNEA,#0BFH,ZHUAN1;
0BFH为7键
CLRPSW.5
ZHUAN1:
JBPSW.5,DAY;
PSW.5=0调整时间,为1则调整日期
MOVA,AD1;
调整时间键码分离
MOVB,#0AH
DIVAB
MOVR0,#DBUF
MOV@R0,B
MOVA,AD2
JBPSW.1,M1
LJMPM2
M1:
;
判断时间是否大于12
MOVA,AD3
MOVB,#0CH
SUBBA,B
JCN1
MOVAD3,A
LJMPN1
M2:
JNBTW2,N1;
判断是否加12
ADDA,#00H
CLRTW2
N1:
SJMPDDISP
DAY:
调整日期键码分离
MOVA,AD4
MOVA,AD5
MOVA,AD6
DDISP:
显示,串入并出的方式,上升沿写入
MOVR7,#06H
MOVDPTR,#TABLE
LOOP2:
MOVA,@R0
MOVCA,@A+DPTR
MOVR6,#08H;
显示秒
CLRC
LOOP3:
CLRCLK
RRCA
MOVDISP,C
SETBCLK
DJNZR6,LOOP3
DJNZR7,LOOP2
RET
KEYDONE:
人工手动调整日历
AGAINB:
LCALLDY250MS;
防抖250ms
CJNEA,#9FH,NEXTL1;
LJMPZHUAN12
NEXTL1:
CJNEA,#0BFH,ZHUAN12
CLRPSW.5;
以上为扫描键盘并设置PSW.5
ZHUAN12:
JBPSW.5,NEXT6B;
判断调整日期还是时间
CJNEA,#0FDH,NEXTA;
0FDH为2键,如果按键值为FDH则结束
LJMPBACK
NEXTA:
CJNEA,#0FBH,NEXTB;
0FBH为3键
INCAD1;
秒加1
MOVA,AD1
CJNEA,#3CH,AGAINA
MOVAD1,#00H
SJMPAGAINA
NEXTB:
CJNEA,#0F7H,NEXTC;
0F7H为4键
INCAD2;
分加1
MOVAD2,#00H
NEXTC:
CJNEA,#0EFH,AGAINA;
INCAD3;
时加1
CJNEA,#18H,AGAINA
MOVAD3,#00H
NEXTT:
NEXT6B:
CJNEA,#0FDH,NEXTAB;
JIESHUJIAN;
0FDH为2键
NEXTAB:
CJNEA,#0FBH,NEXTBB;
INCAD4;
日加1
CJNEA,#20H,AGAINA
MOVAD4,#01H
NEXTBB:
CJNEA,#0F7H,NEXTCB;
INCAD5;
月加1
CJNEA,#0DH,AGAINA
MOVAD5,#01H
NEXTCB:
INCAD6;
年加1
CJNEA,#64H,AGAINA
MOVAD6,#00H
AGAINA:
LCALLDISPLAY
LJMPAGAINB
BACK:
INT_INT1:
DJNZR5,NEXTS1;
循环20次,每次循环为0.05秒,共0.05*20=1秒
MOVR5,#14H
LCALLDISPLAY;
满一秒后的显示
LJMPMEND
NEXTS1:
LJMPNEXTS;
MEND:
CJNEA,#0AH,LAREMEND
SETBLED;
满十秒关蜂鸣器,否则继续
LAREMEND:
INCAD1
CJNEA,#3CH,NEXTS2
LJMPMEND1
NEXTS2:
以上为看是否修改秒,满60,分加一否则跳转继续
MEND1:
INCAD2
CJNEA,#3CH,NEXTS3
LJMPMEND2
NEXTS3:
以上为看是否修改分,满60,时加一否则跳转继续
MEND2:
INCAD3
CJNEA,#08h,NEXT
AJMPDIANLIANG
NEXT:
CJNEA,#0Bh,NORMAL
DIANLIANG:
CLRLED;
以上为两个蜂鸣器报警
NORMAL:
CJNEA,#18H,NEXTS4;
不满二十四小时跳出
LJMPMEND3;
满二十四后跳到清零小时继续加天
NEXTS4:
LJMPNEXTS
MEND3:
MOVAD3,#00H
INCAD4
CJNEA,#02H,JIXUTIAN;
判断是否为二月份
MOVB,#4H
MOVA,B
JZRUNNIAN;
判断是否为闰年
PINGNIAN:
MOVA,AD4;
平年
CJNEA,#1DH,NEXTS
AJMPJIXUYUE
RUNNIAN:
闰年
CJNEA,#1EH,NEXTS
JIXUTIAN:
不为二月,再查看是那个月
CJNEA,#01H,PAN1
LJMPDAYUE
PAN1:
CJNEA,#03H,PAN3
PAN3:
CJNEA,#04H,PAN4
LJMPXIAOYUE
PAN4:
CJNEA,#05H,PAN5
PAN5:
CJNEA,#06H,PAN6
PAN6:
CJNEA,#07H,PAN7
PAN7:
CJNEA,#08H,PAN8
PAN8:
CJNEA,#09H,PAN9
PAN9:
CJNEA,#10H,PAN10
PAN10:
CJNEA,#11H,DAYUE
DAYUE:
月份:
1,3,5,7,8,10,12
CJNEA,#20H,NEXTS
XIAOYUE:
月份:
2,4,6,8,11
CJNEA,#1FH,NEXTS
JIXUYUE:
满月后加年
CJNEA,#0DH,NEXTS
INCAD6
CJNEA,#64H,NEXTS;
年满100后清零
NEXTS:
再赋初值
MOVTL0,#0B0H
RETI
DY250MS:
延迟防抖250ms
MOVR4,#0FAH
LOOP8:
DJNZR4,LOOP8
DY1MS:
延迟防抖1ms
MOVR5,#0FAH
LOOP7:
MOVR7,#70H
DJNZR5,LOOP7
键盘扫描子程序
KEY:
SETBP1.7
CLRP1.7;
低电平锁存
NOP
SETBP1.7
MOVR7,#07H;
高电平输出
MOVA,#0FFH
AGAIN3:
CLRP2.3
SETBP2.3
MOVC,P3.5;
把p3.5的状态存入C
RLCA;
键盘状态存入A
DJNZR7,AGAIN3;
扫描七个按键
TABLE:
DB42H,0F6H,13H,92H,0A6H,8AH,0AH,0F2H,02H,82H;
0123456789
子程序功能索引:
KEY--扫描键盘
DDISP--显示
NEXTS--重新赋初值
DY1MS--延迟防抖1ms
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 课程设计 日历 闹钟