单片机原理及其接口技术王敏课后作业答案.docx
- 文档编号:4643277
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:20
- 大小:166.79KB
单片机原理及其接口技术王敏课后作业答案.docx
《单片机原理及其接口技术王敏课后作业答案.docx》由会员分享,可在线阅读,更多相关《单片机原理及其接口技术王敏课后作业答案.docx(20页珍藏版)》请在冰豆网上搜索。
单片机原理及其接口技术王敏课后作业答案
第二章作业(P40)
2-4MCS-51单片机中执行程序的地址放在哪?
由几个位组成?
最大寻址范围是多少?
答:
放在程序计数器PC中,16位,64KB。
2-5在程序存储器中,OOOOH、0003H、OOOBH、0013H、001BH、0023H这6个单元有什么特定的含义?
答:
0000H复位后,PC=OOOOH,开始执行程序的地址0003H外部中断0(INT0)入口地址000BH定时器0中断(TF0)入口地址0013H外部中断1(INT1)入口地址001BH定时器1中断(TF1)入口地址0023H串行口中断TI/RI入口地址
2-10开机复位以后,CPU使用哪一组工作寄存器?
它们的地址是什么?
如何改变当前工作寄存器?
答:
使用第0组工作寄存器,00H-07H,通过修改PSW中的RS1和RSO两位来改变当前的工作寄存器。
第三章作业(P75)
3-7
指出指令中的
50H或66H个代表什么?
解:
①
MOV
A,#50H
立即数
MOV
A,50H
直接地址
MOV
50H,
#20H
直接地址
MOV
C,50H
位地址
MOV
50H,
20H
直接地址
②
MOV
@R0,
#66H
立即数
MOV
R6,
#66H
立即数
MOV
66H,
#45H
直接地址
MOV
66H,
C
位地址
MOV
66H,
R1
直接地址
3-9
写出能完成下列数据传送的指令:
解:
1R1中内容传送到R0;
MOVA,R1
MOVR0,A
2内部RAM20H单元中的内容送到30H单元;
MOV30H,20H
3外部RAM20H单元中的内容送到内部RAM20H单元;
MOVR0,#20H
MOVXA,@R0
MOV20H,A
4外部RAM2000H单元中的内容送到内部RAM20H单元;
MOVDPTR,#2000H
MOVXA,@DPTR
MOV20H,A
5外部ROM2000H单元中的内容送到内部RAM20H单元;
MOVDPTR,#2000H
MOVA,#00H
MOVCA,@A+DPTR
MOV20H,A
6外部2000H单元中的内容送到外部RAM3000H单元;
MOVDPTR,#2000H
MOVXA,@DPTR
MOVDPTR,#3000H
MOVX@DPTR,A
3-11已知:
(20H)=X;(21H)=Y;(22H)=Z,请用图示说明下列程序执行后堆栈的内容是多少?
①
MOV
SP,#70H
②
MOV
SP,#60H
PUSH
20H
PUSH
22H
PUSH
21H
PUSH
21H
PUSH
22H
PUSH
20H
解:
(73H)=Z;
(72H)=Y;
(71H)=X;
(63H)=X;
(62H)=Y;
(61H)=Z;
3-20试编出能完成如下操作的程序:
解:
1使20H单元中数的高两位变“0”,其余位不变;
ANL20H,#3FH
2使20H单元中数的高两位变“1”,其余位不变;
0RL20H,#0C0H
3使20H单元中数的高两位变反,其余位不变;
XRL20H,#0C0H
4使20H单元中数的高四位变“1”,低四位变“0”;
MOV20H,#0F0H
5使20H单元中数的所有位变反。
XRL20H,#0FFH
3-27已知:
外部RAM2000H为始址的存储区有20个带符号补码数,请编一程序把正数和正零取出来放到内部RAM20H为始址的存储区(负数和负零不作处理)。
解:
ORG
0000H
AJMP
MAIN
ORG
0100H
MAIN:
MOV
R0,#14H
MOV
R1,#20H
MOV
DPTR,#2000H
ROT:
MOVX
A,@DPTR
JB
ACC.7,NEXT
MOV
@R1,A
INC
R1
INC
DPTR
DJNZ
R0,ROT
SJMP
$
END
NEXT:
第四章作业(P104)
BLOCK单元,请编写其中可以统计正负数个数分别存入NUM和
。
ORG
0100H
LEN
DATA
20H
NUM
DATA
21H
BLOCKDATA
23H
MOV
NUM,
#00H
MOV
NUM+1
,#00H
MOV
R0,#BLOCK
MOV
A,@R0
JNB
ACC.7,
POSI
INC
NUM+1
SJMP
NEXT
INC
NUM
INC
R0
DJNZ
LEN,
LOOP
SJMP
$
MAIN:
LOOP:
POSI:
NEXT:
END
4-9外部RAM从2000H-2100H单元有一数据块,请编出将它们传送到外部RAM3000H-3100H区域的程序。
解:
采用当型循环,判断程序结束条件
ORG1000H
MOVDPTR,#2000H
NEXT:
MOVXA,@DPTR
ORLDPH,#10H;将DPH中的20H变成30H
MOVX@DPTR,A
ANLDPH,#0EFH;将DPH中的30H变成20H
INCDPTR
MOVA,DPH
CJNEA,#21H,NEXT
MOVXA,@DPTR;将2100H单元的数据送A
MOVDPH,#31H
MOVX@DPTR,A;将A的数据送3100H单元
SJMP$
4-11将内部RAM的AAA单元中8位无符号数转换成BCD码表示的十进制数。
(要求用连续除10的方法实现)
解:
ORG
0100H
AAA
DATA20H
BAI
DATA21H
SHI
DATA22H
GE
DATA23H
MOV
A,AAA
MOV
B,#0AH
DIV
AB
MOV
GE,B
MOV
B,#0AH
DIV
AB
MOV
SHI,B
MOV
BAI,A
SJMP
$
END
4-15请编写能从内部RAM的BLOCK为起始地址的20个无符号数找出最小值,并把它送到MIN单元的程序。
解:
ORG0100H
MINDATA20H
BLOCKDATA21H
MAIN:
MOV
R0,#BLOCK
MOV
R2,#13H
MOV
A,@R0
LOOP:
INC
R0
MOV
B,@R0
CJNE
A,B,NEXT
NEXT:
JCNEXT1
MOV
A,@R0
NEXT1:
DJNZ
R2,LOOP
MOV
MIN,A
SJMP
$
END
第五章作业(P155)
6-4编程,利用定时器TO(工作在方式1)产生一个50Hz的方波,由P1.0输出,晶振频率为12MHz。
解:
按照题意,定时器
T0需要工作在万式1定时10ms,贝UTMOD控制字为01H;已知
fosc=12MHz,则机器周期为1us定时初值=
216-10ms/1us=55536=D8F0H,即卩
TH0=0D8H,TL0=0F0H
。
则相应的程序如下:
ORG0000H
AJMPSTART
ORG
2000H
START:
MOV
TMOD,#01H
;写入工作方式字
MOV
TH0,#0D8H
;写入计数初值
MOV
TL0,#0F0H
SETB
TR0
;启动T0
LOOP:
JBC
TF0,PE
;TF0=1溢出转移PE,并清除TF0
AJMP
LOOP
;TF0为0转LOOP等待
PE:
MOV
TH0,#0D8H
;重装初值
MOV
TL0,#0F0H
CPL
P1.0
;取反
AJMP
LOOP
;转LOOP等定时时间到
END
6-5在8051单片机中,
已知晶振频率为12MHz,试编程使P1.0和P1.2分别输出周期为
2ms和500ms的方波。
设晶振频率为6MHz,试用T0作为外部计数器,编程实现每当计到1000个脉冲,使T1开始2ms定时,定时时间到后,T0又开始计数,这样反复循环下去。
解:
1)按照题意,定时器T0需要工作在方式1定时1ms,则TMOD控制字为01H;已知fosc=12MHz,则机器周期为1us定时初值=216-1ms/1卩s=64536=FC18H,即卩
TH0=0FCH,TL0=18H。
则相应的程序如下:
主程序:
ORG
1000H
START:
MOV
TMOD,#01H
MOV
TH0,#0FCH
MOV
TL0,#18H
MOV
IE,#82H
;开T0中断
SETB
TR0
;启动T0
MOV
R0,#0FAH
;软件计数器赋初值
LOOP:
SJMP
$
;等待中断
中断程序:
ORG
000BH
AJMP
BRT0
ORG
0080H
BRT0:
CPL
P1.0
DJNZ
R0,NEXT
;250ms未到,转
NEXT
CPL
P1.2
;250ms到,改变
P1.2电平
MOV
R0,#0FAH
NEXT:
MOV
TH0,#0FCH
MOV
TL0,#18H
RETI
2)按照题意,定时器T0需要工作在方式1计数方式,定时器T1需要工作在方式1定时方式,则TMOD控制字为15H;TO计数初值为216-1000=64536=FC18H,即
TH0=0FCH,TL0=18H;
已知fosc=6MHz,
则机器周期为2卩。
T1定时初值二216
2ms/2卩s=64536=FC18H,
即TH1=0FCH,
TL1=18H。
则相应的程序如下:
ORG
2000H
START:
MOV
TMOD,#15H
;写入工作方式字
MOV
TH0,#0FCH
;写入计数初值
MOV
TL0,#18H
MOV
TH1,#0FCH
MOV
TL1,#18H
SETB
TR0
;启动T0
LOOP:
JBC
TF0,PE
;TF0=1溢出转移PE,并清除TF0
AJMP
LOOP
;TF0为0转LOOP等待
PE:
SETB
TR1
;启动T1定时,关T0计数
CLR
TR0
LOOP1:
JBC
TF1,PE1
;TF1=1溢出转移PE1,并清除TF1
AJMP
LOOP1
;TF1为0转LOOP1等待
PE1:
MOV
TH0,#0FCH
;重装初值
MOV
TL0,#18H
MOV
TH1,#0FCH
MOV
TL1,#18H
SETB
TR0
;启动T0计数,关T1定时
CLR
TR1
AJMP
LOOP
END
6-6已知单片机系统时钟频率为6MHz,若要求定时值分别为0.1ms、1ms和10ms,定时器T0工作在方式0、方式1和方式2时,定时器对应的初值各为多少?
解:
已知fosc=6MHz,则机器周期为2s
方式0的初值分别为:
8142(1FCEH),即卩TH0=0FEH,TL0=0EH;7692(1E0CH),即TH0=0F0H,TL0=0CH;3192(0C78H),即卩TH0=63H,TL0=18H。
方式1的初值分别为:
65486(FFCEH);65036(FE0CH);60536(EC78H)。
方式2定时0.1ms的初值为206(CEH),不能直接定时1ms和10ms。
第六章作业(P210)
8-2什么是半双工、全双工方式?
MCS-51单片机属于哪种传送方式?
解:
1)半双工方式——通信双方只有一条双向传输线,允许数据双向传送,但每个时刻上只能有一方发送,另一方接收,这是一种能够切换传送方向的单工方式;
2)全双工方式——通信双方有两条传输线,允许数据同时双向传送,其通信设备应具有完全独立的收发功能。
单片机属于全双工传送方式。
8-6设串行口通信波特率为2400bps,异步帧信号由8位数据,无校验位和一个停止位组成,请问传输1024个字节数据,需要多少时间?
解:
每一个字符规定包含10个位(一个起始位、8个数据位和1个停止位),则每秒钟可以传送240个字节数据,传输1024个字节数据共需要4.2667秒
8-7请用中断法编出串行口方式1下的发送程序,设单片机主频为6MHz,波特率为1200bps,发送数据缓冲区在外部RAM,始址为Tblock,数据块长度为30,采用偶校验,放在发送数据第8位(数据块长度不发送)。
解:
串行口工作在方式1,定时器T1工作在方式2,作为波特率发生器。
定时常数:
X=256—(fosc*2SM°D)/(384*波特率)
取SMOD=1,则X=229.96=230=E6H。
(若取SMOD=0,则X=F3H)采用中断方式编程,单片机发送程序如下:
主程序:
ORG
2000H
Tblock
DATA
2000H
MOV
TMOD,
#20H
;定时器(波特率)初始化
MOV
TL1,
#0E6H
MOV
TH1,
#0E6H
CLR
ET1
;关定时器T1中断
SETB
TR1
;启动T1
MOV
SCON,
#40H
;串行口初始化(方式1)
MOV
PCON,
#80H;SMOD=1
MOV
DPTR,
#Tblock
MOV
R7,#1EH
TRS:
MOVX
A,@DPTR
MOV
C,PSW.0
MOV
ACC.7,
C
MOV
SBUF,
A
;启动发送
DEC
R7
INC
DPTR
SETB
EA
;允许串行口中断
WAIT:
SETB
ES
SJMP
WAIT
;等待串行口中断
中断服务程序:
END
7-2单片机P1端口并行连接两只共阴极数码管显示器,利用扫描方式循环显示两位数00、01、02、……98、99。
1)写出共阴极接法下数码管显示0~9的字型码;
2)编写程序实现上述功能。
解:
1)3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
2)程序清单如下:
ORG0000H
AJMPMAIN
ORG000BH
AJMPTIMER
ORG0030H
TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
MAIN:
MOVR0,#00H
MOVDPTR,#30H
MOVTMOD,#01H
MOVTH0,#0D8H
MOVTL0,#0F0H
SETBET0
SETBEA
SETBTR0
START:
INC
R0
CJNE
R0,#100,NEXT
MOV
R0,#00H
NEXT:
MOV
A,R0
MOV
B,10
DIVAB
MOV
R1,A;十位缓存
MOV
R2,B;个位缓存
MOV
R4,#200
DELAY:
MOV
R5,#200
DJNZ
R5,$
DJNZ
R4,DELAY
AJMP
START
TIMER:
CLR
TR0
MOV
A,R1
MOVC
A,@A+DPTR
MOV
P1,A
SETB
P2.1
MOV
R6,#200
DJNZ
R6,$
CLR
P2.1
MOV
A,R2
MOVC
A,@A+DPTR
MOV
P1,A
SETB
P2.0
MOV
R6,#200
DJNZ
R6,$
CLR
P2.0
MOV
TH0,#0D8H
MOV
TL0,#0F0H
SETB
TR0
RETI
END
第八章作业(补充题)
8-
8031内部定时器
1根据图9-3电路,请编写如下图所示梯形波,要求梯形波的下底由实现。
(设fosc=12MHz)
解:
ORG
0000H
AJMP
START
ORG
0100H
START:
MOV
TMOD,#10H
;写入工作方式控制字
MOV
TH1,#3CH
;写入计数初值
MOV
TL1,#B0H
MOV
R0,#0FEH
CLR
A
DOWN:
MOVX
@R0,A
;线性下降段
INC
A
JNZ
DOWN
SETB
TR1
;启动T1工作
WAIT:
JBC
TF1,NEXT
;等待50ms时间到
SJMP
WAIT
NEXT:
CLR
TR1
;关闭T1
MOV
TH1,#3CH
;重装计数初值
MOV
TL1,#B0H
MOV
A,#0FEH
UP:
MOVX
@R0,A
;线性上升段
DEC
A
JNZ
UP
SJMP
DOWN
END
8-2用查询和中断方式实现AD转换编程,要求对通道5连续采集3次取中值作为本次采样值,并存于内部RAM30H单元。
中断方法:
;主程序
ORG1000H
ADINT0:
MOVXA,@R0MOV@R1,AINCR1DJNZR3,ROTACALLADSHUJUCLREX0JMPEXIT
ROT:
MOVA,R2
MOVX@DPTR,A
EXIT:
RETI;数据处理子程序ADSHUJU:
MOVA,30H
CJNEA,31H,NEXT1
NEXT1:
JCNEXT2
XCHA,31H
NEXT2:
CJNEA,32H,NEXT3
NEXT3:
JCNEXT4
XCHA,32H
NEXT4:
MOV30H,AMOVA,31HCJNEA,32H,NEXT5
NEXT5:
JCNEXT6XCHA,32H
NEXT6:
MOV31H,AMOV30H,31HRETEND查询方法:
;主程序
;读取A/D转换数据;存储数据;数据指针加1
;调用数据处理子程序
;启动A/D转换
;》交换
;(30H)=Min
交换
;(31H)=Mid,(32H)=Max;取中间数送(30H)
ORG
SETB
0100H
P3.3
START:
MOV
R0,#0F0H
MOV
R1,#30H
MOV
R2,#05H
;IN5通道号
MOV
R3,#03H
;循环次数
MOV
A,R2
;选通道IN5
MOVX
@R0,A
;启动A/D转换
WAIT0
:
JNB
P3.3,WAIT0
;等待转换开始
WAIT
:
JBP3.3,WAIT
;查询转换是否结束
ADINT0
:
MOVX
A,@R0
;读取A/D转换数据
MOV@R1,A
;存储数据
INC
R1
;数据指针加1
DJNZ
R3,ROT
ACALL
ADSHUJU
;调用数据处理子程序
JMPEXIT
ROT:
MOVA,R2MOVX@DPTR,AJMPWAIT;数据处理子程序ADSHUJU:
MOVA,30H
CJNEA,31H,NEXT1
NEXT1:
JCNEXT2
XCHA,31H
NEXT2:
CJNEA,32H,NEXT3
NEXT3:
JCNEXT4
XCHA,32H
NEXT4:
MOV30H,A
MOVA,31H
CJNEA,32H,NEXT5
NEXT5:
JCNEXT6XCHA,32H
NEXT6:
MOV31H,A
MOV30H,31H
RET
EXIT:
END
;启动A/D转换
交换
;(30H)=Min
交换
;(31H)=Mid,(32H)=Max;取中间数送(30H)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 及其 接口 技术 课后 作业 答案