北京交通大单片机第4章参考答案.docx
- 文档编号:11404193
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:35
- 大小:267.60KB
北京交通大单片机第4章参考答案.docx
《北京交通大单片机第4章参考答案.docx》由会员分享,可在线阅读,更多相关《北京交通大单片机第4章参考答案.docx(35页珍藏版)》请在冰点文库上搜索。
北京交通大单片机第4章参考答案
3-5指出下列指令中45H代表什么。
MOVA,#45H
MOVA,45H
MOV45H,46H
MOVC,45H
MOVA,#45H中的45H代表立即数45H,该立即数为16进制。
MOVA,45H中的45H代表直接地址45H单元。
MOV45H,46H中的45H代表目的操作数所指定的单元为45H。
MOVC,45H中的45H代表45H位。
3-6分析下列程序执行的结果。
(1)MOVA,#60H
MOVR0,#40H
MOV@R0,A
MOV41H,R0
XCHA,R0
执行结果为:
(A)=40H(R0)=60H(40H)=60H(41H)=40H
(2)MOVDPTR,#2003H
MOVA,#18H
MOV20H,#38H
MOVR0,#20H
XCHA,@R0
执行结果为:
(DPH)=20H(DPL)=03H(A)=38H(20H)=18H
(R0)=20H
(3)MOV20H,#01H
MOVA,20H
INCA
CPLA
MOVDPTR,#2000H
MOVX@DPTR,A
执行结果为:
(20H)=01H(A)=FDH(DPTR)=2000H
(2000H)=FDH
3-8按要求写出相应的指令。
(1)把寄存器R6的内容送到累加器A中。
(2)把外部RAM1000H单元的内容传送到内部RAM30H单元中。
(3)清除内部RAM3FH单元的高4位。
(4)使累加器A的最低位置1。
(5)清除进位位。
(6)使ACC.4和ACC.5置1。
(7)把外部ROM2000H单元中的内容送到内部RAM的20H单元中。
(8)把外部ROM2000H单元中的内容送到外部RAM的3000H单元中。
(1)MOVA,R6
(2)MOVDPTR,#1000H
MOVXA,@DPTR
MOVR0,#30H
MOV@R0,A
(3)ANL3FH,#0FH
(4)ORLA,#01H
(5)CLRC
(6)ORLA,#30H
(7)CLRA
MOVDPTR,#2000H
MOVCA,@A+DPTR
MOV20H,A
(8)CLRA
MOVDPTR,#2000H
MOVCA,@A+DPTR
MOVDPTR,#3000H
MOVX@DPTR,A
3-10编写程序段完成如下要求。
(1)将寄存器R0中的内容乘以10(积小于256)。
(2)将片内RAM30H单元开始的15个字节的数据传送到片外RAM3000H开始的单元中。
(3)将片外RAM2000H开始的5个字节的数据传送到片内RAM20H开始的单元中。
(4)有10个字节的二进制数存放在片内RAM以40H开始的单元内,编程找出其中的最大值并存于内部50H单元中。
(5)将片外RAM空间2000H~200AH中的数据的高4位变零,低4位不变,原址存放。
(6)将外部RAM2040H单元的内容与3040H单元的内容互换。
(1)MOVB,#0AH
MOVA,R0
MULAB
MOVR0,A
(2)ORG0000H
MOVR0,#30H
MOVDPTR,#3000H
MOVR7,#0FH
LOOP:
MOVA,@R0
MOVX@DPRT,A
INCR0
INCDPTR
DJNZR7,LOOP
SJMP$
END
(3)MOVDPTR,#2000H
MOVR0,#20H
MOVR7,#05H
LOOP:
MOVXA,@DPTR
MOV@R0,A
INCR0
INCDPTR
DJNZR7,LOOP
SJMP$
END
(4)ORG0000H
MOV50H,40H;50H放最大值,且初始化最大值(默认第一个数)
MOVR3,#09H;比较次数
MOVR0,#41H
START:
MOVA,@R0
CJNEA,50H,LOOP
LOOP:
JCLOOP1;如果A比50H的值小,则跳转到LOOP1
MOV50H,@R0;如果比50H的值大,则更新50H(最大值)的值
LOOP1:
INCR0
DJNZR3,START
SJMP$
END
(5)MOVDPTR,#2000H
MOVR1,#0BH
LOOP:
MOVXA,@DPTR
ANLA,#0FH
MOVX@DPTR,A
INCDPTR
DJNZR1,LOOP
SJMP$
(6)MOVDPTR,#2040H
MOVXA,@DPTR
MOVR0,#20H
MOV@R0,A
MOVDPTR,#3040H
MOVXA,@DPTR
XCHA,@R0
MOVX@DPTRA
MOVA,@R0
MOVDPTR,#2040H
MOVX@DPTR,A
3-15设有一带符号的十六位数以补码形式存放在R2、R3寄存器中,试编制求其原码的程序。
ORG0000H
START:
MOVA,R3
JBACC.7,NEXT;判读符号位,如果是正数则原码与补码一样,如果为负,求原码的方法是符号位不变,其余位取反加1
MOVR3,A
HERE:
SJMP$
NEXT:
XRLA,#7FH;高八位,符号位不变,其余取反
MOVR3,A;放回R3
MOVA,R2;低八位
XRLA,#0FFH;取反
ADDA,#01H;加1
MOVR2,A;放回R2
MOVA,R3;看低八位是否有向高八位进位
ADDCA,#00H
MOVR3,A
SJMP$
END
3-16设有一不带符号的十六进制数组,存放在8031单片机片内RAM以BUFFER为首址的连续单元中,其长度为30个字节,要求统计小于10,等于10及大于10的数的个数,并把它们分别存放到片内RAM的LESS、EQUAL、BIG单元中,试编制实现上述要求的程序并画出相应的流程图。
ORG0000H
BUFFERDATA10H
LESSDATA30H
EQUALDATA31H
BIGDATA32H
MOVR0,#BUFFER
MOVR7,#1EH
MOVLESS,#00H
MOVEQUAL,#00H
MOVBIG,#00H
NEXT:
CJNE@R0,#0AH,LOOP1;循环次数
INCEQUAL
AJMPLOOP3
LOOP1:
JCLOOP2
INCBIG
AJMPLOOP3
LOOP2:
INCLESS
LOOP3:
INCR0
DJNZR7,NEXT
SJMP$
END
3-17在外部RAM1000H单元开始的存储区域存放着10个用ASCII码表示的0~9之间的数字,请编程将它们转换成BCD码,然后存放在2000H~2004H单元(以压缩BCD码存放)。
方法一:
ORG0000H
MOVR2,#05H
MOVDPTR,#1000H
MOVR0,#20H
LOOP:
MOVXA,@DPTR
ANLA,#0FH
MOVR4,A
INCDPTR
MOVXA,@DPTR
ANLA,#0FH
SWAPA
ADDA,R4
MOV@R0,A
INCR0
INCDPTR
DJNZR2,LOOP
MOVR5,#05H
MOVR0,#20H
MOVDPTR,#2000H
LOOP1:
MOVA,@R0
MOVX@DPTR,A
INCR0
INCDPTR
DJNZR5,LOOP1
SJMP$
END
方法二:
ORG0000H
MOVR2,#05H
MOVDPTR,#1000H
MOVR1,#20H
LOOP:
MOVXA,@DPTR
ANLA,#0FH
MOVR4,A
INCDPTR
MOVXA,@DPTR
ANLA,#0FH
SWAPA
ADDA,R4
MOVP2,#20H
MOVX@R1,A
INCDPTR
INCR1
DJNZR2,LOOP
SJMP$
END
3-18设有50个无符号8位二进制数,存放在8031单片机内部RAM以BOFER为首址的连续单元中,试编制将其中最小数存放到内部RAM的MIN单元的程序并画出相应的流程图。
BOFERDATA20H
MINDATA60H
ORG0000H
MOVR2,#31H;循环49次
MOVR1,#BOFER+1
MOVMIN,BOFER;把最小值放MIN,且初始化时把第一个数放入MIN
LOOP:
MOVA,@R1
CJNEA,MIN,LOOP1
LOOP1:
JNCLOOP2;@R1>MIN
MOVMIN,@R1;MIN>@R1,MIN要更新
LOOP2:
INCR1
DJNZR2,LOOP
SJMP$
END
3-19设有一字符串存放在8031单片机内部RAM以20H为首址的连续单元中,字符串以回车结束。
要求统计该字符串中字符B(‘B’=42H)的个数,并将其存入外部RAM的40H单元中。
试编写实现上述要求的程序并画出相应的流程图。
ORG0000H
MOVR0,#20H
MOVR1,#00H;‘B’的个数初始化
LOOP:
MOVA,@R0
CJNEA,#0DH,LOOP1;判断是否结束(回车键)
MOVDPTR,#0040H;把结果放外部RAM中
MOVA,R1
MOVX@DPTR,A
SJMP$
LOOP1:
CJNEA,#42H,NEXT;不为B则跳转
INCR1;为B则使计数器加1
NEXT:
INCR0
AJMPLOOP
END
3-23已知MDA和MDB单元内分别存有两个小于10的整数a和b,试用查表子程序实现c=a2+2ab+b2,并把和存于MDC和MDC+1单元中(MDC单元中放低字节,MDC+1单元中放高字节)。
ORG0000H
MDADATA20H
MDBDATA21H
MDCDATA22H
MOVA,MDA
ACALLSQR
MOVR2,A
MOVA,MDB
ACALLSQR
ADDA,R2
MOVR2,A;a2+b2结果暂时放入R2
MOVB,MDA;下面算2*a*b
MOVA,MDB
MULAB
RLA
ADDA,R2
MOVMDC,A
CLRA
ADDCA,#00H
MOVMDC+1,A
SJMP$
SQR:
ADDA,#01H
MOVCA,@A+PC
RET
SQRTAB:
DB0149162536496481100
END
3-25设有一长度为20H的字符串,存放在8031单片机片内RAM以10H为首地址的连续单元中,试编制将其中数字与字母分开并将它们分别送到以30H和50H为首地址的连续单元中的程序。
g
ORG0000H
MOVR2,#20H;循环次数
MOVR1,#10H
MOV60H,#30H;数字存储首地址
MOV61H,#50H;字母存储首地址
LOOP:
MOVA,@R1
CJNEA,#40H,NEXT
NEXT:
JNCNEXT1;如果是字母则跳转到NEXT1
MOVR0,60H;是数字,把数字的存储地址给R0
MOV@R0,A
INC60H
SJMPLOOP1
NEXT1:
MOVR0,61H
MOV@R0,A;是字母,把字母的存储地址给R0
INC61H
LOOP1:
INCR1
DJNZR2,LOOP
SJMP$
END
4-3外端口有哪两种编址方法?
各有什么特点?
答:
微型计算机对I/O端口进行编址的方式有两种:
单独编址和统一编址。
1.外设端口单独编址
特点:
(1)需要专用I/O指令,实现CPU和外设间数据传送。
(2)I/O端口的地址独立,外设不占用存储器的地址。
2.外设端口与存储器统一编址
特点:
(1)无需专用I/O指令
(2)I/O端口地址是内存地址中的一部分,外设的地址可在内存的空间中灵活安排。
4-4I/O数据有哪四种传送方式?
各有什么特点?
CPU与外设之间的数据传送方式有无条件传输方式、查询方式、中断方式和DMA方式。
1.无条件传输方式
无条件传送又称为同步传送或直接传送方式。
CPU在与外设进行数据交换时,外设随时处于准备好的状态,这样CPU不必查询外设的状态,也不必等待,而是直接进行数据的输入输出。
2.查询传输方式
查询传输方式也称为异步传输、条件传输方式。
采用查询方式时,CPU每次与外设进行数据传输前,都要先读取状态端口的信息,查询外设是否准备就绪,只有在外设处于“就绪”状态时,才能向外设的数据端口发送数据或从其中读取数据,如果外设未就绪,就需要CPU原地循环等待外设完成准备工作,所以CPU的工作效率不高。
3.中断传输方式
在中断传输方式中,以外设为主动方,每次外设准备好就可以向CPU发出一次中断请求,使CPU暂停当前正在执行的程序,转去与外设进行一次数据传输工作,当完成了本次数据的输入或输出后,再回到原先被打断的地方继续执行原来的程序。
中断方式可以大大提高CPU的效率和系统的实时性。
4.DMA方式
DMA方式即直接存储器存取方式,是一种在DMA控制器的控制下实现的外设与存储器之间的直接数据传输方式。
在整个DMA传输过程中,是不需要CPU参与的,完全是通过硬件逻辑电路用固定的顺序发地址和读写信号来实现的,数据不需要经过CPU而是在外设和存储器之间高速传输。
4-58051内部的并行I/O口有哪些?
各有什么功能?
1.P0口:
P0口的第一功能是作为通用I/O口使用。
P0口的第二功能是作为地址(低8位地址)/数据总线的复用口。
2.P1口:
P1口的第一功能是作为通用I/O口使用
3.P2口:
P2口的第一功能是通用I/O口
P2口的第二功能是作为地址总线,输出高8位地址信号,与P0口输出的低8位地址组合,共同完成外部存储器单元16位地址信号的输出。
4.P3口:
P3口的第一功能是通用I/O口,且各引脚有不同的第二功能。
见下表:
口线
第二功能
信号名称
P3.0
RXD
串行数据接收
P3.1
TXD
串行数据发送
P3.2
————————INT0
外部中断0申请
P3.3
——I——N——T——1
外部中断1申请
P3.4
T0
定时器/计数器0计数输入
P3.5
T1
定时器/计数器1计数输入
P3.6
————WR
外部RAM写选通
P3.7
——R——D
外部RAM读选通
4-8中断处理的过程是怎样的?
CPU与外设之间一个完整的可屏蔽中断传输过程包括:
中断请求、中断响应、中断处理和中断返回。
CPU执行中断服务程序的过程如图4-7所示。
4-98051单片机有几个中断源?
各自对应的中断标志是什么?
对应的中断服务子程序入口地址是什么?
IE寄存器的作用是什么?
8051单片机提供5个中断源,其中2个外部中断,2个定时器/计数器中断,1个串行口中断。
外部中断
/
以各自引脚上输入低电平或负跳变信号作为中断触发事件。
当检测到外部中断请求时,外部中断的标志IE0/IE1被置为1
定时器/计数器中断是由8051内部的定时器/计数器计满溢出产生的。
T0或T1计满溢出时,中断标志TF0或TF1被置1.
串行口中断包括发送中断和接收中断,当串行口接收完一组数据时,串行口接收中断标志RI被置1;当串行口发送完一组数据时,串行口发送中断标志TI被置1。
8051中断入口地址表:
中断源
中断服务程序入口
0003H
定时器T0
000BH
0013H
定时器T1
001BH
串行口中断
0023H
IE寄存器:
通过中断允许寄存器IE可以对中断实现两级控制。
每个中断源都对应有各自的中断屏蔽位,当中断屏蔽位为1时允许中断,当中断屏蔽位为0时禁止中断;IE寄存器还有一个总中断允许位EA,对整个中断系统进行开中断或关中断的控制。
4-16设单片机时钟为12MHz,请利用定时器T0编出令P1.0引脚输出2ms的矩形波程序,要求占空系数为1:
2(高电平时间短)。
高电平:
2ms/3=667μs
初值:
低电平:
初值:
ORG0000H
AJMPMAIN
ORG000BH
AJMPT0INT
MAIN:
MOVTMOD,#01H;T0选择工作方式1,16位定时器
MOVTH0,#0FDH;初始化T0值
MOVTL0,#65H
MOVIE,#82H;开T0中断,开总中断
SETBTR0;启动T0定时器
SETBP1.0
SJMP$
T0INT:
MOVC,P1.0
JCNEXT;判断P1.0的高低电平
MOVTH0,#0FDH;P1.0为低则装入高电平的初始值
MOVTL0,#65H
SJMPCOM
NEXT:
MOVTH0,#0FAH;P1.0为高则装入低电平的初始值
MOVTL0,#0CBH
COM:
CPLP1.0
RETI
END
4-17已知8051单片机内部RAM中以10H为起始地址的数据区有50个字节,要求每隔100ms向内部RAM中以70H为起始地址的数据区传送10个字节,通过5次传送完毕。
要求采用定时器T1定时,单片机时钟为12MHz,请编写程序。
定时器50ms,循环2次可得100ms,设定初值3CB0H
ORG0000H
AJMPMAIN
ORG001BH
AJMPBRT1
MAIN:
MOVTMOD#10H;T1选择工作方式1,16位定时器
MOVTH1,#3CH;计数器初始化
MOVTL1,#0B0H
MOVR1,#10H
MOVR0,#70H
MOVR2,#05H;传送次数
MOVR3,#02H;定时两次,每次50ms
MOVIE,#88H;开T1中断,开总中断
SETBTR1;启动T1计数器
LOOP:
SJMP$
BRT1:
MOVTH1,#3CH;重装定时50ms
MOVTL1,#0B0H
DJNZR3,DONE
MOVR3,#02H
DJNZR2,LOOPD
CLRET1;传送数据完毕,关闭T1中断
CLRTR1;停止T1
SJMPDONE
LOOPD:
MOVR4,#10;每次传10个字节
LOOP1:
MOVA,@R1
MOV@R0,A
INCR1
INCR0
DJNZR4,LOOP1
DONE:
RETI
END
4-18异步通信和同步通信的主要区别是什么?
MCS-51串行口有没有同步通信功能?
异步通信是字符帧通信:
通信原理:
1、发送/接收端有两个相互独立时钟源;2、接收端检测到RXD线的低电平(起始位)接收端便知发送端已开始发送。
同步通信靠同步头通信:
通信原理:
接收端检测RXD线上有同步头便知对方已开始发送。
MCS-51串行口无同步通信功能。
4-21串行通信有哪几种制式?
各有什么特点?
通信方式可分为:
单工通信、半双工通信与全双工通信。
(1)单工通信只支持数据在一个方向上传输
(2)半双工通信允许数据在两个方向上传输,但在同一时刻,只允许数据在一个方向上传输
(3)全双工通信允许数据同时在两个方向上传输,即通信的双方可以同时发送和接收数据。
4-22、MCS-51串行口工作方式有哪4种?
如何设定?
串行口的工作方式有方式0、方式1、方式2和方式3四种工作方式。
(1)方式0:
在方式0下,方式0时SM2位必须为0。
其波特率是固定的,为
。
(2)方式1:
在方式1下,串行口为10位通用异步接口。
(3)方式2:
在方式2下,串行口为11位通用异步接口。
先根据通信协议用软件设置TB8。
其信息传送波特率与SMOD有关。
(4)方式3:
方式3为波特率可变的11位异步通信方式。
4-26请用中断法编出串行口方式1下的接收程序。
设8051单片机主频为6MHz,波特率为600b/s,接收数据缓冲器在外部RAM,起始地址为RBLOCK,接收数据区长度为30,采用偶校验(数据块长度不发送)。
主程序:
设ACC.7为偶校验位。
RBLOCKDATA2000H
LENDATA30H
ORG0000H
LJMPSTART
ORG0023H
LJMPRXSVE
START:
MOVTMOD,#20H;T1为方式2
MOVTL1,#0E6H;时间常数初值送T1
MOVTH1,#0E6H;波特率为600bps
MOVPCON,#00H;SMOD=0
SETBTR1;启T1,以上设置T1作为串口波特率发生器
MOVSCON,#50H;串口方式1,允许接收
MOVDPTR,#RBLOCK;接收数块始址送DPTR
MOVR2,LEN;块长送R2
SETBEA;开所有中断
SETBES;允许串口中断
WAIT:
SJMPWAIT;等待中断
ORG0150H
RXSVE:
CLRES;关串口中断
CLRRI;清接收中断标志
MOVA,SBUF;读接收缓冲区中内容
MOVC,P;取出校验位
JCERROR;若有错,则转ERROR
ANLA,#7FH;无就删去校验位
MOVX@DPTR,A;送入接收缓冲区
DJNZR2,NEXT;若接收未完,则NEXT
CLREA;关所有中断
RETI;中断返回
NEXT:
INCDPTR;接收区指针加1
SETBES;重开串口中断
RETI;中断返回
ERROR:
…….;出错处理ERROR,本题未给具体程序
RETI
END
当PCON的值为80H时(SMOD=1),定时器初值应设TH1为0CCH,TL1为0CCH。
5-8要在单片机片外扩展16KB数据存储器,选择其地址为0000~3FFFH。
如选用6264为存储器芯片,74LS138为译码器,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京 交通 单片机 参考答案