单片机原理及接口技术(第3版)复习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单项选择题(80)
1. 89C51复位后,程序计数器PC中的内容是()。

A. 0030 H
B. 0000H
C. FFFFH
D. 不确定
2. 89C51的直接寻址方式的寻址空间是()。

A. 片内RAM的低128B和SFR
B. 片内RAM和ROM的256B
C. 片外RAM的低256B
D. 片内、片外RAM的00~FFH和SFR
3. CPU访问片内RAM的指令类型用()。

A. MOVC
B. MOVX
C. MOV
D. MOVD
4. 当CPU响应定时/计数器T1的中断时,()。

A. 需用软件将TF1置1
B. 需用软件将TF1清0
C. 硬件将自动对TF1置1
D. 硬件将自动对TF1清0
5. 指令()用于启动89C51的定时器T1。

A. CLR TR1
B. MOV TR1,00H
C. SETB TR1
D. MOV TR1,0FFH
6. 89C51复位后,P1口状态是()。

A. 00H
B. 11H
C. FFH
D. 10H
9. 如8051的SP的内容是30H,顺序执行PUSH ACC和POP B两句指令后,()。

A. 寄存器SP中的内容为32H
B. 累加器A中的内容与寄存器B中的内容是一样的
C. 寄存器B中的内容与原来累加器A中的内容一样,此时A中的内容是0
D. 累加器A中的内容是30H,寄存器B中的内容是31H
10. 指令MOV @R1, A与MOVX @R1, A比较,()。

A. 指令的功能一样
B. 前一条指令的目的地址在片内RAM,后一条指令的目的地址在片外RAM
C. 前一条指令属于寄存器间接寻址,后一条指令属于直接寻址
D. 前一条指令用于访问片内RAM,后一条指令只能访问片内的SFR区
11. 当执行指令时,PC中的内容总是指示出()。

A. 正在执行的当前指令的地址
B.状态字寄存器中的内容
C. 将要执行的下一条指令地址
D.中断的断点的地址
12. 当CPU响应外部中断0时,()。

A. 硬件将自动对IE0清0
B. 硬件将自动对IE0置1
C. 需用软件将IE0清0
D. 需用软件将IE0置1
13. 将89C51片外RAM某单元中的内容送累加器A,应采用()这样的指令。

A. MOV A, @DPTR
B. MOVX @DPTR, A
C. MOV @DPTR, A
D. MOVX A, @DPTR
14. 属于立即数寻址的指令是()。

A. MOV A,#8DH
B. MOV A,40H
C. MOV A,R1
D. MOV A,@R0
15. 89C51的TMOD寄存器中的()位用于设置定时器的工作模式。

A. M1.M0
B. C/T
C. GA TE
D. TMOD.7
16. 89C51的()口作为扩展片外数据存储器时的数据总线和地址总线的一部分。

A. P3
B. P2
C. P1
D. P0
19. 如89C51的SP的内容是30H,执行LCALL SUBRTN这样的指令后,()。

A. 当前寄存器SP中的内容为32H
B. 当前寄存器SP中的内容为31H
C. 当前寄存器SP中的内容为SUBRTN所对应的地址单元的内容
D. 内存RAM的31H.32H单元中存放SUBRTN所对应的地址
20. 执行下面的指令或指令组合,(),两(组)指令执行结果一样。

A. 指令MOV @R0,A和指令MOVX @R0,A比较
B. 指令MOV A,B和指令组合PUSH B。

MOV A,07H比较
C. 指令CLR 00H和指令ANL 20H,#0FEH比较
D. 指令INC A和指令组合MOV R1,#01H。

ADD A,@R1比较
21. 89C51产生中断时,CPU将自动将()装入程序计数器PC中。

A. 中断入口地址
B. 累加器A的内容
C. 主程序中的断点地址
D. DPTR中的内容
22. 当CPU响应串行口发送中断时,()。

A. 需用软件将TI置1
B. 需用软件将TI清0
C. 硬件将自动对TI置1
D. 硬件将自动对TI清0
23. 单片机对ROM的操作是()。

A. 只能读
B. 只能写
C. 可读可写
D. 只能存数据
24. 属于寄存器间接寻址的指令是()。

A. MOV A,40H
B. MOV A,#8DH
C. MOV A,R1
D. MOV A,@R0
25. 将89C51的定时器T0设定为16位计数器定时方式,则T0应工作在()。

A. 模式0
B. 模式1
C. 模式2
D. 模式3
26. 89C51的()口作为扩展片外数据存储器时16位地址总线中的高8位。

A. P0
B. P1
C. P2
D. P3
29. 如8051的SP的内容是40H,执行RET这样的指令后,()。

A. 当前寄存器SP中的内容为38H
B. 当前寄存器SP中的内容为3EH
C. 当前寄存器SP中的内容为RET所对应的地址单元的内容
D. 内存RAM的41H、42H单元中存放RET指令所对应的PC值
30. 执行下面的指令或指令组合,(),两(组)指令执行结果一样。

A. 指令DEC A和指令组合MOV R1,#01H。

SUBB A,@R1比较
B. 指令MOV A,B和指令组合PUSH A。

POP B比较
C. 指令MOV A,@R0和指令MOVX A,@R0比较
D. 指令SETB 00H和指令ORL 20H,#01H比较
31. 执行返回指令RET后,()中的内容将会变化。

A. 累加器A
B. 工作寄存器
C. 程序计数器PC
D. 程序存储器0000H单元
32. 要开放89C51的所有中断,可用()指令来设置IE寄存器。

A. MOV IE,#00H
B. MOV IE,#10H
C. MOV IE,#1FH
D. MOV IE,#9FH
33. CPU访问片外ROM的指令类型用()。

A. MOVC
B. MOVX
C. MOV
D. PUSH
34. 访问89C51特殊功能寄存器只能用()方式。

A. 立即数寻址
B. 寄存器间接寻址
C. 直接寻址
D. 变址寻址
35. 定时器T0工作在模式2 计数方式,要求计一个脉冲就溢出,则计数初值为()。

A. 00H
B. FFH
C. 01H
D. FFFFH
38. 89C51的P3口除了用作外部中断、串口输入/输出等第二功能外,也可用作()。

A. 数据总线
B. 通用的I/O口
C. 地址总线高8位
D. 地址总线低8位
39. 如89C51的寄存器SP的内容是07H,执行PUSH A指令后,()。

A. 片内RAM 07H单元内容与累加器A的内容一样
B. 片外RAM 07H单元内容与累加器A的内容一样
C. 片外RAM 08H单元内容与累加器A的内容一样
D. 片内RAM 08H单元内容与累加器A的内容一样
40. 执行下面的指令或指令组合,(),两(组)指令执行结果一样。

A. 指令SETB 20H和指令MOV 20H,#0FFH比较
B. 指令SETB 20H和指令组合MOV R0,#20H。

MOV @R0,#0FFH比较
C. 指令SETB 20H和指令组合MOV 20H,#11H比较
D. 指令CLR A和指令组合MOV R2,A。

XRL A,R2比较
41. 改变()中的内容就可改变程序执行的方向。

A. 程序计数器PC
B. 累加器A
C. 堆栈指针SP
D. 状态字寄存器PSW
42. 指令MOVC A,@A+DPTR可以访问()。

A. 片外RAM的64 KB空间
B. 片内RAM空间
C. 程序存储器空间
D. 片内和片外的RAM空间
43. 对RAM的操作是()。

A. 只能读
B. 只能写
C. 可读可写
D. 只能存数据
44. 要关闭89C51的所有中断,可用()指令来设置IE寄存器。

A. MOV IE,#00H
B. MOV IE,#11H
C. MOV IE,#1FH
D. MOV IE,#9FH
45. 关于89C51定时器T1溢出标志位TF1正确的描述是()。

A. 溢出时,硬件自动将TF1清0
B. 溢出时,需用软件将TF1置1
C. 溢出时,硬件自动将TF1置1
D. 中断响应后必须用软件将TF1清0
46. 当89C51采用12MHz晶振,则引脚ALE输出的频率不会超过()。

A. 1MHz
B. 1.2MHz
C. 500kHz
D. 2MHz
49. 执行指令CJNE @R0,#3CH,TABL0,下面描述正确的是()。

A. 如R0中的内容等3CH,程序跳转到TABL0处执行
B. 如R0中的内容不等于3CH,程序跳转到TABL0处执行
C. 如R0中的内容所指地址单元内容等于3CH,程序跳转到TABL0处执行
D. 如R0中的内容所指地址单元内容不等于3CH,程序跳转到TABL0处执行
50. P1口地址为90H,执行下面指令或指令组合,(),两(组)指令执行结果一样。

A. 指令MOV P1,@R1和指令组合MOV A,R1。

MOV P1,A比较
B. 指令MOV A,P1和指令组合MOV R1,P1。

MOV A,@R1比较
C. 指令SETB P1.7和指令组合MOV A,#17H。

ORL P1,A比较
D. 指令MOV P1,A和MOV 90H,A比较
51. 89C51产生中断时,CPU将自动改变()中的内容。

A. 累加器A
B. 工作寄存器
C. 程序计数器PC
D. 程序存储器0000H单元
52. 89C51的立即数寻址方式的寻址空间是()。

A. 片外RAM
B. 程序存储器ROM
C. 片内RAM
D. 片内和片外RAM
53. CPU访问片外RAM的指令类型用()。

A. MOVC
B. MOVX
C. MOV
D. PUSH
54. 当CPU响应定时/计数器T0的中断时,()压入堆栈。

A. 需用软件将当前PC值
B. 需用软件将中断入口地址
C. 硬件自动将当前PC值
D. 硬件自动将中断入口地址
55. 关于89C51定时器T1溢出标志位TF1正确的描述是()。

A. 溢出时,硬件自动将TF1置1
B. 溢出时,需用软件将TF1置1
C. 溢出时,硬件自动将TF1清0
D. 中断响应后必须用软件将TF1清0
56. 如果要P1口作为输入口用,可以先用指令()对P1口进行操作。

A. MOV P1,#0FFH
B. MOV @P1,#0FFH
C. MOV P1,#00H
D. MOV @P1,#00H
59. 执行查表指令MOVC A,@A+PC后,当前A中的内容是()。

A. 原来A中的内容与PC中的内容之和
B. 执行该指令时,当前PC所指地址单元中的内容与原来A中的内容之和
C. 执行该指令时,当前指令下一条指令对应PC中的内容与原来A中的内容之和
所指地址单元的内容
D. 原来A中的内容
60. 执行下面的指令或指令组合,(),两(组)指令执行结果一样。

A. 指令SETB 01H和指令ORL 20H,#01H比较
B. 指令SWAP A和执行四遍指令RL A比较
C. 指令SWAP A和执行四遍指令RLC A比较
D. 指令SW AP A和执行四遍指令RRC A比较
61. 在程序开始执行前,必须将其起始地址送入()。

A. 堆栈指针SP
B. 状态字寄存器PSW
C. 程序计数器PC
D. 累加器A
62. 属于直接寻址的指令是()。

A. MOV A,R1
B. MOV A,#8DH
C. MOV A,40H
D. MOV A,@R0
63. 将89C51扩展程序存储器EPROM单元中常数送累加器A,应采用()这样指令。

A. MOVC A,@A+DPTR
B. MOVC A,@DPTR
C. MOVX A,@A+DPTR
D. MOVX A,@DPTR
64. 为了使中断能正确返回,在中断子程序中()指令必须成对出现。

A. ADDC和SUBB
B. PUSH和POP
C. INC和DEC
D. CJNE和DJNE
65. 定时器T1工作在模式2 计数方式,要求计3个脉冲就溢出,则计数初值为()。

A. FFFCH
B. FCH
C. FDH
D. 03H
66. 89C51的特殊功能寄存器可以用()方式进行访问。

A. 寄存器间接寻址
B. 立即数寻址
C. 变址寻址
D. 直接寻址
69. 执行指令MOVC A,@A+DPTR后,当前A中的内容是()。

A. 原来A中的内容与DPTR中的内容之和
B. 寄存器DPTR中的内容为地址的单元中内容与原来A中的内容之和
C. PC的内容、原来A的内容、DPTR的内容三者之和所指地址单元的内容
D. DPTR的内容与原来A的内容之和所指地址单元的内容
70. R1的内容为40H,执行下面的指令或指令组合,(),两(组)指令执行结果一样。

A. 指令ANL 40H,#40H和指令组合MOV A,@R1。

ANL 40H,A比较
B. 指令ANL A,@R1和指令ANL A,#40H比较
C. 指令ANL A,@R1和指令MOV 40H,R1。

ANL A,40H比较
D. 指令ANL A,R1和指令ANL A,#40H比较
71. 执行调用指令LCALL后,()中的内容由硬件自动改变。

A. 累加器A
B. 工作寄存器
C. 程序计数器PC
D. 程序存储器0000H单元
72. 89C51的寄存器间接寻址方式的寻址空间是()。

A. 特殊功能寄存器SFR
B. 片内和片外RAM的00~FFH
C. 片内RAM的80H~ FFH
D. 片内RAM的低128B和片外RAM
73. 将89C51累加器A中的内容送片外RAM某单元,应采用()这样的指令。

A. MOV A, @DPTR
B. MOVX @DPTR, A
C. MOV @DPTR, A
D. MOVX A, @DPTR
74. 当执行中断返回指令RETI时,()弹出,送程序计数器PC。

A. 硬件自动将当前栈顶2字节内容
B. 硬件自动将指令RETI对应的地址
C. 需用软件将当前栈顶2 字节内容
D. 硬件自动在ROM中找断点地址
75. 用指令()可以让正在计数的定时器T0停止计数。

A. CLR TR0
B. MOV TR0,00H
C. SETB TR0
D. MOV TR0,0FFH
76. 89C51内部RAM位地址()对应字节地址21H的最低一位。

A. 00H
B. 01H
C. 08H
D. 10H
79. 执行指令DJNZ R1,TABL1,下面描述正确的是()。

A. R1中的内容如不等于零,程序跳转到TABL1处执行
B. R1中的内容减1如不等于零,程序跳转到TABL1处执行
C. R1中的内容加1如有溢出,程序跳转到TABL1处执行
D. R1中的内容减1如等于零,程序跳转到TABL1处执行
80. R1的内容为50H,执行下面的指令或指令组合,(),两(组)指令执行结果一样。

A. 指令ORL 50H,#40H和指令组合MOV A,@R1。

ORL 50H,A比较
B. 指令ORL A,@R1和指令ANL A,#50H比较
C. 指令ORL A,@R1和指令MOV 50H,R1。

ORL A,50H比较
D. 指令ORL A,R1和指令ORL A,#50H比较
7. 89C51单片机系统的扩展RAM和I/O口是按()编址的。

A. 外部数据存储器统一
B. 外部RAM和内部RAM统一
C. RAM区和I/O口地址区分别
D. 外部程序存储器统一
8. A/D转换器ADC0809与MC14433比较,则()。

A. ADC0809的转换精度高
B. ADC0809的转换速度快
C. MC14433的转换速度快
D. ADC0809的抗干扰能力强
17. 器件()可以用作扩展89C51片外数据或程序存储器的地址锁存器。

A. 8155A
B. 27128
C. 6264
D. 74LS373
18. D/A转换器是将()的器件。

A. 模拟信号转换成数字信号
B. 多路数字信号集中传输
C. 数字信号转换成模拟信号
D. 输出信号与8051进行隔离
27. 外扩片外存储器时,8031的引脚PSEN(29脚)应该与片外()相连。

A. EPROM的数据输出选通线
B. RAM的写选通信号线
C. EPROM的片选线
D. RAM的片选线
28. 要选择ADC0809的IN3通道进行转换,则ADDA、ADDB、ADDC按顺序为()。

A. 010
B. 011
C. 111
D. 110
36. 要选择ADC0809的IN6通道进行转换,则ADDC、ADDB、ADDA按顺序为()。

A. 001
B. 110
C. 011
D. 111
37. 如果要确定8155的工作状态,应当将适当的命令字写入()。

A. 8155的PA 口
B. 8155的状态寄存器
C. 8155的PC 口
D. 8155的指令寄存器
47. 共阴极LED显示7,应向各控制端dp、g、f、e、d、c、b、a送入()信号。

A. 01111101
B. 00000111
C. 00000110
D. 01110111
48. A/D转换器ADC0809与MC14433比较,则()。

A. ADC0809的转换精度高
B. MC14433的转换精度高
C. MC14433的转换速度快
D. ADC0809的抗干扰能力强
57. 共阴极LED显示6,应向各控制端dp、g、f、e、d、c、b、a送入()信号。

A. 01111101
B. 00000110
C. 00000111
D. 01110111
58. A/D转换器是将()的器件。

A. 数字信号转换成模拟信号
B. 多路模拟信号集中传输
67. 共阳极LED显示8,应向各控制端dp、g、f、e、d、c、b、a送入()信号。

A. 10000000
B. 00000000
C. 01111111
D. 11111111
68. A/D转换器ADC0809与MC14433比较,则()。

A. ADC0809的转换精度高
B. ADC0809的转换速度慢
C. MC14433的抗干扰能力强
D. ADC0809的抗干扰能力强
C. 模拟信号转换成数字信号
D. 输入信号与8051进行隔离
77. 当8155的PA和PB口工作在选通I/O方式时,此时PC口()。

A. 作为PA和PB口的联络信号
B. 为输出口
C. 为输入口
D. 也可以工作在选通I/O方式
78. A/D转换器MC14433的()。

A. 转换精度与10位二进制的相当
B. 属逐次逼近型转换器
C. 转换结果不能直接由8031数据总线输入
D. 数据输出信号是三态的
1. B
2. A
3. C
4. D
5. C
6. C
7. A
8. B
9. B 10. B
11. C 12. A 13. D 14. B 15. A 16. D 17. D 18. C 19. A 20. C
21. A 22. B 23. A 24. D 25. B 26. C 27. A 28. D 29. B 30. D
31. C 32. D 33. A 34. C 35. B 36. C 37. D 38. B 39. D 40. D
41. A 42. C 43. C 44. A 45. C 46. D 47. B 48. B 49. D 50. D
51. C 52. B 53. B 54. C 55. A 56. A 57. A 58. C 59. C 60. B
61. C 62. C 63. A 64. B 65. C 66. D 67. A 68. C 69. D 70. D
71. C 72. D 73. B 74. A 75. A 76. C 77. A 78. C 79. B 80. D
二、程序解释(32)
对每小题程序中划线的指令含义(或指令作用)进行解释,并说明程序的作用。

1. 程序解释
ORG 100H
M OV A,R0 ;R0的内容送A
A NL A,#0FH
M OV R1,A
MOV A,R0
S WAP A ;A的内容高低4位交换
ANL A,#0FH
M OV R2,A
S JMP $ ;等待
END
该程序的作用是:将原R0中数据按照高低4位分成两个字节,低位字节保存在R1中,
高位字节保存到R2中。

2. 程序解释
ORG 30H
MOV R0,#data1 ;data1送R0
MOV R1,#data2
MOV R2,#2
CLR C
LOOP:MOV A,@R0
SUBB A,@R1 ;(A)-(C)-((R1))→A
MOV @R0,A
INC R0
INC R1
DJNZ R2,LOOP ;(R2)-1不等于零,跳LOOP处
SJMP $
END
该程序的作用是:将data1中的双字节数据减去data2中的双字节数据,结果
保存到data1中
3. 程序解释
ORG 30H
V AR DATA 30H
FUNC DATA 31H
MOV A,V AR ;30单元的内容送A
JZ DONE ;A为零转移
JNB ACC.7,POSI ;A的最高位为0(正数)转移
MOV A,#0FFH ;提示:0FFH表示-1
SJMP DONE
POSI:MOV A,#01H
DONE:M OV FUNC,A
SJMP $
END
该程序的作用是:判断30H单元中的内容,结果放在31H单元中。

大于0放1,
小于0放-1,等于零放0。

4. 程序解释
ORG 100H
MOV A, R3
R L A ;A左循环一位(即乘2)
M OV DPTR,#BRTAB ;绝对转移地址表起始地址送DPTR JMP @A+DPTR ;(PC)=(A)+(DPTR)
……
BRTAB:AJMP ROUT000
A JMP ROUT001
AJMP ROUT002
……
AJMP ROUT127
END
该程序的作用是:本程序完成128分支转移操作,根据R3中的数值转移到
相应的128个分支程序中。

5. 程序解释
ORG 0030H
MOV R0, #22H ;立即数22H送R0
MOV @R0, #00H
INC R0 ;R0中的内容加1
MOV @R0, #01H
INC R0
MOV @R0, #02H ;02H送24H单元
SJMP $
END
该程序的作用是:向单片机内部RAM的22H,23H,24H单元分别送
数据00,01,02。

6. 程序解释
ORG 0030H
MOV A, 20H
MOV B, 21H
DIV AB ;A除以B
MOV 31H, A ;商送30H单元
IMOV 31H,B ;余数送31H单元
SJMP $
END
该程序的作用是:将20H单元中有一个二进制数除以21H单元中二进制数,商保存到30H 单元,余数保存到31H。

7. 程序解释
CHENGJI D ATA 1000H
GRADA DATA 20H
GRADB DATA 21H
MOVGRADA,#00H
MOV G RADB,#00H
MOV R2,#100
MOV D PTR,#CHENGJI ;1000H送DPTR
LOOP:M OVX A,@DPTR
CJNE A,#60,LOOP1
LOOP1:JNC NEXT1
INC GRADB ;21H单元的内容加1
SJMP NEXT
NEXT1:INC GRADA
NEXT:INC DPTR
DJNZ R2,LOOP ;(R2)-1→R2 不为零,转移
SJMP $
END
该程序的作用是本程序完成对100个数(如100个学生成绩)的过滤统计,成绩在60以上的学生统计到GRADA,<60的学生统计到GRADB。

8. 程序解释
LEN DATA 20H
SUM DATA 21H
BLOCK DATA 22H
CLR A ;A清0
MOV R2,LEN
MOV R1,#BLOCK
LOOP:ADD A,@R1 ;(A)+((R1))→A
INC R1
CHECK:DJNZ R2,LOOP ;LEN个单元未加完,继续
MOV SUM,A
SJMP $
END
该程序的作用是:完成BLOCK单元开始的LEN单元中数据个数的累加,累加结果保
存到SUM单元中。

9. 程序解释
XX DATA 40H
YY DATA 41H
M OV A,XX
JZ D ONE
M OV R0,#0FFH ;提示:0FFH表示-1
JNB ACC.7,NEG ;若A< 0,则转向NEG
M OV R0,#01H ;01送R0
NEG:MOV A,R0
DONE:MOV YY,A ;(A)送41H单元
SJMP $
END
该程序的作用是:判断40H单元中的内容,结果放在41H单元中。

大于0放1,
小于0放-1,等于0放0。

10. 程序解释
ONE DATA 30H
TWO DATA 31H ;TWO地址定义为31H
MAX DATA 32H
C LR C ;C清零
MOV A,ONE
SUBB A,TWO ;(A)-(31H)结果送A
JNC X MAX
YMAX:MOV A,TWO
SJMP DONE
XMAX:MOV A,ONE
DONE: MOV M AX,A
该程序的作用是:本程序完成ONE和TWO的两个单元中的数的比较,大数存入MAX单元中。

11. 程序解释
BLOCK1 DATA 20H
BLOCK2 DATA 40H
MOV R0,#BLOCK1
MOV R1,#BLOCK2
MOV R2,#03
CLR C
LOOP:MOV A,@R0 ;被加数送A
ADDC A,@R1 ;带进位加法
MOV @R0,A ;和送(R0)
INC R0
INC R1
DJNZ R2,LOOP1
SJMP $
END
该程序的作用是:内部RAM中BLOCK1(20H)开始的三字节数与BLOCK2(40H)
开始的两个三字节数相加,和数存放到BLOCK1开始的单元。

12. 程序解释
SHIFT:M OV DPTR,#TABJ
M OV A,R2
R L A ;A乘2
A DD A,R2
J MP @A+DPTR ;跳转到(A)+(DPTR)→PC
TABJ:L JMP PRG0 ;跳转到PRG0
LJMP PRG1
……
L JMP PRGN
该程序的作用是:根据内部RAM中R2数据转向不同的子程序,R2=0转PRG0,
R2=1转PRG1,… R2=N转PRGN
13. 程序解释
START: CLR A
MOV R2,#10
MOV R1,#21H ;21H送R1
NEXT:ADD A,@R1 ;(A)+((R1))→A
INC R1
DJNZ R2,NEXT ;未加完,跳转
MOV 22H,A
SJMP $
END
该程序的作用是:完成21H单元开始的10个数据块的累加,结果保存到22H单元。

14. 程序解释
LEN DATA 20H
MAX DATA 21H
ADDR DATA 30H
MOV M AX,#00H
MOV R0,#ADDR
LOOP:MOV A,@R0
CJNE A,MAX,NEXT1 ;(A)与(MAX)比较,不等去NEXT
NEXT1:JC NEXT ;C=1 去NEXT
MOV MAX,A
NEXT:INC R0 ;R0内容加1
DJNZ LEN,LOOP
SJMP $
END
该程序的作用是:内部RAM中ADDR(30H)开始的x个数据的比较,将最大的数字送
MAX单元。

x由LEN(20H)单元给出。

15. 程序解释
MOV A,R0
ANL A,#0FH ;0FH与A相与,结果送A
MOV DPTR,#ASCTAB
MOVC A,@A+DPTR ;查表
MOV R0,A ;查表结果存入R0
SJMP $
ASCTAB:DB ‘0’,‘1’,‘2’,‘3’,‘4’
DB ‘5’,‘6’,‘7’,‘8’,‘9’
DB ‘A’,‘B’,‘C’,‘D’,‘E’,‘F’
END
该程序的作用是:将R0中低4位的0~F的十六进制数据转换成ASCTAB中的编码存
放到R0中。

16. 程序解释
ORG 100H
MERG:MOVX A,@R0 ;读片外RAM第一字节
ANL A,#0FH
SWAP A ;高低4位相互交换
MOV B,A
INC R0
MOVX A,@R0
ANL A,#0FH
ORL A,B ;A或B,结果送A
DEC R0
MOVX @R0,A
SJMP $
END
该程序的作用是:将R0指向的两个字节的低4位和并为一个字节,保存到原R0指
向的存储单元。

17. 程序解释
START:MOV DPTR,#DTA TAB
MOVA,R4 ;(R4)→A
ADD A,DPL ;(DPL)+(A)→A
MOV D PL,A
CLR A ;清A
ADDC A,DPH
MOVDPH,A
CLR A
MOVC A,@A+DPTR
MOV R5,A
RET
DTATAB:DB ……;元素表格,高字节在前
DB ……
END
该程序的作用是:根据R4中的内容(元素序号)在DTA TAB表格中查表,将查表得到的数据存入R5中。

18. 程序解释
START: MOV A,R0
ACALL SQR ;调用子程SQR
MOV R2,A
MOV A,R1
ACALL SQR
ADD A,R2 ;(R2)+(A)→A
MOV R2,A
SJMP $
SQR:ADD A,#01H
MOVC A,@A+PC ;查平方表
RET
SQRTAB:DB 0,1,4,9,16 ;平方表
DB 25,36,49,64,81
END
该程序的作用是:将R0和R1中的两个个位数进行平方元算,然后相加,和存入R2
中。

19. 程序解释
MOV R2,#0AH
MOV R0,#50H
CLR A
LOOP:MOV @R0,A ;(A)→(R0)
INC R0
DJNZ R2,LOOP ;(R2)-1不等于0,跳转
RET ;子程序返回
END
该程序的作用是:将50H~59H单元置0
20. 程序解释
CONT: MOV R0,#10 ;10送R0
MOV 31H,#00H
MOV R1,#01H
CLOP: MOV A,R1
CLR C
RLC A ;乘2
ADD A,31H ;(A)+(31H)结果送A
MOV 31H,A
INC R1
DJNZ R0,CLOP
RET
END
该程序的作用是:将1~10十个数乘2后再累加,结果送31H单元。

21. 程序解释
DLAY:M OV R7,#02H ;02H送R7
DL: MOV R6,#0FFH
DL1:DJNZ R6,DL1 ;(R6)-1不为零转移。

DJNZ R7,DL
RET
END ;程序结束伪指令
该程序的作用是:利用R6,R7实现双循环延时子程序
22. 程序解释
MATH DATA 1000H
PASS DATA 20H
NOPASS DATA 21H
MOV PASS,#00H
MOV NOPASS,#00H
MOV R2,#0C8H
MOV DPTR,#MA TH
LOOP:MOVX A,@DPTR ;片外单元((DPTR))→A
CJNE A,#60,LOOP1 ;(A)不等于60转移
LOOP1:JNC N EXT1
NEXT:INC N OPASS
SJMP NEXT2
NEXT1:INC P ASS ;PASS单元内容加1
NEXT2:INC DPTR
DJNZ R2,LOOP
RET
END
该程序的作用是:完成1000H开始的200(C8H)个数的过滤统计,在60及以上的统
计到PASS,<60的到NOPASS。

23. 程序解释
CLEAN:MOV DPTR,#1000H ;设置数据区首地址
MOVR2,#51H
CLR A
CLOOP:MOVX @DPTR,A ;0→(DPTR)
INC DPTR
DJNZ R2,CLOOP ;R2-1不为零转移
RET
END
该程序的作用是:将外部RAM1000H~1050H单元的内容清零。

24. 程序解释
DMOV:M OV DPTR,#2000H
MOV R2,#00H
DLOOP:MOVX A,@DPTR ;设置源数据区首地址
MOV DPH,#30H ;置目的数据区高8位地址
MOVX @DPTR,A
MOV DPH,#20H
INC DPTR ;指向下一个数据单元
DJNZ R2,DLOOP
END
该程序的作用是:将2000H~20FFH的数据块传送到3000H~30FFH单元
25. 程序解释
LOK1: MOV 21H,0
MOV R2,#08H ;置统计次数
MOVA,20H
LOOP:RLC A ;A的内容带进位作循环
JNC L P1
INC 21H
LP1:D JNZ R2,LOOP ;次数未完继续
RET
该程序的作用是:求20H单元数据中”1”的个数,并将统计结果存入21H。

26. 程序解释
SUM DATA 31H
BLOCK DATA 33H
CLR A
CLR C
MOV SUM,A
MOV SUM+1,A
MOV R2,#10
MOV R1,#BLOCK ;33H送R1
LOOP:M OV A,SUM
ADD A,@R1 ;(A)+((R1))→A
MOV SUM,A
MOV A,SUM+1
ADDC A,0 ;加进位位到高字节
MOV SUM+1,A
INC R1
DJNZ R2,LOOP
SJMP $
END
该程序的作用是:完成BLOCK开始的10个字节数据的累加,结果(双字节)保存到(SUM+1)(SUM)。

27. 程序解释
ORG 0000H
SJMP MAIN ;跳转到MAIN
ORG 0003H
………..
ORG 0030H
Main:……;主程序
SUBINT0:……
RETI ;INT0中断返回
SUB_T0:……
SUB_INT1:……
SUB_T1:……
SUB_UART:……
该程序的作用是:8031/8051系统程序框架,包括主程序及全部中断服务程序框架。

28. 程序解释
TB: MOV A,R2
ADD A,R2
MOV R3,A
ADD A,#6
MOVC A,@A+PC ;查第一字节
XCH A,R3 ;交换A,R3内容,保存在R3
ADD A,#3
MOVC A,@A+PC
MOV R4,A
RET
TAB:D W 1520,3721,……
DW ……
该程序的作用是:根据R2内容为索引,在TAB检索数据,检索结果存放到R3R4中。

(TAB中内容为双字节数据)
29. 程序解释
DA TLEN DATA 21H
SEACH:MOV R0,#30H ;30H送R0
MOV 20H,#0FFH
SLOP:M OV A,@R0
CJNE A,20H,NEXT ;A与20H单元内容比较
NEXT:JNC SLP1 ;(A)大,跳转
MOV 20H,A
SLP1:INC R0
DJNZ DATLEN,SLOP
RET
END
该程序的作用是:将30H开始的DATLEN个数据中最小的数搜出,保存到20H单元。

30. 程序解释
ORG 100H
DA TAX DATA 10H
DA TAY DATA 11H
CLR C ;清C
MOV A,DATAX
RLC A ;A左循环
JNC POSI
CLR A
SJMP DONE
POSI: MOV A,#01H
DONE:MOV DATAY,A ;(A)送DATAY
SJMP $
END
该程序的作用是:判断10H单元的内容,结果送11单元,大于等于零时送1,小于
零时送零。

31. 程序解释
ORG 100H
MOV A,R0
CJNE A,#3AH,NEXT1 ;(A)与3AH比较
JNC ERR
CJNE A,#30H
JC ERR ;有借位,跳转
CLR C
SUBB A,#30H ;转换ASCII码为十进制数字
SJMP DONE
ERR:M OV A,#0FFH
DONE: MOV R0,A
SJMP $
END
该程序的作用是:完成将R0中十进制数字0~9的ASCII码值转换为十进制值,结果
存放到R0。

32. 程序解释
CONP:MOV DPTR,#8000H ;置外RAM数据区首地址
MOV R0,#20H
CLOP: MOV A,@R0
JB ACC.0,LP1 ;判奇偶,奇数,转判下一个
MOVX @DPTR,A
INC DPTR
LP1:I NC R0
CJNE R0,#30H,CLOP ;判循环,未完继续
RET
该程序的作用是:完成对20~2FH单元中的数据判断,如果数据为偶数,将被写入外部RAM中8000H开始的存储单元。

应掌握的基本内容
1、微处理器主要组成
2、PC程序计数器
3、存储器的结构(ROM 、RAM)、堆栈
4、片内RAM 划分
5、指令周期、指令字节数
6、寻址方式、范围
7、所有指令的使用。

伪指令
8、MOV MOVC MOVX
9、5个中断源,
10、IE、IP、TCON、SCON使用
11、单片机引脚P1、P2、P3、P4、EA、PSEN、ALE、/RD、/WR
11、定时器的工作模式、启动TMOD,SCON、计数、定时
12、异步通信概念
13、串行口工作方式,SCON
14、SPI、I2C串行总线概念
15、共阴、共阳LED 。

LED静态、动态显示
16、A/D分类特点
17、固态继电器
18、8255
19、RAM数据传送编程
20、中断编程
21、计数器编程
22、运算编程(加法、减法、数据块、多字节)
23、比较编程(大小、某个值)
24、查表编程
25、根据电路图,确定RAM、ROM、I/O器件的地址等
26、ADC0809编程、DAC0832编程
27、键盘、LED显示器编程(一个、一位)
21。

相关文档
最新文档