单片机原理及其接口技术王敏课后作业答案Word文档格式.docx

上传人:b****5 文档编号:17291552 上传时间:2022-11-30 格式:DOCX 页数:18 大小:35.62KB
下载 相关 举报
单片机原理及其接口技术王敏课后作业答案Word文档格式.docx_第1页
第1页 / 共18页
单片机原理及其接口技术王敏课后作业答案Word文档格式.docx_第2页
第2页 / 共18页
单片机原理及其接口技术王敏课后作业答案Word文档格式.docx_第3页
第3页 / 共18页
单片机原理及其接口技术王敏课后作业答案Word文档格式.docx_第4页
第4页 / 共18页
单片机原理及其接口技术王敏课后作业答案Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

单片机原理及其接口技术王敏课后作业答案Word文档格式.docx

《单片机原理及其接口技术王敏课后作业答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机原理及其接口技术王敏课后作业答案Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

单片机原理及其接口技术王敏课后作业答案Word文档格式.docx

MOVCA,@A+DPTR

⑥外部2000H单元中的内容送到外部RAM3000H单元;

MOVDPTR,#3000H

MOVX@DPTR,A

3-11已知:

(20H)=X;

(21H)=Y;

(22H)=Z,请用图示说明下列程序执行后堆栈的内容是多少?

①MOVSP,#70H②MOVSP,#60H

PUSH20HPUSH22H

PUSH21HPUSH21H

PUSH22HPUSH20H

(73H)=Z;

(72H)=Y;

(71H)=X;

(63H)=X;

(62H)=Y;

(61H)=Z;

3-20试编出能完成如下操作的程序:

①使20H单元中数的高两位变“0”,其余位不变;

ANL20H,#3FH

②使20H单元中数的高两位变“1”,其余位不变;

0RL20H,#0C0H

③使20H单元中数的高两位变反,其余位不变;

XRL20H,#0C0H

④使20H单元中数的高四位变“1”,低四位变“0”;

MOV20H,#0F0H

⑤使20H单元中数的所有位变反。

XRL20H,#0FFH

3-27已知:

外部RAM2000H为始址的存储区有20个带符号补码数,请编一程序把正数和正零取出来放到内部RAM20H为始址的存储区(负数和负零不作处理)。

ORG0000H

AJMPMAIN

ORG0100H

MAIN:

MOVR0,#14H

MOVR1,#20H

ROT:

JBACC.7,NEXT

MOV@R1,A

INCR1

NEXT:

INCDPTR

DJNZR0,ROT

SJMP$

END

第四章作业(P104)

4-7已知RAM的BLOCK单元,请编写其中可以统计正负数个数分别存入NUM和NUM+1单元的程序。

LENDATA20H

NUMDATA21H

BLOCKDATA23H

MOVNUM,#00H

MOVNUM+1,#00H

MOVR0,#BLOCK

LOOP:

MOVA,@R0

JNBACC.7,POSI

INCNUM+1

SJMPNEXT

POSI:

INCNUM

INCR0

DJNZLEN,LOOP

4-9外部RAM从2000H-2100H单元有一数据块,请编出将它们传送到外部RAM3000H-3100H区域的程序。

采用当型循环,判断程序结束条件

ORG1000H

MOVDPTR,#2000H

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的方法实现)

AAADATA20H

BAIDATA21H

SHIDATA22H

GEDATA23H

MOVA,AAA

MOVB,#0AH

DIVAB

MOVGE,B

MOVSHI,B

MOVBAI,A

4-15请编写能从内部RAM的BLOCK为起始地址的20个无符号数找出最小值,并把它送到MIN单元的程序。

ORG0100H

MINDATA20H

BLOCKDATA21H

MAIN:

MOVR0,#BLOCK

MOVR2,#13H

MOVA,@R0

LOOP:

INCR0

MOVB,@R0

CJNEA,B,NEXT

NEXT:

JCNEXT1

NEXT1:

DJNZR2,LOOP

MOVMIN,A

SJMP$

第五章作业(P155)

6-4编程,利用定时器T0(工作在方式1)产生一个50Hz的方波,由P1.0输出,晶振频率为12MHz。

按照题意,定时器T0需要工作在方式1定时10ms,则TMOD控制字为01H;

已知fosc=12MHz,则机器周期为1μs。

定时初值=216–10ms/1μs=55536=D8F0H,即TH0=0D8H,TL0=0F0H。

则相应的程序如下:

AJMPSTART

ORG2000H

START:

MOVTMOD,#01H;

写入工作方式字

MOVTH0,#0D8H;

写入计数初值

MOVTL0,#0F0H

SETBTR0;

启动T0

LOOP:

JBCTF0,PE;

TF0=1溢出转移PE,并清除TF0

AJMPLOOP;

TF0为0转LOOP等待

PE:

MOVTH0,#0D8H;

重装初值

MOVTL0,#0F0H

CPLP1.0;

取反

AJMPLOOP;

转LOOP等定时时间到

6-5在8051单片机中,已知晶振频率为12MHz,试编程使P1.0和P1.2分别输出周期为2ms和500ms的方波。

设晶振频率为6MHz,试用T0作为外部计数器,编程实现每当计到1000个脉冲,使T1开始2ms定时,定时时间到后,T0又开始计数,这样反复循环下去。

1)按照题意,定时器T0需要工作在方式1定时1ms,则TMOD控制字为01H;

定时初值=216–1ms/1μs=64536=FC18H,即TH0=0FCH,TL0=18H。

主程序:

MOVTMOD,#01H

MOVTH0,#0FCH

MOVTL0,#18H

MOVIE,#82H;

开T0中断

MOVR0,#0FAH;

软件计数器赋初值

SJMP$;

等待中断

中断程序:

ORG000BH

AJMPBRT0

ORG0080H

BRT0:

CPLP1.0

DJNZR0,NEXT;

250ms未到,转NEXT

CPLP1.2;

250ms到,改变P1.2电平

MOVR0,#0FAH

MOVTH0,#0FCH

MOVTL0,#18H

RETI

2)按照题意,定时器T0需要工作在方式1计数方式,定时器T1需要工作在方式1定时方式,则TMOD控制字为15H;

T0计数初值为216–1000=64536=FC18H,即TH0=0FCH,TL0=18H;

已知fosc=6MHz,则机器周期为2μs。

T1定时初值=216–2ms/2μs=64536=FC18H,即TH1=0FCH,TL1=18H。

MOVTMOD,#15H;

MOVTH0,#0FCH;

MOVTH1,#0FCH

MOVTL1,#18H

SETBTR1;

启动T1定时,关T0计数

CLRTR0

LOOP1:

JBCTF1,PE1;

TF1=1溢出转移PE1,并清除TF1

AJMPLOOP1;

TF1为0转LOOP1等待

PE1:

MOVTH0,#0FCH;

MOVTL0,#18H

启动T0计数,关T1定时

CLRTR1

AJMPLOOP

6-6已知单片机系统时钟频率为6MHz,若要求定时值分别为0.1ms、1ms和10ms,定时器T0工作在方式0、方式1和方式2时,定时器对应的初值各为多少?

方式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*2SMOD)/(384*波特率)

取SMOD=1,则X=229.96=230=E6H。

(若取SMOD=0,则X=F3H)

采用中断方式编程,单片机发送程序如下:

ORG2000H

TblockDATA2000H

MOVTMOD,#20H;

定时器(波特率)初始化

MOVTL1,#0E6H

MOVTH1,#0E6H

CLRET1;

关定时器T1中断

SETBTR1;

启动T1

MOVSCON,#40H;

串行口初始化(方式1)

MOVPCON,#80H;

SMOD=1

MOVDPTR,#Tblock

MOVR7,#1EH

TRS:

MOVC,PSW.0

MOVACC.7,C

MOVSBUF,A;

启动发送

DECR7

SETBEA;

允许串行口中断

WAIT:

SETBES

SJMPWAIT;

等待串行口中断

中断服务程序:

ORG0023H

LJMPSBV

ORG0100H

SBV:

CLRES

CLRTI

MOVSBUF,A;

DJNZR7,NEXT

RETI;

中断返回

END

第七章作业(补充题)

7-1如下图所示8051的P1.4~P1.7接有4个发光二极管,P1.0~P1.3接有4个开关,最下方按键用于产生中断请求信号。

每中断一次,采集一次P1.0~P1.3的开关状态反映到P1.4~P1.7的发光二极管上。

程序清单如下:

ORG0000H;

主程序

SJMPMAIN

ORG0003H

AJMPINT0;

转入服务程序

ORG0030H

MAIN:

SETBIT0;

设INT0为边沿触发

SETBEX0;

允许INT0中断

SETBEA;

开放总允许

INT0:

ORLP1,#0FH;

MOVA,P1;

从P1口输入开关状态

SWAPA;

交换高、低4位

XRLA,#0F0H;

低4位不变,高4位取反

MOVP1,A;

输出

RETI

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

ORG000BH

AJMPTIMER

ORG0030H

TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

MOVR0,#00H

MOVDPTR,#30H

MOVTMOD,#01H

MOVTH0,#0D8H

MOVTL0,#0F0H

SETBET0

SETBEA

SETBTR0

START:

INCR0

CJNER0,#100,NEXT

MOVR0,#00H

MOVA,R0

MOVB,10

MOVR1,A;

十位缓存

MOVR2,B;

个位缓存

MOVR4,#200

DELAY:

MOVR5,#200

DJNZR5,$

DJNZR4,DELAY

TIMER:

MOVP1,A

SETBP2.1

MOVR6,#200

DJNZR6,$

CLRP2.1

MOVA,R2

MOVCA,@A+DPTR

SETBP2.0

MOVR6,#200

CLRP2.0

MOVTH0,#0D8H

MOVTL0,#0F0H

SETBTR0

END

第八章作业(补充题)

8-1根据图9-3电路,请编写如下图所示梯形波,要求梯形波的下底由8031内部定时器实现。

(设fosc=12MHz)

MOVTMOD,#10H;

写入工作方式控制字

MOVTH1,#3CH;

MOVTL1,#B0H

MOVR0,#0FEH

CLRA

DOWN:

MOVX@R0,A;

线性下降段

INCA

JNZDOWN

SETBTR1;

启动T1工作

WAIT:

JBCTF1,NEXT;

等待50ms时间到

SJMPWAIT

NEXT:

CLRTR1;

关闭T1

MOVTH1,#3CH;

重装计数初值

MOVA,#0FEH

UP:

线性上升段

DECA

JNZUP

SJMPDOWN

END

8-2用查询和中断方式实现AD转换编程,要求对通道5连续采集3次取中值作为本次采样值,并存于内部RAM30H单元。

中断方法:

;

主程序……

MOVR0,#0F0H

MOVR1,#30H

MOVR2,#05H;

IN5通道号

MOVR3,#03H;

循环次数

SETBEA

SETBEX1;

开外中断0

SETBIT1;

中断请求信号为下降沿触发

MOVA,R2;

选通道IN5

MOVX@R0,A;

启动A/D转换

LOOP:

SJMPLOOP;

等待中断

中断服务程序

……

ORG1000H

ADINT0:

MOVXA,@R0;

读取A/D转换数据

MOV@R1,A;

存储数据

INCR1;

数据指针加1

DJNZR3,ROT

ACALLADSHUJU;

调用数据处理子程序

CLREX0

JMPEXIT

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,A;

(30H)=Min

MOVA,31H

CJNEA,32H,NEXT5

NEXT5:

JCNEXT6

NEXT6:

MOV31H,A;

(31H)=Mid,(32H)=Max

MOV30H,31H;

取中间数送(30H)

RET

查询方法:

……

SETBP3.3

WAIT0:

JNBP3.3,WAIT0;

等待转换开始

JBP3.3,WAIT;

查询转换是否结束

ADINT0:

MOVXA,@R0;

JMPWAIT

JCNEXT2

MOV30H,A;

(30H)=Min

EXIT:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1