单片机课后题答案.docx

上传人:牧羊曲112 文档编号:3346695 上传时间:2023-03-12 格式:DOCX 页数:28 大小:50.58KB
返回 下载 相关 举报
单片机课后题答案.docx_第1页
第1页 / 共28页
单片机课后题答案.docx_第2页
第2页 / 共28页
单片机课后题答案.docx_第3页
第3页 / 共28页
单片机课后题答案.docx_第4页
第4页 / 共28页
单片机课后题答案.docx_第5页
第5页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机课后题答案.docx》由会员分享,可在线阅读,更多相关《单片机课后题答案.docx(28页珍藏版)》请在三一办公上搜索。

1、单片机课后题答案第6章习题答案 1、定时器模式2有什么特点?适用于什么场合? 答: 模式2把TL0(或TL1)配置成一个可以自动重装载的8位定时器/计数器。TL0计数溢出时不仅使溢出中断标志位TF0置1,而且还自动把TH0中的内容重新装载到TL0中。TL0用作8位计数器,TH0用以保存初值。 用于定时工作方式时间为 ,用于计数工作方式时,最大计数长度为28=256个外部脉冲。 这种工作方式可省去用户软件重装初值的语句,并可产生相当精确定时时间,特别适于作串行波特率发生器。 2、单片机内部定时方式产生频率为100KHZ等宽矩形波,假定单片机的晶振频率为12MHZ,请编程实现。 答: T0低5位:

2、1BH T0高8位:FFH MOV TMOD,#00H ;设置定时器T0工作于模式0 MOV TL0,#1BH ;设置5ms定时初值 MOV TH0,#0FFH SETB TR0 ;启动T0 LOOP:JBC TF0,L1 ;查询到定时时间到?时间到转L1 SJMP LOOP ;时间未到转LOOP,继续查询 L1:MOV TL0,#1BH ;重新置入定时初值 MOV TH0,#0FFH CPL P1.0 ;输出取反,形成等宽矩形波 SJMP LOOP ;重复循环 3、89C51定时器有哪几种工作模式?有何区别? 答:有四种工作模式:模式0,模式1,模式2,模式3 模式0:选择定时器的高8位和低

3、5位组成一个13位定时器/计数器。TL低5位溢出时向TH进位,TH溢出时向中断标志位TF进位,并申请中断。 定时时间t=(213-初值)振荡周期12;计数长度位213=8192个外部脉冲 模式1:与模式0的唯一差别是寄存器TH和TL以全部16位参与操作。定时时间t=(216-初值)振荡周期12;计数长度位216=65536个外部脉冲 模式2:把TL0和TL1配置成一个自动重装载的8位定时器/计数器。TL用作8位计数器,TH用以保存初值。TL计数溢出时不仅使TF0置1,而且还自动将TH中的内容重新装载到TL中。 定时时间t=(28-初值)振荡周期12;计数长度位28=256个外部脉冲 模式3:对

4、T0和T1不大相同 若设T0位模式3,TL0和TH0被分为两个相互独立的8位计数器。TL0为8位计数器,功能与模式0和模式1相同,可定时可计数。 TH0仅用作简单的内部定时功能,它占用了定时器T1的控制位TR1和中断标志位TF1,启动和关闭仅受TR1控制。 定时器T1无工作模式3,但T0在工作模式3时T1仍可设置为02。 4、89C51内部设有几个定时器/计数器?它们是由哪些特殊功能寄存器组成? 答:89C51单片机内有两个16位定时器/计数器,即T0和T1。 为什么昨天是个值得庆贺的日子?;T1由TH1和TL1组成。 5、定时器用作定时器时,其定时时间与哪些因素有关?作计数器时,对外界计数频

5、率有何限制? 答:定时时间与定时器的工作模式,初值及振荡周期有关。 作计数器时对外界计数频率要求最高为机器振荡频率的1/24。 6、简述定时器4种工作模式的特点,如何选择设定? 答: 模式0:选择定时器的高8位和低5位组成一个13位定时器/计数器。TL低5位溢出时向TH进位,TH溢出时向中断标志位TF进位,并申请中断。 定时时间t=(213-初值)振荡周期12;计数长度位213=8192个外部脉冲 置TMOD中的M1M0为00 模式1:与模式0的唯一差别是寄存器TH和TL以全部16位参与操作。定时时间t=(216-初值)振荡周期12;计数长度位216=65536个外部脉冲 置TMOD中的M1M

6、0为01 模式2:把TL0和TL1配置成一个自动重装载的8位定时器/计数器。TL用作8位计数器,TH用以保存初值。TL计数溢出时不仅使TF0置1,而且还自动将TH中的内容重新装载到TL中。 定时时间t=(28-初值)振荡周期12;计数长度位28=256个外部脉冲 置TMOD中的M1M0为10 模式3:对T0和T1不大相同 若设T0位模式3,TL0和TH0被分为两个相互独立的8位计数器。TL0为8位计数器,功能与模式0和模式1相同,可定时可计数。 TH0仅用作简单的内部定时功能,它占用了定时器T1的控制位TR1和中断标志位TF1,启动和关闭仅受TR1控制。 定时器T1无工作模式3,但T0在工作模

7、式3时T1仍可设置为02。 置TMOD中的M1M0为11 7、当T0用作模式3时,由于TR1已被T0占用,如何控制T1的开启和关闭? 答:用T1控制位C/T切换定时器或计数器工作方式就可以使T1运行。定时器T1无工作模式3,将T1设置为工作模式3,就会使T1立即停止计数,关闭。 8、以定时器/计数器1进行外部时间计数,每计数1000个脉冲后,定时器/计数器1转为定时工作方式,定时10ms后又转为计数方式,如此循环不止。假定 为6WHZ,用模式1编程。 解:T1为定时器时初值: T1为计数器时初值: 所以: L1:MOV TMOD,#50H ;设置T1为计数方式且工作模式为1 MOV TH1,#

8、0FCH ;置入计数初值 MOV TL1,#18H SETB TR1 ;启动T1计数器 LOOP1:JBC TF1,L2 ;查询计数溢出?有溢出转L2 SJMP LOOP1 ;无溢出转LOOP1,继续查询 L2:CLR TR1 ;关闭T1 MOV TMOD,#10H ;设置T1为定时方式且工作与模式1 MOV TH1,#0ECH ;置入定时10ms初值 MOV TL1,#78H SETB TR1 ;启动T1定时 LOOP2:JBC TF1,L1 ;查询10ms时间到?时间到,转L1 SJMP LOOP2 ;时间未到,转LOOP2,继续查询 9、一个定时器定时时间有限,如何实现两个定时器的串行定

9、时以满足较长定时时间的要求? 答:当一个定时器溢出时,设置另一个定时器的初值为0开始定时。 10、使用一个定时器,如何通过软硬件结合方法实现较长时间的定时? 答:设定好定时器的定时时间,采用中断方式用软件设置计数次数,进行溢出次数累计,从而得到较长的时间。 11、89C51定时器作定时和计数时其计数脉冲分别由谁提供? 答:作定时器时计数脉冲由89C51片内振荡器输出经12分频后的脉冲提供,作计数时计数脉冲由外部信号通过引脚P3.4和P3.5提供。 12、89C51定时器的门控信号GATE设置为1时定时器如何启动? 答:只有 (或 )引脚为高电平且由软件使TR0置1时,才能启动定时器工作。 13

10、、已知89C51单片机的fosc=6MHz, 请利用T0和P1.0输出矩形波。矩形波高电平宽50s,低电平宽300s。 解:T0采用模式2作为50s定时时的初值: 所以 作300s定时时的初值: 所以 MOV TMOD,#02H ;设置定时器T0工作于模式2 L2:CLR P1.0 ;P1.0输出低电平 MOV TH0,#6AH ;置入定时300s初值 MOV TL0,#6AH SETB TR0 ;启动T0 LOOP1:JBC TF0,L1 ;查询300s时间到?时间到,转L1 SJMP LOOP1 ;时间未到,转LOOP1,继续查询 L1:SETB P1.0 ;P1.0输出高电平 CLR T

11、R0 ;关闭T0 MOV TH0,#0E7H ;置入定时300s初值 MOV TL0,# 0E7H SETB TR0 ; 启动T0 LOOP2:JBC TF0,L2 ;查询50s时间到?时间到,转L2 SJMP LOOP2 ;时间未到,转LOOP2,继续查询 14、已知89C51单片机的fosc=12MHz, 用T1定时。试编程由P1.0和P1.1引脚分别输出周期为 2ms和500s的方波。 解:采用模式0作 定时初值: 所以 MOV R2,#04H ;R2为“250s”计数器,置入初值4 CLR P1.0 ;P1.0输出低电平 CLR P1.1 ;P1.1输出低电平 MOV TMOD,#00

12、H L2:MOV TH1,#0F8H ;置入定时250s初值 MOV TL1,#06H SETB TR1 ;启动T1 LOOP:JBC TF1,L1 ;查询250s时间到?时间到,转L1 SJMP LOOP ;时间未到,转LOOP,继续查询 L1:CPL P1.1 ;P1.1输出取反,形成周期为500s CLR TR1 ;关闭T1 DJNZ R2,L2 ;“250s”计数器减1,到1ms吗?未到转L2 CPL P1.0 ;P1.0输出取反,形成周期为2ms方波 MOV R2,#04H ;重置“250s”计数器初值4 LJMP L2 ;重复循环 15、单片机8031的时钟频率为6MHz,若要求定

13、时值分别为0.1ms,1ms,10ms,定时器0工作在模式0、模式1和模式2时,其定时器初值各应是多少? 解: 0.1ms 模式0: T0低5位01110B=0EH T0高8位:11111110B=FEH 模式1: 模式2: 1ms 模式0: T0低5位01100B=0CH T0高8位:11110000B=F0H 模式1: 模式2: 在此情况下最长定时为512s,无法一次实现定时1ms,可用0.1ms循环10次 10ms 模式0: T0低5位11000B=18H T0高8位:01100011B=63H 模式1: 模式2:在此情况下最长定时为512s,无法一次实现定时10ms,可用0.1ms循环

14、100次 16、89C51单片机的定时器在何种设置下可提供三个8位计数器定时器?这时,定时器1可作为串行口波特率发生器。若波特率按9600b/s,4800b/s,2400b/s,1200b/s,600b/s,100b/s来考虑,则此时可选用的波特率是多少?设fosc=12MHz。 解:当T0为模式3,T1为模式2时,可提供3个8位定时器。 可选100b/s 17、试编制一段程序,功能为:当P1.2引脚的电平上跳时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平下跳时,停止计数,并将计数值写入R6,R7。 解: MOV TMOD,#05H ;T0为计数方式且工作于模式1 JNB P1.2,$

15、 ;等待P1.2引脚电平上跳 MOV TH0,#00H ; P1.2电平上跳,置入计数初值 MOV TL0,#00H SETB TR0 ;启动T0 JB P1.2,$ ;等待P1.2引脚电平下跳 CLR TR0 ;电平下跳,关闭T0 MOV R7,TH0 ;计数初值写入R7,R6 MOV R6,TL0 18、 设fosc=12MHz。试编制一段程序,功能为:对定时器T0初始化,使之工作在模式2,产生200s定时,并用查询T0溢出标志的方法,控制 P1.0输出周期为2ms的方波。 解:T0作定时器时初值: 所以 程序1: CLR P1.0 ;P1.0输出低电平 MOV R2,#05H ;R2为“

16、200s”计数器,置入初值5,计1ms MOV TMOD,#02H ;设定时器T0工作于模式2 L2:MOV TH0,#38H ;置入定时初值 MOV TL0,#38H SETB TR0 ;启动T0 LOOP:JBC TF0,L1 ;查询200s时间到?时间到,转L1 SJMP LOOP ;时间未到,转LOOP,继续查询 L1:CLR TR0 ;关闭T0 DJNZ R2,L2 ;“200s”计数器减1,到1ms吗?未到,转L2 CPL P1.0 ;到1ms,P1.0取反,形成周期为2ms的方波 MOV R2,#05H ;重置“200s”计数器初值 LJMP L2 ;重复循环 程序2: MAIN

17、:MOV TMOD,#02H ;设定时器T0工作于模式2 CLR P1.0 ;P1.0输出低电平 LOOP1:MOV R2,#05H ;R2为“200s”计数器,置入初值5,计1ms LOOP:MOV TH0,#38H ;置入定时初值 MOV TL0,#38H SETB TR0 ;启动T0 JNB TF0,$ ;查询200s时间到?时间到,继续查询 CLR TR0 ;关闭T0 DJNZ R2,LOOP ;“200s”计数器减1,到1ms吗?未到,转LOOP CPL P1.0 ;到1ms,P1.0取反,形成周期为2ms的方波 SJMP LOOP1 ;重复循环 19、以中断方法设计单片机秒、分脉冲

18、发生器。假定P1.0每秒产生1个机器周期的正脉冲,P1.1每分产生1个周期的正脉冲。 参考书上例题6-6 第七章 第7章 习题 1、什么是串行异步通信,它有哪些作用? 答:在异步串行通信中,数据是一帧一帧传送的,每一帧的数据格式参考书。通信采用帧格式,无需同步字符。存在空闲位也是异步通信的特征之一。 2、89C51单片机的串行口由哪些功能部件组成?各有什么作用? 答:89C51单片机的串行接口由发送缓冲期SBUF,接收缓冲期SBUF、输入移位寄存器、串行接口控制器SCON、定时器T1构成的波特率发生器等部件组成。 由发送缓冲期SBUF发送数据,接收缓冲期SBUF接收数据。串行接口通信的工作方式

19、选择、接收和发送控制及状态等均由串行接口控制寄存器SCON控制和指示。定时器T1产生串行通信所需的波特率。 3、简述串行口接收和发送数据的过程。 答:串行接口的接收和发送是对同一地址两个物理空间的特殊功能寄存器SBUF进行读和写的。当向SBUF发“写”命令时,即向缓冲期SBUF装载并开始TXD引脚向外发送一帧数据,发送完便使发送中断标志位TI=1。 在满足串行接口接收中断标志位RI=0的条件下,置允许接收位REN=1,就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1。当发读SBUF命令时,便由接收缓冲期SBUF取出信息通过89C51内部总线送CPU。 4、89C51串行口

20、有几种工作方式?有几种帧格式?各工作方式的波特率如何确定? 答:89C51串行口有4种工作方式: 方式0,方式1,方式2,方式3。 有2种帧格式:10位,11位 方式0:方式0的波特率fosc/12(波特率固定为振荡频率1/12) 方式2:方式2波特率2SMOD/64fosc 方式1和方式3:方式1和方式3波特率2SMOD/32(T1溢出速率) 如果T1采用模式2则: 5、若异步通信接口按方式3传送,已知其每分钟传送3600个字符,其波特率是多少? 答:已知每分钟传送3600个字符,方式3每个字符11位,则: 波特率=660b/s 6、89C51中SCON的SM2,TB8,RB8有何作用? 答

21、:89c51SCON的SM2是多机通信控制位,主要用于方式2和方式3.若置SM2=1,则允许多机通信。 TB8是发送数据的第9位,在方式2或方式3中,根据发送数据的需要由软件置位或复位。它在许多通信协议中可用作奇偶校验位;在多机通信中作为发送地址帧或数据帧的标志位。 RB8是接收数据的第9位,在方式2或方式3中接收到的第9位数据放在RB8位。它或是约定的奇偶校验位,或是约定的地址/数据标示位。 7、设fosc11.059MHz,试编写一段程序,其功能为对串行口初始化,使之工作与方式1,波特率为1200b/s;并用查询串行口状态的方法,读出接收缓冲器的数据并回送到发送缓冲器。 解: START:

22、MOV SCON,#40H ;串行接口工作于方式1 MOV TMOD,#20H ;定时器T1工作于模式2 MOV TH1,#0E8H ;赋定时器计数初值 MOV TL1,#0E8H SETB TR1 ;启动定时器T1 MOV A,SBUF ;读出接收缓冲器数据 MOV SBUF,A ;启动发送过程 JNB TI,$ ;等待发送完 CLR TI ;清TI标志 SJMP $ ;结束 8、若晶振为11.0592MHz,串行口工作与方式1,波特率为4800b/s。写出用T1作为波特率发生器的方式字和计数初值。 解: MOV TMOD,#20H ;定时器T1工作于模式2 MOV TH1,#0FAH ;赋

23、定时器计数初值 MOV TL1,#0FAH 9、为什么定时器T1用作串行口波特率发生器时,常选用工作模式2?若已知系统时钟频率和通信用的波特率,如何计算其初值? 答:因为工作模式2是自动重装初值定时器,编程时无需重装时间参数,比较使用。若选用工作模式0或工作模式1,当定时器T1溢出时,需在中断服务程序中重装初值。 已知系统时钟频率fosc和通信用的波特率fbaud,可得出定时器T1模式2的初值 10、若定时器T1设置成模式2作波特率发生器,已知fosc6MHz。求可能产生的最高和最低的波特率。 解:最高波特率为T1定时最小值时,此时初值为255,并且SMOD=1,有: 最高波特率为T1定时最大

24、值时,此时初值为0,并且SMOD=0,有: 11、串行通信的总线标准是什么?有哪些内容? 答:美国电子工业协会正式公布的串行总线接口标准有RS-232C,RS-422,RS-423和RS-485等。 在异步串行通信中应用最广的标准总线是RD-232C。它包括了按位串行传输的电气和机械方面的规定,如适用范围、信号特性、接口信号及引脚说明等,适用于短距离或带调制解调的通信场合。采用RS-422, RS-485标准时,通信距离可达1000m。 12、简述单片几多机通信的原理。 答:当一片89C51与多片89C51通信时,所有从机的SM2位都置1.主机首先发送的一帧数据为地址,即某从机机号,其中第9位

25、为1,所有的从机接收到数据后,将其中第9位装入RB8中。各从机根据收到的第9位数据的值来决定从机可否再接收主机的信息。若=0,说明是数据帧,则使接收中断标志位RI=0,信息丢失;若=1说明是地址帧,数据装入SBUF并置RI=1,中断所有从机,只有被寻址的目标从机清除SM2,以接收主机发来的一帧数据。其他从机仍然保持SM2=1. 13、当89C51串行口按工作方式1进行串行数据通信时。假定波特率为1200b/s,以中断方式传送数据。请编写全双工通信程序。 解:设系统时钟频率fosc=6.0MHZ。查教材表9-2可知,可取SMOD=0,T1的计数初值为F3H。程序如下: ORG 0000H AJM

26、P MAIN ;上电,转向主程序 ORG 0023H ;串行口的中断入口地址 AJMP SERVE ;转向中断服务程序 ORG 0040H ;主程序 MAIN: MOV SP,#60H ;设置堆栈指针 MOV SCON ,#50H MOV PCON ,#00H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1 MOV R0 ,#20H ;置发送数据区首地址 MOV R1 ,#40H ;置接收数据区首地址 MOV R7 ,#10H ;置发送字节长度 MOV R6 ,#10H ;置接收字节长度 SETB ES ;允许串行口中断 SETB EA ;

27、CPU允许中断 MOV A ,R0 ;取第一个数据发送 MOV SBUF ,A ;发送第一个数据 SJMP $ ;等待中断 SERVE: JNB RI ,SEND ;TI=1,为发送中断 CLR RI MOV A ,SBUF ;读出接收缓冲区内容 MOV R1 ,A ;读入接收缓冲区 DJNZ R6 ,L1 ;判断数据块发送完否 SJMP L2 ;数据块接收完,转L2 L1:INC R1 ;修改数据区指针 L2:RETI ;中断返回 SEND: CLR TI ;清除发送中断标志 DJNZ R7 ,L3 ;判断数据块发送完否 SJMP L4 ;数据块接收完,转L4 L3: MOV A ,R0 ;

28、取数据发送 MOV SBUF ,A ;发送数据 INC R0 ;修改数据地址 L4: RETI ;中断返回 END 14、以89C51串行口按工作方式3进行串行数据通信。假定波特率为1200b/s,第9数据位作奇偶校验位,以中断方式传送数据。请编写通信程序。 解: ORG 0000H AJMP MAIN ;上电,转向主程序 ORG 0023H ;串行口的中断入口地址 AJMP STOP ;转向中断服务程序 ORG 0040H ;主程序 MAIN: MOV SP,#60H MOV TMOD,#20H MOV TH1,#0E8H MOV TL1,#0E8H SETB TR1 MOV SCON ,#

29、0D0H MOV PCON ,#00H MOV R0 ,#20H ;置发送数据区首地址 MOV R1 ,#40H ;置接收数据区首地址 SETB ES ;允许串行口中断 SETB EA ;CPU允许中断 MOV A ,R0 MOV C, PSW.0 ;PC CPL C MOV TB8 ,C MOV SBUF ,A ;发送第一个数据 SJMP $ STOP: JNB RI SOUT ;TI=1,为发送中断 CLR RI MOV A ,SBUF ;读出接收缓冲区内容 MOV C ,PSW.0 ;PC CPL C ;形成奇校验 JC LOOP1 ;判断接收端的奇偶值,C=1转LOOP1 JNB RB

30、8 ,LOOP2 ;C=0,RB8=0,转LOOP2 SJMP ERROR ;C=0,RB8=1,转出错处理 LOOP1: JB RB8 ,LOOP2 ;C=1,RB8=1,转LOOP2 SJMP ERROR ;C=0,RB8=1,转出错处理 LOOP2: MOV R1 ,A ;将接收数据送入接收数据区 INC R1 ;修改数据区指针 RETI SOUT: CLR TI ;是发送中断,清除发送中断标志 INC R0 ;修改数据区指针 MOV A ,R0 MOV PSW.0, C ;PC CPL C MOV TB8 ,C MOV SBUF ,A ;发送第一个数据 RETI ERROR: 15、某

31、异步通信接口,其帧格式由1个起始位,7个数据位,1个奇偶校验位和1个停止位组成。当该接口每分钟传送1800个字符时,试计算出传送波特率。 解:该异步通信接口的帧格式为10b/字符,当该接口每分钟传送1800个字符时: 波特率=300b/s 16、串行口工作在方式1和方式3时,其波特率与fosc、定时器T1工作模式2的初值及SMOD位的关系如何?设fosc6MHz,现利用定时器T1模式2产生的波特率为110b/s。试计算定时器初值。 解:关系如下: 当波特率为110b/s,fosc6MHz,令SMOD=0,有: 17、设计一个单片机的双机通信系统,并编写通信程序。将甲机内部RAM 40H-4FH

32、存储区中去。 参考教材例题7-12 第三章 1、 指令:CPU根据人的意图来执行某种操作的命令 指令系统:一台计算机所能执行的全部指令集合 机器语言:用二进制编码表示,计算机能直接识别和执行的语言 汇编语言:用助记符、符号和数字来表示指令的程序语言 高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言 2、 见第1题 3、 操作码 目的操作数 ,源操作数 4、 寻址方式 立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址 寻址空间 程序存储器ROM 片内RAM低128B、特殊功能寄存器 工作寄存器R0-R7、A、B、C、DPTR 片内RA

33、M低128B、片外RAM 程序存储器 程序存储器256B范围 片内RAM的20H-2FH字节地址、部分SFR 5、 SFR:直接寻址,位寻址,寄存器寻址;片外RAM:寄存器间接寻址 6、 MOV A,40H ;直接寻址 A MOV R0,A ;寄存器寻址 R0 MOV P1,#0F0H ;立即数寻址 0F0P1 MOV R0,30H ;直接寻址 MOV DPTR,#3848H ;立即数寻址 3848HDPTR MOV 40H,38H ;直接寻址 40H MOV R0,30H ;直接寻址 R0 MOV P0,R0 ;寄存器寻址 P0 MOV 18H,#30H ;立即数寻址 30H18H MOV

34、A,R0 ;寄存器间接寻址 (R0) A MOV P2,P1 ;直接寻址 P2 最后结果:=38H,=40H,=38H,=0F0H,=3848H,=30H,=38H,=40H,=40H,=38H 注意:左边是内容,右边是单元 7、 用直接寻址,位寻址,寄存器寻址 8、 MOV A,DATA ;直接寻址 2字节1周期 MOV A,#DATA ;立即数寻址 2字节1周期 MOV DATA1,DATA2 ;直接寻址 3字节2周期 MOV 74H,#78H ;立即数寻址 3字节2周期 如果想查某一指令的机器码,字节数或周期数可查阅书本后面的附录A 9、 MOV A,R0 ;(R0)=80HA MOV

35、R0,40H ;(40H)=08H(R0) MOV 40H,A ;(A)=8040H MOV R0,#35H ;35HR0 最后结果:=35H =80H,=08H,=80H 10、用直接寻址,位寻址,寄存器寻址 11、只能采用寄存器间接寻址 12、低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址 高128字节:直接寻址,位寻址,寄存器寻址 13、采用变址寻址 14、压缩BCD码在进行加法运算时应逢十进一,而计算机只将其当作十六进制数处理,此时得到的结果不正确。用DA A指令调整 15、用来进行位操作 16、ANL A,#17H ;83H17H=03HA ORL 17H,A ;34H0

36、3H=37H17H XRL A,R0 ;03H37H=34H CPL A ;34H求反等于CBH 所以=CBH 17、SETB ACC.0或SETB E0H ;E0H是累加器的地址 (2)CLR ACC.7 CLR ACC.6 CLR ACC.5 CLR ACC.4 (3)CLR ACC.6 CLR ACC.5 CLR ACC.4 CLR ACC.3 18、MOV 27H,R7 MOV 26H,R6 MOV 25H,R5 MOV 24H,R4 MOV 23H,R3 MOV 22H,R2 MOV 21H,R1 MOV 20H,R0 19、MOV 2FH,20 MOV 2EH,21 MOV 2DH

37、,22 20、CLR C MOV A,#5DH ;被减数的低8位A MOV R2,#B4H ;减数低8位R2 SUBB A,R2 ;被减数减去减数,差A MOV 30H,A ;低8位结果30H MOV A,#6FH ;被减数的高8位A MOV R2,#13H ;减数高8位R2 SUBB A,R2 ;被减数减去减数,差A MOV 31H,A ;高8位结果30H 注意:如果在你的程序中用到了进位位,在程序开始的时候要记得清0进位位 21、A10 CJNE A,#0AH,L1 ;与10比较,不等转L1 LJMP LABEL ;相等转LABEL L1:JNC LABEL ;大于10,转LABEL 或者

38、: CLR C SUBB A,#0AH JNC LABEL A10 CJNE A,#0AH,L1 ;与10比较,不等转L1 RET ;相等结束 L1:JNC LABEL ;大于10,转LABEL RET ;小于10,结束 或者: CLR C SUBB A,#0AH JNC L1 RET L1:JNZ LABEL RET A10 CJNE A,#0AH,L1 ;与10比较,不等转L1 L2:LJMP LABEL ;相等转LABEL L1:JC L2 ;小于10,转L2 RET 或者: CLR C SUBB A,#0AH JC LABEL JZ LABEL RET 22、=23H,=3412H 参

39、看书上80页 23、=27H,=48H,=23H,=3456H 参看书上79页 24、不能。ACALL是短转指令,可调用的地址范围是2KB。 在看这个题的时候同时看一下AJMP指令。同时考虑调用指令ACALL和LCALL指令和RET指令的关系。 25、 MOV R2,#31H ;数据块长度R2 MOV R0,#20H ;数据块首地址R0 LOOP:MOV A,R0 ;待查找的数据A CLR C ;清进位位 SUBB A,#0AAH ;待查找的数据是0AAH吗 JZ L1 ;是,转L1 INC R0 ;不是,地址增1,指向下一个待查数据 DJNZ R2,LOOP ;数据块长度减1,不等于0,继续

40、查找 MOV 51H,#00H ;等于0,未找到,00H51H RET L1:MOV 51H,#01H ;找到,01H51H RET 26、 MOV R2,#31H ;数据块长度R2 MOV R0,#20H ;数据块首地址R0 LOOP:MOV A,R0 ;待查找的数据A JNZ L1 ;不为0,转L1 INC 51H ;为0,00H个数增1 L1:INC R0 ;地址增1,指向下一个待查数据 DJNZ R2,LOOP ;数据块长度减1,不等于0,继续查找 RET 27、 MOV DPTR,#SOURCE ;源首地址DPTR MOV R0,#DIST ;目的首地址R0 LOOP:MOVX A,

41、DPTR ;传送一个字符 MOV R0,A INC DPTR ;指向下一个字符 INC R0 CJNE A,#24H,LOOP ;传送的是“$”字符吗?不是,传送下一个字符 RET 28、 MOV A,R3 ;取该数高8位A ANL A,#80H ;取出该数符号判断 JZ L1 ;是正数,转L1 MOV A,R4 ;是负数,将该数低8位A CPL A ;低8位取反 ADD A,#01H ;加1 MOV R4,A ;低8位取反加1后R4 MOV A,R3 ;将该数高8位A CPL A ;高8位取反 ADDC A,#00H ;加上低8位加1时可能产生的进位 MOV R3,A ;高8位取反加1后R3

42、 L1: RET 29、 CLR C ;清进位位C MOV A,31H ;取该数低8位A RLC A ;带进位位左移1位 MOV 31H,A ;结果存回31H MOV A,30H ;取该数高8位A RLC A ;带进位位左移1位 MOV 30H,A ;结果存回30H 30、 MOV R2,#04H ;字节长度R2 MOV R0,#30H ;一个加数首地址R0 MOV R1,#40H ;另一个加数首地址R1 CLR C ;清进位位 LOOP:MOV A,R0 ;取一个加数 ADDC A,R1 ;两个加数带进位位相加 DA A ;十进制调整 MOV R0,A ;存放结果 INC R0 ;指向下一个

43、字节 INC R1 ; DJNZ R2,LOOP ;数据块长度减1,不等于0,继续查找 RET 31、 MOV R2,#08H ;数据块长度R2 MOV R0,#30H ;数据块目的地址R0 MOV DPTR,#2000H ;数据块源地址DPTR LOOP:MOVX A, DPTR ;传送一个数据 MOV R0,A INC DPTR ;指向下一个数据 INC R0 ; DJNZ R2,LOOP ;数据块长度减1,没传送完,继续传送 RET 32、MOV R0,0FH ;2字节,2周期 4字节4周期 MOV B,R0 ;2字节,2周期 MOV R0,#0FH ;2字节,1周期 4字节3周期 MO

44、V B,R0 ;2字节,2周期 MOV B,#0FH ;3字节,2周期 3字节2周期 33、功能是将片内RAM中50H51H单元清0。 7A0A 7850 DAFC 34、 INC R0 ;=00H INC R0 ;=7FH INC R0 ;=39H INC DPTR ;=10FFH INC DPTR ;=1100H INC DPTR ;=1101H 35、解:=53H =54H =41H =52H =54H =12H =34H =30H =00H =70H 36、MOV R0,#40H ;40HR0 MOV A,R0 ;98HA INC R0 ;41HR0 ADD A,R0 ;98H+=47

45、HA INC R0 MOV R0,A ;结果存入42H单元 CLR A ;清A ADDC A,#0 ;进位位存入A INC R0 MOV R0,A ;进位位存入43H 功能:将40H,41H单元中的内容相加结果放在42H单元,进位放在43H单元,=43H,=1,=98H,=AFH,=47H,=01H 37、 MOV A,61H ;F2HA MOV B,#02H ;02HB MUL AB ;F2HO2H=E4HA ADD A,62H ;积的低8位加上CCHA MOV 63H,A ;结果送62H CLR A ;清A ADDC A,B ;积的高8位加进位位A MOV 64H,A ;结果送64H 功能

46、:将61H单元的内容乘2,低8位再加上62H单元的内容放入63H,将结果的高8位放在64H单元。=02H,=01H,=F2H,=CCH,=B0H,=02H 39、MOV A,XXH ORL A,#80H MOV XXH,A 40、MOV A,XXH MOV R0,A XRL A,R0 第五章 1、什么是中断和中断系统?其主要功能是什么? 答:当CPU正在处理某件事情的时候,外部发生的某一件事件请求CPU迅速去处理,于是,CPU暂时中止当前的工作,转去处理所发生的事件,中断服务处理完该事件以后,再回到原来被终止的地方,继续原来的工作。这种过程称为中断,实现这种功能的部件称为中断系统。功能: 使计

47、算机具有实时处理能力,能对外界异步发生的事件作出及时的处理 完全消除了CPU在查询方式中的等待现象,大大提高了CPU的工作效率 实现实时控制 2、试编写一段对中断系统初始化的程序,使之允许INT0,INT1,TO,串行口中断,且使T0中断为高优先级中断。 解:MOV IE,#097H MOV IP,#02H 3、在单片机中,中断能实现哪些功能? 答:有三种功能:分时操作,实时处理,故障处理 4、89C51共有哪些中断源?对其中端请求如何进行控制? 答:89C51有如下中断源 :外部中断0请求,低电平有效 :外部中断1请求,低电平有效 T0:定时器、计数器0溢出中断请求 T1:定时器、计数器1溢出中断请求 TX/RX:串行接口中断请求 通过对特殊功能寄存器TCON、SCON、IE、IP的各位进行置位或复位等操作,可实现各种中断控制功能 5、什么是中断优先级?中断优先处理的原则是什么? 答:中断优先级是CPU相应中断的先后顺序。原则: 先响应优先级高的中断请求,再响应优先级低的 如果一个中断请求已经被响应,同级的其它中断请求将被禁止 如果同级的多个请求同时出现,则CPU

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号