单片机原理作业CXH答案.docx

上传人:b****7 文档编号:15298837 上传时间:2023-07-03 格式:DOCX 页数:16 大小:17.35KB
下载 相关 举报
单片机原理作业CXH答案.docx_第1页
第1页 / 共16页
单片机原理作业CXH答案.docx_第2页
第2页 / 共16页
单片机原理作业CXH答案.docx_第3页
第3页 / 共16页
单片机原理作业CXH答案.docx_第4页
第4页 / 共16页
单片机原理作业CXH答案.docx_第5页
第5页 / 共16页
单片机原理作业CXH答案.docx_第6页
第6页 / 共16页
单片机原理作业CXH答案.docx_第7页
第7页 / 共16页
单片机原理作业CXH答案.docx_第8页
第8页 / 共16页
单片机原理作业CXH答案.docx_第9页
第9页 / 共16页
单片机原理作业CXH答案.docx_第10页
第10页 / 共16页
单片机原理作业CXH答案.docx_第11页
第11页 / 共16页
单片机原理作业CXH答案.docx_第12页
第12页 / 共16页
单片机原理作业CXH答案.docx_第13页
第13页 / 共16页
单片机原理作业CXH答案.docx_第14页
第14页 / 共16页
单片机原理作业CXH答案.docx_第15页
第15页 / 共16页
单片机原理作业CXH答案.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机原理作业CXH答案.docx

《单片机原理作业CXH答案.docx》由会员分享,可在线阅读,更多相关《单片机原理作业CXH答案.docx(16页珍藏版)》请在冰点文库上搜索。

单片机原理作业CXH答案.docx

单片机原理作业CXH答案

单片机编程题

一、简单小程序编制:

注:

所有多字节数的低字节都在低地址;R0或R1均指向内部RAM的最低字节。

1、将30H、31H单元内容与T0计数器的TL0、TH0交换。

保持其它R和M不变。

解:

MOVA,R0

XCHA,30H

MOVTL0,A

MOVA,TH0

XCHA,31H

MOVTH0,A

2、将30H、31H单元内容与5C30H、5C31H交换。

保持其它R和M不变。

解:

MOVDPTR,#5C30H

MOVXA,@DPTR

XCHA,30H

MOVX@DPTR,A

INCDPTR

MOVXA,@DPTR

XCHA,31H

MOVX@DPTR,A

3、将30H、31H单元内容与R0指向的两字节单元交换。

保持其它R和M不变。

解:

MOVA,@R0

XCHA,30H

MOV@R0,A

INCR0

MOVA,@R0

XCHA,31H

MOV@R0,A

4、将30H、31H单元内容与DPTR指向的两字节单元交换。

保持其它R和M不变。

解:

MOVXA,@DPTR

XCHA,30H

MOVX@DPTR,A

INCDPTR

MOVXA,@DPTR

XCHA,31H

MOVX@DPTR,A

5、将30H、31H单元内容存入5C30H、5C31H单元。

保持其它R和M不变。

解:

MOVA,30H

MOVDPTR,#5C30H

MOVX@DPTR,A

MOVA,31H

INCDPTR

MOVX@DPTR,A

6、将30H、31H单元内容加上数03C4H后存入5C30H、5C31H单元。

解:

MOVA,30H

ADDA,#0C4H

MOVDPTR,#5C30H

MOVX@DPTR,A

MOVA,31H

ADDCA,#03H

INCDPTR

MOVX@DPTR,A

7、将30H、31H单元内容减去数03C4H后存入5C30H、5C31H单元。

解:

CLRC

MOVA,30H

SUBBA,#0C4H

MOVDPTR,#5C30H

MOVX@DPTR,A

MOVA,31H

SUBBA,#03H

INCDPTR

MOVX@DPTR,A

8、将30H、31H单元内容除以2后存入5C30H、5C31H单元。

解:

MOVA,31H

CLRC

RRCA

MOVDPTR,#5C31H

MOVX@DPTR,A

MOVA,30H

RRCA

MOVDPTR,#5C30H

MOVX@DPTR,A

9、将30H、31H单元内容乘以2后存入5C30H、5C31H单元。

解:

MOVA,30H

CLRC

RLCA

MOVDPTR,#5C30H

MOVX@DPTR,A

MOVA,31H

RLCA

INCDPTR

MOVX@DPTR,A

10、将30H、31H单元内容减1。

保持其它R和M不变。

解:

MOVA,30H

DJNZL0

DEC31H

SJMP$

L0:

DEC30H

11、将30H、31H单元内容加1。

保持其它R和M不变。

解:

INC30H

MOVA,30H

JNZOK

INC31H

OK:

……………..

12、将外部RAM中的5C30H、5C31H单元内容乘以2。

保持其它R和M不变。

解:

MOVDPTR,#5C30H

CLRC

MOVXA,@DPTR

RLCA

MOVX@DPTR,A

INCDPTR

MOVXA,@DPTR

RLCA

MOVX@DPTR,A

13、将外部RAM中的5C30H、5C31H单元内容除以2。

保持其它R和M不变。

解:

MOVDPTR,#5C31H

CLRC

MOVXA,@DPTR

RRCA

MOVX@DPTR,A

DECDPL

MOVXA,@DPTR

RRCA

MOVX@DPTR,A

14、将30H的低半字节和31H单元的高半字节交换。

解:

MOVA,31H

SWAPA

MOVR0,#30H

XCHDA,@R0

SWAPA

MOV31H,A

15、将30H的高半字节和31H单元的高半字节交换。

解:

MOVA,30H

XCHA,31H

MOVR0,#31H

XCHDA,@R0

MOV30H,A

16、将30H、31H单元的4位16进制数的中间两位数交换。

解:

MOVA,30H

SWAPA

MOVR0,#31H

XCHDA,@R0

SWAPA

MOV30H,A

MOVA,@R0

MOV31H,A

17、如果INT0为低,则位30H改为它的值与P0口最低位的“反”相“与”后的值;否则,清30H位。

解:

JBP3.2,L0

MOVC,30H

ANLC,/P0.0

MOV30H,C

SJMP$

L0:

CLR30H

18、如果INT0为低,则位30H改为它的值与P0口最高位的“反”相“或”后的值;否则,清30H位。

解:

JBP3.2,L0

MOVC,30H

OPLC,/P0.7

MOV30H,C

SJMP$

L0:

CLR30H

19、如果INT0为高,则,位30H改为它的值与P0口最低位相“或”后的值;否则,取反30H位。

解:

JNB30H,L0

MOVC,30H

ORLC,P0.0

MOV30H,C

SJMP$

L0:

CPL30H

20、如果INT0为低,则A的最低位与A的最高位对调;否则,清除A。

解:

JBP3.2,L0

MOVC,ACC.0

MOV0,C

MOVC,ACC.7

MOVACC.0,C

MOVC,0

MOVACC.7,C

SJMP$

L0:

CLR,A

21、如果INT1为高,则A的最低位改为它的值与A的最高位的“反”相“与”后的值;否则,取反A。

解:

JNBP3.3,L0

MOVC,ACC.0

ANLC,/ACC.7

MOVACC.0,C

SJMP$

L0:

CPLA

22、改变30H单元为加上数0F7H后的值,如果产生进位,则设置F0标志;否则,清除F0标志。

解:

MOVA,30H

ADDA,#0F7H

MOV30H,A

JCL0

CLRF0

SJMP﹩

L0:

SETBF0

23、改变30H单元为减去数0F7H后的值,如果产生进位,则设置F0标志;否则,清除F0标志。

解:

CLRC

MOVA.30H

SUBBA,#0F7H

MOV30H,A

JCL0

SETBF0

SJMP$

L0:

CLRF0

24、如果30H内容等于数80H,则,P1.0置位;否则,P1.0清零。

保持其它R和M不变。

解:

MOVA,30H

CJNEA,80H,L0

SETBP1.0

SJMP$

L0:

CLRP1.0

25、改变30H、31H单元内容为乘以2后的值,如果产生进位,则,工作寄存器换用寄存器组1。

解:

CLRC

MOVA,30H

RLCA

MOV30H,A

MOVA,31H

RLCA

MOV31H,A

JNCCON

CLRRS1

SETBRS0

CON:

……………..

26、改变30H、31H单元内容为除以2后的值,如果余数为1,则工作寄存器换用寄存器组3。

解:

MOVA,31H

CLRC

RRCA

MOV31H,A

MOVA,30H

RRCA

MOV30H,A

JNCL0

SETBRS1

SETBRS0

L0:

…………….

27、已知晶振频率为8MHZ,编一个子程序,延时150微秒。

保持其它R和M不变。

解:

DELAY:

MOVR7,#16H

NOP

L1:

NOP

NOP

NOP

NOP

DJNZR7,L1

RET

28、已知晶振频率为6MHZ,编一个子程序,延时30微秒。

保持其它R和M不变。

解:

DELAY:

MOVR7,#07H

L1:

DJNZR7,L1

RET

29、将从10H开始的64单元内容异或数5AH。

保持其它R和M不变。

解:

MOVR2,#64H

MOVR0,#10H

MOVA,#5AH

L00P:

XPLA,@R0

MOV@R0,A

INCR0

DJNZR2,LOOP

30、将由R0寻址的32个单元内容清为零。

保持其它R和M不变。

解:

CLRA

MOVR2,#32H

LOOP:

MOV@R0,A

INCR0

DJNZR2,LOOP

31、将由R0寻址的32个单元内容移到R1寻址的单元中。

保持其它R和M不变。

解:

MOVR2,#32H

LOOP:

MOVA,@R0

MOV@R1,A

INCR0

INCR1

DJNZR2,LOOP

32、将由R0寻址的16个单元内容改为与R1寻址的单元相“异或”后的值。

保持其它R和M不变。

解:

MOVR2,#16H

LOOP:

MOVA,@R0

XPLA,@R1

MOV@R0,A

INCR0

INCR1

DJNZR2,LOOP

33、将由R0寻址的32个单元内容改为与R1寻址的单元相“或”后的值。

保持其它R和M不变。

解:

和32是一样的。

34、将由DPTR寻址的100个单元中找出第一个内容为00H的单元,其地址存入30H、31H。

解:

MOVR7,#100

LOOP:

MOVXA,@DPTR

JNFINDZ

INCDPTR

DJNZR7,LOOP

SJMP﹩

FINDZ:

MOV30H,DPL

MOV31H,DPH

35、将从5C00H开始的100个单元内容移到5E00H开始的单元中。

解:

MOVR7,#100H

MOVDPTR,#5C00H

MOVP2,#5EH

MOVR0,#00H

LOOP:

MOVXA,@DPTR

MOVX@R0,A

INCDPTR

DJNZR7,LOOP

36、将从5C00H开始的100个单元内容改为与5E00H开始的单元相“或”后的值。

解:

MOVR7,#100

MOVDPTR,#5C00H

MOVP2,#5EH

MOVR0,#00H

LOOP:

MOVXA,@DPTR

ORLA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR7,LOOP

37、将从5C00H开始的100个单元内容改为与5E00H开始的单元相“异或”后的值。

解:

和36一样,只需改为XRL

38、将从5C00H开始的100个单元中找出第一个内容为00H的单元,其地址存入30H、31H。

解:

MOVR2,#100

MOVDPTR,#5C00H

L1:

MOVXA,@DPTR

JZL0

INCDPTR

DJNZR2,L1

SJMP﹩

L0:

MOV30H,DPL

MOV31H,DPH

39、将从5C00H开始的100个单元中找出第一个内容不为00H的单元,其地址存入30H、31H。

解:

和38换成JNZ即可

40、将从5C00H开始的100个单元中找出最大的数和存该数的单元,数存入40H,地址存入30H,31H。

解:

MOVR7,#100

MOVDPTR,#5C00H

MOV40H,#0

LOOP:

MOVXA,@DPTR

CJNEA,40H,LI

L1:

JCL2

MOV40H,A

MOV30H,DPL

MOV31H,DPH

L2:

INCDPTR

DJNZR7,LOOP

SJMP﹩

41、将从5C00H开始的100个单元中找出最小的数和存该数的单元,数存入40H,地址存入30H,31H。

解:

MOVR7,#100

MOVDPTR,#5C00H

MOV40H,#0FFH

LOOP:

MOVXA,@DPTR

CJNEA,40H,LI

L1:

JNCL2

MOV40H,A

MOV30H,DPL

MOV31H,DPH

L2:

INCDPTR

DJNZR7,LOOP

SJMP﹩

42、将从5C00H开始的100个单元中找出第一个偶数和存该数的单元,数存入40H,地址存入30H,31H。

解:

MOVR7,#64H

MOVDPTR,#5C00H

LOOP:

MOVXA,@DPTR

JNBACC.0,L0

INCDPTR

DJNZR7,L1

SJMP﹩

L0:

MOV40H,A

MOV30H,DPL

MOV31H,DPH

43、将从5C00H开始的100个单元中找出第一个奇数和存该数的单元,数存入40H,地址存入30H,31H。

解:

和42是一样的,改为JB

44、编查表子程序,按40H中的索引数查出存在5C00H中的100个三字节数,存入30H,31H,32H。

45、编多分支转移程序段,按40H中的索引数,取转移地址表中的两字节地址,进行跳转。

46、将R0指向的三字节带符号数取负后存回。

解:

MOVA,@R0

CPLA

ADDA,#01H

MOV@R0,A

INCR0

MOVA,@R0

ADDCA,#00H

MOV@R0,A

INCR0

MOVA,@R0

ADDCA,#00H

MOV@R0,A

47、将R0指向的三字节数取R2R3乘以R4的积。

48、将R0指向的二字节带符号数乘以2,校验是否溢出。

解:

CLRC

MOVA,@R0

RLCA

MOV@R0,A

INCR0

MOVA,@R0

RLCA

MOV@R0,A

XRLC,ACC.7

JCOVERFLAW

实验编程

1.将20H位单元送给B的最高位。

解:

CLRC

MOVC,20H

MOVB.7,C

2.将程序存储器2000H单元内容送往片外RAM1000H单元。

解:

CLRA

MOVDPTR,#2000H

MOVCA,@A+DPTR

MOVP2,#10H

MOVR0,#00H

MOVX@R0,A

3.R1与上P2和R0所指出的外部RAM单元内容,结果仍放入R1中。

解:

MOVA,R1

ANLA,P2

4.比较30H、31H、32H三个单元的内容,将最大的数给B。

解:

5.将外部RAM5C30H开始的99个单元内容清零。

解:

MOVR2,#99

MOVDPTR,#5C30H

LOOP:

MOVA,#00H

MOVX@DPTR,A

INCDPTR

DJNZR2,LOOP

答案错误的题目:

1、利用堆栈将A、B值传给R2、R3

解:

CLRPSW.3

CLRPSW.4

PUSHAcc

PUSHB

POP03H

POP02H

2.将30H开始的16个数中大于等于80H的单元内容放入50H以后的相应单元中

解:

MOVR0,#30H

MOVR1,#50H

MOVR6,#16H

LOOP:

MOVA,@R0

JNBACC.7,NPUT

MOV@R1,A

NPUT:

INCR0

INCR1

DJNZR6,LOOP

RET

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2