通用仪器仪表程序Word格式.docx
- 文档编号:16365647
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:18
- 大小:18.54KB
通用仪器仪表程序Word格式.docx
《通用仪器仪表程序Word格式.docx》由会员分享,可在线阅读,更多相关《通用仪器仪表程序Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
SETBTR1;
开定时器T1
SETBPX1;
外部中断1溢出中断优先
KEY:
MOVA,P1;
判断是否有键按下
ANLA,#0FH
JNBACC.0,DD
JNBACC.1,DD
JNBACC.2,DD
JNBACC.3,DD
SJMPKEY
/************************时钟芯片初始化******************************/
DSINIT:
MOVDPTR,#7F0BH;
设置寄存器B,芯片停止工作
MOVA,#82H
MOVX@DPTR,A
MOVDPTR,#7F00H;
秒设置
MOVA,#00H
MOVDPTR,#7F02H;
分设置
MOVA,#30H
MOVDPTR,#7F04H;
小时设置
MOVA,#08H
MOVDPTR,#7F06H;
星期设置
MOVA,#02H
MOVDPTR,#7F07H;
日设置
MOVA,#21H
MOVDPTR,#7F08H;
月设置
MOVA,#04H
MOVDPTR,#7F09H;
年低位设置
MOVA,#09H
MOVX@DPTR,A
MOVDPTR,#7F0EH;
年高位设置
MOVA,#20H
MOVDPTR,#7F0AH;
寄存器A设置
MOVDPTR,#7F0CH;
读寄存器C
MOVXA,@DPTR
MOVDPTR,#070DH;
读寄存器D
设置寄存器B,芯片开始工作
MOVA,#12H
RET
/**********按键确认**************/
DD:
LCALLDL10MS;
延时去抖动
MOVA,P1
JNBACC.0,TQ1
JNBACC.1,TQ2
JNBACC.2,TQ3
JNBACC.3,TQ4
TQ1:
MOVA,P1;
判断按键1是否弹起
JBACC.0,DD1
SJMPTQ1
TQ2:
判断按键2是否弹起
JBACC.1,DD2
SJMPDD2
TQ3:
判断按键3是否弹起
JBACC.2,TQ3
SJMPDD3
TQ4:
判断按键4是否弹起
JBACC.3,TQ4
SJMPDD4
DD1:
LCALLDL10MS;
按键1延时去抖动
JBACC.0,KEY1
LJMPKEY
DD2:
按键2延时去抖动
JBACC.1,KEY2
DD3:
按键3延时去抖动
JBACC.2,KEY3
DD4:
按键4延时去抖动
JBACC.3,KEY4
/**********切换显示内容**************/
KEY4:
MOVA,60H;
按键4处理,切换显示内容
D:
CJNEA,#00H,V;
切换至日期
MOV60H,#08H
V:
CJNEA,#08H,T;
切换至电压
MOV60H,#10H
T:
CJNEA,#10H,D;
切换至时间
MOV60H,#00H
/**********进入/退出设置**************/
KEY1:
MOVA,60H
CJNEA,#10H,USE;
若此时显示的是电压,则为无效按键
LJMPKEY
USE:
MOVA,64H
CJNEA,#00H,OUT
IN:
INCA;
进入设置,标志位置1
MOV64H,A
CLREX0;
关读时钟中断
MOV63H,#3FH;
初始末两位闪烁
OUT:
MOVA,#00H;
退出设置,标志位置0
LCALLNEW;
将修改后的新时间写入时钟芯片
SETBEX0
不闪烁
/**********闪烁位选择**************/
KEY2:
CJNEA,#01H,VAIN2;
判断是否设置状态
MOVA,63H;
若在设置状态,闪烁位置左移两位
RRA
MOV63H,A
VAIN2:
LJMPKEY;
若不在设置状态,无效按键
/**********调整时间**************/
KEY3:
CJNEA,#01H,VAIN3;
LCALLDECIDE;
若在设置状态,则判断修改内容并修改
VAIN3:
/**判断修改的内容**/
DECIDE:
判断显示内容
CJNEA,#00H,AGAIN;
60H中内容为00H,则修改时间
TIME:
MOVA,63H
CJNEA,#00111111B,TAGAIN1;
末两位闪烁时,修改秒
LCALLSECOND
RET
TAGAIN1:
CJNEA,#11001111B,TAGAIN2;
五、六闪烁时,修改分
LCALLMINUTE
TAGAIN2:
CJNEA,#11110011B,TAGAIN3;
三、四闪烁时,修改小时
LCALLHOUR
TAGAIN3:
LCALLWEEK;
一、二闪烁时,修改星期
AGAIN:
CJNEA,#08H,VAIN31;
60H中内容为08H时,则修改日期
DATE:
CJNEA,#00111111B,DAGAIN1;
末两位闪烁时,修改日
LCALLDAY
DAGAIN1:
CJNEA,#11001111B,DAGAIN2;
五、六闪烁时,修改月
LCALLMONTH
DAGAIN2:
CJNEA,#11110011B,DAGAIN3;
三、四闪烁时,修改年低位
LCALLYEARL
DAGAIN3:
LCALLYEARH;
一、二闪烁时,修改年高位
VAIN31:
RET;
60H中内容为10H时,则为无效按键
/**加1修改**/
SECOND:
MOVA,30H;
秒加1
ADDCA,#1
DAA
CJNEA,#60H,SYICHU
SYICHU:
MOV30H,A
MINUTE:
MOVA,31H;
分加1
CJNEA,#60H,MIYICHU
MIYICHU:
MOV31H,A
HOUR:
MOVA,32H;
小时加1
CJNEA,#24H,HYICHU
HYICHU:
MOV32H,A
WEEK:
MOVA,33H;
星期加1
CJNEA,#08H,WYICHU
MOVA,#01H
WYICHU:
MOV33H,A
DAY:
MOVA,34H;
日加1
CJNEA,#32H,DYICHU
DYICHU:
MOV34H,A
MONTH:
MOVA,35H;
月加1
CJNEA,#12H,MYICHU
MYICHU:
MOV35H,A
YEARL:
MOVA,36H;
年低位加1
CJNEA,#99H,YLYICHU
YLYICHU:
MOV36H,A
YEARH:
MOVA,37H;
年高位加1
CJNEA,#99H,YHYICHU
YHYICHU:
MOV37H,A
/**新时间**/
NEW:
PUSHACC
PUSHDPH
PUSHDPL
MOVA,30H
MOVA,31H
MOVA,32H
MOVA,33H
MOVA,34H
MOVA,35H
年设置
MOVA,36H
MOVA,37H
POPDPL
POPDPH
POPACC
/************************中断读时钟******************************/
DS12887:
关闭中断
CLREA
PUSHACC
PUSHPSW
PUSHDPL;
保存ACC等参数
CLRPSW.3
SETBPSW.4;
选择工作状态10,防止冲突
读秒寄存器并存在30H单元
MOV30H,A
读分寄存器并存在31H单元
MOV31H,A
读小时寄存器并存在32H单元
MOV32H,A
读星期寄存器并存在33H单元
MOV33H,A
读日寄存器并存在34H单元
MOV34H,A
读月寄存器并存在35H单元
读年寄存器并存在36H,37H单元
MOV36H,A
MOVDPTR,#7F0EH
MOV37H,A
读寄存器C清除中断标志位
MOVXA,@DPTR
开中断
POPPSW
POPACC;
取回中断前ACC等参数值
RETI
/************************中断显示******************************/
DISPLAY:
PUSHACC;
中断显示程序
PUSHPSW
CLRPSW.4
SETBPSW.3;
选择工作状态01,防止冲突
CLREA;
CLRTR0
MOVTL0,#17H
LCALLCHULI;
处理寄存器内的内容
MOVR0,#40H;
显示内容段码的存放的首地址
选择显示内容
ADDA,R0
MOVR0,A
MOVR7,#80H;
显示位码的初始值,1为有效
MOVA,61H;
设置闪烁间隔时间存放在61H中,为0.25ms
INCA
MOV61H,A
CJNEA,#020H,shine;
间隔时间到,亮灭进行转换
MOVA,62H;
亮灭状态控制,存放在62H中
XRLA,#0FFH;
与1异或,按位取反
MOV62H,A
将61H重新清零
shine:
MOVA,62H
CJNEA,#00H,on;
62H为00H时,则亮
CJNEA,#0FFH,off;
62H位FFH时,则灭
on:
MOVA,R7;
位码送A
MOVDPTR,#0DFFFH;
取位码口地址
MOVX@DPTR,A;
位码口输出位码
MOVA,@R0;
段码送A
MOVDPTR,#TAB;
查表得到显示代码
MOVCA,@A+DPTR
MOVDPTR,#0BFFFH;
取段码口地址
段码口输出段码
LCALLDL1MS;
调用0.5ms延迟
INCR0;
指向下一个显示单元
MOVA,R7
MOVR7,A;
指向下一个位码
CJNEA,#80H,on;
一次循环未完成,则显示下一位
SETBTR0
SETBEA
off:
ANLA,63H
CJNEA,#80H,off;
/**********缓冲区数据处理**************/
CHULI:
缓冲区的首地址
MOVR1,#30H
MOVR7,#08H
course:
MOVA,@R1
MOV@R0,A
INCR0
ANLA,#0F0H
SWAPA
INCR1
DJNZR7,course;
全部内容转换未完成,继续
/************************中断读电压值******************************/
VOLTAGE:
CLRTR1
CLREA
设置寄存器工作组为11,防止冲突
SETBPSW.4
MOVA,TL1
SUBBA,#10H;
计数器1读取的计数值减10000
MOVR7,A
MOVA,TH1
SUBBA,#27H
MOVR6,A
MOVTL1,#0
MOVTH1,#0
LCALLCHANGE;
调用十六进制转十进制程序
LCALLVDISPLAY;
对转换后的电压值进行处理
SETBTR1
/**********十六进制转十进制程序**************/
CHANGE:
CLRA;
十六进制转十进制BCD
MOVR3,A
MOVR4,A
MOVR5,A
MOVR2,#10H
LOOP:
RLCA
MOVA,R6
MOVA,R5
ADDCA,R5
MOVA,R4
ADDCA,R4
MOVA,R3
ADDCA,R3
MOVR3,A
DJNZR2,LOOP
/**********电压值的处理**************/
VDISPLAY:
PUSHPSW
SETBPSW.3
MOV55H,#0BH;
AD数据处理程序
JBP1.7,VALUE;
判断是否为负
MOV55H,#0AH
VALUE:
MOV57H,#0BH
MOV56H,#0BH;
第一二位不显示
MOVR1,#50H
MOVA,R5;
末两位拆字处理
ANLA,#0FH
MOV@R1,A
INCR1
MOVA,R4;
五、六位拆字处理
MOVA,R3;
第四位拆字处理
ADDA,#0CH
MOV@R1,A
/************************查表及延迟程序******************************/
DL1MS:
MOVR6,#250;
1ms延时程序
DLT:
NOP
DJNZR6,DLT
DL10MS:
MOVR6,#0FFH;
10ms延时程序
DL41T:
MOVR5,#8H
DL40T:
DJNZR5,DL40T
DJNZR6,DL41T
TAB:
DB5FH,06H,3BH,2FH,66H;
段码表
DB6DH,7DH,07H,7FH,6FH
DB20H,00H,0DFH,86H
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通用 仪器仪表 程序