单片机技术习题课3、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中的内容分别为多少,并画出堆栈示意图。
单片机原理及接口技术最全课后习题

MOV
MOV LOOP: MOV
R2,#20H
MAX,#0 A,@R0
;查找次数,32个单元
CJNE
JC MOV
A,MAX,$+3
NEXT MAX,A ;(A)< (MAX) , 不管 ;(A)≥(MAX) , (A) →MAX
NEXT: INC
DJNZ RET
R0
R2,LOOP
;指向下一个单元
;次数未到继续查
MOV B,A
PUSH Acc
;(B)=04H
MOVC A,@A+DPTR ;(A)=30H
;(SP)=51H, (51H)=30H
第3章习题
7*.假定(A) = 83H,(R0) = 17H,(17H) = 34H,执行以下指令后, (A) = CBH 。 ;(A) ∧ 17H→A ;(A) ∨ (17H)→17H ;(A)⊕((R0))→A ;(A)=CBH 0000 0011 ∨ 0011 0100 0 0 1 1 0 1 11 0000 0011 ⊕ 0011 0111 0 0 1 1 0 1 00 (A)=03H (17H)=37H
习题
第1章习题幻灯片 2 第3章习题幻灯片 10 C第3章习题幻灯片 25 第6章习题幻灯片 42 第8章习题幻灯片 73 第10章习题幻灯片 86
第2章习题幻灯片 3
第4章习题幻灯片 18
第5章习题幻灯片 34
第7章习题幻灯片 60
第9章习题幻灯片 80
第11章习题幻灯片 98
第12章习题幻灯片 108 第13章习题幻灯片 111
第4章习题
本章习题还存在的问题如下:
(1). 程序可精简的地方
①. MOV A,@R0 CJNE A,#0AAH,NEXT
单片机及接口技术课后习题答案

电路连接如图 程序在后两页
01 23 4 5 67 8 9 10 11 12 13 14 15
+5V
键盘扫描子程序
SERCH:MOV MOV
LINE0: MOV MOV MOV JB MOV AJMP
LINE1: JB MOV AJMP
LINE2: JB MOV AJMP
LINE3: JB MOV AJMP
习题答案
第三章:指令系统
一、填空 1. 指令 2. 111;单;双;三 3. 7 4. 操作数;A;B;DPTR 5. 操作数;地址;R0;R1;DPTR 6. 直接 7. DPTR;PC;A;程序存储器 8. DPTR;SP;MOVX 9. 直接;立即 10. 80H
习题答案
第三章:指令系统
一、填空 11. 68H 12. 68H 13. 62H;68H;36H 14. 41H;39H;88H 15. BFH;0;0;0 16. 2EH;1;1;0 17. 26H;1 18. 90H;06H;0;1 19. 10H;03H;0;0 20. 06H;09H 21. 00H;96H 二、选择 1. ④2. ③3. ④4. ②
…
IT_0: … IT_T0: … IT_S: …
END
【习题P99-3】初始化程序
;外部中断0中断矢量地址
;定时器0中断矢量地址
;串口中断矢量地址
;主程序起始地址 ;主程序其他初始化工作 ;开外部中断0 ;置外部中断0电平触发方式 ;开定时器0中断 ;开串口中断 ;开CPU总中断 ;置定时器0为高优先级中断 ;主程序主体内容 ;外部中断0中断处理子程序 ;定时器0中断处理子程序 ;串口中断处理子程序 ;主程序结束
①②③④
单片机课后习题答案

单⽚机课后习题答案单⽚机课后习题答案1.89C51单⽚机内包含哪些主要逻辑功能部件?答:80C51系列单⽚机在⽚内集成了以下主要逻辑功能部件:(l)CPU(中央处理器):8位(2)⽚内RAM:128B(3)特殊功能寄存器:21个(4)程序存储器:4KB (5)并⾏I/O⼝:8位,4个(6)串⾏接⼝:全双⼯,1个(7)定时器/计数器:16位,2个(8)⽚内时钟电路:1个2.89C51的EA端有何⽤途?答:/EA端接⾼电平时,CPU只访问⽚内flash Rom并执⾏内部程序,存储器。
/EA端接低电平时,CPU只访问外部ROM,并执⾏⽚外程序存储器中的指令。
/EA端保持⾼电平时,CPU执⾏内部存储器中的指令。
3.89C51的存储器分哪⼏个空间?如何区别不同空间的寻址?答:ROM(⽚内ROM和⽚外ROM统⼀编址)(使⽤MOVC)(数据传送指令)(16bits地址)(64KB)⽚外RAM(MOVX)(16bits地址)(64KB)⽚内RAM (MOV)(8bits地址)(256B)4.简述89C51⽚内RAM的空间分配。
答:⽚内RAM有256B,低128B是真正的RAM区,⾼128B是SFR(特殊功能寄存器)区。
5.简述布尔处理存储器的空间分配,⽚内RAM中包含哪些可位寻址单元。
答:⽚内RAM区从00H~FFH(256B)其中20H~2FH(字节地址)是位寻址区对应的位地址是00H~7FH6. 如何简捷地判断89C51正在⼯作?答:⽤⽰波器观察8051的XTAL2端是否有脉冲信号输出(判断震荡电路⼯作是否正常?)ALE(地址锁存允许)(Address Latch Enable)输出是fosc的6分频⽤⽰波器观察ALE是否有脉冲输出(判断8051芯⽚的好坏?)观察PSEN(判断8051能够到EPROM 或ROM中读取指令码?)因为/PSEN接外部EPROM(ROM)的/OE端⼦OE=Output Enable(输出允许)7. 89C51如何确定和改变当前⼯作寄存器组?答:PSW(程序状态字)(Program Status Word)中的RS1和RS0 可以给出4中组合,⽤来从4组⼯作寄存器组中进⾏选择PSW属于SFR(Special Function Register)(特殊功能寄存器)9.读端⼝锁存器和“读引脚”有何不同?各使⽤哪种指令?答:读锁存器(ANLP0,A)就是相当于从存储器中拿数据,⽽读引脚是从外部拿数据(如MOV A,P1这条指令就是读引脚的,意思就是把端⼝p1输⼊数据送给A)传送类MOV,判位转移JB、JNB、这些都属于读引脚,平时实验时经常⽤这些指令于外部通信,判断外部键盘等;字节交换XCH、XCHD算术及逻辑运算ORL、CPL、ANL、ADD、ADDC、SUBB、INC、DEC控制转移CJNE、DJNZ都属于读锁存器。
单片机及微机原理课后习题答案

第1章思考题及习题参考答案1写出下列二进制数的原码、反码和补码(设字长为8位)。
(1)001011 (2)100110(3)-001011 (4)-111111答:(1)原码:00001011 反码:00001011 补码:00001011(2)原码:00100110 反码:00100110 补码:00100110(3)原码:10001011 反码:11110100 补码:11110101(4)原码:10111111 反码:11000000 补码:110000012已知X和Y,试计算下列各题的[X+Y]补和[X-Y]补(设字长为8位)。
(1) X=1011 Y=0011(2) X=1011 Y=0111(3) X=1000 Y=1100答:(1)X补码=00001011 Y补码=00000011 [–Y]补码=11111101[X+Y]补=00001110 [X-Y]补=00001000(2)X补码=00001011 Y补码=00000111 [–Y]补码=11111001[X+Y]补=00010010 [X-Y]补=00000100(3)X补码=00001000 Y补码=00001100 [–Y]补码=11110100[X+Y]补=00010100 [X-Y]补=111111003 微型计算机由那几部分构成?答:微型计算机由微处理器、存储器和I/O接口电路构成。
各部分通过地址总线(AB)、数据总线(DB)和控制总线(CB)相连。
4 8086的寻址范围有多大?其物理地址是如何形成?答:8086有20根地址总线,它可以直接寻址的存储器单元数为1M字节,其地址区域为00000H—FFFFFH。
物理地址是由段地址与偏移地址共同决定的,物理地址=段地址×16+偏移地址其中段地址通常来自于段寄存器CS ,物理地址来自于IP。
5 什么叫单片机?它有何特点?答:单片机就是在一块硅片上集成了CPU、RAM、ROM、定时器/计数器和多种I/O口(如并行、串行及A/D变换器等)的一个完整的数字处理系统。
单片机第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地址范围的任何位置。
单片机原理课后习题参考答案

第2章部分习题参考解答1、试述MCS-51单片机内部有哪些主要逻辑部件并说出其功能,画出片内结构图。
MCS-51单片机的内部除包含CPU外,还包含程序存储器、数据存储器、定时器/计数器、并行I/O接口、串行I/O接口、总线控制逻辑和中断控制逻辑等逻辑部件,其结构框图如图所示:其中,CPU是单片机的最核心部分,它是整个单片机的控制和指挥中心,完成所有的计算和控制任务。
振荡器和时序逻辑,产生CPU工作所需要的内部时钟。
中断控制逻辑用来应付一些临时到达的突发事件,并能保证当有多个突发事件发生时,CPU能够有序地为这些事件进行服务,所有突发事件服务完成后CPU 还能继续以前的工作。
并行I/O接口和串行I/O接口作为CPU与外部设备通信的信息传输通道。
程序存储器用于存放单片机的程序。
数据存储器用于存放内部待处理的数据和处理后的结果。
定时器/计数器主要是完成对外部输入脉冲的计数或者根据内部的时钟及定时设置,周期性的产生定时信号。
64K总线控制逻辑,用于产生外部64KB存储空间的有关读写控制信号。
2、MCS-51单片机有4个8位并行口(P0、P1、P2、P3),哪个口可作为地址/数据利用总线?P0口可作为地址/数据复用总线口。
3、P0口作为通用I/O口使用时,在输出状态下应注意什么?在输入状态下应注意什么?P0口作为通用I/O口使用时,输出级是漏极开路的,因此在输出状态下外部应加上拉电阻。
在输入状态下应先向端口锁存器写入1,这样引脚便处于悬浮状态,可作高阻抗输入。
5、MCS-51单片机的最大寻址空间是多少?为什么?MCS-51单片机,程序存储器空间采用片内、片外统一编址的方式,共有64KB,地址范围为000OH~FFFFH。
片内有256字节数据存储器地址空间,地址范围为00H~FFH。
片外数据存储器空间有64KB,其地址范围也是000OH~FFFFH。
7、MCS-51单片机片内低128字节的RAM中,分了几个基本区域?说出这些区域的名称。
单片机课后习题答案胡汉才编

单⽚机课后习题答案胡汉才编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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
答: unsigned char bdata status; sbit flag_lamp1=status^0; sbit flag_lamp2=status^1; sbit flag_machine1=status^2; sbit flag_machine2=status^3; sbit flag_port1=status^4; sbit flag_port2=status^5; sbit flag_calcu1=status^6; sbit flag_calcu2=status^7;
temp=0; for(i=0;i<16-2;i++) temp=temp+*(xptr+i+1); *dptr=temp/(16-2); //求14个数的平均值
}
冒泡排序法:(以5个数为例,由小到大排序)
5
4 3 2 1 4 3 2 1
内层循 环次数
3Hale Waihona Puke 2 1 521 4 5
1
3 4 5
2
3 4 5
外层循环次数
第n轮比较 5-n个数
共比较4轮
试编写一函数,对存放在片外数据存储器中从0x150 开始的16个单元的采样数据,用选择法进行“去极值 平均滤波”,把得到的采样数据存放到0x14f单元中。
《单片机技术》习题课
(第三、四章)
第三章 MCS-51指令系统及
汇编程序设计
9.已知(A)=23H,(R1)=65H,(DPTR) =1FECH,片内RAM(65H)=70H, ROM (205CH)=64H。试分析下列各条指令执行后目标 操作数的内容。
MOV MOVX A,@R1 @DPTR,A ; (A)=70H ; (1FECH)=70H
22.编写一C51函数,使用专用指针,把片外数据存 储器中从0x100开始的30个字节数据,传送到片内从 0x40开始的区域中。
解: void main() { unsigned char data i,*dpt; unsigned char xdata *xdpt; dpt=0x40; xdpt=0x100; for(i=0;i<30;i++) *(dpt+i)=*(xdpt+i); }
21.编写一C51函数,把一整型数按十进制数将其各 位分离,分离后放在一无符号数组中,便于显示。要 求把高位数作为低下标元素。 解: unsigned char data shu[5]; void INTTOBCD (unsigned int temp) { unsigned char i; for(i=4;i>0;i--) { shu[i]=temp%10; temp=temp/10; } shu[0]=temp; }
解: void teaf() { unsigned char xdata *xptr; unsigned char data temp, i, j,*dptr; xptr=0x150; dptr=0x14f;
for(j=15;j>0,j--) //外层循环15次 { for(i=0;i<j;i++) //内层循环j次 { if(*(xptr+i)>*(xptr+i+1)) { temp=*(xptr+i+1); *(xptr+i+1)=*(xptr+i); *(xptr+i)=temp; //大数放最后面 } } }
15.编写程序,用位处理指令实现“P1.4=P1.0∨ (P1.1∧P1.2)∨P1.3”的逻辑功能。
解:
MOV C, P1.1
ANL
ORL ORL MOV
C, P1.2
C, P1.0 C, P1.3 P1.4, C
18.编写程序,查找片内RAM的30H~50H单元中出 现0的次数,并将查找的结果存入51H单元。 解: MOV MOV NEXT: CJNE INC NEXT2: INC CJNE SJMP R0, #30H 51H, #0 @R0, #00H, NEXT2 51H R0 R0, #51H, NEXT $
22.编写程序,把片外RAM从2000H开始存放的16字 节数据,传送到片内从30H开始的单元中。
解: MOV MOV MOV MOVX MOV INC INC DJNZ SJMP DPTR, #2000H R0, #30H R7, #16 A, @DPTR @R0, A DPTR R0 R7, NEXT $
答:unsigned char idata data_buf[20];
18.在某程序中需要定义如下变量: (4)定义长度为100的无符号字符型数组data_array 于XDATA区中。
答:unsigned char xdata data_array[100];
18.在某程序中需要定义如下变量: (5)先定义一个无符号字符型变量status于BDATA区中,再 定义8个与status的8个位对应的位变量flag_lamp1、flag_lamp2、 flag_machine1、flag_machine2、flag_port1、flag_port2、 flag_calcu1和calcu2(从低位到高位) 。
MOVC
XCHD
A,@A+DPTR
A,@R1
; (A)=64H ; (A)=60H
12.阅读下面程序段,说明该段程序的功能。 MOV MOV CLR MOV INC INC DJNZ SJMP R0,#40H R7,#10 A @R0,A A R0 R7,LOOP $
LOOP:
答:把0,1,2,3,……,9数列送到40H开始的10个 单元中。
18.在某程序中需要定义如下变量: (2)定义定时器/计数器0的赋计数值的高、低字节 变量TL0_L和TH0_H,将其定义在DATA区的0x30、 0x31处。 答:unsigned char data TL0_L _at_ 0x30, TH0_H _at_ 0x31;
18.在某程序中需要定义如下变量: (3)定义长度为20的无符号字符型数组data_buf 于 IDATA区中。
24.在数字滤波中有一种叫做“去极值平均滤波”技 术,就是对采集的数据按照从大到小或者从小到大进 行排序,然后去掉相同数目的极大值和极小值,对中 间部分数据求算术平均值作为采样值。试编写一函数, 对存放在片外数据存储器中从0x150开始的16个单元的 采样数据,用选择法进行“去极值平均滤波”,把得 到的采样数据存放到0x14f单元中。
NEXT:
第四章 单片机C语言及程序设计
18.在某程序中需要定义如下变量: (1)定义数码管的显示0~9的共阴极显示代码 (0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07, 0x7f, 0x6f)数组dis_code,将其定义在CODE区。 答:unsigned char code dis_code[10]={0x3f, 0x06, 0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f, 0x6f};