设计分析1.MSC-51
1.MCS-51单片机系统时钟为12MHZ,解释以下程序的意义。
LOOP: CLR P1.0
MOV R7,#2
ABC1: NOP
NOP
DJNZ R7,ABC1
SETB P1.0
MOV R7,#5
ABC2: NOP
NOP
NOP
DJNZ R7,ABC2
NOP
SJMP LOOP
答:分析可知,这是1个方波波形发生程序。
低电平10mS,高电平30mS,周期40mS。
2.MCS-51单片机系统时钟为12MHZ,分析以下程序,指出其功能。
LOOP: SETB P1.0 ;1TCY, P1.0输出高电平
NOP ;1TCY
NOP ;1TCY
NOP ;1TCY
CLR P1.0 ;1TCY,P1.0输出低电平
NOP ;1TCY
NOP ;1TCY
NOP ;1TCY
NOP ;1TCY
SJMP LOOP ;2TCY
分析可知,这是1个方波波形发生程序。高电平4mS,低电平7mS,周期11mS。
3.MCS-51单片机系统时钟为12MHZ,解释以下程序的意义。
LOOP: CLR P1.0
MOV R7,#2
ABC1: NOP
NOP
DJNZ R7,ABC1
SETB P1.0
MOV R7,#5
ABC2: NOP
NOP
NOP
DJNZ R7,ABC2
NOP
SJMP LOOP
答:这是1个方波波形发生程序。低电平10mS,高电平30mS,周期40mS。
4.MCS-51单片机系统时钟为12MHZ,解释以下程序的意义。
LOOP: SETB P1.0
NOP
NOP
CLR P1.0
NOP
NOP
NOP
SJMP LOOP
分析可知,这是1个方波波形发生程序。高电平3mS,低电平6mS,周期9mS
5.MCS-51单片机系统时钟为12MHZ,试利用定时/计数器0控制每隔200mS从P1.6
口输出1个4mS低电平脉冲。
1).定时/计数器的模式选定 由于8位定时时间为256ms,因此,将定时/计数器0设置为模式2(8位自动重装载方式)。设置定时200ms。
2).控制字设置 TMOD=****0010B 3).时间常数确定
F=12´106HZ,T=200´10-6S代入,得X=256-200=156=9CH (X=256-200=56=38H) 初值设置为:TH0=TL0=#09CH(38H)?
4).程序设计 主程序
ORG 0000H ;系统复位入口
AJMP 0100H ;系统主程序从0100H开始
ORG 000BH ;定时器0中断入口
AJMP 0500H ;定时器0中断服务程序放在0500H处
ORG 0100H
MOV SP,#30H ;置栈顶
MOV TH0,#9CH ;设置定时器初值
MOV TL0,#9CH ;
MOV TMOD,#04H(02H) ;设置定时器0为模式2
SETB TR0 ;启动定时器0
SETB ET0 ;允许定时器0中断
SETB EA ;开系统中断
SETB P1.6
。。。。。。。。。
中断服务程序ORG 0500H
T200US: PUSH PSW ;栈保护
CLR P1.6 ;P1.6输出低电平
NOP ;延时4ms
NOP
NOP
SETB P1.6 ;P1.6输出高电平
POP PSW
SETB ET0 ;开中断
RETI
6.MCS-51单片机系统时钟为6MHZ,试利用定时/计数器0控制每隔200mS从P1.6口输出1个8mS低电平脉冲。
1)、定时/计数器的模式选定
由于8位定时时间为256ms,因此,将定时/计数器0设置为模式2(8位自动重装
载方式)。设置定时200ms。
2)、控制字设置
TMOD=****0110B(0010B)
3)、时间常数确定
F=6´106HZ,T=200´10-6S代入,得
X=256-100=156=9CH
初值设置为:TH0=TL0=#09CH
4)、程序设计 主程序
ORG 0000H ;系统复位入口
AJMP 0100H ;系统主程序从0100H开始
ORG 000BH ;定时器0中断入口
AJMP 0500H ;定时器0中断服务程序放在0500H处
ORG 0100H
MOV SP,#30H ;置栈顶
MOV TH0,#9CH ;设置定时器初值
MOV TL0,#9CH ;
MOV TMOD,#06H(02H) ;设置定时器0为模式2
SETB TR0 ;启动定时器0
SETB ET0 ;允许定时器0中断
SETB EA ;开系统中断
SETB P1.6
。。。。。。。。。
中断服务程序ORG 0500H
T200US: PUSH PSW ;栈保护
CLR P1.6 ;P1.6输出低电平
NOP ;延时6ms
NOP
NOP
NOP
NOP
SETB P1.6 ;P1.6输出高电平
POP PSW
SETB ET0 ;开中断
RETI
2.子程序7.设计1个子程序,将8位二进制数(0-FFH)转换为BCD码数(0-256)。
入口: (A)=二进制数
出口: (R0+1)=BCD数的十位数、个位数
(R0)=BCD数的百位数 (本题15分)
答:BINBCD1:MOV B,#100
DIV AB ;(A)=百位数,(B)=余数
MOV @R0,A ;保存百位数
INC R0
MOV A,#10
XCH A,B
DIV AB ;(A)=十位数,(B)=余数(个位数)
SWAP A ;放到A的高4位
ADD A,B ;合成,A的高4位为十位数,低4位为个位数
MOV @R0,A ;保存十位数、个位数
RET
8、设计1个子程序,将2组N字节的无符号数相加。(本题15分)
入口: (R0)=被加数低位地址指针
(R1)=加数低位地址指针
(R2)=字节数
出口: (R0)=和数高位地址指针
答:程序: ADD2: CLR C
ADD12: MOV A,@R0
ADDC A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R2,ADD12
JNC GET ;和的字节数为N
MOV @R0,#1 ;和的字节数为N+1
RET
GET: DEC R0
RET
9.设计一个子程序,将2组N字节的无符号数相减
入口:(R0)=被减数低位字节地址指针
(R1)=减数低位字节地址指
(R2)=字节数
出口:(R0)=差数高位字节地址指针
答:程序如下SUB: CLR C
SUB10: MOV A,@R0
SUBB A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R2,SUB10
JNC OK
… …
OK: DEC R0
RET
3.11.解释以下程序执行完后,内部RAM中00H~1FH各单元的数值为多少?
CLR A
MOV R0,#31
MOV R1,#16
LOOP: MOV @R0,A
DEC R0
DJNZ R1,LOOP
SETB RS1
SETB RS0
MOV R7,#45
CLR RS0
MOV R7,#33
答:(00H)—(0FH)中的
(00H)=15(0FH)
(01H)=0
其它未变
(10H)—(1FH)中的
(1FH)=45(2DH)
(17H)=33(21H)
10、图示为一个自动包装系统。单片机系统时钟为6MHZ,试编制一个计数程
序,对T1口的脉冲数进行监测,每200个脉冲,继电器J状态改变1次。
(对T0口 200个脉冲;对T1口120个脉冲)
解:T1口200个脉冲
(1)设置定时/计数器1为计数状态,选择工作模式2。
即控制字TMOD=0110****B 时间常数为TL1=TH1=256-200=56
(2)程序设计如下:
ORG 0000H
AJMP 0100H
ORG 000BH
AJMP 0400H
ORG 0100H
MAIN: 。。
MOV TMOD,60H
MOV TL1,#56
MOV TH1,#56
SETB TR1 ;启动定时器1
SETB ET1 ;允许定时器1中断
SETB EA ;开系统中断
。。
ORG 0400H
CLR ET1
PUSH PSW
CPL P1.7
POP PSW
SETB ET1 ;重新允许定时器1中断
RETI
对T1口120个脉冲
(1)设置定时/计数器1为计数状态,选择工作模式2。
即控制字TMOD=0110****B 时间常数为TL1=TH1=256-120=136
(2)程序设计如下:
ORG 0000H
AJMP 0100H
ORG 000BH
AJMP 0400H
ORG 0100H
MAIN: 。。
CLR TMOD.4
SETB TMOD.5
SETB TMOD.6
CLR TMOD.7
MOV TL1,#136
MOV TH1,#136
SETB TR1
SETB ET1
SETB EA
。。
ORG 0400H
CLR ET1
PUSH PSW
CPL P1.7
POP PSW
SETB ET1 ;重新允许定时器1中断
RETI
对T0口 200个脉冲
1)设置定时/计数器1为计数状态,选择工作模式2。
即控制字TMOD=****0110B 时间常数为TL1=TH1=256-200=56
(2)程序设计如下:
ORG 0000H
AJMP 0100H
ORG 000BH
AJMP 0400H
ORG 0100H
MAIN: 。。
CLR TMOD.0
SETB TMOD.1
SETB TMOD.2
CLR TMOD.3
MOV TL1,#56
MOV TH1,#56
SETB TR0
SETB ET0
SETB EA
。。
ORG 0400H
(CLR ET0?有没有)
PUSH PSW
CPL P1.0
POP PSW
SETB ET0
RETI
12、将图示器件连接起来,组成1个完整的8KB EPROM系统。可根据需要添加
13、将图示器件连接起来,组成1个完整的2KB EPROM系统。可根据需要添加元器件。
14.将图示器件连接起来,组成1个完整的2KB EPROM系统。可根据需要添加元器
15.如图所示MCS-51单片机串行口应用系统,试设计程序实现对24路输入信号检测。将检测到的数据保存于20H、21H、22H单元中。
答:1)、UART模式设置
UART设置为模式0,即8位移位寄存器方式。
2)、中断方式设置
采用接收标志查询方式,不采用中断,RI=0
3)、在REN=1和RI=0时,1条读SBUF数据的操作指令则启动接收1个数据。
4)、以下为读入3个字节并行口数据的子程序
CLR P1.0 ;74LS165装载数据
SETB P1.0 ;允许74LS165移位
MOV SCON,#10H ;UART设置为模式0,REN=1,RI=0允许接收
MOV A,SBUF ;接收第1个数据
JNB RI,$ ;等待接收结束
MOV 20H,A ;第1个数据保存于20H单元
CLR RI
MOV A,SBUF ;接收第2个数据
JNB RI,$ ;等待接收结束
MOV 21H,A ;第2个数据保存于21H单元
CLR RI
MOV A,SBUF ;接收第2个数据
JNB RI,$ ;等待接收结束
MOV 22H,A ;第3个数据保存于22H单元
CLR RI
CLR REN ;禁止接收
RET
16.片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和
(和≦256 )解 ADDIO:MOV R0,30H
MOV R7,#9
MOV A,@R0
LOOP: INC R0
ADD A,@R0
DJNZ R7,LOOP
MOV 30H,A
RET
17. 试编程对8155进行初始化,设A口为选通输出,B口为选通输入,C口作为控制联络口,并启动定时器/记数器按方式1工作,工作时间为10ms,定时器计数脉冲频率为单片机的时钟频率24分频,fosc=12MHz。
解:算得初值=5000 =1388H
MOV DPTR,#7F04 ;定时器低八位寄存器地址 DPTR
MOV A,#88H ;低8位初值 A
MOVX @DPTR,A ; 低8位初值 低8位寄存器
INC DPTR ;DPTR指向定时器高8位
MOV A,#13H ;高8位初值 A
MOVX @DPTR,A ;高8位初值 高8位寄存器
MOV DPTR,#7F00H ;8155命令寄存器地址 DPTR
MOV A,0C5H ;命令字 A
MOVX @DPTR,A ;命令字 命令寄存器
18.应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为1ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。
解(1)计算时间常数X,应用公式X=216-t(f/12)
(2)写出程序清单
解:解:X=216-t(F/12)
=216-1*10-3*6*106/12
=OFEOCH
ORG 3000H
START:MOV TMOD,#01H
MOV TL0,#OCH
MOV THO,#OFEH
SETB TR0
LOOP: JBC TFO,DONE
SJMP LOOP
DONE: MOV TL0,#OCH
MOV THO,#OFEH
CPL P1.0
SJMP LOOP
19,应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。
请(1)计算时间常数X,应用公式X=216-t(f/12)
(2)写出程序清单
解:X=216-t(F/12)
=216-1*10-3*6*106/12(2*10-3*6*106/12)
=OFEOCH(0F418H)
ORG 3000H
START:MOV TMOD,#01H
MOV TL0,#OCH(18H)
MOV THO,#OFEH(0F4H)
SETB TR0
LOOP: JBC TFO,DONE
SJMP LOOP
DONE: MOV TL0,#OCH(18H)
MOV THO,#OFEH(0F4H)
CPL P1.0
SJMP LOOP
20.片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中。 解 START: MOV R0,#40H ;数据块首地址送R0
MOV R7,#09H ;比较次数送R7
MOV A,@R0 ;取数送A
LOOP: INC R0
MOV 30H,@R0 ;取数送30H
CJNE A,30H,NEHT ;(A)与(30H)相比
NEXT: JNC BIE1 (A)≥(30H)转BIR1
MOV A,30H ;(A)<(30H),大数送A
BIE1: DJNZ R7,LOOP ;比较次数减1,不为0,继续比较
MOV 50H,A ;比较结束,大数送50H
RET
21. 设计一个2×2行列式键盘电路并编写键盘扫描子程序。(20分)
扫描子程序:
KEY1: ACALL KS1 ;调用判断有无键按下子程序
JNZ LK1 ;有键按下,转LK1
AJMP KEY1 ;无键按下,返回
LK1: ACALL T12MS ;调延时12ms子程序
ACALL KS1 ;查有无键按下
JNZ LK2 ;若有,则为键确实按下,转逐列扫描
AJMP KEY1 ;无键按下,返回
LK2: MOV R4,#00H ;首列号 R4
MOV R2,#FEH ;首列扫描字 R2
LK4: MOV A,R2 ;列扫描字 P1口
MOV P1,A ;使第一列线为0
MOV A,P1 ;读入行状态
JB ACC.0,LONE;第0行无键按下,转查第一行
MOV A,#00H ;第0行有键按下,该行首键号#00H A
AJMP LKP ;转求键号
LONE: JB ACC.1,NEXT ;第一行无键按下,转查下一列
MOV A,#02 ;第一行有键按下,该行首键号#02 A
LKP: ADD A,R4 ;键号=首行号+列号
PUSH ACC ;键号进栈保护
LK3: ACALL KS1 ;等待键释放
JNZ LK3 ;未释放,等待
POP AC ;键释放,键号 A
RET ;键扫描结束
NEXT: INC R4 ;列号加1,指向下一列
MOV A,R2 ;列扫描字 A
JNB ACC.1,KND ;判断2列全扫描完?扫描完,转KND
RL A ;没扫描完,扫描字左移一位,形成下一列扫描字 MOV R2,A ;扫描字 R2
AJMP LK4 ;扫描下一列
AJMP KEY1 ;全扫描完,返回
MOV A,#FCH ;全扫描字11111100B A
MOV P1,A ;全扫描字 所有行
MOV A,P1 ;读取列值
CPL A ;取正逻辑,高电平表示有键按下
ANL A,#0C0H ;屏蔽低6位,取高2位
RET ;出口状态(A)!=0,有键按下
23 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。
解:STRAT: MOV R0,#30H
MOV R7,#0FH
MOV DPTR,#3000H
LOOP: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,LOOP
RET
24.将31H、32H单元与41 H、40H单元的双字节十进制无符号数相加,结果存入32H,31H,30H单元。即(32H)(31H)(30H)= (31H) (30H)+(41H)(40H)。
(1).输入程序:
参考程序
MOV R0,#30H
MOV R1,#40H
MOV R2,#02H
CLR C
L1: MOV A,@R0
ADDC A,@R1
DA A
MOV @R0,A
INC R0
INC R1
DJNZ R2,L1
CLR A
MOV ACC.0,C
MOV @R0,A
(2).在31H、30H单元存入加数如3018,在41H,40H单元存入被加数如8975。
(3).输入程序首地址,(从处为2000H),然后开始单步或断点运行该段程序。
(4).运行过程中检查数据的变化,并在最后检查(32H)= ,(31H)= , (30H)= 。
25. 编程实现逻辑运算:Q=(U *(V+W))+X.Y)+Z。设U~Z的位地址为00H~05H.Q的位地址为07H。《实际中U~Z可以是外部输入端口信号或软件设定的一些控制位》。
实习步骤:
(1)输入所编程序。
MOV C,01H
ORL C,02H
ANL C,00H
MOV F0,C ;暂存U*(V+W)的值
MOV C,03H
ANL C,/04H
ORL C,F0
ORL C,/05H
MOV 07H,C ; 保存结果
(2)内部RAM20H单元(位地址00H~07H的位在20H单元)输入某个数据(注意此时各位的状态并做好记录)。
(3)单步或断点运行所编程序,逐步检查Cy及个数据的变化情况(注意检查时也按字节读出,再观察其相应位)。
(4)验证运行结果
(5)改变20H单元的置数,
26、应用8751单片机、8KB数据存储器6264、74LS138译码器、8位锁存器等器件组成1个完整的MCS—51单片机RAM扩展系统,写出地址空间。可根据需要添器件。
地址空间0000H—1FFFH
27.如图所示系统应用74LS138译码器进行地址译码,试指出6116、2716、A/D、D/A、LED等部件的地址范围。
答:2716的地址:0000H-07FFH (1分)
6116的地址:0000H-07FFH(1分)
A/D的地址: 0800H-0FFFH (1分)
D/A的地址: 1000H-17FFH (1分)
LED的地址: 1800H-1FFFH (1分)
28、如图所示MCS-51单片机串行口应用系统,试说明串行口的工作方式以及信号检测的过程,并设计子程序实现对12路输入信号检测。将检测到的数据保存于20H、21H单元中。(10分)
答:串行口工作在方式0,即8位同步移位寄存器状态。(1分)
在REN=0和TI=0时,1条向SBUF写数据的操作指令即启动发送1个数据;(1分)
在REN=1和RI=0时,1条读SBUF数据的操作指令则启动接收1个数据(1分)
程序如下:
READ: CLR P1.0 ;74LS165装载数据
SETB P1.0 ;允许74LS165移位(1分)
MOV SCON,#10H ; UART设置为模式0,REN=1,RI=0允许接收(1分)
MOV A,SBUF ;接收第1个数据 (1分)
JNB RI,$ ;等待接收结束
MOV 20H,A ;第1个数据保存于20H单元(1分)
CLR RI (1分)
MOV A,SBUF ;接收第2个数据
JNB RI,$ ;等待接收结束
MOV 21H,A ;第2个数据保存于21H单元
CLR REN ;禁止接收 (1分)
CLR RI
RET (1分)
29.采用线选法扩展2´2716(2´2KB)EPROM,线选线分别要求使用P2.3和P2.4, 并写出P2口高3位都为0时的一组地址映射。(10分)
1# 芯片地址范围:1000H―17FFH (1分)
2#芯片地址范围:0800H-0FFFH (1分)
30.分析分析下面程序功能,(A)是无符号的二进制数。
CHENGXU: MOV B,#100
DIV AB
MOV @R0,A
INC R0
MOV A,#10
XCH A,B
DIV AB
SWAP A
ADD A,B
MOV @R0,A
RET
如果(A)=#0CFH,那么执行以上程序后结果是什么。(给出简单的分析过程)
解:将(A)是无符号的二进制数转换成十进制数,并已BCD码从高位到低位(R0-1)和RO的内容所指的单元中。 (A)=#0CFH=207(十进制数)
31.将8031外部扩展2K EPROM,同时扩展16K RAM作数据存储器;采用的2716是2K的EPROM芯片,6264是8K的RAM芯片,74LS373是8位锁存器。请画出连接示意图并写出各片的地址范围。
将高位地址线不用:
2716的地址范围:0000H-07FFH
6264A的地址范围:0000H-1FFFH
6264A的地址范围:2000H-3FFFH
31.单片机系统时钟12MHz,利用定时/计数器0模式1产生一个50Hz的方波,由P1.0口输出。写一个子程序完成以上功能。
解: 先计算定时/计数器0的初值。
解之的 x=55536=D8F0H
子程序: T00:MOV TMOD ,#01H
SETB TR0
LOOP: MOV TH0,#0D8H
MOV TL0,#0F0H
JNB TF0,$
CLR TF0
CPL P1.0(由P1.0口,同理P1.6口)
SJMP LOOP
RET
32、单片机系统的外部数据寄存器的2000H单元放入一个无符号数,在程序存储器中,从标号DATA开始的数据区中也放入一个无符号数;编写子程序一个,实现数据寄存器中的一个无符号数和程序存储器中的一个无符号数相加,结果放入数据寄存器3000H(高位)和3001H(低位)两个单元中。
画出流程图,编写子程序
程序存储器中的数据是:DATA DB DATA1
ADDDATA:
MOV DPTR,#2000H ;取数据寄存器数据放入R0中
MOVX A,@DPTR
MOV R0,A
MOV DPTR,#DATA ; 取程序寄存器数据放入A中
MOVC A,@DPTR
CLR C ;两个无符号数相加
ADD A,R0
MOV DPTR,#3001H
MOVX @DPTR, A
DEC DPTR
JC LOOP ;进位转移,保存高位数据
MOV A,#00H
MOVX @DPTR, A
SJMP LOOP1
LOOP: MOV A,#01H
MOVX @DPTR,A
LOOP1: RET
33.程序分析 单片机外接RAM 4000H、4001H单元的内容分别为56H,2DH,试分析如下程序并回答问题。程序如下:
MOV SP,#40H
MOV DPTR,#4000H
MOV R1,#60H
MOVX A,@DPTR
MOV @R1,A
INC R1
INC DPTR
MOVX A,@DPTR
MOV @R1,A
PUSH R1
问题:若执行长述程序后,(DPTR)= 4001H ,(R1)= 61H ,
8031内部RAM (41H)= 61H , (60H)= 56H ,(61H)= 2DH
34. 编制一个循环闪烁灯的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。编制程序,画出电路图。
答:1)本程序的硬件连接如图所示。当P1.0输出高电平时,LED灯亮,否则不亮。
2)程序如下:
MOV A,#01H ;灯亮初值
SHIFT: LCAIL FLASH ;调闪亮10次子程序
RR A ;右移一位
SJMP SHIFT ;循环
FLASH: MOV R2,#0AH ;闪烁10次计数
FLASH1: MOV P1,A ;点亮
LCALL DELAY ;延时
MOV P1,#00H ;熄灭
LCALL DELAY ;延时
DJNZ R2,FLASH1 ;循环
RET
35.试将8031单片机外接一片2716 EPROM和一片6116 RAM组成一个应用系统,请画出硬件连线图,并指出扩展存储器的地址范围。
答:2716是2K×8位的EPROM,6116是2K×8位的静态RAM,两者都仅需要11根地址线。由于没有规定地址范围,故可按最简单的方式来连接,即省去地址译码器,程序存储器的地址必须从0开始,基本地址为0000H—07FFH。数据存储器的地址为0000H—07FFH。控制线的连接为/PSEN控制EPROM的读出,/RD和/WR控制RAM的读写,两个芯片的片选端都固定接地,连线图如图所示。
1. MOV A,#10H (A)= 10H
MOV B,A (B)= 10H
MOV A,B (A)= 20H
ADD A,B (A)= 20H
MOV 20H,A (20H)= 21H
INC A (A)= 21H
MOV 21H,A (21H)= 22H
INC A (A)= 22H
MOV 22H,A (22H)= 22H
2.MOV DPTR,#2000H (DPTR)= 2000H
MOV A,#80H (A)= 80H
MOVX @DPTR,A (2000H)= 80H
INC DPTR (DPTR)= 2001H
MOV A,#90H (A)= 90H
MOVX @DPTR,A (2001H)= 90H
MOV DPTR,#2000H (DPTR)= 2000H
MOVX A,@DPTR (A)= 80H
MOV B,A (B)= 80H
INC DPTR (DPTR)= 2001H
MOVX A,@DPTR (A)= 90H
二。改错题
36.请判断下列个条指令的书写格式是否有错,如有错说明原因。
1、MUL R0R1
2、MOV A,@R7
3、MOV A,#3000H
4、MOVC @A+DPTR ,A
5、MOVX B, @DPTR
解:1、 MUL R0R1 错 此指令是MUL AB。
2、 MOV A,@R7 对。
3、MOV A,#3000H 错 A 是8位的累加器。
4、MOVC @A+DPTR ,A 错 程序存储器只能读,不能写。
5、MOVX B, @DPTR 错 此指令只能用累加器A。
37.改正下列指令MOV A,DPTR MOVX A,@DPTR
MOV DPTR,10H MOV A,10H
MOV DPTR,40H MOV A,40H
MOVX 40H,#30H MOV 40H,#30H
ADD 20H,#10H ADD A,#10H
3、改正下列指令
MOV @R3,A MOV @R1 ,A
MOV DPTR,A MOVX DPTR,A
INC @R3 INC A
DEC DPTR DEC R0
ADDC #30H,A ADDC A,#30H
38.若(10H)=0FFH,(11H)=00H,(12H)=0FFH,(13H)=00H,写出每一步指令运行结果
MOV A,10H (A)= 0FFH ,
ANL A,#01H (A)= 01H ,
MOV A,11H (A)= 00H ,
ORL A,#01H (A)= 01H ,
MOV A,12H (A)= FFH ,
XRL A,#01H (A)= 01H ,
MOV A,13H (A)= 00H ,
XRL A,#0AA (A)= 0A ,
(10H)= FFH , (11H)= 00H , (12H)= FFH , (13H)= 00H
2.MOV 30H,#60H
MOV R0,#60H
MOV A,30H
MOV B,A
MOV @R0,B
(A)= 60H ,(R0)= 60H ,(B)= 60H ,
3.MOV SP,#60H
MOV A,#01H (A)= 01H ,
MOV B,#02H (B)= 02H ,
PUSH A (SP)= 61H ,
PUSH B (SP)= 62H ,
POP A
POP B (60H)= 01H ,
39.如果(DPTR)=5678H,(SP)=42H,(3FH)=12H ,(40H)=34H,(41H)=50H,(42H)=80H,则执行下列指令后:POP DPH
POP DPL
RET
则:(PCH) =__34H__;(PCL)=___12H____ ;(DPH)=__80H__;
(DPL)=___50H__;
40.位地址为M、N、Y,程序如下:MOV C, M
ANL C,
MOV Y,C
MOV C,M
ANL C,N
ORL C,Y ;
MOV Y,C
求程序功能表达式:(Y)=(M)*(/N)+(M)*(N)
41.阅读下列程序并回答问题CLR C
MOV A,#9AH
SUBB A,60H
ADD A,61H,
DA A
MOV 62H,A
(1).请问该程序执行何种操作?
答:操作是单字节BCD码运算,是将
(62H)=(61H)-(60H)
或 (61H)-(60H) 送(62H)
(2).已知初值:(60H)=23H,(61H)=61H,请问运行程序后:(62H)= 38H
42. 外部RAM 3000H,3001H单元的内容分别为55H,0DDH,试分析如下程序,并答题
程序1: MOV DPTR,#3000H
MOV R1,#40H
MOVX A ,@DPTR
MOV @R1,A
INC R1
INC DPTR
MOVX A,@DPTR
MOV @ R1,A
问题1:若执行上述程序,则结束后,DPTR值为__3001H _________,R1的内容为_____ 41H ______,8031内部RAM41H单元的内容__ DDH _________,40H单元内容为___55H ________。
在上程序中,若继续执行如下程序
程序2:START:MOV DPTR,#3000H
MOV R1 ,#40H
MOV A,@R1
MOVX @DPTR,A
问题2、START执行结束后,DPTR的值为__ 3000H _________,4000H单元的内容为______ 40H _____,R1的内容为____55H _______。
问题3:执行如下程序,填出A寄存器的内容。
程序3、 MOV A、#88H
MOV R7,#AAH
ORL A、R7 :A的内容为______ AAH _____
MOV A,#37H
MOV R7,#89H
ANL A,R7 A的内容为:__01H _________
XRL A,R7 A的内容为:_____88H ______
RET
单片机课程设计心得体会这个学期的单片机课已经早早的上完了但是理论纯属理论没有与实践的结合总让我们学的不踏实感觉没有达到学以致用的效…
本科课程设计(论文)单片机控制流水灯的正常工作及外部中断控制灯的亮灭学院名称:汽车与交通工程学院专业:汽车服务工程班级:13汽服B…
单片机课程设计心得体会文章发布课程设计网发布时间20xx0505做了两周的课程设计有很多的心得体会有关于单片机方面的更多的是关于人…
单片机课程设计多功能无线数字钟摘要本系统装置的主要功能包括数字钟无线控制和温度计数字钟通过时钟芯片DS1302实现时钟准确误差小无…
四周的毕业设计结束了,在这次的毕业设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事…
单片机论文专业:姓名:聂瑶09通信工程20xx0210420xx4学号:单片机学习体会随着大规模集成电路的出现及其发展,将计算机的…
单片机学习心得时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机课程也结束,但通过这次单片机的学习,我不仅加深了对单片机理论的理…
单片机实训报告一周的实训,让我们从另一个角度去发现单片机。期间我学会了很多宝贵的知识和经验,在这次单片机实训中我们巩固了我们平时所…
课程设计心得课设的选题,方案的设计与确定,元器件的选择,硬件的焊接,这一系列的课设准备工作早在课设开始之前,老师就向我们做了相关的…
时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。在学习单片机这门课程之前,就早早的听各种任课老师和学长学…
51单片机课程设计报告学院:专业班级:姓名:指导教师:设计时间:51单片机课程设计一、设计任务与要求1.任务:制作并调试51单片机…