单片机原理及应用技术 苏家建 曹柏荣 汪志锋 课后习题参考答案

上传人:a**** 文档编号:115007668 上传时间:2022-06-30 格式:DOC 页数:15 大小:72.50KB
返回 下载 相关 举报
单片机原理及应用技术 苏家建 曹柏荣 汪志锋 课后习题参考答案_第1页
第1页 / 共15页
单片机原理及应用技术 苏家建 曹柏荣 汪志锋 课后习题参考答案_第2页
第2页 / 共15页
单片机原理及应用技术 苏家建 曹柏荣 汪志锋 课后习题参考答案_第3页
第3页 / 共15页
点击查看更多>>
资源描述
单片机原理及应用技术 苏家建 课后习题参考答案第三章MCS-51指令系统3-1 MCS-51指令系统有哪几种寻址方式?按功能分类有哪几种指令?3-2 设A=0FH,R0=30H,片内RAM的30H=0AH, 31H=0BH, 32H=0CH,以下程序段运行后的结果?MOV A,R0 ;A=0AHMOV R0,32H ;(30H)=0CHMOV 32H,A ;(32H)=0AHMOV R0,#31H ;R0=31HMOV A,R0;A=(31H)=0BH3-3 1R0的内容传送到R1MOV A,R0MOV R1,A(2)内部RAM 20H单元的内容传送到AMOV A,20H(3)外部RAM 30H单元的内容传送到R0MOV R1,#30HMOVX A,R1MOV R0,A(4) 外部RAM 30H单元的内容传送到内部RAM 20H单元MOV R1,#30HMOVX A,R1MOV 20H,A(5) 外部RAM 1000H单元的内容传送到内部RAM 20H单元MOV DPTR,#1000HMOVX A,DPTRMOV 20H,A(6)程序存储器ROM 2000H单元的内容传送到R1MOV DPTR,#2000HCLR AMOVC A,A+DPTRMOV R1,A(7) RAM 2000H单元的内容传送到内部RAM 20H单元MOV DPTR,#2000HMOVX A,DPTRMOV 20H,A(8) RAM 2000H单元的内容传送到外部RAM 30H单元MOV DPTR,#2000HMOVX A,DPTRMOV R0,#30HMOVX R0,A(9) RAM 2000H单元的内容传送到外部RAM 1000H单元MOV DPTR,#2000HMOVX A,DPTRMOV DPTR,#1000HMOVX DPTR,A3-4 设内部RAM 30H=5AH,5AH=40H,40H=00H, P1=7FH, 下面程序执行后的结果如何?MOV R0,#30H ;R0=30HMOV A,R0 ;A=(30H)=5AHMOV R1,A ;R1=5AHMOV R1,P1; (5AH)=7FHMOV A,P1 ;A=7FHMOV 40H,#20H ;(40H)=20HMOV 30H,40H ;(30H)=00H3-5 编程,将内部RAM 20H-2FH共16个连续单元清零ORG 0100HMOV R0,#20HMOV R2,#16LOOP:MOV R0,#00HINC R0DJNZ R2,LOOPEND3-6编程,求出内部RAM 20H单元中的数据含“1”的个数,并将结果存入21H单元中。ORG 0100HMOV 21H,#0MOV R2,#8MOV A,20HCLR CLOOP:RLC AJC COUNTDJNZ R2, LOOPSJMP STOPCOUNT: INC 21HDJNZ R2,LOOPSTOP:SJMP $END3-7编程,找出内部RAM 30H-50H单元中出现FFH的次数,并将结果存入51H单元中。ORG 0100HMOV 51H,#0MOV R0,#30HMOV R2,#20HLOOP:MOV A,R0CJNE A,#0FFH,AGAININC 51HAGAIN:INC R0DJNZ R2,LOOPSJMP $END3-8编程,计算,并将结果存入内部的30H单元ORG 0100HMOV 30H,#0MOV 31H,#0 ; i的初值MOV R0,#30HMOV R2,#11MOV A,31HLOOP:INC 31HADD A,R0MOV R0,AMOV A,31HRL ADJNZ R2,LOOPSJMP $END3-9 片内RAM(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H.说明以下指令源操作数的寻址方式,及指令执行的结果MOV A,40H ;A=48H 直接寻址MOV R0,A ;R0=48H 存放器寻址MOV P1,#0F0H ;P1=0F0H直接寻址MOV R0,30H ;(48H)=38H 存放器间接寻址MOV DPTR,#3848H ;DPTR=3848H 直接寻址MOV 40H,38H ;(40H)=(38H)=40H 直接寻址MOV R0,30H ;R0=(30H)=38H 存放器寻址MOV P0,R0 ;P0=38H 直接寻址MOV 18H,#30H ; (18H)=30H 直接寻址MOV A,R0 ;A=(38H)=40H 直接寻址MOV P2,P1 ;P2=0F0H直接寻址3-10设R0=32H,A=48H,片内RAM (32H)=80H,(40H)=08H.求指令运行的结果MOV A,R0 ;A=(32H)=80HMOV R0,40H ; (32H)=40H=08HMOV 40H,A ; (40H)=80HMOV R0,#35H ; R0= 35H3-11设A=83H,R0=17H,片内RAM (17H)=34H, 求指令运行的结果ANL A,#17H ;A=03HORL A,17H ; (17H)=37HXRL A ,R0 ; A=37H CPL A ;A=C8H3-12编程实现片内RAM 20H-2FH与30H-3FH中数据的对换ORG 0100HMOV R0,#20HMOV R1,#40HMOV R2,#0FHLOOP:MOV A,R0MOV R1,AINC R0INC R1DJNZ R2,LOOPMOV R0,#30HMOV R1,#20HMOV R2,#0FHLOOP1:MOV A,R0MOV R1,AINC R0INC R1DJNZ R2,LOOP1MOV R0,#30HMOV R1,#40HMOV R2,#0FHLOOP1:MOV A,R1MOV R0,AINC R0INC R1DJNZ R2,LOOP1SJMP $END3-13 A=34H,(30H)=4FH,ADD A,30H执行后的结果A=83H,PSW=41H3-14 SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26)=56H,执行RET后SP=?PC=?SP=23H,PC=3412H3-15 SP=25H,PC=2345H,标号LABEL所在的地址3456H,执行LCALL LABEL后SP=?PC=?,堆栈中的数据有何变化?SP=27H (26H)=48H (27H)=23H PC=3456H第四章 程序设计根底4-1片内RAM 30H单元开始存放着一组用补码表示的有符号数,数目存于20H单元。编程统计出正数,0,负数的数目,分别存到21H,22H,23H单元。ORG 0100HMOV 21H,#0MOV 22H,#0MOV 23H,#0MOV R0,#30HLOOP:MOV A,R0CJNE A,#0 ,PDINC 22HSJMP DONEPD:JB ACC.7,FUINC 21HSJMP DONEFU:INC 23HDONE:INC R0DJNZ 20H,LOOPSJMP $END4-2 片内RAM 20H-2FH.但凡满足奇偶校验的数据1的个数为偶数的数转存到片外8000H开始的数据区ORG 0100HMOV R0,#20HMOV DPTR,#8000HMOV R2,#0FHLOOP:MOV A,R0JB PSW.0,DONEMOVX DPTR,AINC DPTRDONE: INC R0DJNZ R2,LOOPSJMP $END4-3 编程,把外部 RAM 1000H-10FFH的数据传送到2000H开始的区域ORG 0100HMOV R3,#10HMOV R4,#20HMOV DPL,#00HMOV R2,#0 LOOP:MOV DPH,R3MOVX A,DPTRMOV DPH,R4MOVX DPTR,AINC DPLDJNZ R2,LOOPSJMP $END4-4片内RAM 30H单元开始存放着一组无符号数,其数目在21H单元中。编程将其中最小的数存入21HORG 0100HMOV R0,#30HMOV R2,21HMOV A,30HLOOP:CJNE A,R0,PDSJMP DONEPD:JNC DONEMOV 22H,R0XCH A,22HDONE: INC R0DJNZ R2,LOOPMOV 21H,ASJMP $END4-5 编程实现片内RAM 30H单元开始的16个数按顺序颠倒过来ORG 0100HMOV R0,#30HMOV R1,#40HMOV R2,#0FHLOOP:MOV A,R0MOV R1,AINC R0INC R1DJNZ R2,LOOPMOV R2,#0FHMOV R0,#40HMOV R1,#3FHLOOP1:MOV A,R0MOV R1,AINC R0DEC R1DJNZ R2,LOOP1SJMP $END4-6 编程实现片内RAM 30H单元开始的16个数,存有最小数值的所在单元的内容改为0FFHORG 0100HMOV R0,#30HMOV R2,#16MOV A,30HMOV 22H,#0 ;22H存放找到的16个数中的最小值MOV 23H,#0 ;存放最小数值的地址放到23HLOOP:CJNE A,R0,PDSJMP DONEPD:JNC DONEMOV 22H, R0MOV 23H,R0XCH A,22HDONE: INC R0DJNZ R2,LOOPMOV R0,23HMOV R0,#0FFHSJMP $END4-7 编程实现P1.7=P1.6(P1.5P1.4)ORG 0100HMOV C,P1.5ANL C,/P1.4MOV 20H,CMOV C,P1.4ANL C,/P1.5ORL C,20HANL C,P1.6MOV P1.7,CEND4-8编程统计片内RAM 30H单元开始的16个数,有多少数大于40,小于80,将结果存入40H单元中ORG 0100HMOV R0,#30HMOV R2,#16MOV 40H,#0LOOP:MOV A,R0CJNE A,#40,PDSJMP DONEPD:JNC PD2SJMP DONEPD2:CJNE A,#80,PD3SJMP DONEPD3:JC COUNTSJMP DONECOUNT:INC 40HDONE:INC R0DJNZ R2,LOOPSJMP $END第六章 中断系统 6-1 定时器T0和T1各有几种工作方式?请简述。答:四种。工作方式T0T1最大计数模值初值加载方式最大计数模值初值加载方式方式0213人工加载213人工加载方式1216人工加载216人工加载方式228自动加载28自动加载常用于串口通信波特率发生器方式328TH0、TL0被分成两个相互独立的8位计数器;TL0既可做定时器也可做计数器;TH0可做内部定时器。人工加载初值8位计数,无中断产生,自动加载初值,用于不需要中断的场合6-2 单片机系统时钟频率fosc=12MHz,假设要求定时值分别为0.1ms、1ms、10ms,定时器T0工作在方式0,方式1和方式3时,定时器对应的初值各为多少?定时时间工作方式0初值工作方式1初值工作方式2初值工作方式3初值0.1msFC1CHFF9CH9CH9CH1msE018HFC18H10msD8F0H6-3 定时器/计数器T0已预置为156,工作于方式2计数,现T0引脚上输入周期为1ms的脉冲,问:1此时T0的实际用途是?2在什么情况下,T0溢出?答:1计数器2T0可记录100个外部脉冲,即从开始启开工作,经过100ms开始溢出。6-4 设系统时钟为6MHz,利用T0和P1.0产生连续矩形波,高电平宽度为50us,低电平宽度为300us。解:因为系统时钟为6MHz,那么一个计数脉冲为2us,假设T0工作于方式1,那么P1.0输出高电平T0需记录25个脉冲,计数初值为216-25=FFE7H,那么P1.0输出低电平T0需记录150个脉冲,计数初值为216-150=FF6AH,编程如下ORG 0000HLJMP MAINORG 000BHLJMP T00ORG 0100HMAIN:MOV SP,#60H MOV TMOD,#01HMOV TH0,#0FFHMOV TL0,#0E7HSETB EASETB ET0SETB P1.0SETB TR0SJMP $T00:JNB P1.0,QFMOV TH0,#FFHMOV TL0,#0E7HSJMP DONEQF: MOV TH0,#0FFHMOV TL0,#6AHDONE:CPL P1.0RETIEND6-5 利用定时器来测量单次正脉冲宽度,采用何种方式可获得最大量程?设f0sc=6MHz,求允许测量的最大脉冲宽度是多少?答:定时器方式1,最大脉冲宽度为2us*216=131.072ms6-6 试编制一程序,其功能为:当P1.2引脚的电平上跳时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平下跳时,停止计数,并将计数值写入R6与R7。解:P1.1接P3.4引脚,利用T0做计数器,工作于方式1,初值为0T0未工作于中断方式ORG 0000HLJMP MAIN;ORG 000BHORG 0100HMAIN:MOV SP,#60HMOV R6,#0MOV R7,#0MOV TMOD,#05HMOV TH0,#0MOV TL0,#0LOOP:JNB P1.2,LOOPSETB TR0LOOP1:JB P1.2,LOOP1CLR TR0MOV R6,TH0MOV R7,TL0SJMP $END6-7 试用中断技术设计一发光二极管LED闪烁电路,闪烁周期为2s,要求亮1s,再暗1s。解:设P1.0接1发光二极管,低电平点亮;利用定时器T0,工作于定时器方式2,设系统频率为fosc=12MHz,那么一个定时脉冲为1us,每次中断定时250us,那么需要4000个中断实现1s的定时利用R6,R7做软件计数器,初值分别为40,100;定时初值28-250=06HORG 0000HLJMP MAINORG 000BHLJMP T00ORG 0100HMAIN:MOV SP,#60HMOV TMOD,#02HMOV TH0,#06HMOV TL0,#06HMOV R6,#40MOV R7,#100CLR P1.0SETB EASETB ET0SETB TR0 SJMP $T00:DJNZ R6,DONEMOV R6,#40DJNZ R7,DONEMOV R7,#100DONE:CPL P1.0RETIEND6-8 试用中断方法设计秒、分脉冲发生器,即由8031的P1.0每秒产生一个机器周期的正脉冲,由P1.1每分钟产生一个机器周期的正脉冲。解:设系统时钟频率为12MHz,那么一个计数脉冲为1us,利用T0做定时器记录50ms,计数初值为216-50000=3CB0H,利用R6,R7为软件计数器,初值为20,60,分别实现1s和1分钟的定时ORG 0000HLJMP MAINORG 000BHLJMP T00ORG 0100HMAIN:MOV SP, #60HMOV TMOD, #01H ;T0定时器,工作方式1MOV TH0, #3CHMOV TL0, #0B0H ;装入50ms的初始值MOV R6,#20MOV R7,#60CLR P1.0 ;P1.0,P1.1均输出低电平CLR P1.1SETB EASETB ET0SETB TR0 ;中断允许,开始定时SJMP $T00: DJNZ R6,DONE ;R6-1=0,定时1秒时间到SETB P1.0 ;P1.0输出1us的高电平CLR P1.0 ;P1.0继续输出低电平MOV R6,#20DJNZ R7,DONE ;R7-1=0,定时1分钟时间到SETB P1.1 ;P1.1输出1us的高电平CLR P1.1 ;P1.1继续输出低电平MOV R7,#60DONE: MOV TH0,#3CHMOV TL0,#0B0H RETIEND第七章串口工作方式0关于I0接口的扩展7-1利用74LS164并行输出8只发光二极管,将二极管从左至右点亮,时间间隔1S左右,并循环往复,画出电路原理图,编程实现。(P109)ORG 0100HMOV SCON,#00HMOV A,#80HLOOP:MOV SBUF,AACALL DEL1SRR ASJMP LOOP7-4利用MCS-51系列单片机的串行接口设计键盘输入电路(P111)第九章 模拟量输入输出接口技术9-1 在一个fosc为12MHz的8031单片机系统中,接有一片DAC0832,它的地址为7FFFH,输出电压为0-5V,请画出有关逻辑框图并编写程序,使其运行后能在示波器上显示锯齿波设示波器X方向扫描频率为50us/格,Y方向扫描频率为1V/格。答:ORG 0000HLJMP MAINORG 0100HMAIN:MOV SP,#60HMOV DPTR,#7FFFHLOOP:MOV A,#00HLOOP1:MOVX DPTR,A ;2INC A ;1CJNE A,#0,LOOP1 ;2SJMP LOOPEND输出波形为周期是255us,幅值为5V的锯齿波.9-2 在fosc=12MHz的系统中,接有ADC0809,地址为7FF8H-7FFFH,试画出逻辑框图并编写ADC0809的初始化程序和定时取样通道2的程序假设取样频率为1ms一次,每次取样4个数据,存于8031单片机内部RAM70h-73h中。答:P1.0连接0809的START端ORG 0000HLJMP MAINORG 0100HMAIN:MOV SP,#60HMOV DPTR,#7FFAHMOV 70H,#0MOV 71H,#0MOV 72H,#0MOV 73H,#0MOV R2,#4MOV R0,#70HLOOP:ACALL DEL_1msLOOP1: SETB P1.0 NOP NOP NOP CLR P1.0MOVX A,DPTR MOV R0,A ACALL DEL_100usINC R0DJNZ R2,LOOP1MOV R0,#70HMOV R2,#4 SJMP LOOPDEL_1ms:MOV R7,#5 ;1DEL2:MOV R6,#100 ;1DEL1:DJNZ R6,DEL1 ;2DJNZ R7,DEL2 ;2RETDEL_100us: MOV R5,#5 ;1DEL21:MOV R4,#10 ;1DEL11:DJNZ R4,DEL11 ;2DJNZ R5,DEL21 ;2RETEND9-3 DAC 0832与8031单片机连接时有哪些控制信号?其作用是什么?P201答:,。,两个引脚,使数据线上的数据送入输入存放器;当CPU发出控制信号,时,把输入存放器中的数据送给DAC存放器,并随即由D/A转换器进行转换,变成模拟信号输出。9-4 DAC 0832的地址为7FFFH,输出电压为0-5V,编写产生矩形波的转换程序,其波形占空比为1:4,高电平电压为2.5V,低电平电压为1.25V。答:ORG 0000HLJMP MAINORG 0100HMAIN:MOV SP,#60HMOV DPTR,#7FFFHMOV R2,#3LOOP:MOV A,#7FHMOVX DPTR,A ;2ACALL DEL MOV A,#40HMOVX DPTR,ADELL: ACALL DEL DJNZ R2,DELL MOV R2,#3 SJMP LOOPDEL:MOV R7,#10 ;假设主频为12MHz,那么波形周期为400usDEL2:MOV R6,#20DEL1:DJNZ R6,DEL1DJNZ R7,DEL2RETEND9-5ADC 0809的地址为7FF8H-7FFFH。编写每隔100ms轮流采集一次8个通道数据的程序,共取样10次,其取样值存入片外RAM从3000H开始的存储单元中设fosc=6MHz答:P1.0连接0809的START端, ORG 0000HLJMP MAINORG 0003HLJMP ZD0ORG 0100HMAIN:MOV SP,#60HMOV R7,#7FH MOV R6,#0F8H ;放0809 0路地址MOV R4,#00HMOV R5,#30H ;将采集的数据放到片外RAM 3000H开始的地址MOV R2,#8 ;记录8路MOV R3,#10 ;记录10次MOV 20H,#10;记录延时LOOP:ACALL DEL_100msDJNZ 20H,LOOPMOV 20H,#10LOOP1: MOV DPH,R7MOV DPL,R6SETB P1.0 NOP NOP NOP CLR P1.0MOVX A,DPTR;转换0路MOV R7,DPHMOV R6,DPLMOV DPH,R5MOV DPL,R4 MOVX DPTR,A INC R6INC R4DJNZ R2,LOOP1MOV R2,#8MOV R7,#7FH MOV R6,#0F8HMOV R4,#00HMOV R5,#30H DJNZ R3,LOOPDEL_10ms:MOV 21H,#50 ;1DEL2:MOV 22H,#50 ;1DEL1:DJNZ 22H,DEL1 ;2DJNZ 21H,DEL2 ;2RETEND9-6 根据图9.30MC14433的选通脉冲时序图答复什么是字位动态扫描BCD码输出方式及如何读取转换结果?第十章10-1 消除键盘抖动的软件方法是什么?答:软件延时10ms10-3 设计5*5的矩阵键盘并表达其工作原理。10-4 设计一个两位BCD码拨盘输入电路,通过P0口输入,编写数据读入的程序。10-510-6应用74LS164集成电路,设计3位LED数码管的静态显示电路,编写显示程序段解:利用CPU的串口接164的时钟和数据端,即Rx接数据口,Tx接时钟端ORG 0000HLJMP MAINORG 0100HMAIN:MOV SP,#60HLOOP:MOV R0,#30HMOV R2,#3LOOP1:MOV A,R0MOV SBUF,ANOPNOPNOPINC R0DJNZ R2,LOOP1SJMP LOOPEND第九章 模拟量输入输出接口技术第十章 10-6
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


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

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


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