51单片机数字钟汇编程序Word文件下载.docx
- 文档编号:21733841
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:24
- 大小:19.69KB
51单片机数字钟汇编程序Word文件下载.docx
《51单片机数字钟汇编程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《51单片机数字钟汇编程序Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
CLR44H
CLR45H
CLR46H
CLR47H
CLR48H
CLR49H
-------开中断
MOVTMOD,#01H;
计数、模式1、T0
MOVTL0,#0B0H;
100SM计数定时
MOVTH0,#3CH;
CLRP3.0
MOV20H,#0AH;
10次*100SM
SETBPT0;
T0为最高级
SETBTR0;
允许计数
SETBET0;
允许T0中断
SETBEX0;
允许INT0中断
SETBEX1;
允许INT1中断
SETBEA;
开总中断
------显示、定时器启动判断
LOOP:
MOVR1,#30H;
存储单元
MOVR4,#01H;
位选通
MOVR3,#03H;
三组显示
NEXT:
MOVA,@R1;
MOVB,#10;
将存储单元转换成两高低两组的BCD码
DIVAB
SWAPA
ORLA,B
MOVP0,A;
输出
MOVP2,R4
INCR1;
下一单元
MOVA,R4;
RLA;
位移
MOVR4,A
LCALLDE5SM;
延时0.5SM
DJNZR3,NEXT;
全扫描显示一偏
------判断定时输出(只编写了一路)
CJNER7,#88H,LOOP;
是8则开,否则、定时已关、转
---------开
MOVA,YEAR
CJNEA,YEAR_1,LOOP_1;
年比较,不等转关
MOVA,MON
CJNEA,MON_1,LOOP_1
MOVA,DAY
CJNEA,DAY_1,LOOP_1
MOVA,HOUR
CJNEA,HOUR_1,LOOP_1
MOVA,MIN
CJNEA,MIN_1,LOOP_1
CPLP3.0
---------关
LOOP_1:
MOVA,YEAR
CJNEA,YEAR_11,LOOP;
年比较
CJNEA,MON_11,LOOP
MOVA,DAY
CJNEA,DAY_11,LOOP
MOVA,HOUR
CJNEA,HOUR_11,LOOP
CJNEA,MIN_11,LOOP
LJMPLOOP
-----年月日显示中断子程序
WB0:
PUSHPSW
PUSHACC
PUSHB
PUSH01H
PUSH02H
PUSH03H
PUSH04H
MOVR2,#0FFH;
中断扫描次数
TURN:
MOVR1,#33H
MOVR4,#01H
MOVR3,#03H
NEXT_1:
MOVA,@R1
MOVB,#10
DIVAB
MOVP0,A
INCR1
RLA
LCALLDE5SM
DJNZR3,NEXT_1
DJNZR2,TURN;
反复显示一定时间后返回
POP04H
POP03H
POP02H
POP01H
POPB
POPACC
POPPSW
RETI
-----计数中断服务子程序
TT0:
PUSHPSW
PUSH06H
MOVTH0,#3CH;
重装计数
MOVTL0,#0BH;
DJNZ20H,OUT;
转到中断跳出pop程序
重装:
100*10=1000
-----进位程序
INCSEC
MOVR6,SEC;
CJNER6,#60,OUT;
比较
MOVSEC,#00;
INCMIN
MOVR6,MIN
CJNER6,#60,OUT
INCHOUR
MOVR6,HOUR
CJNER6,#25,OUT
INCDAY
MOVR5,MON
CJNER5,#1,MON_22;
是否1月、不是转2月
MOVR5,DAY
CJNER5,#32,OUT;
本月是否益出
INCMON
MOVDAY,#1
LJMPOUT
OUT:
POP06H
MON_22:
MOVR5,MON
CJNER5,#2,MON_33;
是否2月、不是转3月
MOVA,YEAR;
判断是否瑞年
MOVB,#4
MOVA,B
JNZOUT_1;
不是则转(A不为零则转)
MOVR5,DAY
CJNER5,#30,OUT;
如是瑞年、判断是否到29天
MOVDAY,#1
OUT_1:
MOVR5,DAY
CJNER5,#29,OUT;
平年二月判断
MON_33:
CJNER5,#3,MON_44
CJNER5,#32,OUT
MON_44:
CJNER5,#4,MON_55
CJNER5,#31,OUT
MON_55:
CJNER5,#5,MON_66
CJNER5,#32,OUT
LJMPOUT
MON_66:
CJNER5,#6,MON_77
MON_77:
CJNER5,#7,MON_88
MOVR5,DAY
CJNER5,#32,L1
INCMON
L1:
LJMPOUT
MON_88:
CJNER5,#8,MON_99
CJNER5,#32,L2
L2:
MON_99:
CJNER5,#9,MON_00
CJNER5,#31,L3
L3:
MON_00:
CJNER5,#10,MON_AA
CJNER5,#32,L4
L4:
MON_AA:
CJNER5,#11,MON_BB
CJNER5,#31,L5
L5:
MON_BB:
CJNER5,#32,L6
INCYEAR
MOVMON,#1
L6:
LJMPOUT
-----校对时间、定时调整中断
WB1:
PUSHACC
PUSH00H
MOVP2,#00H
SHOW_1:
MOVA,#01H;
显示1
MOVP2,#0FFH;
三组数码管都显示1路
LCALLREAD;
调用读p1口键程序
CJNEA,01H,SHOW_1;
去抖后比较
LCALLDE250SM;
延时250秒
CJNEA,#0FBH,ttT1
LJMPSB3_1
ttT1:
CJNEA,#0FEH,SHOW_1
AJMPSHOW_2
-------二组显示
SHOW_2:
MOVA,#02H;
显示2
LCALLREAD
CJNEA,01H,SHOW_2;
LCALLDE250SM;
CJNEA,#0FBH,T2;
不等转去判断此时SB3按了没
LJMPSB3_2
T2:
CJNEA,#0FEH,SHOW_2
AJMPSHOW_3
_------三组显示
SHOW_3:
MOVA,#03H;
显示3
位码
CJNEA,01H,SHOW_3;
延时250秒
CJNEA,#0FBH,T3;
LJMPSB3_3
T3:
CJNEA,#0FEH,SHOW_3
AJMPSHOW_4;
------即时年单元调时、显示
SHOW_4:
MOVA,YEAR;
调出年单元
BCD转换
MOVP0,A;
MOVP2,#01H;
LCALLDE250SM
CJNEA,01H,SHOW_4;
去抖
CJNEA,#0FEH,KEY2_1;
按SB2转年调整
AJMPMON_CH;
按SB1往下调月单元
KEY2_1:
CJNEA,#0FDH,SHOW_4
LCALLYEAR_AD;
调用年调整
AJMPSHOW_4;
MON_CH:
MOVA,MON;
月单元调整
MOVP2,#02H;
CJNEA,01H,MON_CH;
CJNEA,#0FEH,KEY2_2;
按SB2转月调整
LJMPDAY_CH;
按SB1往下调日单元
KEY2_2:
CJNEA,#0FDH,MON_CH
LCALLMON_AD;
调用月调整
LJMPMON_CH;
DAY_CH:
MOVA,DAY;
日单元调整
MOVB,#10
SWAPA
ORLA,B
MOVP0,A;
MOVP2,#04H;
LCALLREAD
LCALLDE250SM
CJNEA,01H,DAY_CH;
CJNEA,#0FEH,KEY2_3;
按SB2转日调整
LJMPHOUR_CH;
按SB1往下调时单元
KEY2_3:
CJNEA,#0FDH,DAY_CH
LCALLDAY_AD;
调用日调整
LJMPDAY_CH
HOUR_CH:
MOVA,HOUR;
时单元调整
MOVP2,#01H;
CJNEA,01H,HOUR_CH;
CJNEA,#0FEH,KEY2_4;
按SB2转时调整
AJMPMIN_CH;
按SB1往下调分单元
KEY2_4:
CJNEA,#0FDH,HOUR_CH
LCALLHOUR_AD;
调用时调整
AJMPHOUR_CH;
MIN_CH:
MOVA,MIN;
分单元调整
MOVP2,#02H;
CJNEA,01H,MIN_CH;
CJNEA,#0FEH,KEY2_5;
按SB2转分调整
AJMPSEC_CH;
按SB1往下调秒单元
KEY2_5:
CJNEA,#0FDH,MIN_CH
LCALLMIN_AD;
调用分调整
LJMPMIN_CH;
SEC_CH:
MOVA,SEC;
秒单元调整
CJNEA,01H,SEC_CH;
CJNEA,#0FEH,KEY2_6;
按SB2秒调整
LJMPOUT_A;
按SB1跳出
KEY2_6:
CJNEA,#0FDH,SEC_CH
CLRSEC;
归零
LJMPSEC_CH;
-------按SB2\定时器年单元加1子程序
SB3_2:
LJMPSHOW_2;
二路没编返回
SB3_3:
LJMPSHOW_3;
三路没编返回
SB3_1:
MOVA,YEAR_1;
调时年单元
MOVP2,#01H
CJNEA,01H,SB3_1
CJNEA,#0FBH,KEY2_7;
LJMPMON_111;
KEY2_7:
CJNEA,#0FDH,SB3_1
INCYEAR_1;
1路年单元加1
MOVR5,YEAR_1
CJNER5,#09,SB3_1;
益出
MOVYEAR_1,#00H
AJMPSB3_1;
-------月单元加1子程序
MON_111:
MOVA,MON_1;
调时月单元显示
MOVP0,A
MOVP2,#02H
CJNEA,01H,MON_111
CJNEA,#0FBH,KEY2_8;
LJMPDAY_111
KEY2_8:
CJNEA,#0FDH,MON_111
INCMON_1;
1路月单元加1
MOVR5,MON_1
CJNER5,#13,MON_111;
MOVMON_1,#01H
AJMPMON_111;
转到月显
_------日单元加1子程序
DAY_111:
MOVA,DAY_1;
调时日单元显示提示
MOVP2,#04H
CJNEA,01H,DAY_111
CJNEA,#0FBH,KEY2_9;
LJMPHOUR_111
KEY2_9:
CJNEA,#0FDH,DAY_111
INCDAY_1;
1组日单元加1
MOVR5,DAY_1
CJNER5,#32,DAY_111;
MOVDAY_1,#01H
AJMPDAY_111;
转到日显
-------按SB2时单元加1子程序
HOUR_111:
MOVA,HOUR_1;
调时时单元显示提示
CJNEA,01H,HOUR_111
CJNEA,#0FBH,KEY2_10;
按SB2转时调整
LJMPMIN_111
KEY2_10:
CJNEA,#0FDH,HOUR_111
INCHOUR_1
MOVR5,HOUR_1
CJNER5,#24,HOUR_111;
MOVHOUR_1,#00H
AJMPHOUR_111;
转到时显
-------分单元加1子程序
MIN_111:
MOVA,MIN_1;
调时分单元、并显示提示
ORLA,B
MOVP2,#02H
CJNEA,01H,MIN_111
CJNEA,#0FBH,KEY2_11;
AJMPOFF_CH;
按SB3往下调定时:
关单元
KEY2_11:
CJNEA,#0FDH,MIN_111
INCMIN_1;
1路分单元加1
MOVR5,MIN_1
CJNER5,#60,MIN_111;
益处
MOVMIN_1,#00H
AJMPMIN_111;
转到分显
年单元调整
OFF_CH:
MOVA,YEAR_11;
CJNEA,01H,OFF_CH
CJNEA,#0FBH,KEY2_F7;
LJMPMON_OFF;
KEY2_F7:
CJNEA,#0FDH,OFF_CH
INCYEAR_11;
MOVR5,YEAR_11
CJNER5,#09,OFF_CH;
MOVYEAR_11,#00H
MON_OFF:
MOVA,MON_11;
CJNEA,01H,MON_OFF
CJNEA,#0FBH,KEY2_F8;
LJMPDAY_OFF
KEY2_F8:
CJNEA,#0FDH,MON_OFF
INCMON_11;
MOVR5,MON_11
CJNER5,#13,MON_OFF;
MOVMON_11,#01H
AJMPMON_OFF;
DAY_OFF:
MOVA,DAY_11;
MOVP2,#04H
CJNEA,01H,DAY_OFF
CJNEA,#0FBH,KEY2_F9;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 数字 汇编程序