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

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

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

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

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

单片机原理及其接口技术王敏课后作业答案

单片机原理及其接口技术王敏课后作业答案

第二章作业(P40)

2-4MCS-51单片机中执行程序的地址放在哪?

由几个位组成?

最大寻址范围是多少?

答:

放在程序计数器PC中,16位,64KB。

2-5在程序存储器中,0000H、0003H、000BH、0013H、001BH、0023H这6个单元有什么特定的含义?

答:

0000H复位后,PC=0000H,开始执行程序的地址

0003H外部中断0(INT0)入口地址

000BH定时器0中断(TF0)入口地址

0013H外部中断1(INT1)入口地址

001BH定时器1中断(TF1)入口地址

0023H串行口中断TI/RI入口地址

2-10开机复位以后,CPU使用哪一组工作寄存器?

它们的地址是什么?

如何改变当前工作寄存器?

答:

使用第0组工作寄存器,00H-07H,通过修改PSW中的RS1和RS0两位来改变当前的工作寄存器。

 

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

MOVDPTR,#2000H

ROT:

MOVXA,@DPTR

JBACC.7,NEXT

MOV@R1,A

INCR1

NEXT:

INCDPTR

DJNZR0,ROT

SJMP$

END

第四章作业(P104)

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

解:

ORG0100H

LENDATA20H

NUMDATA21H

BLOCKDATA23H

MAIN:

MOVNUM,#00H

MOVNUM+1,#00H

MOVR0,#BLOCK

LOOP:

MOVA,@R0

JNBACC.7,POSI

INCNUM+1

SJMPNEXT

POSI:

INCNUM

NEXT:

INCR0

DJNZLEN,LOOP

SJMP$

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$

END

4-11将内部RAM的AAA单元中8位无符号数转换成BCD码表示的十进制数。

(要求用连续除10的方法实现)

解:

ORG0100H

AAADATA20H

BAIDATA21H

SHIDATA22H

GEDATA23H

MOVA,AAA

MOVB,#0AH

DIVAB

MOVGE,B

MOVB,#0AH

DIVAB

MOVSHI,B

MOVBAI,A

SJMP$

END

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

MOVA,@R0

NEXT1:

DJNZR2,LOOP

MOVMIN,A

SJMP$

END

 

第五章作业(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。

则相应的程序如下:

ORG0000H

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等定时时间到

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,则机器周期为1µs。

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

则相应的程序如下:

主程序:

ORG1000H

START:

MOVTMOD,#01H

MOVTH0,#0FCH

MOVTL0,#18H

MOVIE,#82H;开T0中断

SETBTR0;启动T0

MOVR0,#0FAH;软件计数器赋初值

LOOP:

SJMP$;等待中断

中断程序:

ORG000BH

AJMPBRT0

ORG0080H

BRT0:

CPLP1.0

DJNZR0,NEXT;250ms未到,转NEXT

CPLP1.2;250ms到,改变P1.2电平

MOVR0,#0FAH

NEXT:

MOVTH0,#0FCH

MOVTL0,#18H

RETI

END

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。

则相应的程序如下:

ORG2000H

START:

MOVTMOD,#15H;写入工作方式字

MOVTH0,#0FCH;写入计数初值

MOVTL0,#18H

MOVTH1,#0FCH

MOVTL1,#18H

SETBTR0;启动T0

LOOP:

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

AJMPLOOP;TF0为0转LOOP等待

PE:

SETBTR1;启动T1定时,关T0计数

CLRTR0

LOOP1:

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

AJMPLOOP1;TF1为0转LOOP1等待

PE1:

MOVTH0,#0FCH;重装初值

MOVTL0,#18H

MOVTH1,#0FCH

MOVTL1,#18H

SETBTR0;启动T0计数,关T1定时

CLRTR1

AJMPLOOP

END

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

解:

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

方式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:

MOVXA,@DPTR

MOVC,PSW.0

MOVACC.7,C

MOVSBUF,A;启动发送

DECR7

INCDPTR

SETBEA;允许串行口中断

WAIT:

SETBES

SJMPWAIT;等待串行口中断

中断服务程序:

ORG0023H

LJMPSBV

ORG0100H

SBV:

CLRES

CLRTI

MOVXA,@DPTR

MOVC,PSW.0

MOVACC.7,C

MOVSBUF,A;启动发送

DJNZR7,NEXT

SJMP$

NEXT:

INCDPTR

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;开放总允许

SJMP$

INT0:

ORLP1,#0FH;中断服务程序:

MOVA,P1;从P1口输入开关状态

SWAPA;交换高、低4位

XRLA,#0F0H;低4位不变,高4位取反

MOVP1,A;输出

RETI

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:

INCR0

CJNER0,#100,NEXT

MOVR0,#00H

NEXT:

MOVA,R0

MOVB,10

DIVAB

MOVR1,A;十位缓存

MOVR2,B;个位缓存

MOVR4,#200

DELAY:

MOVR5,#200

DJNZR5,$

DJNZR4,DELAY

AJMPSTART

TIMER:

CLRTR0

MOVA,R1

MOVCA,@A+DPTR

MOVP1,A

SETBP2.1

MOVR6,#200

DJNZR6,$

CLRP2.1

MOVA,R2

MOVCA,@A+DPTR

MOVP1,A

SETBP2.0

MOVR6,#200

DJNZR6,$

CLRP2.0

MOVTH0,#0D8H

MOVTL0,#0F0H

SETBTR0

RETI

END

 

第八章作业(补充题)

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

(设fosc=12MHz)

解:

ORG0000H

AJMPSTART

ORG0100H

START:

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;重装计数初值

MOVTL1,#B0H

MOVA,#0FEH

UP:

MOVX@R0,A;线性上升段

DECA

JNZUP

SJMPDOWN

END

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

 

中断方法:

;主程序……

ORG0100H

START:

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

ROT:

MOVA,R2

MOVX@DPTR,A;启动A/D转换

EXIT:

RETI

;数据处理子程序

ADSHUJU:

MOVA,30H

CJNEA,31H,NEXT1

XCHA,32H;≥交换

NEXT4:

MOV30H,A;(30H)=Min

MOVA,31H

CJNEA,32H,NEXT5

NEXT5:

JCNEXT6

XCHA,32H;≥交换

NEXT6:

MOV31H,A;(31H)=Mid,(32H)=Max

MOV30H,31H;取中间数送(30H)

RET

EXIT:

END

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

当前位置:首页 > 人文社科 > 法律资料

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

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