最新51单片机定时汇编程序Word格式.docx

上传人:b****3 文档编号:14888104 上传时间:2022-10-25 格式:DOCX 页数:23 大小:21.37KB
下载 相关 举报
最新51单片机定时汇编程序Word格式.docx_第1页
第1页 / 共23页
最新51单片机定时汇编程序Word格式.docx_第2页
第2页 / 共23页
最新51单片机定时汇编程序Word格式.docx_第3页
第3页 / 共23页
最新51单片机定时汇编程序Word格式.docx_第4页
第4页 / 共23页
最新51单片机定时汇编程序Word格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

最新51单片机定时汇编程序Word格式.docx

《最新51单片机定时汇编程序Word格式.docx》由会员分享,可在线阅读,更多相关《最新51单片机定时汇编程序Word格式.docx(23页珍藏版)》请在冰豆网上搜索。

最新51单片机定时汇编程序Word格式.docx

低两位显示方式(LOW-PLAY-MOD)

HPLMODBIT3AH;

高两位显示方式(HIGH-PLAY-MOD)

BRIGHTBIT3BH;

DISPLAY子程序参数:

亮灭指示位

TCOUNTEQU3CH;

时间计数器(TIME-COUNT)

ADDRESEQU3DH;

加1子程序参数

MAXEQU3EH;

IFDECBIT20H;

BCD加法子程序参数

R_MODEQU3FH;

响铃方式参数

LED4BIT30H;

发光管状态位

BELLBITP1.7;

蜂鸣器

SWITCHBITP3.7;

继电器

FKEYBITP3.0;

功能键(S1)

MKEYBITP3.1;

修改键(S2)

WORKINBIT38H;

工作状态指示位

中断入口;

ORG0000H

START:

LJMPMAIN;

0000H引向主程序

LJMPERR;

0003H

NOP

LJMPERR;

引向出错处理程序

LJMPPGT0;

000BH引向中断处理程序PGT0

0013HINT1

LJMPERR

001BHT1

0023H

LJMPERR

LJMPERR;

002BH

************

主程序;

;

MAIN:

MOVIE,#00H;

关中断

MOVSP,#57H;

设置堆栈指针

MOVPSW,#00H;

选用寄存器组0

MOVTMOD,#11H;

设定中断工作方式为T0和T1

MOVA,56H

CJNEA,#0AAH,CSTART;

判上电复位标志,无标志转冷启动

MOVA,57H

CJNEA,#55H,CSTART;

无标志转冷启动

AJMPHSTART;

有上电复位标志转热启动

NOP

LJMPERR;

软件陷阱,引向出错处理程序

CSTART:

MOVP1,#0FFH;

冷启动,全面初始化

MOVP3,#0FFH

MOVTCON,#00H;

计时停止

MOVTL0,#0B0H;

赋中断T0初值

MOVTH0,#3CH

MOVTCOUNT,#0AH;

赋定时器初值

MOVR5,#00H;

R5为一空单元(备用)

MOVR4,#00H;

R4为工作模式选择寄存器

MOVSL,#00H;

定时单元清零

MOVSH,#00H;

MOVML,#00H;

MOVMH,#00H;

MOVHL,#00H;

MOVHH,#00H;

MOVPLYTS,#64H;

赋显示次数初值为100次

MOVDSPLYP,#L0;

显示指针指向显存单元

MOVL0,#0AH;

送显示数据"

-----"

MOVL1,#0AH

MOVL2,#0AH

MOVL3,#04H

SETBLED4;

LED4为数码管之间的发光二极管

SETBLPLMOD;

设定显示方式为闪烁

SETBHPLMOD;

SETBBRIGHT;

允许显示

CLRWORKIN;

清工作标志,待命

AJMPSETUP;

转开始工作

软件陷阱

HSTART:

MOVSCON,#00H;

有上电标志,热启动,清串行口控制寄存器

MOVIP,#00H;

清中断优先控制寄存器

SETBFKEY;

重设按键

SETBMKEY

SETBEA;

开中断

AJMPBEGIN;

转向继续工作

LJMPERR;

SETUP:

MAIN1:

ACALLDISPLY;

调用显示

JBFKEY,JUDGE;

按键扫描

ACALLKEYDLY;

延时消抖动

无键按下转向判断是否到点

CLRET0;

功能键被按下,则

CLRTR0;

暂停计时

ACALLMENU;

调用菜单设置程序

BEGIN:

SETBWORKIN;

置工作标志位,开始工作

SETBET0;

SETBTR0;

开始计时

MOVA,R4;

移入工作模式选择

RLA;

指针放大

MOVDPTR,#M_TAB

JMP@A+DPTR;

根据工作模式跳转到相应程序段

M_TAB:

AJMPWORK1

AJMPWORK2

AJMPWORK3

AJMPWORK4

NOP

LJMPERR;

WORK1:

WORK2:

CLRSWITCH;

工作方式1和2:

开继电器

AJMPMAIN2

WORK3:

WORK4:

SETBSWITCH;

工作方式3和4:

不开继电器

MAIN2:

CLRBELL;

蜂鸣器短鸣一声,以示开始工作

ACALLDL05S

SETBBELL

JUDGE:

JNBWORKIN,MAIN1;

判断是否在定时之中

MOVA,SL;

判断秒是否为零

JNZMAIN1

MOVA,SH;

MOVA,ML;

判断分是否为零

MOVA,MH;

MOVA,HL;

判断时是否为零

MOVA,HH;

JNZMAIN1;

若时分秒全为零则

CLRET0;

停止计时

CLRTR0;

ACALLACTION;

调用到点工作子程序

AJMPMAIN;

返回

倒计时程序;

PGT0:

CLREA;

PUSHACC;

保护现场

PUSHPSW

PUSHDPL

PUSHDPH

MOVPSW,#08H;

选用寄存器组1

CLRTR0;

MOVA,#0B7H;

中断同步修正

ADDA,TL0

MOVTL0,A

MOVA,#3CH

ADDA,TH0

MOVTH0,A

SETBTR0;

恢复计时

DECTCOUNT;

定时器T0每50000毫秒溢出一次,则

MOVA,TCOUNT;

溢出10次为0.5秒

JNZOUTT0;

判断是否到半秒

MOVTCOUNT,#0AH;

CPLLED4;

若到半秒LED取反

JNBLED4,OUTT0;

LED每闪烁一次是一秒

MOVR0,#SH;

移入秒位的地址

SETBIFDEC;

BCD子程序参数,使其做减法

ACALLADDBCD;

调用BCD子程序,秒减1

CJNER3,#99H,OUTT0;

判断秒要否借位

MOVSH,#05H;

要借位则

MOVSL,#09H;

送数据59(否则显示99)

MOVR0,#MH;

移入分位的地址

分减1

判断分要否借位

MOVMH,#05H

MOVML,#09H

MOVR0,#HH

ACALLADDBCD

OUTT0:

POPDPH;

恢复现场

POPDPL

POPPSW

POPACC

SETBEA

RETI;

中断返回

**************************

BCD子程序(加1或减1);

ADDBCD:

MOVA,@R0;

移入被操作数的高位

DECR0;

指针减一

SWAPA

ORLA,@R0;

移入被操作数的低位

MOVB,#01H;

B寄存器送立即数#01H

MOVC,IFDEC;

若减法标志位为1,则

MOVB.3,C;

MOVB.4,C;

B寄存器的值被改为#99H

MOVB.7,C;

ADDA,B;

对一个压缩的BCD码加#99H等于对其减一

DAA;

BCD码调整

MOVR3,A;

暂存结果

ANLA,#0FH;

取低位码

MOV@R0,A;

存数

MOVA,R3;

取回结果

INCR0;

指针加一

SWAPA;

交换

取结果数的高位

RET

**************

加1程序;

ADDONE:

MOVR0,ADDRES;

移入被加数单元的地址

CLRIFDEC;

设定BCD子程序做加法

调用BCD子

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1