赵嘉蔚北京交通大学单片机原理与接口技术课后习题.docx

上传人:b****8 文档编号:29650688 上传时间:2023-07-25 格式:DOCX 页数:24 大小:20.81KB
下载 相关 举报
赵嘉蔚北京交通大学单片机原理与接口技术课后习题.docx_第1页
第1页 / 共24页
赵嘉蔚北京交通大学单片机原理与接口技术课后习题.docx_第2页
第2页 / 共24页
赵嘉蔚北京交通大学单片机原理与接口技术课后习题.docx_第3页
第3页 / 共24页
赵嘉蔚北京交通大学单片机原理与接口技术课后习题.docx_第4页
第4页 / 共24页
赵嘉蔚北京交通大学单片机原理与接口技术课后习题.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

赵嘉蔚北京交通大学单片机原理与接口技术课后习题.docx

《赵嘉蔚北京交通大学单片机原理与接口技术课后习题.docx》由会员分享,可在线阅读,更多相关《赵嘉蔚北京交通大学单片机原理与接口技术课后习题.docx(24页珍藏版)》请在冰豆网上搜索。

赵嘉蔚北京交通大学单片机原理与接口技术课后习题.docx

赵嘉蔚北京交通大学单片机原理与接口技术课后习题

第一章

1-4

运算器,控制器,存储器,输入设备,输出设备

1-9(7)

1-11(3)

1-12(4)

1-16(3)

见例1-17

1-19

(1)

01000111

1-20

(1)

414238

 

第二章

2-2见书p30,

2-4见书p31,

2-5见书p31,

2-6见书p32,

2-9见书p38,

2-10见书p39,

2-13见书p43,

2-14见书p46,

3-8按要求写出相应的指令。

(1)把寄存器R6的内容送到累加器A中。

(2)把外部RAM1000H单元的内容传送到内部RAM30H单元中。

(3)清除内部RAM3FH单元的高4位。

(4)使累加器A的最低位置1。

(5)清除进位位。

(6)使和置1。

(7)把外部ROM2000H单元中的内容送到内部RAM的20H单元中。

(8)把外部ROM2000H单元中的内容送到外部RAM的3000H单元中。

答案:

(1)MOVA,R6

(2)MOVDPTR,#1000H

MOVXA,@DPTR

MOVR0,#30H

MOV@R0,A

(3)ANL3FH,#0FH

(4)ORLA,#01H

(5)CLRC

(6)ORLA,#30H

(7)CLRA

MOVDPTR,#2000H

MOVCA,@A+DPTR

MOV20H,A

(8)CLRA

MOVDPTR,#2000H

MOVCA,@A+DPTR

MOVDPTR,#3000H

MOVX@DPTR,A

3-10编写程序段完成如下要求。

(1)将寄存器R0中的内容乘以10(积小于256)。

(2)将片内RAM30H单元开始的15个字节的数据传送到片外RAM3000H开始的单元中。

(3)将片外RAM2000H开始的5个字节的数据传送到片内RAM20H开始的单元中。

(4)有10个字节的二进制数存放在片内RAM以40H开始的单元内,编程找出其中的最大值并存于内部50H单元中。

(5)将片外RAM空间2000H~200AH中的数据的高4位变零,低4位不变,原址存放。

(6)将外部RAM2040H单元的内容与3040H单元的内容互换。

答案:

(1)MOVB,#0AH

MOVA,R0

MULAB

MOVR0,A

(2)ORG0000H

MOVR0,#30H

MOVDPTR,#3000H

MOVR7,#0FH

LOOP:

MOVA,@R0

MOVX@DPRT,A

INCR0

INCDPTR

DJNZR7,LOOP

SJMP$

END

(3)MOVDPTR,#2000H

MOVR0,#20H

MOVR7,#05H

LOOP:

MOVXA,@DPTR

MOV@R0,A

INCR0

INCDPTR

DJNZR7,LOOP

END

(4)ORG0000H

MOVA,40H;A寄存器放最大值,且初始化最大值(默认第一个数)

MOVR3,#09H;比较次数

MOVR0,#41H

START:

CJNEA,@R0,LOOP

LOOP:

JNCLOOP1;如果比A小,则跳转到LOOP1

MOVA,@R0;如果比A大,则更新A的值

LOOP1:

INCR0

DJNZR3START

MOV50H,A

SJMP$

END

(5)MOVDPTR,#20000H

MOVR1,#0BH

LOOP:

MOVXA,@DPTR

ANLA,#0FH

MOVX@DPTR,A

INCDPTR

DJNZR1,LOOP

SJMP$

(6)MOVDPTR,#2040H

MOVXA,@DPTR

MOVR0,#20H

MOV@R0,A

MOVDPTR,#3040H

MOVXA,@DPTR

XCH@R0,A

MOVX@DPTRA

MOVA,@R0

MOVDPTR,#2040H

MOVX@DPTR,A

3-15设有一带符号的十六位数以补码形式存放在R2、R3寄存器中,试编制求其原码的程序。

ORG0000H

START:

MOVA,R3

JB,NEXT;判读符号位,如果是正数则原码与补码一样,如果为负,求原码的方法是符号位不变,其余位取反加1

MOVR3,A

HERE:

SJMP$

NEXT:

XRLA,#7FH;高八位,符号位不变,其余取反

MOVR3,A;放回R3

MOVA,R2;低八位

XRLA,#0FFH;取反

ADDA,#01H;加1

MOVR2,A;放回R2

MOVA,R3;看低八位是否有向高八位进位

ADDCA,#00H

MOVR3,A

SJMP$

END

3-16设有一不带符号的十六进制数组,存放在8031单片机片内RAM以BUFFER为首址的连续单元中,其长度为30个字节,要求统计小于10,等于10及大于10的数的个数,并把它们分别存放到片内RAM的LESS、EQUAL、BIG单元中,试编制实现上述要求的程序并画出相应的流程图。

ORG0000H

BUFFERDATA10H

LESSDATA30H

EQUALDATA31H

BIGDATA32H

MOVR0,#BUFFER

MOVR7,#1EH

MOVLESS,#00H

MOVEQUAL,#00H

MOVBIG,#00H

NEXT:

CJNE@R0,#0AH,LOOP1;循环次数

INCEQUAL

AJMPLOOP3

LOOP1:

JCLOOP2

INCBIG

AJMPLOOP3

LOOP2:

INCLESS

LOOP3:

INCR0

DJNZR7,NEXT

SJMP$

END

3-17在外部RAM1000H单元开始的存储区域存放着10个用ASCII码表示的0~9之间的数字,请编程将它们转换成BCD码,然后存放在2000H~2004H单元(以压缩BCD码存放)。

ORG0000H

MOVR2,#05H

MOVDPTR,#1000H

MOVR0,#20H

LOOP:

MOVXA,@DPTR

ANLA,#0FH

MOVR4,A

INCDPTR

MOVXA,@DPTR

ANLA,#0FH

SWAPA

ADDA,R4

MOV@R0,A

INCR0

INCDPTR

DJNZR2,LOOP

MOVR5,#05H

MOVR0,#20H

MOVDPTR,#2000H

LOOP1:

MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR5,LOOP1

SJMP$

END

3-18设有50个无符号8位二进制数,存放在8031单片机内部RAM以BOFER为首址的连续单元中,试编制将其中最小数存放到内部RAM的MIN单元的程序并画出相应的流程图。

ORG0000H

BOFERDATA20H

MINDATA60H

MOVR2,#31H;循环49次

MOVR1,#BOFER+1

MOVMIN,BOFER;把最小值放A,且初始化时把第一个数放入A

LOOP:

CJNE@R1,MIN,LOOP1

LOOP1:

JNCLOOP2;@R1>MIN

MOVMIN,@R1;MIN>@R1,MIN要更新

LOOP2:

INCR1

DJNZR2,LOOP

SJMP$

END

3-19设有一字符串存放在8031单片机内部RAM以20H为首址的连续单元中,字符串以回车结束。

要求统计该字符串中字符B(‘B’=42H)的个数,并将其存入外部RAM的40H单元中。

试编写实现上述要求的程序并画出相应的流程图。

ORG0000H

MOVR0,#20H

MOVR1,#00H;‘B’的个数初始化

LOOP:

MOVA,@R0

CJNEA,#42H,NEXT;不为B则跳转

LOOP1:

INCR1;为B则使计数器加1

INCR0

AJMPLOOP

NEXT:

CJNEA,#0DH,LOOP1;判断是否结束(回车键)

MOVDPTR,#0040H;把结果放外部RAM中

MOVA,R1

MOVX@DPTR,A

SJMP$

END

3-23已知MDA和MDB单元内分别存有两个小于10的整数a和b,试用查表子程序实现c=a2+2ab+b2,并把和存于MDC和MDC+1单元中(MDC单元中放低字节,MDC+1单元中放高字节)。

ORG0000H

MDADATA20H

MDBDATA21H

MDCDATA22H

ORG0000H

CLRC

MOVA,MDA

ACALLSQR

MOVR2,A

MOVA,MDB

ACALLSQR

ADDA,R2

MOVR2,A;a2+b2结果暂时放入R2

MOVB,MDA;下面算2*a*b

MOVA,MDB

MULAB

RLA

ADDCA,R2

MOVMDC,A

CLRA

ADDCA,#00H

MOVMDC+1,A

SJMP$

SQR:

ADDA,#01H

MOVCA,@A+PC

RET

SQRTAB:

DB0149162536496481100121

DB144169196225

END

3-25设有一长度为20H的字符串,存放在8031单片机片内RAM以10H为首地址的连续单元中,试编制将其中数字与字母分开并将它们分别送到以30H和50H为首地址的连续单元中的程序。

ORG0000H

MOVR2,#20H;循环次数

MOVR1,#10H

MOV60H,#30H;数字存储首地址

MOV61H,#50H;字母存储首地址

LOOP:

MOVA,@R1

CJNEA,#40H,NEXT

NEXT:

JNCNEXT1;如果是字母则跳转到NEXT1

MOVR0,60H;是数字,把数字的存储地址给R0

MOV@R0,A

INC60H

SJMPLOOP1

NEXT1:

MOVR0,61H

MOV@R0,A;是字母,把字母的存储地址给R0

INC61H

LOOP1:

INCR1

DJNZR2,LOOP

SJMP$

END

 

第四章

4-3,见书略

4-4,见书略

4-5,见书略

4-8,见书略

4-9,见书略

4-16,16.高电平:

初值:

低电平:

初值:

ORG0000H

AJMPMAIN

ORG000BH

AJMPTOINT

MAIN:

MOVTMOD,#01H

MOVTH0,#FDH

MOVTL0,#64H

MOVIE,#82H

SETB

SETBTR0

SJMP$

TOINT:

MOVC,

JCNEXT

MOVTH0,#0FDH

MOVTL0,#64H

SJMPCOM

NEXT:

MOVTH0,#0FAH

MOVTL0,#0CAH

COM:

CPL

RETI

END

4-17,定时器50ms,循环2次可得100ms,设定初值3CB0H

ORG0000H

AJMPMAIN

ORG001BH

AJMPBRT1

MAIN:

MOVTMOD#10H

MOVTH1,#3CH

MOVTL1,#0B0H

MOVR1,#10H

MOVR0,#70H

MOVR2,#5

MOVR3,#02H

MOVIE,#88H

SETBTR1

LOOP:

SJMP$

BRT1:

MOVTH1,#3CH

MOVTL1,#0B0H

DJNZR3,DONE

MOVR3,#02H

DJNZR2,LOOP

CLRET1

SJMPDONE

LOOP:

MOVR4,#10

LOOP1:

MOVA,@R1

MOV@R0,A

INCR1

INCR0

DJNZR4,LOOP1

DONE:

RETI

END

4-26,串行接口设置为方式1,采用定时器T1方式2作为波特率发生器,SMOD=0,则计数初值0E6H分别装入TL1,TH1,程序如下:

ORG0000H

AJMPMAIN

ORG0023H

AJMPPR1

RBLOCKDATA2000H

MAIN:

MOVTMOD,#20H

MOVTL1,#0E6H

MOVTH1,#0E6H

MOVPCON,#00H

SETBTR1

MOVSCON,#50H

MOVDPTR,#RBLOCK

MOVR2,#30

SETBEA

SETBES

WAIT:

JBERROR1

SJMPWAIT

ERROR1:

CLREA

SJMP$

PR1:

CLRRI

MOVA,SBUF

MOVC,

JCERROR

ANLA,#7FH

MOVX@DPTR,A

DJNZR2,NEXT

CLREA

SJMP$

ERROR:

SETB

SJMPNEXT1

NEXT:

INCDPTR

NEXT1:

RETI

END

第五章

5-8要在单片机片外扩展16KB数据存储器,选择其地址为0000~3FFFH。

如选用6264为存储器芯片,74LS138为译码器,试画出硬件的连接图。

(图中右边的6116应该改为6264)

5-9要在单片机片外扩展32KB数据存储器,选择其地址为8000H~FFFFH。

如选用线选法,试设计其硬件的连接图。

5-11决定8155端口地址的引脚有哪些的作用是什么T/IN和的作用是什么

1.AD0~AD7(8条)三态地址/数据线

控制总线(8条)

I/O总线(22条)

电源线(2条)

2.为I/O口及存储器选择信号,若=0,则选择存储器;否则选择I/O口;

3.T/IN为定时器输入,定时器工作所需的时钟信号由此端输入。

为定时器输出;

5-13LED数码管显示器在单片机系统中有哪几种显示方式

LED显示器的显示方式可分为静态显示和动态显示两种。

静态显示是指每个数码管的段选线控制是独立的,其特点是各LED管能稳定地同时显示各自的字形。

动态显示又称扫描显示方式,它是将每个数码管的段选线同名相连,在某一时刻只让一根位选线有效,同时在段选线上输出该位要显示的字形码,在下一时刻改变要显示的字位并在段选线上输出相应的字形码,如此各LED轮流地一遍一遍地显示各自的字符,由于视觉器官具有视觉暂留效应,从而看到的是各LED似乎在同时显示不同的字形。

5-14以共阴极数码管为例说明其字形码是如何形成的

共阴极是把八个二极管的阴极接在一起作为位选线,低电平有效。

下图为八段LED数码显示管的结构和原理图。

管脚信号a~h用来控制显示的字形,称为段选线,一般将段选线的高低电平按h、g、f、e、d、c、b、a顺序排列,形成十六进制编码,称为字形码

5-16已知30H单元中有一带符号数,若它是正数,则在图5-41所示接口电路中自左至右不断地依次显示0;若它是负数,则自右至左不断地依次显示1。

试编写相应的程序。

ORG0000H

START:

MOVR1,#06H;数码管个数

MOVR2,#20H;负数时数码管自右向左显示时初始位控制字

MOVR3,#01H;正数时数码管自左向右显示时初始位控制字

MOVR7,#02H;延时1ms,内部循环

MOVR6,#0FFH;延时1ms,外部循环

MOVA,#0EH;命令控制字,B口输出,C口输出

MOVDPTR,#2100H;命令寄存器地址

MOV@DPTR,A;写命令

MOVA,30H;取出30H单元的数,判断正负

JB,NEG;如果为负则跳转至NEG

SJMPPOS;如果为正则跳转至POS

NEG:

MOVA,#06H;“1”的字形码

MOVDPTR,#2102H;B寄存器

MOVX@DPTR,A;

NXN:

MOVA,R2;负数的位控制字

MOVDPTR,#2103H;C寄存器

MOVX@DPTR,A;输出位控制字,控制数码管的显示

RRA;位控制字右移一位,实现数码管自右向左点亮

MOVR2,A;把位控制字放回R2寄存器

ACALLDL;调用延时程序,延时1ms

NEXTN:

DJNZR1,NXN;判断数码管是否已经循环完毕

SJMPJS;如果显示完毕则跳转至JS

POS:

MOVA,#3FH;“0”的字形码

MOVDPTR,#2102H;B寄存器

MOVX@DPTR,A;

NXP:

MOVA,R3;正数的位控制字

MOVDPTR,#2103H;C寄存器

MOVX@DPTR,A;

RLA;位控制字左移一位,实现数码管自左向右点亮

MOVR3,A;把位控制字放回R3寄存器

ACALLDL;调用延时程序,延时1ms

NEXTP:

DJNZR1,NXP;判断数码管是否已经循环完毕

JS:

SJMPSTART;如果显示完毕则跳转至JS

DL:

MOVR6,#0FFH;延时1ms子程序

DL6:

DJNZR6,DL6;

DJNZR7,DL;

RET

END

5-18设计具有三个按键的电路并编写相应的程序:

当第一个按键按下时,将40H单元置1;当第二个按键按下时,40H单元置2;当第三个按键按下时,40H单元置0。

ORG0000H

SCAN:

MOVDPTR,#0101H

MOVA,#00H

MOV@DPTR,A

MOVDPTR,#0103H

MOVXA,@DPTR

ANLA,#07H

CJNEA,#07H,KEYSCAN

KEYSCAN:

ACALLDYRMS

MOVR2,#0FEH

KEYSM1:

MOVA,R2

MOVDPTR,#0101H

MOVX@DPTR,A

MOVDPTR,#0103H

MOVXA,@DPTR

ANLA,#07H

CJNEA,#07H,JSADD

SJMP$

JSADD:

JB,JSADD1

MOV40H,#01H

AJMPDONE

JSADD1:

JB,JSADD2

MOV40H,#02H

AJMPDONE

JSADD2:

JB,DONE

MOV40H,#00H

DONE:

SJMP$

DYRMS:

MOVR7,#18H

DYRMS1:

MOVR6,#0FFH

DYRMS2:

DJNZR6,DYRMS2

DJNZR7,DYRMS1

RET

END

 

第六章

6-5见书p211,

6-6见书p213,

6-8仿书p216,

6-10见书p219,

6-11见书p221,

3.解:

分辨率为

6-8利用8051单片机和DAC0832产生的梯形波(如图6-16所示,梯形波的斜边采用步幅为1的线性波形,幅度从00H~80H,水平段调用延迟程序维持),编写梯形波产生的程序。

若水平段由8051的内部定时器/计数器来维持,程序应怎样编制

图6-16梯形波

8.ORG0000H

TIXING:

MOVA,#00H

MOVDPTR,#7FFFH

MOVR2,#80H

UP:

MOVX@DPTR,A

INCA

DJNZR2,UP

ACALLDELAY

DOWN:

MOVX@DPTR,A

DECA

JNZDOWN

ACALLDELAY

SJMPUP

DELAY:

MOVR4,#02H

DEL1:

MOVR5,#0F4H

DEL2:

DJNZR5,DEL2

DJNZR4,DEL1

RET

END

若是采用定时器维持水平段:

ORG0000H

AJMPMAIN

ORG000BH

AJMPT0INT

MAIN:

MOVTMOD,#01H

MOVTH0,#0D8H

MOVTL0,#0FAH

MOVIE,#82H

MOVA,#00H

MOVDPTR,#7FFFH

MOVR2,#80H

UP:

MOVX@DPTR,A

INCA

DJNZR2,UP

SETBF0

SETBTR0

SJMP$

T0INT:

CLRTR0

JBF0,DOWN

CLRA

MOVR2,#80H

UP:

MOVX@DPTR,A

INCA

DJNZR2,UP

SETBF0

SJMPFAN

DOWN:

MOVX@DPTR,A

DECA

JNZDOWN

CLRF0

FAN:

MOVTH0,#0D8H

MOVTL0,#0FAH

SETBTR0

RETI

12.ORG0000H

ADC:

MOVDPTR,#7FFFH

MOVR0,#30H

LOOP:

MOVA,#01H

MOVX@DPTR,A

MOVR2,#05H

DL:

DJNZR2,DL

WAIT:

JB,WAIT

MOVXA,@DPTR

MOV@R0,A

SJMPADC

END

6-13参考图6-13所示的电路原理图,若使ADC0809的8个模拟通道地址处于4000H~5FFFH,接口电路应如何改动编写程序,定时1s对IN7通道进行A/D转换,利用8051的定时器/计数器T0实现定时,结果存于8051的内部RAM50H单元。

13.定时器50ms,循环20次可得1s,设定初值3CB0H

ORG0000H

AJMPMAIN

ORG000BH

AJMPTOINT

MAIN:

MOVTMOD,#01H

MOVR1,#20

LOOP:

MOVTH0,#03CH

MOVTL0,#0B0H

MOVDPTR,#6007H

MOVX@DPTR,

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

当前位置:首页 > 高中教育 > 高中教育

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

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