《单片机》编程题题目整合答案解析.docx

上传人:b****4 文档编号:4790113 上传时间:2022-12-09 格式:DOCX 页数:67 大小:31.87KB
下载 相关 举报
《单片机》编程题题目整合答案解析.docx_第1页
第1页 / 共67页
《单片机》编程题题目整合答案解析.docx_第2页
第2页 / 共67页
《单片机》编程题题目整合答案解析.docx_第3页
第3页 / 共67页
《单片机》编程题题目整合答案解析.docx_第4页
第4页 / 共67页
《单片机》编程题题目整合答案解析.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

《单片机》编程题题目整合答案解析.docx

《《单片机》编程题题目整合答案解析.docx》由会员分享,可在线阅读,更多相关《《单片机》编程题题目整合答案解析.docx(67页珍藏版)》请在冰豆网上搜索。

《单片机》编程题题目整合答案解析.docx

《单片机》编程题题目整合答案解析

《单片机原理及应用》编程题题库参考答案

六、编程(每题10分)

1、内部RAM30H和31H单元中存放着2个0-9的ASCII码(高位字节在前),请将其转换为压缩BCD码(高位在前)并存入外部RAM2300H单元中。

解:

ORG0H

LJMPSTART

ORG30H

START:

MOVA,30H

ANLA,#0FH

SWAPA

MOVR0,A

MOVA,31H

ANLA,#0FH

ORLA,R0

MOVDPTR,#2300H

MOVX@DPTR,A

END

评分办法:

不要求写出程序的注释。

程序设计思路正确可得5分,指令完全写对可得10分。

若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。

2、设单片机的晶体震荡频率为12MHz,利用定时器T0编程由P1.2输出周期为10mS的方波。

(要求:

T0工作在方式1下,采用中断方式工作)

解:

周期为10mS则半周期为5mS,因此T0的定时初值为65536-5000/1=60536=0EC78H

ORG0

LJMPSTART

ORG000BH

LJMPTS

ORG30H

START:

MOVTMOD,#01H

MOVTH0,#0ECH

MOVTL0,#78H

SETBET0

SETBTR0

SETBEA

CLRP1.2

SJMP$

TS:

CLRTR0

MOVTH0,#0ECH

MOVTL0,#78H

SETBTR0

CPLP1.2

RETI

END

评分办法:

不要求写出程序的注释。

T0的方式控制字写对和定时初值计算正确可各得1分;程序设计思路正确可得4分,指令完全写对可得满分(10分)。

若少量指令写错可酌情扣1-2分;若仅写出少量指令可酌情给1-2分。

3、将存放在内部RAM30H-35H单元的压缩型BCD码转换成相应的ASCII码,依次存放到外部RAM2100H开始的单元区中。

ORG0H

LJMPSTART

ORG30H

START:

MOVR0,#30H

MOVR2,#06H

MOVDPTR,#2100H

LOOP:

MOVA,@R0

SWAPA

ANLA,#0FH

ORLA,#30H

MOVX@DPTR,A

INCDPTR

MOVA,@R0

ANLA,#0FH

ORLA,#30H

MOVX@DPTR,A

INCDPTR

INCR0

DJNZR2,LOOP

SJMP$

END

评分办法:

不要求写出程序的注释。

程序设计思路正确可得5分,指令完全写对可得10分。

若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。

4、已知8051单片机应用系统的晶体振荡频率为12MHz,请利用定时器T0实现在P1.0引脚上输出周期为100mS的方波。

(要求:

采用中断方式,T0工作在方式1下)

解:

输出方波周期为100mS,故半周期为50mS,因此T0的定时初值是65536-50000/1=15536=3CB0H

ORG0H

LJMPSTART

ORG000BH

LJMPTS

ORG30H

START:

MOVTMOD,#01H

MOVTH0,#3CH

MOVTL0,#0B0H

SETBET0

SETBTR0

SETBEA

CLRP1.2

SJMP$

TS:

CLRTR0

MOVTH0,#3CH

MOVTL0,#0B0H

SETBTR0

CPLP1.2

RETI

END

评分办法:

不要求写出程序的注释。

T0的方式控制字写对和定时初值计算正确可各得1分;程序设计思路正确可得4分,指令完全写对可得满分(10分)。

若少量指令写错可酌情扣1-2分;若仅写出少量指令可酌情给1-2分。

5、设8031单片机应用系统的晶振频率为12MHz,请利用T0在P1.0和P1.1引脚上输出频率为20Hz、互补(两个波形互为反相)的方波。

要求:

采用中断方式,T0工作在方式1。

解:

输出频率为20Hz,则周期为1/20=50mS,半周期为50/2=25mS,

T0的定时初值为:

65536-25000/1=40536=9E58H

ORG0H

LJMPSTART

ORG000BH

LJMPTS

ORG30H

START:

MOVTMOD,#01H;T0设定为定时器,工作方式1

MOVTH0,#9EH

MOVTL0,#58H

SETBET0

SETBEA

SETBTR0

CLRP1.0

SETBP1.1

SJMP$

TS:

CLRTR0

MOVTH0,#9EH

MOVTL0,#58H

SETBTR0

CPLP1.0

CPLP1.1

RETI

END

评分办法:

不要求写出程序的注释。

T0的方式控制字写对和定时初值计算正确可各得1分;程序设计思路正确可得4分,指令完全写对可得满分(10分)。

若少量指令写错可酌情扣1-2分;若仅写出少量指令可酌情给1-2分。

6、内部RAM20H和30H开始的单元分别存放着16个16进制数,请将对应单元的内容相加(不考虑溢出),并将和存入外部RAM2000H开始的单元中。

解:

ORG0

LJMPSTART

ORG30H

START:

MOVR0,#20H

MOVR1,#30H

MOVDPTR,#2000H

MOVR2,#08H;每个单元存放2个16进制数,故16个16进制数占用8个单元

LOOP:

MOVA,@R0

ADDA,@R1

MOVX@DPTR,A

INCR0

INCR1

INCDPTR

DJNZR2,LOOP

SJMP$

END

评分办法:

不要求写出程序的注释。

程序设计思路正确可得5分,指令完全写对可得10分。

若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。

7、8031单片机应用系统的晶体振荡器频率为12MHz,请利用定时器T0编程实现在P1.7引脚输出频率为20Hz的方波。

要求:

采用中断方式,T0工作在方式1下。

20Hz方波的周期是1/20=50mS,则其半周期为50/2=25mS

T0的定时初值为:

65536-25000*12/12=40536=9E58H

ORG0H

LJMPSTART

ORG000BH

LJMPTS

ORG30H

START:

MOVTMOD,#01H;T0设定为定时器,工作方式1

MOVTH0,#9EH

MOVTL0,#58H

SETBET0

SETBEA

SETBTR0

SJMP$

TS:

CLRTR0

MOVTH0,#9EH

MOVTL0,#58H

SETBTR0

RETI

END

评分办法:

不要求写出程序的注释。

T0的方式控制字写对和定时初值计算正确可各得1分;程序设计思路正确可得4分,指令完全写对可得满分(10分)。

若少量指令写错可酌情扣1-2分;若仅写出少量指令可酌情给1-2分。

8、请编写多字节无符号数减法程序。

被减数存放在内部RAM20H开始的8个单元中,减数存放在内部RAM30H开始的8个单元,请将差存放到外部RAM2000H开始的8个单元中,借位存放到OV标志中。

注意:

所有数据均按照从低字节到高字节的顺序存放。

ORG0

LJMPSTART

ORG30H

START:

MOVR0,#20H

MOVR1,#30H

MOVDPTR,#2000H

MOVR2,#08H

CLRC

LOOP:

MOVA,@R0

SUBBA,@R1

MOVX@DPTR,A

INCR0

INCR1

INCDPTR

DJNZR2,LOOP

MOVOV,C

SJMP$

END

评分办法:

不要求写出程序的注释。

程序设计思路正确可得5分,指令完全写对可得10分。

若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。

9、内部RAM40H和41H单元中存放着2个0-9的ASCII码(高位字节在前),请将其转换为压缩BCD码(高位在前)并存入外部RAM2000H单元中。

解:

ORG0H

LJMPSTART

ORG30H

START:

MOVA,40H

ANLA,#0FH

SWAPA

MOVR0,A

MOVA,41H

ANLA,#0FH

ORLA,R0

MOVDPTR,#2000H

MOVX@DPTR,A

END

评分办法:

不要求写出程序的注释。

程序设计思路正确可得5分,指令完全写对可得10分。

若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。

10、设单片机的晶体振荡频率为12MHz,利用定时器T0编程由P1.0和P1.1输出周期为10mS、互补(互为反相)的方波。

(要求:

T0工作在方式1下,采用中断方式工作)

解:

周期为10mS则半周期为5mS,因此T0的定时初值为65536-5000*12/12=60536=0EC78H

ORG0

LJMPSTART

ORG000BH

LJMPTS

ORG30H

START:

MOVTMOD,#01H

MOVTH0,#0ECH

MOVTL0,#78H

SETBET0

SETBTR0

SETBEA

CLRP1.0

SETBP1.1

SJMP$

TS:

CLRTR0

MOVTH0,#0ECH

MOVTL0,#78H

SETBTR0

CPLP1.0

CPLP1.1

RETI

END

评分办法:

不要求写出程序的注释。

T0的方式控制字写对和定时初值计算正确可各得1分;程序设计思路正确可得4分,指令完全写对可得满分(10分)。

若少量指令写错可酌情扣1-2分;若仅写出少量指令可酌情给1-2分。

11、将存放在内部RAM20H-2FH单元的压缩型BCD码(高位在前)转换成相应的ASCII码,依次存放到外部RAM1000H开始的单元区中。

ORG0H

LJMPSTART

ORG30H

START:

MOVR0,#20H

MOVR2,#10H

MOVDPTR,#1000H

LOOP:

MOVA,@R0

SWAPA

ANLA,#0FH

ORLA,#30H(或ADDA,#30H)

MOVX@DPTR,A

INCDPTR

MOVA,@R0

ANLA,#0FH

ORLA,#30H(或ADDA,#30H)

MOVX@DPTR,A

INCDPTR

INCR0

DJNZR2,LOOP

SJMP$

END

评分办法:

不要求写出程序的注释。

程序设计思路正确可得5分,指令完全写对可得10分。

若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。

12、已知8051单片机应用系统的晶体振荡频率为12MHz,请利用定时器T1实现在P1.0和P1.1引脚上输出互补(互为反相)的周期为100mS的方波。

(要求:

采用中断方式,T1工作在方式1下)

解:

输出方波周期为100mS,故半周期为50mS,因此T1的定时初值是65536-50000*12/12=15536=3CB0H

ORG0H

LJMPSTART

ORG001BH

LJMPTS

ORG30H

START:

MOVTMOD,#10H(或#1XH)

MOVTH1,#3CH

MOVTL1,#0B0H

SETBET1

SETBTR1

SETBEA

CLRP1.0

SETBP1.1

SJMP$

TS:

CLRTR1

MOVTH1,#3CH

MOVTL1,#0B0H

SETBTR1

CPLP1.0

CPLP1.1

RETI

END

评分办法:

不要求写出程序的注释。

T1的方式控制字写对和定时初值计算正确可各得1分;程序设计思路正确可得4分,指令完全写对可得满分(10分)。

若少量指令写错可酌情扣1-2分;若仅写出少量指令可酌情给1-2分。

13、设8031单片机应用系统的晶振频率为12MHz,请利用T0在P1.0引脚上输出频率为20Hz的方波。

要求:

采用中断方式,T0工作在方式1。

解:

输出频率为20Hz,则周期为1/20=50mS,半周期为50/2=25mS,

T0的定时初值为:

65536-25000*12/12=40536=9E58H

ORG0H

LJMPSTART

ORG000BH

LJMPTS

ORG30H

START:

MOVTMOD,#01H;T0设定为定时器,工作方式1

MOVTH0,#9EH

MOVTL0,#58H

SETBET0

SETBEA

SETBTR0

CLRP1.0

SJMP$

TS:

CLRTR0

MOVTH0,#9EH

MOVTL0,#58H

SETBTR0

CPLP1.0

RETI

END

评分办法:

不要求写出程序的注释。

T0的方式控制字写对和定时初值计算正确可各得1分;程序设计思路正确可得4分,指令完全写对可得满分(10分)。

若少量指令写错可酌情扣1-2分;若仅写出少量指令可酌情给1-2分。

14、内部RAM30H和38H开始的单元分别存放着8个压缩BCD码,请将对应单元的内容相加(不考虑溢出),并将和存入外部RAM1000H开始的单元中。

解:

ORG0

LJMPSTART

ORG30H

START:

MOVR0,#30H

MOVR1,#38H

MOVDPTR,#1000H

MOVR2,#08

LOOP:

MOVA,@R0

ADDA,@R1

DAA

MOVX@DPTR,A

INCR0

INCR1

INCDPTR

DJNZR2,LOOP

SJMP$

END

评分办法:

不要求写出程序的注释。

程序设计思路正确可得5分,指令完全写对可得10分。

若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。

15、8031单片机应用系统的晶体振荡器频率为12MHz,请利用定时器T1编程实现在P1.6和P1.7引脚输出互补(互为反相)的、频率为20Hz的方波。

要求:

采用中断方式,T1工作在方式1下。

解:

20Hz方波的周期是1/20=50mS,则其半周期为50/2=25mS

T1的定时初值为:

65536-25000/1=40536=9E58H

ORG0H

LJMPSTART

ORG001BH

LJMPTS

ORG30H

START:

MOVTMOD,#10H;T1设定为定时器,工作方式1

MOVTH1,#9EH

MOVTL1,#58H

SETBET1

SETBEA

CLRP1.6

SETBP1.7

SETBTR1

SJMP$

TS:

CLRTR1

MOVTH1,#9EH

MOVTL1,#58H

SETBTR1

CPLP1.6

CPLP1.7

RETI

END

评分办法:

不要求写出程序的注释。

T1的方式控制字写对和定时初值计算正确可各得1分;程序设计思路正确可得4分,指令完全写对可得满分(10分)。

若少量指令写错可酌情扣1-2分;若仅写出少量指令可酌情给1-2分。

16、请编写多字节无符号数加法程序。

被加数存放在内部RAM20H开始的8个单元中,加数存放在内部RAM30H开始的8个单元,请将和存放到外部RAM2000H开始的8个单元中,进位存放到F0标志中。

注意:

所有数据均按照从低字节到高字节的顺序存放。

ORG0

LJMPSTART

ORG30H

START:

MOVR0,#20H

MOVR1,#30H

MOVDPTR,#2000H

MOVR2,#08H

CLRC

LOOP:

MOVA,@R0

ADDCA,@R1

MOVX@DPTR,A

INCR0

INCR1

INCDPTR

DJNZR2,LOOP

MOVF0,C

SJMP$

END

评分办法:

不要求写出程序的注释。

程序设计思路正确可得5分,指令完全写对可得10分。

若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。

17、两个8字节压缩BCD码分别存放在内部RAM30H和40H开始的连续单元中(低位字节在前),请将二者求和(不考虑溢出情况),并将和存入外部RAM1000H开始的单元中。

解:

ORG0

MOVR0,#30H

MOVR1,#40H

MOVDPTR,#1000H

MOVR2,#8

LOOP:

MOVA,R0

ADDA,@R1

DAA

MOVX@DPTR,A

DJNZR2,LOOP

SJMP$

END

评分办法:

程序设计思路正确可得5分;对于仅写出部分指令的学生可酌情给1-4分;程序编制正确可得满分,若存在少量错误,可酌情扣1-3分。

18、设单片机的晶体振荡频率为6MHz,利用定时器T1编程由P1.6和P1.7输出周期为500μS、互补(互为反相)的方波。

(要求:

T1工作在方式2下,采用中断方式工作)

解:

T1定时器的初值=256-6*250/12=131=83H

ORG0

LJMPSTART

ORG1BH

LJMPTS

ORG30H

START:

MOVTMOD,#20H

MOVTH1,#131

MOVTL1,#131

SETBET1

SETBEA(或MOVIE,#88H)

SETBTR1

CLRP1.6

SETBP1.7

SJMP$

TS:

CPLP1.6

CPLP1.7

RETI

END

评分办法:

写对定时器方式字和初值各给1分,设计思路正确给4分,程序编制正确可得满分。

若仅写出少量指令,可酌情给1-3分。

19、将存放在内部RAM20H-2FH单元的十六进制数转换成ASCII码,依次存放到外部RAM2000H开始的单元中。

解:

MOVR0,#20H

MOVR2,#16

MOVDPTR,#2000H

MOVR3,DPH

MOVR4,DPL

LOOP:

MOVA,@R0

ANLA,#0FH

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVDPH,R3

MOVDPL,R4

MOVX@DPTR,A

INCDPTR

MOVR3,DPH

MOVR4,DPL

MOVA,@R0

SWAPA

ANLA,#0FH

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVDPH,R3

MOVDPL,R4

MOVX@DPTR,A

INCDPTR

MOVR3,DPH

MOVR4,DPL

INCR0

DJNZR2,LOOP

SJMP$

TAB:

DB‘0123456789ABCDEF’

END

评分办法:

程序设计思路正确可得5分;对于仅写出部分指令的学生可酌情给1-4分;程序编制正确可得满分,若存在少量错误,可酌情扣1-3分。

20、已知8051单片机应用系统的晶体振荡频率为12MHz,请利用定时器T1实现在P1.0和P1.1引脚上输出互补(互为反相)的周期为2ms的方波。

(要求:

采用中断方式,T1工作在方式2下)

解:

半周期=1ms。

方式2定时设定为250μS,

其初值=256-250*12/12=6。

只要T1中断4次计数即为1ms。

ORG0

LJMPSTART

ORG1BH

LJMPTS

ORG30H

START:

MOVTMOD,#20H

MOVTH1,#6

MOVTL1,#6

SETBET1

SETBEA

SETBTR0

CLRP1.0

SETBP1.1

MOVR2,#4

SJMP$

TS:

DJNZR2,TS1

MOVR2,#4

CPLP1.0

CPLP1.1

TS1:

RETI

END

评分办法:

写对定时器方式字和初值各给1分,设计思路正确给4分,程序编制正确可得满分。

若仅写出少量指令,可酌情给1-3分。

21、设8031单片机应用系统的晶振频率为12MHz,请利用T1在P1.0引脚上输出频率为1Hz的方波。

要求:

采用中断方式,T1工作在方式1。

解:

1Hz方波的周期为1s,半周期为500ms。

可采用T1定时50ms,并对中断计数10次来实现500ms定时。

50ms定时初值=65536-50000*12/12=15536=3CB0H

ORG0

LJMPSTART

ORG1BH

LJMPTS

ORG30H

MOVTMOD,#10H

MOVTH1,#3CH

MOVTL1,#0B0H

SETBET1

SETBEA(或MOVIE,#88H)

MOVR2,#10

CLRP1.0

SETBTR1

SJMP$

TS:

CLRTR1

MOVTH1,#3CH

MOVTL1,#0B0H

SETBTR1

DJNZR2,TS1

MOVR2,#10

CPLP1.0

TS1:

RETI

评分办法:

写对定时器方式字和初值各给1分,设计思路正确给4分,程序编制正确可得满分。

若仅写出少量指令,可酌情给1-3分。

22、内部RAM30H和外部RAM2200H开始的单元分别存放着两个8字节十六进制数(低位字节存放在前),请将二者相加(不考虑溢出情况),并将和存入内部RAM40H开始的单元中。

解:

ORG0

MOVR0,#30H

MOVR1,#40H

MOVDPTR,#2200H

MOVR2,#8

CLRC

LOOP:

MOVXA,@DPTR

ADDCA,@R0

MOV@R1,A

INCR0

INCR1

INCDPTR

DJNZR2,LOOP

SJMP$

评分办法:

程序设计思路正确可得5分;对于仅写出部分指令的学生可酌情给1-4分;程序编制正确可得满分,若存在少量错误,可酌情扣1-3分。

23、8051单片机应用系统的晶体振荡器频率为6MHz,请利用定时器T1编程实现在P1.0和P1.1引脚输出互补(互为反相)的、频率为20Hz的方波。

要求:

采用中断

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

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

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

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