单片机补充作业
- 格式:doc
- 大小:81.50 KB
- 文档页数:6
姓名:滕建国班级:2010045201 学号:201004520105 一、九题目:设(70H)=60H,(60H)=20H.P1口为输入口,当输入状态为B7H,执行下面程序。
Mov R0,#70H MOV A,@R0 MOV R1,A MOV B,@R1 MOV P1,#0FFH MOV @R0,P1试分析(70H)﹑(B)﹑(R1)﹑(R0)的内容是什么。
答案:(70H)=0 (B)=20H (R1)=60H (R0)=0十题:试分析下列程序的功能。
CLR AMOV R2,AMOV R7,#4 LOOP:CLR CMOV A,R0RLC AMOV R0,AMOV A,R1 RLC AMOV R1,A MOV A,R2 RLC AMOV R2,A DJNZ R7,LOOP答案:把R0 R1 R4的内容代进位左移4位。
姓名:滕建国班级:2010045201 学号:201004520105 二﹑十二的题目:分析以下程序段,何时转向LABEL1?何时转向LABEL2?MOV A,R0CPL AJZ LABEL1INC AJZ LABEL2答案:(P0=0 时转向LABEL1 (P0+1=0时转向LABEL2 十三的题目:有4个变量U﹑V﹑W﹑X分别从P1.0~P1.3输入阅读如下程序,写出逻辑表达式并画出逻辑电路图。
MOV P1,#0FFH MOV C,P1.0 ANL C,P1.1 CPL C MOV ACC.0.C MOV C,P1.2 ORL C,ACC.0 MOV F,C题目:逻辑表达式:P(1.0) *P(1.1)+[P(1.2)+P(1.3)]姓名:滕建国班级:2010045201 学号:201004520105 三﹑十四的题目:若(R1)=30H, (A)=40H,(30H)=60H,(40H)=08H.试分析执行下列程序段后上述各单元内容的变化。
MOV A,@R1MOV @R1,40HMOV 40H,AMOV R1,#7F答案:A=60H R1=08H (40H)=60H R1=7FH十九的题目:若CY=1,P1=10100011,P3=01101100B.试指出执行下列程序段后,CY﹑P1口及P3口内容的变化情况。
习题1、BCD 码加法编程。
X 、Y 为4位压缩BCD 码,求 Z=X+Y 。
设X 存在片内RAM 40H 、41H 单元,Y 存在42H 、43H 单元,编程求 Z=X+Y ,并存入片内RAM 单元44H 、45H 、46H 。
ADB :MOV A ,40H ADD A ,42H DA A MOV 44H ,A MOV A ,41H ADDC A ,43H DA A MOV 45H ,A MOV A ,#0 ADDC A ,#0 MOV 46H ,A RET习题2:编程求双字节减法。
设X 、Y 存在片内 RAM 40H 起始单元,计算Z=X-Y 。
SUBD :CLR C MOV A ,40H SUBB A ,42H MOV 44H ,A MOV A ,41H SUBB A ,43H MOV 45H ,A MOV A ,#0 SUBB A ,#0 MOV 46H ,A RET 习题3:编程完成对DPTR 的减1操作.MOV A ,DPLCLR CSUBB A ,#1MOV DPL ,AMOV A ,DPHSUBB A ,#0MOV DPH ,A习题4:如何将累加器A 中的数据高4位清0,低位不变?ANL A ,#0FH习题5:如何将寄存器R2中的数据奇数位取反,偶数位不变?MOV A ,R2XRL A ,#10101010BMOV R2,A;取被加数低字节 ;加上加数低字节 ;BCD 十进制调整 ;保存和的低字节 ;取被加数高字节 ;加上加数高字节 ;BCD 十进制调整 ;保存和的高字节 ;求高字节进位 ;子程序结束 ;清借位标志;取被减数低字节;减去减数低字节;保存差的低字节;取被减数高字节;减去减数高字节;保存差的高字节;保存差的借位标志;;子程序结束习题:计算程序中转移指令的相对偏移量 e ,并判断是否超出转移范围。
地址源程序2130H LOOP:……21B0H SJMP LOOP解:e = 目的指令地址-(转移指令地址+指令字节数)= 目的地址-PC当前值=2130H-(21B0H+2)=-130﹤-128故超出转移范围。
部分单片机原理及应用补充习题答案第一章补充习题6、已知下列整数的补码,求其真值:(3)[Z]补=11100000B,则真值Z= -0100000 B= -32 D(4)[S]补=00110001B,则真值S= +0110001 B= +49 D(5)[X]补=10101101B,则真值X= -1010011 B= -83 D7、已知[X]补和[Y]补的值,用补码加减法计算[X+Y]补和[X-Y]补,并指出结果是否溢出。
(4)[X]补=1.10011 [Y]补=0.11001解:[-Y]补=1.00111①加法[X]补+[Y]补[X]补 1. 1 0 0 1 1+ [Y]补0.1 1 0 0 10. 0 1 1 0 0 Cin=1 Cout=1 无溢出②减法[X]补+[-Y]补[X]补 1. 1 0 0 1 1+ [-Y]补 1. 0 0 1 1 10. 1 1 0 1 0 Cin=0 Cout=1 溢出(下溢出)8、给出x和y的二进制值,用补码加减法计算X+Y和X-Y,并指出结果是否溢出(3)X=+1110110 Y=-1001101解:[X]补=01110110 [Y]补=10110011 [-Y]补=01001101①加法[X]补+[Y]补[X]补0 1 1 1 0 1 1 0+ [Y]补1 0 1 1 0 0 1 10 0 1 0 1 0 0 1Cin=1 Cout=1 无溢出,[X+ Y]补=00101001 ,∴X+Y=+0101001B= 41D②减法[X]补+[-Y]补[X]补0 1 1 1 0 1 1 0+ [-Y]补0 1 0 0 1 1 0 11 1 0 0 0 0 1 1Cin=1 Cout=0 溢出(上溢出),运算结果不表示[X-Y]补,不能从结果直接求取真值X -Y。
12、概念题:(1)AS CⅡ码,47H 。
(2)17H ,1、0、0 。
(3) -128-+127 ,0 —255 。
画出AT89S51系列单片机利用串行口进行1台主机与4台从机多机串行通讯连线图,其中1台从机通讯地址号为02H,请叙述主机向02H从机发送一个字节数据的过程主机发送数据过程如下:(1)将从机00~03H的REN置1,SM2=1,并使它们工作在串行口工作方式2或3。
(2)由主机向4个从机发出一帧地址址信息02H,第9位为1。
从机接到信息后均发生中断,执行中断服务程序,将02H与自身地址做比较。
若相同,则清SM2=0,若不同则SM2不变仍为1。
(3)主机发送一帧数据信息,第9位为0,从机接到信息后,只有SM2=0的从机发生中断,将数据信息收取,其余SM2=1的从机不放出中断,信息丢失,从而实现主机向02H从机发送一个字节数据的功能。
下图是四片2K×8位存储器芯片的连线图。
确定四片存储器芯片地址范围。
设从左至右RAM芯片号为#1,#2,#3,#4左下图是DAC0832的应用电路,DA转换时数字量FFH与00H分别对应于模拟量+5V与0V。
右下图给出了DAC0832的逻辑结构。
(1)将图中空缺的电路补充完整;(2)编写程序,产生图中所示锯齿波。
设有一个延时3.905ms的子程序DELAY可以直接调用。
DAC0832的逻辑结构(1)共6根线。
连线如图,如果WR2*与WR*或XFER*相连也给分。
ILE直接接+5V也正确。
(2) ORG 1000HMOV R0, #0FEH ;或:MOV DPTR, #FFFEHMOV A, #00H ;LOOP: MOVX @R0, A ;或:MOVX @DPTR, AINC A ;LCALL DELAY ;SIMP LOOP ;已给出器件如图,试连线,构成一个片外扩展16KB RAM的电路,并给出两片RAM的地址范围。
ADC0809与AT89S51单片机采用中断方式读取A/D转换结果的接口电路如下图所示,系统时钟为3MHz,模拟量输入仅选择IN0通道,编制单片机从上电复位开始的A/D 转换程序,将转换结果送片内RAM的30H单元。
MCS—51单片机指令系统补充习题一.单项选择题,从供选择的答案中选出正确的选项,并将标号填写到答题册中,每小题1分。
1.MCS-51汇编语言指令格式中,唯一不可缺少的部分是。
A.标号 B.操作码 C.操作数 D.注释2.MCS-51的立即寻址方式中,立即数前面。
A.应加前缀“/:”号B.不加前缀号C.应加前缀“@”号D.应加前缀“#”号3.下列完成8031单片机内部RAM数据传送的指令是。
A.MOVX A,@DPTR B.MOVC A, @A+PCC.MOV A,#data D.MOV direct,direct4.MCS-51的立即寻址的指令中,立即数就是。
A.放在寄存器R0中的内容 B.放在程序中的常数C.放在A中的内容D.放在B中的内容5.单片机中PUSH和POP指令常用来。
A.保护断点B.保护现场C.保护现场,恢复现场 D.保护断点,恢复断点6.MCS-51寻址方式中,操作数Ri加前缀“@”号的寻址方式是。
A.寄存器间接寻址 B.寄存器寻址 C.基址加变址寻址 D.立即寻址7.MCS-51寻址方式中,位寻址的寻址空间是。
A.工作寄存器R0~R7 B.专用寄存器SFR C.程序存贮器ROMD.片内RAM的20H~2FH字节中的所有位和地址可被8整除的SFR的有效位8.MCS-51寻址方式中,直接寻址的寻址空间是。
A.工作寄存器R0~R7 B.专用寄存器SFR C.程序存贮器ROM D.片内RAM 00H--7FH的128字节和80H--FFH中的SFR9.执行指令MOVX A,@DPTR时,、脚的电平为。
A.高电平,高电平 B.低电平,高电平C.高电平,低电平 D.低电平,低电平10.主程序执行完ACALL后返回主程序后,堆栈指针SP的值。
A.不变 B.加2 C.加4 D.减211.单片机中使用MOVX A,@R1指令寻址数据存贮器1050H单元。
A.能直接B.不能C.与P2口配合能 D.与P1口配合能12.下列指令判断若P1口最低位为高电平就转LP,否则就执行下一句的是。
5-40 以中断方式,用汇编语言编写定时器T0方式0,1,2下,定时1ms 的程序。
设系统focs = 12MHz 。
解1:方式0 确定装入T0的常数。
机器周期为: 设所需初值为x ,则 =1C18H = 1 1100 0001 1000B根据13位定时器的特性,TH0放x 的高8位,TL0放低5位,我们将x 值重排如下:x = 1110 0000 1 1000,即得本任务的时间常数为:TH0 = E0H ,TL0 = 18H 。
ORG 0000HAJMP MAINORG 000BHLJMP TIME0INTORG 0050HMAIN : MOV SP ,#60HMOV TMOD ,#00HMOV TL0,#18HMOV TH0,#0E0HSETB ET0 ;允许T0中断SETB EA ;开放总中断SETB TR0 ;启动T1定时SJMP $TIME0INT : CLR T R0 ;禁止T0CLR E T0RETI ;中断返回ENDORG 0000HAJMP MAINORG 000BHLJMP TIME0INTORG 0050HMAIN : MOV SP ,#60HMOV TMOD ,#01HMOV TL0,#18HMOV TH0,#0F0HSETB ET0 ;允许T0中断SETB EA ;开放总中断SETB TR0 ;启动T1定时SJMP $TIME0INT : CLR TR0 ;禁止T0CLR ET0 s MHz μ112)(12=分频3613101101)2(--⨯=⨯⨯-x 7192102313=-=xRETI ;中断返回END解3:方式2确定装入T0的常数。
计数器每机器周期计数值加1,机器周期为:方式2为8位常数自动重装,每次溢出最大值为256μS,为编程方便,又减少中断次数,采用4次250μS的方法实现本任务。
其时间常数为:TH0 = 06H,TL0 =06H。
ORG 0000HAJMP MAINORG 000BHLJMP TIME0INTORG 0050HMAIN: MOV SP,#60HMOV R7,#4MOV TMOD,#02HMOV TL0,#06HMOV TH0,#06HSETB ET0 ;允许T0中断SETB EA ;开放总中断SETB TR0 ;启动T1定时SJMP $TIME0INT:DJNZ R7,RETURNCLR TR0 ;禁止T0CLR ET0RETURN:RETI ;中断返回END5-41 以中断方式,用汇编语言编写定时器T1方式0,1,2下,计数的程序。
设计数终值为N,说明在计数值不溢出的情况下,每种方式下N的最大值是多少。
解1:方式013位计数初值(8192-计数值)高8位为NH,低8位为NLORG 0000HAJMP MAINORG 001BHLJMP TIME1INTORG 0050HMAIN: MOV SP,#60HSETB F0 ;F0=1继续,F0=0停止计数MOV TMOD,#40HMOV TL1,#NHHMOV TH1,#NLHSETB ET1 ;允许T1中断SETB EA ;开放总中断SETB TR1 ;启动T1定时SJMP $TIME1INT:JNB F0,STOPT1MOV TL1,#NHHMOV TH1,#NLHSJMP RETURNSTOPT1:CLR F0CLR TR1 ;禁止T1CLR ET1RETURN:RETI ;中断返回END解2:方式116位计数初值(65536-计数值)高8位为NH,低8位为NL。
ORG 0000HAJMP MAINORG 001BHLJMP TIME1INTORG 0050HMAIN: MOV SP,#60HSETB F0 ;F0=1继续,F0=0停止计数MOV TMOD,#50HMOV TL1,#00HMOV TH1,#00HSETB ET1 ;允许T0中断SETB EA ;开放总中断SETB TR1 ;启动T1定时SJMP $TIME1INT:JNB F0,STOPT1MOV TL1,#NHHMOV TH1,#NLHSJMP RETURNSTOPT1:CLR F0CLR TR1 ;禁止T1CLR ET1RETURN:RETI ;中断返回END解3:方式2为8位计数(少用),计数值在TL1中设计数目标为NL。
NL EQU YYHORG 0000HAJMP MAINORG 001BHLJMP TIME1INTORG 0050HMAIN: MOV SP,#60HSETB F0 ;F0=1继续,F0=0停止计数MOV TMOD,#60HMOV TL1,#NLHMOV TH1,#NLHSETB ET1 ;允许T0中断SETB EA ;开放总中断SETB TR1 ;启动T1定时SJMP $TIME1INT:JNB F0,STOPT1SJMP RETURNSTOPT1:CLR F0CLR TR1 ;禁止T1CLR ET1RETURN:RETI ;中断返回END方式0、1、2的最大计数值分别为8192、65536和256。
5-42设中断请求源已接好,外部中断0用电平触发方式,外部中断1用下降沿触发方式,用汇编语言编写它们响应并处理中断的程序。
处理内容可用NOP指令表示。
注意比较两者的异、同。
解1:外部中断0用低电平触发方式ORG 0000HAJMP MAINORG 0003HLJMP INT0INTORG 0050HMAIN: MOV SP,#60HSETB EX0 ;允许外部中断0中断CLR IT0SETB EA ;开放总中断SJMP $INT0INT:NOPRETI ;中断返回END解2:外部中断1用下降沿触发方式ORG 0000HAJMP MAINORG 0013HLJMP INT0INTORG 0050HMAIN: MOV SP,#60HSETB EX1 ;允许外部中断1中断SETB IT1SETB EA ;开放总中断SJMP $INT0INT:NOPRETI ;中断返回END两者对称,只需0,1对调,清IT0,置IT1。
5-43要求发送用查询方式,接收用中断方式。
用汇编语言编写在方式1,2,3下,51机串口发送和接收一帧数据的程序。
设发送和接收的数据都在R5中。
注意:设系统focs = 11.0592MHz,在波特率可变方式下,波特率取9600(Baud),一律不用PCON加速。
解1:方式1发送不用PCON加速时,定时器T1用方式2,查表5-6或计算,T1常数为FDHORG 0000HAJMP MAINORG 0050HMAIN: MOV SP,#60HMOV SCON,#40HMOV PCON,#00HMOV TMOD,#20HMOV TL1,#0FDHMOV TH1,#0FDHSETB TR1 ;启动波特率MOV SBUF,R5WAIT:JBC TI,STOPSJMP WAITSTOP:SJMP $ ;动态停机END方式1接收程序为ORG 0000HAJMP MAINORG 0023HLJMP SERINTORG 0050HMAIN: MOV SP,#60HMOV SCON,#50HMOV PCON,#00HMOV TMOD,#20HMOV TL1,#0FDHMOV TH1,#0FDHSETB ES ;允许串口中断SETB EA ;开放总中断SETB TR1 ;启动波特率SJMP $SERINT:CLR RIMOV R5,SBUFRETI ;中断返回END解2:方式2发送不用计算定时器T1常数。
ORG 0000HAJMP MAINORG 0050HMAIN: MOV SP,#60HMOV SCON,#80H ;SM2=0MOV PCON,#00HMOV SBUF,R5WAIT:JBC TI,STOPSJMP WAITSTOP:SJMP $ ;动态停机END方式2接收程序为ORG 0000HAJMP MAINORG 0023HLJMP SERINTORG 0050HMAIN: MOV SP,#60HMOV SCON,#90H ;SM2=0MOV PCON,#00HSETB ES ;允许串口中断SETB EA ;开放总中断SJMP $SERINT:CLR RIMOV R5,SBUFRETI ;中断返回END解3:方式3发送:不用PCON加速时,定时器T1用方式2,查表5-6或计算,T1常数为FDH ORG 0000HAJMP MAINORG 0050HMAIN: MOV SP,#60HMOV SCON,#0C0H;SM2=0MOV PCON,#00HMOV TMOD,#20HMOV TL1,#0FDHMOV TH1,#0FDHSETB TR1 ;启动波特率MOV SBUF,R5WAIT:JBC TI,STOPSJMP WAITSTOP:SJMP $ ;动态停机END方式3接收程序为ORG 0000HAJMP MAINORG 0023HLJMP SERINTORG 0050HMAIN: MOV SP,#60HMOV SCON,#0D0H;SM2=0MOV PCON,#00HMOV TMOD,#20HMOV TL1,#0FDHMOV TH1,#0FDHSETB ES ;允许串口中断SETB EA ;开放总中断SETB TR1 ;启动波特率SJMP $SERINT:CLR RIMOV R5,SBUFRETI ;中断返回END。