单片机基础修订本答案

上传人:仙*** 文档编号:78881290 上传时间:2022-04-22 格式:DOC 页数:12 大小:54.53KB
收藏 版权申诉 举报 下载
单片机基础修订本答案_第1页
第1页 / 共12页
单片机基础修订本答案_第2页
第2页 / 共12页
单片机基础修订本答案_第3页
第3页 / 共12页
资源描述:

《单片机基础修订本答案》由会员分享,可在线阅读,更多相关《单片机基础修订本答案(12页珍藏版)》请在装配图网上搜索。

1、单片机基础问答题答案:第2章1、.8051单片机芯片包含哪些主要逻辑功能部件?各有什么主要功能?答: CPU:控制单片机各部份协调工作进行算术和逻辑运算内部数据存储器:存储数据内部程序存储器:存储程序定时器/计数器,并行I/O口串行口,中断控制系统,时钟电路2、MCS51单片机的EA信号有何功能?在使用8031时EA信号引脚应如何处理?答:访问程序存储器控制信号,EA=0访问外部程序存储器,EA=1访问内部程序存储器。8031无内部程序存储器,所以EA接地。3、MCS51 单片机有哪些信号需要芯片引脚以第二功能的方式提供?答:P3口,ALE/PROG(30脚),EA/VPP(31脚), RST

2、/VPD(9脚)4、内部RAM低128单片划分为哪3个主要部分?说明各部分的使用特点?答: 1.寄存器区, 可寄存器寻址 2.位寻址区 ,可位寻址 3.用户RAM区,其单元地址为30H7FH,一般还把堆栈开辟在用户RAM区5、程序计数器(PC)作为不可寻址寄存器,它有哪些特点?答:PC是一个16位的计数器。其内容为将要执行的指令地址,寻址范围达64KB。有以下功能:A.自动加1功能,从而实现程序的顺序执行。 B.上电复位功能。 C.能接收内部数据总线上来的数据,主要通过转移,调用,返回等指令改变其内容以实现程序的转移,转移范围216=64K=65536。 PC没有地址,是不可寻址的。6、堆栈有

3、哪些功能?堆栈指示器(SP)的作用是什么?在程序设计时,为什么还要对SP重新赋值?答:堆栈是一种数据结构,堆栈的最大特点就是“后进先出”的数据操作规则。堆栈是为子程序调用和中断操作而设立的。其具体功能有两个:保护断点和保护现场。堆栈指示器SP的作用是指示栈顶地址。程序设计时一般把SP值初始化为30H以后,因为复位时,SP初始化为07H,而这里是寄存器区和位寻址区。 7、MCS51的4个I/O口在使用上有哪些分工和特点?试比较各口的特点?答: P1口:只有一种功能通用I/O口 P2口:通用I/O口和地址总线高八位 P3口:一种功能通用I/O口和第二功能状态 P0口:一种功能通用I/O口和复用总线

4、8、MCS51单片机运行出错或程序进入死循环,如何摆脱困境?答:按复位键以重新启动。9、什么是指令周期,机器周期和时钟周期?如何计算机器周期的确切时间?答:执行一条指令所需的时间称之为指令周期, 机器周期就是振荡脉冲的十二分频, 时钟周期定义为状态(用S表示),2个振荡脉冲。10、使单片机复位有哪几种方法?复位后机器的初始状态如何?答:复位操作有上电自动复位和按键手动复位两种方式。按键手动复位有电平方式和脉冲方式两种。它们的复位状态如下:PC 0000H TCON 00HACC 00H TL0 00HPSW 00H TH0 00HSP 07H TL1 00HDPTR 0000H TH1 00H

5、P0P3 FFH SCON 00HIP xx000000B SBUF 不定IE 0x000000B PCON 0xxx0000bTMOD 00H -单片机基础编程题答案:第4章1、把长度为10H的字符串从内部RAM的输入缓冲区inbuf向设在外部RAM 输出缓冲区outbuf进行传送,一直进行到遇见回车符CR或整个字符传送完毕。 ORG 0030H MOV R0,#inbuf MOV R1,#outbuf MOV R4,#10H LOOP:MOV A,R0;从内部RAM取数CJNE A,#0DH,LL;是否为回车符CR SJMP STOP;是转停止传送 LL: MOVX R1,A;不是则传送到

6、外部RAM INC R0 INC R1 DJNZ R4,LL;沒传送完则循环STOP: SJMP $2、内部RAM从list单元开始存放一正数表,表中之数作无序排列,并以“-1”作结束标志。编程实现在表中找出最小数。 ORG 0030H MOV R0,#list MOV A,R0;取第一个正数 LOOP: INC R0;指向下一个正数 MOV 3AH,R0 CJNE A,3AH,CHK;前一个数与后一个数比较CHK: JC LOOP1;前一个数小,则转 MOV A,R0;前一个数大,取后一个数LOOP1: XCH A,3AH CJNE A,#0FFH,LOOP XCH A,3AH;取最小数 M

7、OV 3BH,A SJMP $3、求8个数的平均值,这8个数以表格形式存放在从table开始的单元中。 ORG 0030H MOV R0,#table MOV R6,#07H MOV R3,#00H MOV A,R0 CLR CLOOP:INC R0 ADD A,R0;累加 JNC LOOP1 INC R3LOOP1: DJNZ R6,LOOP CLR C MOV R5,#03H MOV R2,A LOOP2: MOV A,R3;除8 RRC A MOV R3,A MOV A, R2 RRC A MOV R2,A DJNZ R5,LOOP2 4、把一个8位二进制数的各位用ASCII码表示之(亦

8、即为“0”的位用30H表示,为“1”的位用31H表示)。该数存放在内部RAM中byte单元中。变换后行到的8个ASCII码存放在外部RAM以buf始的存储单元中去。 ORG 0030H MOV R0,#byte MOV DPTR,#buf MOV R5,#08H MOV A,R0LOOP: RLC A MOV R7,A JC LOOP1 MOV A,#30H SJMP LOOP2 LOOP1: MOV A,#31H LOOP2: MOVX DPTR,A MOV A,R7 INC DPTR DJNZ R5,LOOP5、搜索一串ASCII码字符中最后一个非空格字符,字符串从外部RAM 8100H单

9、元开始存放,并用一个回车符(0DH)作结束。编程实现搜索并把搜索到的非空格字符的地址存入内部RAM单元40H和41H中,其中高字节放入41H单元。 ORG 0030H MOV DPTR,#8100H MOV 40H,#00H MOV 41H,#00HLOOP: MOVX A,DPTR INC DPTR CJNE A,#0DH,LOOP;是否为回车符loop1: mov a,dpl;dptr-1,指向0dh单元地址 clr c subb a,#01h mov dpl,a mov a,dph subb a,#00h mov dph,aloop2:mov a,dpl;dptr-1,调整单元地址 cl

10、r c subb a,#01h mov dpl,a mov a,dph subb a,#00h mov dph,a movx a,dptr;取下一个数 cjne a,#20h,loop3;是否为空格字符,不是转 sjmp loop2;是空格字符则转调整单元地址loop3: mov 40h,dpl;存最后一个非空格字符的 mov 41h,dph;地址 sjmp $ end6、比较两个ASCII码字符串是否相等。字符串的长度在内部RAM 41H单元,第一个字符串的首地址为42H,第二个字符串的首地址为52H。如果两个字符串相等,则置内部RAM 40H单元为00H;否则置40H单元为FF。 ORG

11、0030H MOV R0,#42H MOV R1,#52H MOV R7,41HLOOP: MOV A,R0 MOV 30H,R1 CJNE A,30H,LK INC R0 INC R1 DJNZ R7,LOOP MOV 40H ,#00H SJMP DD LK: MOV 40H,#0FFH DD: SJMP DD7.外部RAM首址为table的数据表中,有10个字节的数据。编程将每个字节的最高位无条件地置“1”。 ORG 0030H MOV DPTR,#table MOV R6,#10LOOP:MOVX A,DPTR SETB E7H MOVX DPTR,A INC DPTR DJNZ R6

12、,LOOP 8、 8000H开始的有200个字节的源数据区,隔一个单元送到4000H开始的数据区。在目的数据区中,每隔两个单元写一个数。如遇0DH(回车)则传送结束。 ORG 0030H MOV DPTR,#8100H;源数据区首址 PUSH DPL ;源首址暂存堆栈 PUSH DPH ; MOV DPTR,#4000H;目的数据区首址 MOV R2,DPL ;目的首址暂存寄存器 MOV R3,DPH ;MOV R7,#200LOOP:POP DPH ;取回源地址 POP DPL ; MOVX A,DPTR ;取出数据 INC DPTR ;源地址增量 INC DPTR ;隔一个单元 PUSH

13、DPL ;源地址暂存堆栈 PUSH DPH ; MOV DPL,R2 ;取回目的地址 MOV DPH,R3 ; CJNE A,#0DH,LL;是否为0DHSJMP LP ;是0DH则传送结束LL: MOVX DPTR,A ;数据送目的区 INC DPTR ;目的地址增量 INC DPTR ;隔两个单元 INC DPTR MOV R2,DPL ;目的地址暂存寄存器 MOV R3,DPH ; DJNZ R7,LOOP ;没完,继续循环 LP: RET ;返回主程序9、 输入缓冲区inbuf存有80个字节,编程实现将其中所有的组分隔符(1DH)地址依次压入separ栈中。 ORG 0030H MOV

14、 SP,#separ MOV R0,#inbuf MOV R4,#80 LOOP:MOV A,R0 CJNE A,#1DH,LPP;是否为1DH MOV 7FH,R0;是则将组分隔符 PUSH 7FH;地址依次压入separ栈中。LPP: INC R0 DJNZ R4,LOOP10、内部RAM缓冲区buffin向外部RAM buffout 传送一个字符串,遇0DH结束,置PSW的F0位为“1”;或传送完128个字符后结束,并置PSW的OV位为“0”。 ORG 0030H MOV R0,#buffin MOV DPTR ,#buffout MOV R7,#128LOOP:MOV A,R0 CJN

15、E A,#0DH,LP SJMP STOP LP:MOVX DPTR,A INC R0 INC DPTR DJNZ R7,LOOP CLR OV SJMP PPSTOP: SETB F0 PP: SJMP PP11、编写读取运行定时器中计数器值并送LED显示器的程序。可根据需要定义子程序。12、求16位带符号二进制补码数的绝对值。假定补码放在内部RAM的num和num+1单元中,求得的绝对值仍放在原单元中。 ORG 0030H MOV R0,#num+1 MOV A,R0 JNB ACC.7,KK DEC R0 MOV A,R0 MOV R0,A INC R0 MOV A,R0 CPL A A

16、DDC A,#00H MOV R0,AKK: SJMP KK13、求16位补码数的原码。16位补码数放在内部RAM的data和data+1单元中,转换后得到的原码仍放在原单元中。 ORG 0030H MOV R0,#data+1 MOV A,R0 JNB ACC.7,KK DEC R0 MOV A,R0 CPL A ADD A,#01H MOV R0,A INC R0 MOV A,R0 CPL A ADDC A,#00H MOV R0,AKK: SJMP KK14、从内部RAM 20H单元中开始存放一组带符号数,字节数存在1FH中,请统计出其中大于0,等于0和小于0的数的数目,并把统计结果分别

17、存入one 、two、three3个单元中。 ORG 0030H MOV R0,#20H MOV R7,1FH CLR A MOV one,A MOV two,A MOV three,ALOOP: MOV A,R0 JNZ KK INC two;0单元计数 SJMP KP KK: JB ACC.7,PP INC one;正数单元计数 SJMP KP PP: INC three; 負数单元计数 KP: INC R0 DJNZ R7,LOOP15、5个双字节数,存放在外部RAM从barf开始的单元中,求它们的和,并把和存放在sumg开始单元中,请编程实现。START: MOV R0,#BARF M

18、OV R1,#SUMG MOV R2,#04H MOVX A,R0 MOV R3,A INC R0 MOVX A,R0 MOV R4,ALOOP: INC R0 MOVX A,R0 ADD A,R3 MOV R3,A INC R0 MOVX A, R0 ADDC A, R4 MOV R4,A JNC HER CLR A ADDC A,#00H MOV R5,AHER: DJNZ R2,LOOP MOV A,R3 MOVX R1,A INC R1 MOV A,R4 MOVX R1,A INC R1 MOV A,R5 MOVX R1,AHERE: SJMP $16、把外部RAM中block1为首地

19、址的数据块传送到内部RAM 以block2为首地址的单元中去,数据块的长度为N字节。MOV R0,#BLOCK1 MOV R1,#BLOCK2 MOV R7,#NLOOP: MOVX A,R0 MOV R1,A INC R0 INC R1 DJNZ R7,LOOP CPL A ADD A,#01H -单片机基础问答题答案:第5章1、 在MCS-51单片机系统中,外接程序存储器和数据存储器共用16位地址线和8位数据线,为什么不会发生冲突?答:外接程序存储器和数据存储器的连接信号不同,及所使用的指令不同。外接程序存储器连接PSEN信号,数据存储器连接WR,RD信号,另外访问外接程序存储器用MOVC

20、指令,访问外接数据存储器用MOVX指令。2、 以两片Intel 2716给80C51单片机扩展一个4KB的外部程序存储器,要求地址空间与8051的内部ROM相銜接,请画出逻辑连接图。 3、 试以一片Intel 2716和一片Intel 6116组成一个既有程序存储器又有数据存储器的存储器扩展系统,请画出逻辑连接图,并说明各芯片的地址范围。 4.以译码编址方式,把4片Intel 6116组成8KB的数据存储器,请画出逻辑连接图,并说明各芯片的地址范围。-第六章 习 题 编程题和问答题1、单片机用内部定时方法产生频率为100KHZ等宽矩形波,假定单片机的晶振频率为12MHZ,请编程实现。答:定时5

21、s,方式0: X=8187 FFFBH 方式1: X=65531 FFFBH 方式2: X=251 FBH用方式2: MOV IE,#00H MOV TMOD,#02H MOV TH0,#0FBH MOV TL0,#0FBH SETB TR0LOOP: JBC TF0,LOOP1 SJMP LOOPLOOP1: CPL P1.0 SJMP LOOP2、有晶振频率为6MHZ的MCS-51单片机,使用定时器0以定时方法在P1.0输出周期为400us,占空比为10:1的矩形脉冲,以定时工作方式2编程实现。答:定时400s,占空比为10:1,以定时工作方式2编程: 高电平=40 s,低电平=360s

22、( -X )*2* = 40* X=236=0ECH ( - X ) * 2* = 360 * X=76=4CH MOV IE,#00H MOV TMOD,#02H MOV TH0,#4CH MOV TL0,#0ECH CLR TF0 SETB TR0 SETB P1.0LOOP: JBC TF0,LOOP1 SJMP LOOPLOOP1: CLR P1.0 MOV TH0,#0ECHLOOP2:JBC TF0,LOOP3 SJMP LOOP2 LOOP3: SETB P1.0 MOV TH0,#4CH LOOP4: JBC TF0 LOOP1 SJMP LOOP43、以定时器/计数器1进行外

23、部事件计数。每计数1000个脉冲后,定时器/计数器1转为定时工作方式,定时10ms后,又转为计数方式,如此循环不止。假定单片机晶振频率为6MHZ,请使用工作方式1编程实现。答:计数: -1000=64536=0FC18H 定时10ms: ( -X)*2* =10* X=60536=0EC78HLOOP:MOV IE,#00H MOV TMOD,#50H MOV TH1,#0FCH MOV TL1,#18H CLR TF1 SETB TR1 LOOP1: JBC TF1,LOOP2 SJMP LOOP1 LOOP2: MOV TMOD,#10H MOV TH1,#0ECH MOV TL1,#78

24、H CLR TF1 SETB TR1 LOOP3: JBC TF0,LOOP SJMP LOOP34、以中断方法设计单片机秒、分脉冲发生器。假定P1.0每秒钟产生一个机器周期的正脉冲,P1.1每分钟产生一个机器周期的正脉冲。答:时钟计时的关键问题是秒的产生,因为秒是最小时钟单位,但使用MCS-51的定时器/计数器进行定时,即使按方式1工作,其最大定时时间也只能达到131毫秒。离1S还差很远。为此,可把秒计时用硬件定时和软件计数相结合的方法实现,即:把定时器的定时时间定为125ms,这样计数溢出8次就可得到1s。而8次计数可用软件方法实现。 为得到125ms定时,可使用定时器/计数器0,以工作方

25、式1进行,假定单片机为6MHZ晶振,设计数初值为X,则有如下等式: ( X)2=125000 计算得计数初值X=3036=0BDCH,二进制表示为0000101111011100B (2)定时器定时采用中断方式完成,以便于通过中断服务程序进行溢出次数(每次125ms)的累计。计满8次即得到秒计时。通过在程序中的数值累加和数值比较来实现从秒到分的计时。 ORG 0000H LJMP MAIN ORG 000B LJMP PITO ORG 0030HMAIN:MOV SP,#60H ;确立堆栈区 MOV TMOD,#01H ;定时器0,工作方式1 MOV TL0,#0DCH;装计数器初值 MOV

26、TH0,#0BH CLR P1.0 CLR P1.1 SETB 8CH;TR0置1,定时 开始 SETB 0AFH;EA置1,中断总允许 SETB 0A9H;ET0置1,定时器0中断允许 MOV R7,#08H ;要求的计数溢出次数 MOV R6,#00H;分缓冲单元清0 SJMP $ PITO: PUSH PSW ;中断服务程序,现场保护 PUSH ACC MOV TL0,#0DCH ;计数器重新加载 MOV TH0,#0BH MOV A,R7 ;循环次数减1 DEC A MOV R7,A JNZ RET0 ;不满8次,转RET0返回 SETB P1.0; P1.0每秒钟产生一个机器 CLR

27、 P1.0 ;周期的正脉冲 INC R6;秒加1 MOV A,R6 XRL A,#60;判是否到60秒 JNZ RET0 SETB P1.1; P1.1每分钟产生一个机器 CLR P1.1; 周期的正脉冲RET0: POP ACC POP PSW RETI5、一个定时器的定时时间有限,如何实现两个定时器的串行定时,以满足较长定时时间的要求。答:一个定时器的定时时间到,再启动另一个定时器。二个定时器循环启动。6、使用一个定时器,如何通过软硬件结合的方法,实现较长时间的定时?答:定时器的定时时间到以后,再用软件计数,用硬件定时和软件计数相结合的方法实现。7、假定单片机晶振频率为6MHZ,要求每隔1

28、00ms,从外部RAM以data开始的数据区传送一个数据到P1口输出,共传送100个数据。要求以两个定时器串行定时方法实现。答:设计数初值为X,则有如下等式: ( X)2* =500* 计算得计数初值X=6=06H,二进制表示为00000110B8、每隔1秒钟读一次P1.0,如果所读的状态为“1”,内部RAM10H单元加1,如果所读的状态为“0”,则内部RAM11单元加1。假定单片机晶振频率为12MHZ,请以软硬件结合方法定时实现之。答:计算计数初值: ( - X)*1* =50*计算得计数初值X=15536=3CB0H,二进制表示为0011110011010000B ORG 0000H LJ

29、MP MAIN ORG 000B LJMP PITO ORG 0030HMAIN:MOV SP,#60H ;确立堆栈区 MOV TMOD,#01H ;定时器0,工作方式1 MOV TL0,#0B0H;装计数器初值 MOV TH0,#3CH SETB 8CH;TR0置1,定时 开始 SETB 0AFH;EA置1,中断总允许 SETB 0A9H;ET0置1,定时器0中断允许 MOV R7,#20 ;要求的计数溢出次数 MOV 10H,#00H MOV 11H,#00H SJMP $PITO: PUSH PSW ;中断服务程序,现场保护 PUSH ACC MOV TL0,#0B0H ;计数器重新加载 MOV TH0,#3CH MOV A,R7 ;循环次数减1 DEC A MOV R7,A JNZ RET0 ;不满20次,转RET0返回 MOV A,P1 JB ACC.7,PP INC 11H SJMP RET0 PP: INC 10HRET0: POP ACC POP PSW RETI

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!