2022年单片机第讲2.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

1.每行代码的含义?

SETBPT1

SETBPX0

CLRPS

SETBET1

SETBEX0

CLRIT0

SETBEA;ORG0000H

MOV20H,#0AH

LOOP2:JBP3.

若前后两次读的(THX)有变化,则再重复上述过程,这次重复读得的内容就应是正确的。

LOOP1:JNBTF0,LOOP1 ;

MOV42H,A

T1定义为方式2定时。

CLRTR1 ;

MAIN:MOVTMOD,#27H;

SETBET0

89C51有一个全双工的串行接口,两个物理上独立地接收和发送缓冲器,可同时收、发数据,内部结构如下图。

因为:(216-X)×2×10-6=10-1

MOVTH0,#3CH

2特殊功能寄存器PCON

data为波特率常数;

;6.4定时器/计数器的编程和应用

4种工作方式中,方式0与方式1基本相同,由于方式0是为兼容MCS-48而设,初值计算复杂,在实际应用中,一般不用方式0,而采用方式1。

6.4.1方式1应用

例6-1假设系统时钟频率采用6MHz,要在上输出一个周期为2ms的方波,如图所示。

;方波的周期用T0来确定,让T0每隔1ms计数溢出1次,既T0每隔1ms产生一次中断,CPU相应中断后,在中断服务程序中对取反。

(1)计算初值X

设初值为X,则有:

(216-X)×2×10-6=1×10-3

216-X=500X=65036

X化为16进制,即

所以,T0的初值为:

TH0=0FEHTL0=0CH

(2)初始化程序设计;主要是对寄存器IP、IE、TCON、TMOD的相应位进行正确设置,将计数初值送入定时器中。

(3)程序设计

中断服务程序除了完成要求的产生方波这一工作之外,还要注意将计数初值重新装入定时器中,为下一次产生中断作准备。

参考程序:

ORG0000H

RESET:AJMPMAIN;转主程序

ORG000BH;T0的中断入口

AJMPIT0P ;转T0中断处理程序IT0P

ORG0100H

MAIN:MOVSP,#60H;设堆栈指针

MOVTMOD,#01H ;设置T0为方式1; ACALLPT0M0 ;调用子程序PT0M0

HERE:AJMPHERE ;自身跳转

PT0M0:MOVTL0,#0CH ;T0中断服务程序,T0重新置初值

MOVTH0,#0FEH

SETBTR0 ;启动T0

SETBET0 ;允许T0中断

SETBEA;CPU开中断

RET

ITOP:MOVTL0,#0CH;T0中断服务子程序,T0置初值

MOVTH0,#0FEH

的状态取反

RETI

查询方式的参考程序:

MOVTMOD,#01H;设置T0为方式1; SETBTR0;接通T0

LOOP:MOVTH0,#0FEH ;T0置初值

MOVTL0,#0CH

LOOP1:JNBTF0,LOOP1 ;查询TF0标志 CLRTR0 ;T0溢出,关闭T0

的状态求反

SJMPLOOP

例6-2假设系统时钟为6MHz,编写定时器T0产生1秒定时的程序。

(1)T0工作方式的确定

因定时时间较长,采用哪一种工作方式?

由各种工作方式的特性,可计算出:

ms;

;ms;

方式2最长可定时512?s。

选方式1,每隔100ms中断一次,中断10次为1s。

(2)计算计数初值

因为:(216-X)×2×10-6=10-1

所以:X=15536=3CB0H

因此:TH0=3CH,TL0=B0H

(3)10次计数的实现

对于中断10次计数,可使T0工作在计数方式,也可用循环程序的方法实现。本例采用循环程序法。

(4)程序设计

参考程序:; ORG0000H

RESET:LJMPMAIN ;上电,转主程序入口MAIN

ORG000BH;T0的中断入口

LJMPIT0P ;转T0中断处理程序IT0P

O

文档评论(0)

192****9635 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档