MCS51系列单片机系统其应用.docx

上传人:b****5 文档编号:14511288 上传时间:2023-06-24 格式:DOCX 页数:10 大小:17.25KB
下载 相关 举报
MCS51系列单片机系统其应用.docx_第1页
第1页 / 共10页
MCS51系列单片机系统其应用.docx_第2页
第2页 / 共10页
MCS51系列单片机系统其应用.docx_第3页
第3页 / 共10页
MCS51系列单片机系统其应用.docx_第4页
第4页 / 共10页
MCS51系列单片机系统其应用.docx_第5页
第5页 / 共10页
MCS51系列单片机系统其应用.docx_第6页
第6页 / 共10页
MCS51系列单片机系统其应用.docx_第7页
第7页 / 共10页
MCS51系列单片机系统其应用.docx_第8页
第8页 / 共10页
MCS51系列单片机系统其应用.docx_第9页
第9页 / 共10页
MCS51系列单片机系统其应用.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MCS51系列单片机系统其应用.docx

《MCS51系列单片机系统其应用.docx》由会员分享,可在线阅读,更多相关《MCS51系列单片机系统其应用.docx(10页珍藏版)》请在冰点文库上搜索。

MCS51系列单片机系统其应用.docx

MCS51系列单片机系统其应用

MCS-51系列单片机系统及其应用

实验四:

时钟实验

实验内容:

在实验三的基础上,利用LED显示字型的功能,应用单片机的定时器及定时器中断功能编制一程序,让LED数码显示器上显示出按精确秒信号的节律变化的字型,即电子时钟。

b5E2RGbCAP

实验目的:

1:

掌握在RAM区内开辟显示缓冲区的方法。

2:

进一步熟悉用LED数码管显示字型程序的设计方法。

3:

掌握定时器初始值的计算方法。

4:

掌握定时器的用法以及定时器中断的控制。

5:

明确中断子程序与一般子程序的区别及联系。

6:

学会设计简单的数值比较程序,学会设计根据RAM中某一单元的内容进行查表的程序。

实验要求:

1:

设计程序时,应在内部RAM中开辟显示缓冲区,缓冲区内首先设置时钟的初始时间<12-00-00)。

p1EanqFDPw

2:

利用定时器的计数溢出产生中断,从而产生秒信号。

3:

将LED数字显示程序设计为子程序,将时、分、秒加“1”的溢出判断在中断服务子程序中进行,主程序完成初始化后一直调用显示子程序。

DXDiTa9E3d

程序的设计思路参考如下:

1:

将内部的RAM中的78H—7FH这八个单元作为显示缓冲区,将时钟要显示的初值的数字<非字型代码)置入这八个单元中,等待显示子程序利用其中的数据去查出相应的字型代码,送出显示。

RTCrpUDGiT

2:

用有寄存器间接寻址功能的工作寄存器R0作为显示缓冲区的指示器,将显示缓冲区内的数据与查表类指令发生联系,以便按显示缓冲区内的数据查表。

5PCzVD7HxA

3:

主程序初始化时首先将定时器中断的总开关关闭,选择一个定时器,设定该定时器的工作方式,将该定时器的两个计数单元赋一预先设好的初始数据。

开启所有与所选择的定时器有关的中断开关,但不启动计数器,作好准备。

jLBHrnAILg

4:

当主程序初始化完毕之后,开始调用显示子程序之前开启计数器,此时主程序即进入无休止的调用显示子程序的状态,随时准备着被定时器所中断。

xHAQX74J0X

5:

在中断子程序的入口处若有必要保护主程序在中断时主要寄存器的状态,请务必执行堆栈以保护中断时CPU的现场。

并且关闭所选择的定时器的中断允许控制位,但不要让定时计数器停止计数,重新对定时器的定时单元进行赋值<与主程序初始化时所赋的值相同)。

LDAYtRyKfE

6:

靠定时器溢出一次,不可能产生秒信号,所以要在定时器溢出发生中断,程序条入中断服务程序后,不仅要给定时器重新赋值,而且要设计一个计数器,让定时器溢出若干次,直到定时器定时的累积值达到1秒为止,然后对显示缓冲区的秒位加“1”,在加“1”之后还要判断是否产生进位,然后加以处理,结果让屏幕上所显示的数字为时钟的有效数值,即秒位与分位不能超出60,小时位则不能超出24<统一将时钟设计为24小时制)。

Zzz6ZB2Ltk

7:

为了使所设计的程序简短,建议将程序中相同的部分都设计成子程序。

参考程序二例:

参考程序

程序一

主程序略有不同,中断服务程序则大有差别,但都能实现同一个目的<电子时钟)。

dvzfvkwMI1

参考程序一:

CJC7.ASM

ORG0000H

AJMP0030H

ORG000BH;定时器中断入口地址

AJMPINTT0;跳入中断服务子程序

MAIN:

MOV78H,#00H

MOV79H,#00H

MOV7AH,#0AH

MOV7BH,#00H

MOV7CH,#00H

MOV7DH,#0AH

MOV7EH,#02H

MOV7FH,#01H;显示缓冲区初始化;-----------------------------------------rqyn14ZNXI

MOVSP,#50H;修改堆栈指针

MOVR0,#78H;给定显示缓冲区首地址

MOVTMOD,#01H;设置定时器的定时方式

MOVTH0,#17H

MOVTL0,#0B8H;预置定时初值

SETB8CH

SETB0AFH

SETB0A9H;开中断、启动定时器

MOVR6,#08H

LOOP0:

LCALLDISP;调用显示子程序

SJMPLOOP0;----------------------------------

DISP:

MOVR1,#01H

LOOP1:

MOVA,@R0

MOVCA,@A+DPTR

MOVP0,A

MOVP1,R1;显示1个数字

ACALLDELAY

INCR0

MOVA,R1

CJNEA,#01H,LOOP1;显示8个数字

MOVR0,#78HRET。

----------------------------------

DELAY:

MOVR3,#0FFH

DJNZR3,$

MOVR4,#0FFH

DJNZR4,$

RET;0.5毫秒延时。

----------------------------------EmxvxOtOco

DATA:

DB0C0H,0F9H,0A4H

DB0B0H,99H,92H

DB82H,0F8H,80H

DB90H,0BFH;显示字型代码表

-----------------------------------

INTT0:

MOVTH0,#17H;中断服务程序

MOVTL0,#0B8H;定时器再次预置初值

PUSHACC

PUSHPSW;保护现场

SETBPSW.3

MOVA,30H

DECA

MOV30H,A

JNZRETO;到1秒否?

MOV30H,#08H

-------------------------------------

MOVR0,#79H

ACALLADD1;秒加“1”

MOVA,R2

XRLA,#60;到60秒否?

JNZRETO

ACALLCLR0;秒位清零

-------------------------------------

MOVR0,#7CH

ACALLADD1;分加“1”

MOVA,R2

XRLA,#60

JNZRETO;到60分否?

ACALLCLR0;分位清零

---------------------------------

MOVR0,#7FH

ACALLADD1;小时加“1”

MOVA,R2

XRLA,#24

JNZRETO;到24小时否?

ACALLCLR0;小时位清零

;-----------------------------------

RETO:

POPPSW

POPACC;恢复现场

RETI;中断返回

-----------------------------------

ADD1:

MOVA,@R0;加“1”子程序

DECR0

SWAPA

ORLA,@R0;合并字节

ADDA,#01H;加“1”

DAA

MOVR2,A

ANLA,#0FH;坼分字节

MOV@R0,A;放入显示缓冲区

MOVA,R2

INCR0

ANLA,#0F0H

SWAPA

MOV@R0,A;放入显示缓冲区

RET

-----------------------------------

CLR0:

CLRA

MOV@R0,A

DECR0

MOV@R0,A

RET;清零子程序

---------------------------------------------------SixE2yXPq5

参考程序二:

CJC8.ASM

ORG0000H

AJMP000EH;主程序入口

ORG000BH;定时器中断程序入口

AJMPINTT0;跳入中断服务程序

ORG000EH

MAIN:

MOV78H,#00H

MOV79H,#00H

MOV7AH,#0AH

MOV7BH,#00H

MOV7CH,#00H

MOV7DH,#0AH

MOV7EH,#02H

MOV7FH,#01H;显示缓冲区初始化

MOVR0,#78H

MOVTMOD,#01H

MOVTH0,#17H

MOVTL0,#0B8H

SETBTR0

SETBET0

SETBEA;定时器的控制

MOVR6,#08H

LOOP0:

LCALLDISP;调用显示程序

SJMPLOOP0

;------------------------------------------

DISP:

MOVR1,#01H;显示子程序

LOOP1:

MOVA,@R0

MOVCA,@A+DPTR

MOVP0,A

MOVP1,R1

ACALLDELAY

INCR0

MOVA,R1

RLA

MOVR1,A

CJNEA,#01H,LOOP1

MOVR0,#78H

RET

----------------------------------

DELAY:

MOVR3,#0FFH

DJNZR3,$

MOVR4,#0FFH

DJNZR4,$

RET;显示用延时程序

---------------------------------------

DATA:

DB0C0H,0F9H,0A4H

DB0B0H,99H,92H

DB82H,0F8H,80H

DB90H,0BFH;显示字型代码表

-----------------------------------

INTT0:

MOVTH0,#17H;中断服务程序

MOVTL0,#0B8H

PUSHACC

DJNZR6,RETO

INC78H

MOVA,78H

CJNEA,#0AH,RETO

MOV78H,#00H

INC79H

MOVA,79H

CJNEA,#06H,RETO

MOV79H,#00H

INC7BH

MOVA,7BH

CJNEA,#0AH,RETO

INC7CH

MOVA,7CH

CJNEA,#06H,RETO

MOV7CH,#00H

INC77H

INC7EH

MOVA,77H

CJNEA,#24,TEET

-------------------------------

RETO:

MOV77H,#00H

MOV7EH,#00H

MOV7FH,#00H

POPACC

RETI

-----------------------------------

REET:

MOVA,7EH

CJNEA,#0AH,RETO

MOV7EH,#00H

INC7FH

MOVA,7FH

CJNEA,#03H,RETO

AJMPRETO;加“1”及判断程序

注意:

以上二程序仅供参考,不过稍加思考即可使程序成功地运行,请大家务必注意程序设计中的细节部分,吾故如此,旨在让大家悉心思考之,以便学习。

6ewMyirQFL

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2