电子时钟 汇编程序Word格式.docx
- 文档编号:19854351
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:11
- 大小:17.31KB
电子时钟 汇编程序Word格式.docx
《电子时钟 汇编程序Word格式.docx》由会员分享,可在线阅读,更多相关《电子时钟 汇编程序Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
BELLBITP3.7//蜂鸣器
LEDBITP3.6//按键指示灯
BELL_FLAGBIT20H.0//定时确定与取消
ORG0000H
AJMPMAIN
ORG000BH
AJMPTIME0
ORG001BH
AJMPTIME1
ORG0030H
MAIN:
MOVSP,#70H
MOVHOUR,#12
MOVMIN,#0
MOVSEC,#0
MOVSMG_SUF+2,#10
MOVSMG_SUF+5,#10
MOVSMG_SHIFT,#0
MOVSMG_WI,#0FEH
MOVT_COUNT,#0
MOVTIMED_HOUR,#0//定时时时间存储
MOVTIMED_MIN,#0//定时分时间存储
MOVTIMED_SEC,#0//定时秒时间存储
ACALLINIT_T0T1
SETBBELL
SETBLED
SETBBELL_FLAG
START:
ACALLCONV
JBBELL_FLAG,BQ_NEXT//标志位为1则转移,不查询定时程序
CLRLED//设置则不断闪
ACALLTIMEING//定时子程序查询
BQ_NEXT:
JBK1,KEY2//如果为未按K3按键,则闹铃设置,再按则取消
ACALLDELAY_10MS
JBK1,KEY2
JNBK1,$
ACALLLIGHT
ACALLKEY_PROC
AJMPSTART
KEY2:
JBK2,KEY3
JBK2,KEY3
ACALLDELAY_100MS
ACALLLIGHT
JNBK2,$
ACALLBELL_SET
KEY3:
JBK3,KEY4
JBK3,KEY4
JNBK3,$
CPLBELL_FLAG//取反--->
(默认是1)按键3控制着闹钟标志位
KEY4:
JBK4,NEXT
NEXT:
AJMPSTART
//转换子程序
CONV:
MOVA,HOUR
MOVB,#10
DIVAB
MOVSMG_SUF,A
MOVA,B
MOVSMG_SUF+1,A
MOVA,MIN
MOVSMG_SUF+3,A
MOVSMG_SUF+4,A
MOVA,SEC
MOVSMG_SUF+6,A
MOVSMG_SUF+7,A
RET
//显示子程序
DISP:
MOVP0,#0FFH/*这一句话是后来发现出现“鬼影”之后加上去的,每一次扫描完都熄灭一次*/
SETBLATCH_A
CLRLATCH_A
MOVA,#SMG_SUF
ADDA,SMG_SHIFT//偏移量+基地址
MOVR0,A//偏移量+基地址=物理地址存到R0中
MOVA,@R0//取出物理地址的值传给A
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A
SETBLATCH_B
CLRLATCH_B
MOVP0,SMG_WI
INCSMG_SHIFT
MOVA,SMG_SHIFT
CJNEA,#8,DISP_NEXT
DISP_NEXT:
MOVA,SMG_WI
RLA
MOVSMG_WI,A
//定时器0初始化程序
INIT_T0T1:
MOVTMOD,#11H//定义两个定时器
MOVTH0,#0F8H//对定时器0赋初值
MOVTL0,#30H
MOVTH1,#3CH//对定时器1赋初值
MOVTL1,#0B0H
SETBEA//开启总中断
SETBET0//定时器0
SETBET1//定时器1
SETBTR0//开启定时器0
SETBTR1//开启定时器1
//定时器0
TIME0:
PUSHACC
PUSHPSW
MOVTH0,#0F8H
MOVTL0,#30H
ACALLDISP
POPPSW
POPACC
RETI
//定时器1,用于产生基本时间--->
TIME1:
PUSHACC
MOVTH1,#3CH
INCT_COUNT
MOVA,T_COUNT
CJNEA,#20,T_RETI
MOVT_COUNT,#0
INCSEC
CJNEA,#60,T_RETI
INCMIN
INCHOUR
MOVA,HOUR
CJNEA,#24,T_RETI
MOVHOUR,#0
MOVSEC,#0
T_RETI:
POPPSW/*MISTAKE*/
//按键处理程序(调整时间)
KEY_PROC:
CLRTR1
PROC_KEY2:
JBK2,PROC_KEY3
JBK2,PROC_KEY3
CJNEA,#60,PROC_CONV
PROC_CONV:
ACALLCONV
PROC_KEY3:
JBK3,PROC_KEY4
JBK3,PROC_KEY2
MOVA,HOUR
CJNEA,#24,PROC_CONV1
MOVHOUR,#0
PROC_CONV1:
PROC_KEY4:
JBK4,PROC_KEY2
JBK4,PROC_KEY2
JNBK4,$
SETBTR1
PROC_RET:
RET
//按键指示灯子程序
LIGHT:
CLRLED
RET/*从这里删除掉了R6,R7,后可使用*/
//定时响铃+铃声子程序(响铃和定时时间查询合为一体)
TIMEING:
MOVA,TIMED_HOUR
CJNEA,HOUR,TIMEING_RET
MOVA,TIMED_MIN
CJNEA,MIN,TIMEING_RET
MOVA,TIMED_SEC
CJNEA,SEC,TIMEING_RET
LOOP_BELL:
CLRBELL
ACALLDELAY_1MS
ACALLDELAY_1MS
ACALLCONV
JBK4,LOOP_BELL
JNBK4,$
CPLBELL_FLAG//闹铃是为0,现在取反则为1,停止定时扫描,闹铃取消掉
SETBLED//省去这条语句,就会使响铃停止,闹铃不关闭(将LED小灯恢复到初始状态)
//加上这条语句,就会使响铃停止,闹铃被关闭(节省一点CPU资源)
TIMEING_RET:
RET
//定时时间设置程序(设置报警时间)即时间调整
BELL_SET:
ACALLBELL_CONV
BELL_KEY1:
JBK1,BELL_KEY3
JBK1,BELL_KEY3
INCTIMED_HOUR
MOVA,TIMED_HOUR
CJNEA,#24,SET_CONV
MOVTIMED_HOUR,#0
SET_CONV:
ACALLBELL_CONV//调用定时设置转换程序
AJMPBELL_KEY1
BELL_KEY3:
JBK3,BELL_KEY4
JBK3,BELL_KEY1
INCTIMED_MIN
CJNEA,#60,SET_CONV1
MOVTIMED_MIN,#0
SET_CONV1:
BELL_KEY4:
JBK4,BELL_KEY1
JBK4,BELL_KEY1
//定时时间转换程序
BELL_CONV:
MOVSMG_SUF,A//定时时钟--->
小时十位
MOVA,B
MOVSMG_SUF+1,A//定时时钟--->
小时个位
//1MS延时程序
DELAY_1MS:
MOVR5,#5
LOOP2_1MS:
MOVR6,#100
LOOP1_1MS:
NOP
DJNZR6,LOOP1_1MS
DJNZR5,LOOP2_1MS
//10MS延时程序
DELAY_10MS:
MOVR2,#40
LOOP2:
MOVR3,#250
LOOP1:
NOP
DJNZR3,LOOP1
DJNZR2,LOOP2
//100MS延时程序
DELAY_100MS:
MOVR4,#10
LOOP3:
ACALLDELAY_10MS
DJNZR4,LOOP3
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H//0,1,2,3,4,5,6,7,8,9,-
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子时钟 汇编程序 电子 时钟