单片机实用技术--第4章习题解答

合集下载

北京交通大单片机第4章参考答案

北京交通大单片机第4章参考答案

3-5 指出下列指令中45H代表什么。

MOV A,#45HMOV A,45HMOV 45H,46HMOV C,45HMOV A,#45H中的45H代表立即数45H,该立即数为16进制。

MOV A,45H 中的45H代表直接地址45H单元。

MOV 45H,46H中的45H代表目的操作数所指定的单元为45H。

MOV C,45H中的45H代表45H位。

3-6 分析下列程序执行的结果。

(1)MOV A,#60HMOV R0,#40HMOV @R0, AMOV 41H, R0XCH A, R0执行结果为:(A)=40H(R0)=60H(40H)=60H(41H)=40H (2)MOV DPTR,#2003HMOV A,#18HMOV 20H,#38HMOV R0,#20HXCH A,@R0执行结果为:(DPH)=20H(DPL)=03H(A)=38H(20H)=18H(R0)=20H(3)MOV 20H,#01HMOV A,20HINC ACPL AMOV DPTR,#2000HMOVX @DPTR, A执行结果为:(20H)=01H(A)=FDH(DPTR)=2000H(2000H)=FDH3-8 按要求写出相应的指令。

(1)把寄存器R6的内容送到累加器A中。

(2)把外部RAM 1000H单元的内容传送到内部RAM 30H单元中。

(3)清除内部RAM 3FH 单元的高4位。

(4)使累加器A的最低位置1。

(5)清除进位位。

(6)使ACC.4和ACC.5置1。

(7)把外部ROM 2000H单元中的内容送到内部RAM的20H单元中。

(8)把外部ROM 2000H单元中的内容送到外部RAM的3000H单元中。

(1)MOV A,R6(2)MOV DPTR,#1000HMOVX A,@DPTRMOV R0,#30HMOV @R0,A(3)ANL 3FH,#0FH(4)ORL A,#01H(5)CLR C(6)ORL A,#30H(7)CLR AMOV DPTR,#2000HMOVC A,@A+DPTRMOV 20H,A(8)CLR AMOV DPTR,#2000HMOVC A,@A+DPTRMOV DPTR,#3000HMOVX @DPTR,A3-10 编写程序段完成如下要求。

单片机原理及应用第四章课后题答案

单片机原理及应用第四章课后题答案

第四章作业答案16.MCS-51单片机系统中,片外程序存储器和片外数据存储器共用16位地址线和8位数据线,为何不会产生冲突?解:数据存储器的读和写由RD和WR信号控制,而程序存储器由读选通信号PSEN控制,这些信号在逻辑上时序上不会产生冲突;程序存储器访问指令为MOVC,数据存储器访问指令为MOVX。

程序存储器和数据存储器虽然共用16位地址线和8位数据线,但由于二者访问指令不同,控制信号不同,所以两者虽然共处于同一地址空间,不会发生总线冲突。

18.某单片机应用系统,需扩展2片8KB的EPROM和2片8KB的RAM,采用地址译码法,画出硬件连接图,并指出各芯片的地址范围。

解:硬件连接电路图如图4.18所示。

各芯片的地址范围为:2764(1#):0000H~1FFFH 2764(2#):2000H~3FFFH6264(1#):4000H~5FFFH 6264(2#):6000H~7FFFH图4.18 4.18题硬件连接电路图21.8255A的端口地址为7F00H~7F03H,试编程对8255A初始化,使A口按方式0输入,B口按方式1输出。

解:程序如下:ORG 0000HLJMP STARTORG 0030HSTART:MOV SP, #60HMOV DPTR,#7F03HMOV A,#10010100BMOVX @DPTR,ASJMP $END25.使用8255A或者8155的B端口驱动红色和绿色发光二极管各4只,且红、绿发光二极管轮流发光各1s,不断循环,试画出包括地址译码器、8255A或8155与发光管部分的接口电路图,并编写控制程序。

解:使用8255A,电路连接图如图4.25所示。

图4.25 4.25题硬件连接电路图其中,PB0~PB3接红色发光二极管,PB4~PB7接绿色发光二极管。

设MCS-51单片机主频为12MHz。

程序如下:ORG 0000HLJMP STARTORG 0030HSTART:MOV SP, #60HMOV DPTR, #7FFFH ; 数据指针指向8255A控制口MOV A, #80HMOVX @DPTR, A ; 工作方式字送8255A控制口MOV DPTR, #7FFDH ; 数据指针指向8255A 的B口MOV A, #0FH ; 置红色发光二极管亮LP1:MOVX @DPTR, A ; 置红色发光二极管亮LCALL DELAY ; 调用1S延时子程序CPL A ; 置发光二极管亮反色SJMP LP1 ; 循环执行DELAY:MOV R7,#10 ; 1s延时子程序D1:MOV R6,#200D2:MOV R5,#248D3:NOPDJNZ R5,D3DJNZ R6,D2DJNZ R7,D1RETEND采用定时器T0方式1中断实现1s定时。

单片机微型计算机原理及接口技术课后习题答案第4章

单片机微型计算机原理及接口技术课后习题答案第4章

单片机微型计算机原理及接口技术课后习题答案第4章4-2 试述指令MOV A,R0和MOV A,@R0的区别两条指令的目的操作数相同,两条指令的区别在于源操作数来源不同:MOV A,R0 指令的源操作数就是R0寄存器的内容;而MOV A,@R0 指令的源操作数是位于存储器单元内,且存储器单元的地址是R0寄存器的内容。

4-3 试述指令MOV A,20H和MOV A,#20H的区别MOV A,20H 源操作数是直接寻址,20H表示源操作数所在存储器单元的地址。

MOV A,#20H 源操作数是立即数寻址,#20H是立即数,也就是源操作数。

4-4 说明一下指令中源操作数所在的存储器类型。

(1)MOV A,#30H; 立即数#30H,就是源操作数,存在于指令中,所以位于程序存储器。

(2)MOV A,30H; 30H是源操作数所在数据存储单元的地址,所以源操作数位于数据存储器。

(3)MOVC A,@A+DPTR;源操作数是变址寻址, 助记符MOVC表示源操作数位于程序存储器。

(4)MOVX A,@DPTR; 源操作数是寄存器间接寻址, 助记符MOVX表示源操作数位于外部数据存储器。

4-5 判断下列指令书写是否正确:(1)MOV A,B; ✔(2)MOV A,#3000H ; ✘,因为A是8位寄存器,而#3000H是16位数值,没法全部存到A里(3)INC,#20H ; ✘只能INC A/direct/Rn/@Ri/DPTR(4)MOV 5,A ; ✔,注意目的操作数是直接寻址方式,不是立即寻址(5)MOV 30H,40H; ✔(6)MOV B,@DPTR ; ✘,@DPTR寻址用于MOVX指令,不能用于MOV指R(7)CJNE 30H,#80H,NEXT ; ✘,CJNE指令格式只能是CJNE A/Rn/@Ri,#data,rel或CJNE A,direct,rel(8)POP A ; ✘只能是直接寻址方式POP direct,正确的是POP ACC(9)PUSH ACC; ✔(10)SJMP 2000H ; ✘rel的范围是-128~127(用补码表示其值)共256B范围4-6 设ACC=12H,B=64H,SP=60H,30H中存放的是78H,试分析下列程序执行后,ACC、B、30H、SP中的内容分别为多少,并画出堆栈示意图。

单片机原理及接口技术第四版答案

单片机原理及接口技术第四版答案

单片机原理及接口技术第四版答案【篇一:《单片机原理及接口技术(第2版)张毅刚》第4章习题及答案】第4章 at89s51单片机的中断系统思考题及习题41.外部中断1的中断入口地址为 ,定时器1的中断入口地址为。

答:0013h;001bh2.若(ip)=00010100b,则优先级最高者为,最低者为。

答:外部中断1,定时器t13.中断服务子程序与普通子程序有哪些相同和不同之处?答:reti指令在返回的同时自动清除相应的不可寻址的优先级触发器,以允许下次中断,而ret指令则没有这个操作。

除了这一点两条指令不同外,其它操作都相同。

4.下列说法正确的是。

答:da. 各中断源发出的中断请求信号,都会标记在at89s51的ie寄存器中b. 各中断源发出的中断请求信号,都会标记在at89s51的tmod寄存器中c. 各中断源发出的中断请求信号,都会标记在at89s51的ip寄存器中d. 各中断源发出的中断请求信号,都会标记在at89s51的tcon与scon寄存器中5.at89s51单片机响应外部中断的典型时间是多少?在哪些情况下,cpu将推迟对外部中断请求的响应?答:在一个单一中断的系统里,at89s51单片机对外部中断请求的响应时间总是在3~8个机器周期之间。

在下述三种情况下,at89s51将推迟对外部中断请求的响应:(1)at89s52正在处理同级或更高优先级的中断。

(2)所查询的机器周期不是当前正在执行指令的最后一个机器周期。

(3)正在执行的指令是reti或是访问ie或ip的指令。

如果存在上述三种情况之一,at89s52将丢弃中断查询结果,将推迟对外部中断请求的响应。

6.中断查询确认后,在下列各种at89s51单片机运行情况下,能立即进行响应的是。

a. 当前正在进行高优先级中断处理b. 当前正在执行reti指令c. 当前指令是div指令,且正处于取指令的机器周期d. 当前指令是mov a,r3答:d7. at89s51单片机响应中断后,产生长调用指令lcall,执行该指令的过程包括:首先把的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送,使程序执行转向中的中断地址区。

单片机第4章习题答案

单片机第4章习题答案

第4章习题答案一、填空题1.机器语言2.机器汇编、手工汇编3.AREA1=1000H、BUF=1004H、TIME=01H、ACK=1006H4.(A)=4FH、(R0)=4BH、(R1)=E5H、(21H)=D8H、(22H)=4BH、(2FH)=E5H二、简答题1.什么叫伪指令?伪指令与指令有什么区别?答:所谓伪指令又称为伪操作,它不象机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编时,由汇编程序处理的操作,它们可以完成如数据定义、分配存储器、指示程序结束等功能。

2.汇编语言的格式是怎样的?汇编语言语句格式为:标号:操作码操作数;注释3.MCS-51系列单片机有哪些伪指令?它们的用途是什么?(1)编起始地址命令ORG功能:规定此命令之后的程序或数据的存放起始地址。

(2)定义字节伪指令格式:[标号:] DB X1,X2, (X)功能:从指定地址开始,存放若干字节数据。

(3)字定义伪指令格式:[标号:] DW Y1,Y2,…,Yn功能:从指定地址开始,存放若干字数据。

(4)汇编结束伪指令END功能:该伪指令指出结束汇编,即使后面还有指令,汇编程序也不处理。

(5)赋值伪指令格式:标号 EQU 表达式功能:将表达式的值(数据或地址)赋给标号。

(6)位定义伪指令格式:[标号] BIT 位地址功能:将位地址赋给标号。

4.汇编语言程序设计分为哪几个步骤?答:汇编语言程序设计一般要经过以下几个步骤:(1)分析问题,明确任务(2)确定算法(3)画出程序流程图(4)编写源程序(5)汇编和调试5.结构化程序设计有哪几种常用的程序结构?答:顺序结构、分支结构、循环结构和子程序结构6.子程序调用时,参数的传递方法有哪几种?答:常用的参数传递方法有:工作寄存器或累加器、指针寄存器、堆栈和程序段等。

7.分析下列程序的功能。

X DATA 30HY DATA 32HMOV A,XJNB ACC.7,TRUECPL AADD A,#01HTRUE:MOV Y,A答:该段程序的功能是:当30H单元的最高位不为0时,则把30H单元的内容送32H 单元,当30H单元的最高位为0时,则把30H单元的内容求反加1后送32单元。

单片机课后习题答案胡汉才编

单片机课后习题答案胡汉才编

单⽚机课后习题答案胡汉才编1.25单⽚机内部由哪⼏部分电路组成?各部分电路的主要功能是什么?解:单⽚机内部由CPU、存储器和I/O接⼝等电路组成。

CPU的主要功能是对⼆进制数进⾏算术和逻辑运算、执⾏指令(从ROM中取指令,对指令译码,发各种控制信号使CPU和其他部分协调⼀致的⼯作,完成指令的功能),存储器由ROM和RAM组成,ROM的主要功能是存储单⽚机应⽤系统的程序,RAM的主要功能是存储实时数据或作为通⽤寄存器、堆栈、数据缓冲区。

I/O接⼝的主要功能是负责单⽚机和外设、外部存储器间的通信。

第⼆章存在的错别字问题:“振荡”写出“推荡”;“芯⽚”写成“蕊⽚”。

2.3、程序状态字PSW各位的定义是什么?解:PSW的各位定义如下:Cy:进位标志位;AC:辅助进位位;F0:⽤户标志位;RS1、RS0:寄存器选择位;OV:溢出标志位;P:奇偶标志位;PSW1:未定义。

2.4、什么叫堆栈?8031堆栈的最⼤容量是多少?MCS51堆栈指⽰器SP有多少位,作⽤是什么?单⽚机初始化后SP中的内容是什么?解:堆栈:符合“先进后出”或“后进先出”存取规律的RAM区域。

8031堆栈的最⼤容量是128B;MCS-51堆栈指针SP有8位,作⽤是存放栈顶(/栈低)地址;单⽚机初始化后(即单⽚机复位后)SP中的内容是07H。

存在的问题:1、堆栈的定义中,未答出“RAM区域”,⽽⽤了“部件”;2、只说了“单⽚机初始化后(即单⽚机复位后)SP中的内容是栈底地址”,未说明具体值07H;3、8031堆栈的最⼤容量错成128M或256B。

2.5、数据指针DPTR有多少位,作⽤是什么?解:数据指针DPTR有16位;作⽤是存放ROM或外部RAM的地址。

2.7、8051⽚内RAM容量有多少?可以分为哪⼏个区?各有什么特点?解:8051的⽚内RAM容量有128B;分为三个区:⼯作寄存器区、位寻址区和便笺区;存在的问题:1、8051的⽚内RAM容量错成256B。

单片机 第四章答案

单片机  第四章答案

LP1: JBC TF0 ,LP2
JB P3.2 , LP1
INC R0
;低电平到,停止定时器1,存储单元地址加1
SJMP LP0
;低电平到,停止定时器1 宽度
LP2: INC @R0
;存储溢出次数加1ms
MOV TH0,#0FCH ;定时1ms
MOV TL0,#18H SJMP LP1
INT1
INT1 为高时T1 开始计数
中断程序结构框架
20.利用定时/计数器T0从P1.0输出周期为1s,脉宽为20ms的正 脉冲信号,晶振频率为12MHz。试设计程序。参照【例4-6】
解:因方式2是8位计数器,其最大定时时间为:256×1 s = 256 s,为实现1 s延时,
可选择定时时间为200 s,再循环5000次。定时时间选定后,可确定计数值为200,则定
时器0的初值为:X = M 计数值=256 200 = 56 。采用定时器0,方式2工作,因此,
TMOD =02H。
ORG 0000H
MOV TMOD,#02H ;置定时器0为方式2
MOV TH1,#56
;置定时器初值
MOV TL1,#56
CLR P1.0 MAIN: MOV R5,#50
;置20 ms计数循环初值 1s
②计算定时500us初值:方式0:X = 213 - 500 = 7692 = 1E0CH
ORG START:MOV
CLR CLR MOV MOV MOV SETB LOOP: JNB CLR MOV MOV INC CJNE MOV CPL JNB CPL SJMP END
0000H TMOD, #00H
ORG 0000H
START:MOV TMOD, #02H;定时器T0工作方式2

单片机第4章习题参考答案.docx

单片机第4章习题参考答案.docx

第4章部分习题答案作业:7、8、9、10、11、15、17、19、204.7设内部RAM 20H单元有两个非零的BCD数, 编写求两个BCD数的积并把积送入21H单元的程序。

ORG 1000HMOV A, 20HMOV B, A ; 保存SWAP AANL A, #0FH ;取高4位ANL B, #0FH ;取低4位MUL ABMOV B, #0AHDIV AB ;转换成BCD码的形式SWAP AORL A, BMOV 21H, ASJMP $END4.8已知从内部RAM BLOCK单元开始存放有一组带符号数,数的个数存放在LEN单元。

编写可以统计正数和负数个数并分别存入NUM和NUM+1单元的程序。

num org lOOOh data 30hlen data 20hblock data 40hmov rO, #blockmov num, #00h ;保存正数个数mov b, #00h ;保存负数个数loop: mov a, @r0inc rOjb acc.7, neginc numsjmp nextneg: inc bnext: djnz len, loopmov num+1, bsjmp $end 4.9设X为一无符号数,存放在内部RAM的VAX 单元,Y存放在FUNC单元。

编写满足如下关系的程序:X X>50Y =(5X 50> X > 202X X<20org 2000hvax data 20hfunc data 30hmov a, vaxcjne a, # 32h, complcompl: jc nextlmov func, asjmp donenextl: cjne a, #14h、comp2comp2: jc next2mov b, #05hmul abmov func, asjmp donenext2: clr crlc amov func, adone: sjmp $end4.10在例4.6的128分支程序中,若用LJMP指令代替AJMP指令,以便分支程序可以放在64KB地址范围的任何位置。

单片机习题参考答案4章

单片机习题参考答案4章

第4章 AT89C51单片机汇编语言程序设计1.已知程序执行前有A = 02H,SP = 42H,(41H) = FFH,(42H) = FFH。

下述程序执行后,A = ;SP = ;(41H) = ;(42H) = ;PC = 。

POP DPHPOP DPLMOV DPTR,#3000HRL AMOV B,AMOVC A,@A+DPTRPUSH AccMOV A,BINC AMOVC A,@A+DPTRPUSH AccRETORG 3000HDB 10H,80H,30H,80H,50H,80H答:A=80H,SP=40H,(51H)=50H,(52H)=80H ,PC=8050H。

2.说明伪指令的作用。

“伪”的含义是什么?常用伪指令的功能如何?答:伪指令不属于指令系统中的汇编语言指令,它是程序员发给汇编程序的控制命令。

只有在汇编前的源程序中才有伪指令。

所以“伪”体现在汇编后,伪指令没有相应的机器代码产生。

3.解释手工汇编、机器汇编、交叉汇编、反汇编术语概念。

答:(1)手工汇编:手工编程,首先把程序用助记符指令写出,然后通过查指令的机器代码表,逐个把助记符指令“翻译”成机器代码,这种人工查表“翻译”指令的方法称为手工汇编。

(2)机器汇编:是借助于微型计算机上的软件(汇编程序)来代替手工汇编,完成把助记符指令“翻译”成机器代码的工作。

(3)交叉汇编:使用微型计算机来完成汇编,而汇编后得到的机器代码却是在另一台计算机(这里是单片机)上运行,称这种机器汇编为交叉汇编。

(4)反汇编:将二进制的机器代码语言程序翻译成汇编语言源程序的过程。

4.下列程序段经汇编后,从1000H开始的各有关存储单元的内容是什么?ORG 1000HTAB1 EQU 1234HTAB2 EQU 3000HDB "MAIN"DW TAB1,TAB2,70H答:4D 41 49 4E 12 34 30 00 00 705.设计子程序时应注意哪些问题?答:在编写子程序时应注意以下问题。

单片机课后习题答案(4~9章)

单片机课后习题答案(4~9章)

《单片机原理与接口技术》习题解答第4章习题解答4-1.简述下列基本概念。

答指令:CPU根据人的意图来执行某种操作的命令。

指令系统:一台计算机所能执行的全部指令集合。

机器语言:用二进制编码表示,计算机能直接识别和执行的语言。

汇编语言:用助记符、符号和数字来表示指令的程序语言。

高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言。

4-2.什么是计算机的指令和指令系统?答见1题。

4-3.简述80C51汇编指令格式。

答操作码[目的操纵数][,源操作数]4-4.简述80C51的寻址方式和所能涉及的寻址空间。

答立即数寻址:程序存储器ROM。

直接寻址:片内RAM低128B和特殊功能寄存器。

寄存器寻址:R0~R7,A,B,C,DPTR。

寄存器间接寻址:片内RAM低128B,片外RAM。

变址寻址:程序存储器64KB。

相对寻址:程序存储器256B范围。

位寻址:片内RAM的20H~2FH字节地址,部分特殊功能寄存器。

4-5.要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式?答 SFR:直接寻址,位寻址;片外RAM:寄存器间接寻址。

4-6.在80C51片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。

请分析下面各是什么指令,说明源操作数的寻址方式及按顺序执行后的结果。

答 MOV A,40H 直接寻址MOV R0,A 寄存器寻址MOV P1,#0F0H 立即数寻址MOV @R0,30H 直接寻址MOV DPTR,#3848H 立即数寻址MOV 40H,38H 直接寻址MOV R0,30H 直接寻址MOV P0,R0 寄存器寻址MOV 18H,#30H 立即数寻址MOV A,@R0 寄存器间接寻址MOV P2,P1 直接寻址均为数据传送指令,结果(参见下图)为30H38H40H48H(18H)=30H,(30H)=38H,(38H)=40H (40H)=40H,(48H)=90HR0=38H,A=40H,P0=38H,P1=FOH,P2=FOH,DPTR=3848H 4-7.对80C51片内RAM高128B的地址空间寻址要注意什么?答用直接寻址,寄存器寻址,位寻址。

单片机第四章答案

单片机第四章答案

单片机第四章习题答案选择题1-5 BACAA, 6-10 BAADA, 11-14 CCAD问答题1.MCS-51系列单片机定时计数器的定时功能和计数功能有什么不同?分别应用在什么场合?答:当定时/计数器设置为定时工作方式时,计数器对内部机器周期计数,每过一个机器周期,计数器增1,直至计满溢出。

定时器的定时时间与系统的振荡频率紧密相关,如果单片机系统采用12M晶振,则计数周期为:,这是最短的定时周期,适当选择定时器的初值可获取各种定时时间。

当定时/计数器设置为计数工作方式时,计数器对来自输入引脚T0(P3.4)和T1(P3.5)的外部信号计数,外部脉冲的下降沿将触发计数,检测一个由1到0的负跳变需要两个机器周期,所以,最高检测频率为振荡频率的1/24。

计数器对外部输入信号的占空比没有特别的限制,但必须保证输入信号的高电平与低电平的持续时间在一个机器周期以上。

当需要准确计算时间时往往采用定时器的定时方式,而当要对一些外部事件计数时则采用定时器的计数方式。

2.软件定时与硬件定时的原理有何异同?答:软件定时是通过编写一段延时程序来实现定时,这段延时程序不完成任何操作,只是通过一些空操作浪费掉一段时间。

这样的软件定时往往浪费CPU的工作效率,并且定时不够准确,前面三章的各个任务中均采用了这种方法。

硬件定时是通过单片机的定时器来实现时间的计算,用户只需要对定时器的工作方式、初始值赋予合适的数值,启动定时器后,定时器将自动按照机器周期定时。

这种由定时器实现的定时方式,定时时间准确、CPU的工作效率高。

3.MCS-51单片机的定时计数器是增1计数器还是减1计数器?增1和减1计数器在计数和计算计数初值时有什么不同?答:MCS-51系列单片机的定时/计数器是增1计数器。

对于增1计数器,计数初值应等于最大计数值减去所需要的计数值。

而减1计数器,计数初值就等于所需要的计数值。

例如:假设需要计数50000次。

对于增1计数器的单片机,若采用方式1的定时器,最大计数值为65536,则初值应为:65536-50000=15536。

单片机第4章参考答案

单片机第4章参考答案

第4章 AT89S51汇编语言程序的设计与调试参考答案1.答:伪指令是程序员发给汇编程序的命令,只有在汇编前的源程序中才有伪指令,即在汇编过程中的用来控制汇编过程的命令。

所谓“伪”是体现在汇编后,伪指令没有相应的机器代码产生。

常用伪指令及其功能如下:ORG(ORiGin)汇编起始地址命令;END(END of assembly)汇编终止命令;EQU(EQUate)标号赋值命令;DB(Define Byte)定义数据字节命令;DW(Define Word)定义数据字命令;DS(Define Storage)定义存储区命令;BIT 位定义命令2.答:手工汇编:通过查指令的机器代码表(表3-2),逐个把助记符指令“翻译”成机器代码,再进行调试和运行。

这种人工查表“翻译”指令的方法称为“手工汇编”。

机器汇编:借助于微型计算机上的软件(汇编程序)来代替手工汇编。

通过在微机上运行汇编程序,把汇编语言源程序翻译成机器代码。

反汇编:将二进制的机器码程序翻译成汇编语言源程序的过程称为“反汇编”。

3.答:从1000H开始的各有关存储单元的内容(16进制)如下:4D 41 49 4E 12 34 30 0000 70 78 7F E4 F6 D8 FD75 81 07 024.在编写子程序时应注意以下问题:(1)子程序的第一条指令前必须有标号。

(2)主程序调用子程序,有如下两条子程序调用指令:①绝对调用指令ACALL addr11。

被调用的子程序的首地址与绝对调用指令的下一条指令的高5位地址相同,即只能在同一个2KB区内。

②长调用指令LCALL addr16。

addr16为直接调用的目的地址,被调用的子程序可放置在64KB程序存储器区的任意位置。

(3)子程序结构中必须用到堆栈,用来保护断点和现场保护。

(4)子程序返回时,必须以RET指令结束。

(5)子程序可以嵌套,但要注意堆栈的冲突。

5.答:参考程序如下:MOV A,45HANL A,#0FHORL A,#0FHMOV 45H,A6.答:A=80H ,SP=40H,(41H)=50H,(42H)=80H ,PC=8050H 7.答:参考程序如下:START:MOV R0,#30HMOV R2,#20HLOOP: MOV A,@R0CJNE A,#0AAH,NEXTMOV 51H,#01HLJMP EXITNEXT: INC R0DJNZ R2,LOOPMOV 51H,#00HEXIT: RET8.答:参考程序如下:START:MOV 41H,#0MOV R0,#20HMOV R2,#20HLOOP:MOV A,@R0JNZ NEXTINC 41HNEXT:INC R0DJNZ R2,LOOPRET9.答:参考程序如下:ORG 0100HMOV R2, #20H 要比较的数据字节数MOV A , #21HMOV R1 , ADEC R2MOV A , @R1LOOP: MOV R3,ADEC R1CLR CSUBB A,@R1JNC LOOP1MOV A,@R1SJMP LOOP2LOOP1: MOV A,R3LOOP2: DJNZ R2, LOOPMOV @R0,ARET10.答:(1)SP=SP+1=61H (61H)=PC的低字节=03HSP=SP+1=62H (62H)=PC的高字节=20H(2)PC=3456H(3)可以(4)2KB=2048 Byte11.答:可对程序做如下修改:ORG 0100HDEL: MOV R7, #200DEL1: MOV R6, #123 ;将原来的立即数125改为123DEL2: DJNZ R6, DEL2NOP ;增加的指令DJNZ R7, DEL1RET程序修改后的延时时间为:1+(1+123*2+1+2)*200+2=50003us=50.003ms。

单片机第3、4章习题答案

单片机第3、4章习题答案

第3、4章习题一、选择题1.51单片机中,PC是一个16位的计数器指针,它的值永远指向下一条要执行的指令地址。

它决定程序执行的顺序和方向,寻址范围可达64KB 。

A、此叙述大部分错误B、此叙述完全正确C、此叙述大部分正确D、很难判断2.判断下列说法正确的是A、 89c51共有21个特殊功能寄存器,它们中一部分的位是可以进行位寻址的。

B、内部RAM的位寻址区,只能供位寻址使用,而不能供字节寻址使用。

C、程序指针PC也可以为用户编程时直接使用,可存入16位的数据。

D、以上说法都不正确。

3.C51中,char data var1;为。

(A)在内部RAM定义一个带符号的一字节变量;(B)在可位寻址的片内RAM定义了一个位变量;(C)在内部RAM(含52子系列的高128字节)定义浮点变量;(D)在片外RAM 低256字节内定义了一个整型变量;(E)在内部RAM定义一个带符号的一字节的数组。

4.C51中,bit bdata flags;为。

(A)在内部RAM定义一个带符号的一字节变量;(B)在可位寻址的片内RAM定义了一个位变量;(C)在内部RAM(含52子系列的高128字节)定义浮点变量;(D)在片外RAM 低256字节内定义了一个整型变量;(E)在内部RAM定义一个带符号的一字节的数组。

5.C51中,float idata x;为。

(A)在内部RAM定义一个带符号的一字节变量;(B)在可位寻址的片内RAM定义了一个位变量;(C)在内部RAM(含52子系列的高128字节)定义了一个浮点变量;(D)在片外RAM 低256字节内定义了一个整型变量;(E)在内部RAM定义一个带符号的一字节的数组。

6.C51中,unsigned int pdata var2;为。

(A)在内部RAM定义一个带符号的一字节变量;(B)在可位寻址的片内RAM定义了一个位变量;(C)在内部RAM(含52子系列的高128字节)定义了一个无符号浮点变量;(D)在片外RAM 0-255地址内定义了一个16位的无符号整型变量;(E)在内部RAM定义一个带符号的一字节的数组。

单片机4-7章参考答案

单片机4-7章参考答案

“单片机原理及应用”课程习题与解答第4章4-4:外部中断1所对应的中断入口XXX为()H。

答:0013H4-5:下列说法错误的是:A、各中断发出的中断请求信号,都会标记在MCS-51系统的IE寄存器中。

B、各中断发出的中断请求信号,都会标记在MCS-51系统的TMOD寄存器中。

C、各中断发出的中断请求信号,都会标记在MCS-51系统的IP寄存器中。

D、各中断发出的中断请求信号,都会标记在MCS-51系统的TCON与SCON寄存器中。

答:ABC4-7:中断查询确认后,在下列各种8031单片机运行情况中,能立即进行响应的是:A、当前正在执行高优先级中断处理B、当前正在执行RETI指令C、当前指令是DIV指令,且正处于取指令的机器周期D、当前指令是MOV A,R3答:D4-8:8031单片机响应中断后,产生长调用指令LCALL,执行该指令的过程包括:首先把()的内容压入堆栈,以进行断点保护,然后把长调用指令的16位XXX送(),使程序执行转向()中的中断XXX区。

答:PC、PC、程序存储器4-9:编写出外部中断1为跳沿触发的中断初始化程序。

答:SETB IT1SETB EX1SETB EA4-10:在MCS-51中,需要外加电路实现中断撤除的是:A、定时中断B、脉冲方式的外部中断C、外部串行中断D、电平方式的外部中断答:D4-12:下列说法正确的是:A、同一级别的中断请求按时间的先后顺序响应。

B、同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。

C、低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级中断请求。

D、同级中断不能嵌套。

答:ACD4-13:中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别?答:RETI指令在返回的同时清除相应的优先级触发器,以允许下次中断第5章MCS-51的定时/计数器1.如果采用晶振的频率为3MHz,定时器/计数器工作方式0、1、2下,其最大的定时时间为多少?解答:因为机器周期)(410312126s f T OSC cy μ=⨯==,所以定时器/计数器工作方式0下,其最大定时时间为)(192.81042261313ms T T C MAX =⨯⨯=⨯=-;同样可以求得方式1下的最大定时时间为262.144ms ;方式2下的最大定时时间为1.024ms 。

单片机第四章答案

单片机第四章答案

第四章习题与思考答案4-3外设端口有哪两种编址方法?各有什么特点?答:微型计算机对 I/O 端口进行编址的方式有两种:单独编址和统一编址。

1.外设端口单独编址特点:(1) 需要专用 I/O 指令,实现 CPU 和外设间数据传送。

(2)I/O端口地址的独立。

2.外设端口与存储器统一编址特点: (1) 无需专用 I/O 指令(2)I/O端口地址是内存地址中的一部分。

4-4 I/O 数据有哪四种传送方式?各有什么特点?CPU 与外设之间的数据传送方式有无条件传输方式、查询方式、中断方式和 DMA 方式。

1.无条件传输方式无条件传送又称为同步传送或直接传送方式。

CPU 在与外设进行数据交换时,外设随时处于准备好的状态,这样 CPU 不必查询外设的状态,也不必等待,而是直接进行数据的输入输出。

2.查询传输方式查询传输方式也称为异步传输、条件传输方式。

采用查询方式时, CPU 每次与外设进行数据传输前,都要先读取状态端口的信息,查询外设是否准备就绪,只有在外设处于“就绪”状态时,才能向外设的数据端口发送数据或从其中读取数据,如果外设未就绪,就需要 CPU 原地循环等待外设完成准备工作,所以 CPU 的工作效率不高。

3.中断传输方式在中断传输方式中,以外设为主动方,每次外设准备好就可以向 CPU 发出一次中断请求,使 CPU 暂停当前正在执行的程序,转去与外设进行一次数据传输工作,当完成了本次数据的输入或输出后,再回到原先被打断的地方继续执行原来的程序。

中断方式可以大大提高 CPU 的效率和系统的实时性。

4. DMA 方式DMA 方式即直接存储器存取方式,是一种在DMA控制器的控制下实现的外设与存储器之间的直接数据传输方式。

在整个DMA 传输过程中,是不需要 CPU 参与的,完全是通过硬件逻辑电路用固定的顺序发地址和读写信号来实现的,数据不需要经过 CPU 而是在外设和存储器之间高速传输。

4-5 8051 内部的并行I/O 口有哪些?各有什么功能?1.P0 口P0 口的第一功能是作为通用I/O 口使用。

单片机原理与应用及C51程序设计第4章习题答案

单片机原理与应用及C51程序设计第4章习题答案

单片机原理与应用及C51程序设计第4章习题答案第4章习题答案4-2有哪里些数据类型是MCS-51系列单片机直接支持的?答:见P89,基本类型:字符型,整型,长整型,浮点型,特殊功能寄存器;构造类型:数组类型,结构体类型,共用体,枚举指针类型空类型4-3 C51特有的数据结构类型有哪些?答:特殊功能寄存器,位类型4-4 C51的存储类型有几种?它们分别表示的存储器区域是什么?答:见P94页:存储器类型有:data, bdata,idata,pdata,xdata4-5 C51中bit位与sbit位有什么区别?答:bit是定义一个一般的位变量;而使用sbit定义可位寻址字节或是特殊功能寄存器的的位,定义时必指定其位地址,其存储空间为内部RAM中的位寻址区20H-2FH(位地址为:00H~7FH),4-6 在C51通过绝对地址来访问的存储器有几种方式?答:使用C51运行库中预定义宏,通过指针访问,使用C51扩展关键字_at_4-7 在C51中,中断函数与一般函数有什么不同?答:见P112页:7点4-8 按指定存储器类型和数据类型,写出下列变量的说明形式答:(1)在data定义字符变量var11:char data var11(2)在idata定义整型变量var12:char idata var12(3)在xdata定义无符号字符数组var11[4]:unsigned char xdata var13[4](4) 在xdata定义一个指向无符号字符的指针px: unsigned char xdata* px(5)定义可寻址位变量flag: bit flag;(6)定义特殊功能寄存器变量p3: sfr p3=0xb0(7) 定义特殊功能寄存器变量SCON:sfr SCON = 0x98(8)定义16位特殊功能寄存器变量T0:sfr16 T0=0x8a (无法真正与实际相匹配)4-9 设a=3,b=4,c=5,写出下列关系表达式或逻辑表达式的结果答:(1) a+b>c && b==c (False)(2) a||b+c&&b-c (True)(3)!(a>b) && !c|| 1 (True)(4)!(a+b)+c-1&&b+c/2 (True)4-10 break与continue语句的区别是什么?答:见P110; 使用break语句可以跳出switch和循环体,提前结束循环而接着执行循环结构下面的语句continue语句使用在循环体结构中,用于结束本次循环,跳过该语句下面尚未执行的语句,直接进行下一否执行循环的判断。

(完整word版)第4章单片机原理课后答案

(完整word版)第4章单片机原理课后答案
DB 38H,391H,41H,42H,43H,44H,45H,46H
12.设8051的P1中各位接发光二极管,分别用汇编语言和C语言编程实现逐个轮流点亮二极管,并循环显示。
参考程序:
ORG 0000H
LJMPMAIN
ORG 0100H;主程序
MAIN:MOV A,#01H
LOOP:MOV P1,A
(5)C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容
(6)C51编译器从绝对地址8m+3处产生一个中断向量
(7)中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明
6.按给定的存储类型和数据类型,写出下列变量的说明形式。
(1)在data区定义字符变量val1。
char data varl;
DW 5567H,87H
(2000H)=01H;(2001H)=34H;(2002H)=61H;(2003H)=43H;
(2004H)=55H;(2005H)=67H;(2006H)=00H;(2007H)=87H;
8.编程实现将片外RAM的20H~30H单元的内容,全部移到片内RAM的20H单元的开始位置,并将原位置清零。
MOVDPTR,#1000H
MOVR2,#50
MOVR7,#00
MOVR6,#00
LOOP:MOVXA,@DPTR
ADDA,R6
MOVR6,A
Mபைடு நூலகம்VA,R7
ADDCA,#0
MOVR7,A
INCDPTR
DJNZR2,LOOP
SJMP$
10.编程实现R4R3R2,结果存放于R7R6R5中。
程序:
ORG0100H
0——外部中断0

单片机习题答案(第四章)

单片机习题答案(第四章)
MOV A,30H
RL A
MOV 30H,A
RET
编写程序,把片外RAM从2 0 00 H开始连续存放的8个数据送到片内3 0H开始的单元
中。
程序如下:
ORG 0000H
MOV R7,#08H
MOV DPTR,#2000H
MOV R0,#30H
LOOP1: MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R7,LOOP1
RET
已知片内3 0H, 3 1H中存有一个1 6位的二进制数,高位在前,低位在后,请编程将
它们乘2 ,再存回原处。设乘完结果不超出双字节。
程序如下:
ORG 0000H
MOV A,31H
CLR CY
RLC A
MOV A,30H
RLC A
MOV 30H,A
AJMP$
若有两个无符号数X ,Y分别存放在外部数据存储器5 0,5 1单元中,试编写一个程序,
实现X*5+Y,结果高8位存入片内4 2单元,低8位存入片内4 3单元。
程序如下:
ORG 0000H
MOV DPTR,#0050H;X先乘2
MOVX A,@DPTR
MOV 43H,A
CLR CY
RLC A
MOV R0,#A
MOV A,@R0
MOV R0,#B
SUBB A,@R0
JNB OV,OVER
MOV @R0,#00H
MOV R0,#A
MOV @R0,#00H
OVER: RET
已知片内30H单元中存有一个8位无符号数。编程将它们乘2,再存回原处。设乘完结果
不超出一个字节。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.MCS-51单片机有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU 响应各中断时,其中断入口地址是多少?
答:(1)5个。

(2) IE0:外部中断0请求标志。

IE0=1表明外部中断0向CPU 申请中断。

IE1:外部中断1请求标志。

IE1=1表明外部中断1向CPU 申请中断。

TF0:定时器T0溢出标志。

当定时器T0计满溢出时,由硬件使TF0置“1”,并且申请中断。

TF1:定时器T1溢出标志。

当定时器T1计满溢出时,由硬件使TF1置“1”,并且申请中断。

TI :发送中断标志。

RI :接收中断标志。

(3)外部中断0,外部中断1请求标志。

又分为两种方式,当电平触发方式时由软件方法复位;为边沿触发方式时,由内部硬件自动复位。

定时器T0、定时器T1溢出标志。

可由内部硬件自动复位。

TI,RI 标志由软件复位。

(4)外部中断有两个,分别是0INT 和1INT ,其入口地址分别是0003H 和0013H 。

内部中断有3个,分别是T0,T1和串行口,它们的入口地址分别为:000BH ,001BH 和0023H 。

2.如何计算计数初值?如何编程送入计数初值?
答:设初值为X ,最大计数值为M 。

初值X 与机器周期T 机及定时时间T 的关系为 (M −X )T 机=T
MOV TL0,#x1 H
MOV TH0,#x2 H
3.外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定?
答:IT1:外部中断触发方式选择位。

当IT1=0,外部中断1为电平触发方式。

在这种方式下,CPU 在每个机器周期的S5P2期间对1INT (P3.3)端子采样,若采到低电平,则认为有
中断申请,随即使IE1=1;若采到高电平,则认为无中断申请或中断申请已撤除,随即清除IE1标志。

在电平触发方式中,CPU 响应中断后不能自动清除IE1标志,也不能由软件清除IE1标志,所以在中断返回前必须撤消1INT 端子上的低电平,否则CPU 将再次响应中
断,从而造成出错。

若IT1=1,外部中断1为边沿触发方式,CPU 在每个机器周期的S5P2期间对1INT (P3.3)
端子采样。

若在连续两个机器周期采样到先高电平后低电平(即下跳沿),则认为有中断申请,随即使IE1=1;此标志一直保持到CPU 响应中断时,才由硬件自动清除。

在边沿触发方式中,为保证CPU 在两个机器周期内检测到先高后低的负跳变,输入高低电平的持续时间最少要保持12个时钟周期。

IT0同上。

4.定时/计数器工作于定时和计数方式时有何异同点?
答:16位的定时器/计数器实质上是一个加1计数器,其控制电路受软件控制、切换。

定时器工作于定时前先装入初值,利用送数指令将初值装入TH0和TL0或TH1和TL1,当发出启动命令后,装初值寄存器开始计数,连续加1,每一个机器周期加1一次,定时是对内部的机器周期脉冲计数。

工作于计数方式时,是对外部的脉冲计数,两个机器周期计一个数。

5.定时/计数器的4种工作方式各有何特点?
答:方式0:16位寄存器(TH1和TL1)只用13位。

其中TL1的高3位未用,其余位占整
个13位的低5位,TH1占高8位。

当TL1的低5位溢出时向TH1进位,而TH1溢出时向中断标志TF1进位(称硬件置位TF1),并申请中断。

中断时需用软件重新赋初值。

方式1:其结构与操作与方式0完全相同,唯一的区别是在方式1中,定时器是以全16位二进制数参与操作。

中断时需用软件重新赋初值。

方式2:具有自动重新加载初值的功能。

在这种工作方式下,把16位计数器分为两部分,即以TL作为计数器,以TH作为预置寄存器,初始化时把计数初值分别装入TL和TH中。

方式3:定时器/计数器T0被拆成两个独立的8位计数器TL0和TH0,其中TL0既可以计数使用,又可以定时使用,定时器/计数器T0的各拉制位和引脚信号全归它使用。

TH0,则只能作为简单的定时器使用。

而且由于定时器/计数器0的控制位已被TL0独占,因此只好借用定时器/计数器T1的控制位TR1和TF1,即以计数溢出去置位TF1,而定时的启动和停止则受TR1的状态控制。

在这种情况下,定时器/计数器T1通常是作为串行口的波特率发生器使用,以确定串行通信的速率。

6.简述定时器/计数器初始化的步骤。

答:(1)选择工作方式,即对TMOD 赋初值。

(2)给定时器赋初值,即把初始常数装入TH0 TL0或TH1 TL1。

(3)根据需要设置中断控制字。

直接对中断允许寄存器IE和优先级寄存器IP设置。

(4)启动定时/计数器。

7.当定时/计数器T0用做方式3时,定时/计数器T1可以工作在何种方式下?如何控制T1的开启和关闭?
答:在这种情况下,定时器/计数器T1通常是作为串行口的波特率发生器使用,以确定串行通信的速率。

因为已没有计数溢出标志位TF1可供使用。

因此只能把计数溢出直接送给串行口。

当作为波特率发生器使用时,只需设置好工作方式,便可自动运行。

如要停止工作,只需送入一个把定时器T1设置为方式3的方式控制字即可。

因为定时器/计数器1不能在方式3下使用,如果硬把它设置为方式3,就停止工作。

8.利用定时/计数器T0从P1.0输出周期为1s,脉宽为20ms的正脉冲信号,晶振频率为6MHz。

试设计程序。

答:分析:因为周期是1S为1000ms。

所以低电平为980ms。

采用20ms的定时中断,然后计数49次及实现980ms。

设R5为计数寄存器。

用T0工作在方式1实现20ms定时则:初值为:TH0=D8H,TL0=F0H
参考程序为:
ORG 0000H
LJMP START
ORG 0030H
START: MOV SP, #6FH
MOV TMOD, #01H
MOV R5, #49
CLR P1.0
MOV TH0, #0D8H
MOV TL0, #0F0H
SETB TR0
LOOP1: SETB P1.0
JNB TF0, $
CLR P1.0
LOOP2: MOV TH0, #0D8H
MOV TL0, #0F0H
JNB TF0, $
DJNZ R5, LOOP2
MOV R5, #49
MOV TH0, #0D8H
MOV TL0, #0F0H
LJMP LOOP1
END
9.若晶振频率为12MHz,如何用T0来测量20s~1s的方波周期?又如何测量频率为0.5MHz 左右的脉冲频率?
答:因为用T0时在方式1下最大可计数65536即计65.536ms,而20S就不能只用T0来实现,可以采用让T0工作在门控方式计数,当计满溢出一次就用一个存储单元作为计数器,使之加1,把计数值乘以65536,再乘以2就是周期值。

10.利用定时/计数器T0产生定时时钟,由P1口控制8个指示灯。

编一个程序,使8个指示灯依次一个一个闪动,闪动频率为20次/s(8个灯依次亮一遍为一个周期)。

答:分析:因为闪动频率20次/S,所以一个灯亮用时为1000/20/8=6.25MS。

用T0方式1定时,设晶振频率为12MHZ。

则初值为E796H。

参考程序如下:
ORG 0H
LJMP START
ORG 000BH
LJMP T01
ORG 030H
START: MOV SP, #6FH
MOV TMOD,#01H
MOV TH0,#0E7H
MOV TL0,#96H
MOV A,#0FEH ;设低电平点亮
MOV P1,A
SETB EA
SETB ET0
SETB TR0
SJMP,$
T01: RL A
MOV P1,A
RETI
END。

相关文档
最新文档