1、微型计算机原理与接口技术-2 及答案解析(总分:100.00,做题时间:90 分钟)一、B单项选择题/B(总题数:16,分数:16.00)1.对以下定义正确的表述是( ) union node int num;char name10;stud;(分数:1.00)A.stud 是一个联合体类型B.stud 是一个联合体变量C.node 是一个联合体数据D.node 是一个联合体变量2.不影响程序状态字 PSW 的指令关键字是( )(分数:1.00)A.ADDB.ADDCC.SUBBD.RRC3.8051 单片机系统扩展时使用的锁存器用于锁存( )(分数:1.00)A.高 8 位地址B.低 8 位
2、地址C.8 位数据D.ALE 信号4.下面不属于中断处理过程的是( )(分数:1.00)A.保护现场号恢复现场B.开中断与关中断C.中断向量D.中断服务与中断返回5.JZ rel 指令中,操作数 rel 的寻址方式是( )(分数:1.00)A.立即寻址B.直接寻址C.位寻址方式D.相对寻址方式6.以下说法中正确的是( )(分数:1.00)A.C 语言程序总是从第一个定义的函数开始执行B.要调用的函数必须在 main()函数中定义C.C 语言程序总是从 main()函数开始执行D.main()函数必须放在程序的开始部分7.若有定义 int a10,*p=a;则 p+5 表示的是( )(分数:1.
3、00)A.a5的值B.a6的值C.a5的地址D.a6的地址8.通过串行口发送或接收数据时,在程序中应使用( )(分数:1.00)A.MOV 指令B.MOVX 指令C.MOVC 指令D.SWAP 指令9.以下集成块型号中不属于 16 位系列单片机型号的是( )(分数:1.00)A.8095BHB.8096BHC.83C452D.9097BH10.不能把字符串 Hello!赋给数组 b 的语句是( )(分数:1.00)A.char b10;b=”Hell0 !“;B.char b10=H,e,l,l,o,!;C.char b10;strcpy(b,“Hello !“);D.char b10=“He
4、llo !“;11.下列对 SCON 的相关位描述不正确的是( )(分数:1.00)A.当 REN=1 时,禁止串行口接收数据B.在方式 0 时,SM2 必须为 0C.RI 位由软件清零D.IT1=1,表示帧发送结束12.MCS-51 单片机的定时器/计数器工作方式 1 是( )(分数:1.00)A.16 位计数器结构B.8 位计数器结构C.13 位计数器结构D.两个 8 位计数器结构13.MCS-51 布尔处理机的存储空间指的是( )(分数:1.00)A.00H0FHB.10H1FHC.20H2FHD.30H3FH14.用户可以直接使用的 8031 单片机 I/O 接口是( )(分数:1.0
5、0)A.P0B.P2C.P1D.P315.用 16 位(bit)二进制能够表示的无符号数的范围是( )(分数:1.00)A.65536B.65535C.65537D.6553416.ANL20H,#30H 指令中,源操作数的寻址方式是( )(分数:1.00)A.立即寻址B.直接寻址C.位寻址D.相对寻址二、B填空题/B(总题数:4,分数:8.00)17.int a;则表达式(a=4*5,a*2),a+6 的值是 1。(分数:2.00)填空项 1:_18.若 a=6,b=4,c=3,则表达式 ab+c|b-c 的值是 1。(分数:2.00)填空项 1:_19.以下程序的功能是计算:s=1+12+
6、123+1234+12345。请填空。 main() int t=0,s=0,i; for(i=1;i=5;i+) t=i+_;s=s+t; printf(“s=%d/n“,s); (分数:2.00)填空项 1:_20.输入两个整数 n1,n2(要求 n1n2),统计两整数范围内被 3 整除的数的个数。请填空。 #include”stdio.h” main() int n1,n2,j,n=0; printf(“/n 请输入两个数:“); scanf(“%d%d“,n1,n2); if(n1n2)j=n1;n1=n2;n2=j; for(j=n1;j=n2,j+) if(_)n+; printf
7、(“a=%5d,b=%5d,n=%5d/n“n1,n2,n);(分数:2.00)填空项 1:_三、B改错题/B(总题数:4,分数:8.00)21.#includestdio.h main() int a; char ch; ch=“A“: scanf(“%d“,a); printf(“%c+%d=%c/n“,ch,ch+a); 错误:_ 改正:_(分数:2.00)填空项 1:_22.main() int a3=0,1,2; int i; scarf(“%d“,a); for(i=1;i3;i+)a0=a0+ai;printf(“a 0=%d/n“,a0); 错误:_ 改正:_(分数:2.00)
8、填空项 1:_23.下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中 y 变成 A,z 变成 B。 #include “stdio.h“ main() char c; while(c=getchar()!=/n) if(c=ac=z) c=c-30; if(cz|c=z+2) c=c-26; printf(“%c“,c); 错误:_ 改正:_(分数:2.00)填空项 1:_24.以下程序的输出结果是 29,改正错误。 fun(int x,int y) x*x+y*y; main() int a; a=fun(5,2); printf(“%d“,a); 错误:_ 改正:_(分数:2
9、.00)填空项 1:_四、B程序阅读题/B(总题数:4,分数:16.00)25.#includestdio.h main() int a10=2,4,0,-5,10,6,-8,9,6,7; inti,s=0,count=0; for(i=0;i10;i+) if(ai0)s+=ai,count+; else continue; printf(“s=%d,count=%d/n“,s,count); 程序运行结果是:_(分数:4.00)填空项 1:_26.#includestdio.h main() int i,n; double x,mypow; scanf(“%lf%d“,x,n); mypo
10、w:1; for(i=1;i=n;i+) mypow*=x: printf(“%.2f/n“,mypow); 程序运行时输入 2,3回车,则程序运行结果是:_(分数:4.00)填空项 1:_27.#include“stdio.h“ main() int a,b; for(a=1,b=1;a=100;a+) if(b=20)break; if(b%3=1)b+=3;continue; b- =5; printf(“%d/n“,a); 程序运行结果是:_(分数:4.00)填空项 1:_28.#includemath.h #includestdio.h main() float x,y,z; sca
11、nf(“%f%f“,x,y); z=x/y; while(1) if(fabs(z)1.0)x=y;y=z;z=x/y; else break; printf(“%f“,y); 程序运行时,从键盘输入 3.6,2.4回车,则程序运行结果是:_(分数:4.00)填空项 1:_五、B程序设计题/B(总题数:1,分数:8.00)29.输入 m 和 n(mn0)后,计算 m!/n!(m-n)!表达式的值并输出。要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为 float。(分数:8.00)_六、B填空题-单片机原理与接口技术(总题数:8,分数:16.00)30.8051 内部并行口 P0
12、 口直接作输出口时,必须外接_;并行口作输入口时,必须先_,才能读入外设的状态。(分数:2.00)填空项 1:_31.MCS-51 有一个全双工的_步串行口,有_种工作方式。(分数:2.00)填空项 1:_32.MCS-51 单片机外部中断请求信号有电平方式和_,在电平方式下,当采集到 INT0 或 INT1 的有效信号为_时,激活外部中断。(分数:2.00)填空项 1:_33.执行完本段指令后(A)=_(B)=_。 MOV A,#08H MOV B,#45H PUSH A PUSH B POP A POP B(分数:2.00)填空项 1:_34.已知(R0)=20H,(20H)=36H,(2
13、1H)=17H,(36H)=34H,执行下列程序后,则(R0)=_(R2)=_。 MOV A,R0 MOV R0,A MOV A,R0 ADD A,21H ORL A,#21H RL A MOV R2 A RET(分数:2.00)填空项 1:_35.若(A)=86H,(PSW)=80H,则执行 RRCA 指令后,(A)= 1。(分数:2.00)填空项 1:_36.若 PSW=00,执行下列程序后,CY=_。 MOV A,#0FBH MOV PSW,#10H ADD A,#7FH(分数:2.00)填空项 1:_37.若由程序设定 RS1.RS0=11,则工作寄存器 R0R7 的直接地址为 1。(
14、分数:2.00)填空项 1:_七、B改错题-单片机原理与接口技术(总题数:2,分数:4.00)38.已知在累加器 A 中存放一个 BCD(09),下面子程序实现一个查平方表。 SQR: INC A MOVC A,A+PC RET TAB: DB 0,1,4,9,16 DB 25,36,49,64,81 错误:_ 改正:_(分数:2.00)填空项 1:_39.下列指令组要完成重复执行 LOOP 开始的程序 20 次。 MOV A,#14H L00P:MOV R1,#01H DEC A JNC LOOP 错误:_ 改正:_(分数:2.00)填空项 1:_八、B程序阅读题-单片机原理与接口技(总题数
15、:2,分数:8.00)40.下面程序是在_中存放一个压缩的 BCD 码,将它拆成二个 BCD 字节,结果存于_开始的单元中(低位在前) MOV R0,#SUM MOV A,R2 ANL A,#0FH MOV R0,A MOV A,R2 ANL A,#0F0H SWAP A INC R0 MOV R0,A RET(分数:4.00)填空项 1:_41.以下程序是将存于外部 RAM_开始的 50H 数据传送到_的区域。 MOV DPTR,#8000H MOV R0,#10H MOV R2,#50H L00P:MOVX A,DPTR MOVX R0,A INC DPTR INC R0 DJNZ R2,
16、LOOP RET(分数:4.00)填空项 1:_九、B程序设计题-单片机原理与接口技(总题数:1,分数:8.00)42.从内部 RAM30H 单元开始,有 10 个单字节数据。试编一个程序,把其巾的正数、负数分别送 40H 和50H 开始的内部 RAM 单元。(分数:8.00)_十、B十、应用题/B(总题数:1,分数:8.00)已知晶体振荡器的频率为 fosc=12MHz。T0 工作在方式 1 计数器模式,T1 作定时器,工作在方式 0,每隔0.5ms 使 P1.0 引脚上的电平变反,在 P1.0 引脚上产生周期为 1ms 的方波输出,将下列程序补充完整。 0RG 0000H AJMP MAI
17、N 0RG 001BH AJMP INTP ORG 0030H MAIN:MOV TMOD,U /U ;写控制字 MOV TH1,#0F0H ;写定时常数(定时 1ms) MOV TL1,#0CH U /U ;启动 T1 U /U ;启动 T0 U /U ;允许 T1 中断 U /U ;开放 CPU 中断 AJMP $ ;定时中断等待 ORG 0200 H ;T1 中断服务程序 INQP:PUSH 0 MOV TH1,#0F0H ;重写定时常数 MOV TL1,#0CH CPL P1.0 ;P1.0 变反输出 U /U U /U U /U 答:_;_;_;_; _;_;_;_。(分数:8.00
18、)(1).(分数:1.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_微型计算机原理与接口技术-2 答案解析(总分:100.00,做题时间:90 分钟)一、B单项选择题/B(总题数:16,分数:16.00)1.对以下定义正确的表述是( ) union node int num;char name10;stud;(分数:1.00)A.stud 是一个联合体类型B.stud 是一个联合体变量 C.node 是一个联合体数据D.node 是一个联合体变量解析:2.不影响程序状态字 PSW 的指令关键字是( )(分数:1.00)A.ADD B.A
19、DDCC.SUBBD.RRC解析:3.8051 单片机系统扩展时使用的锁存器用于锁存( )(分数:1.00)A.高 8 位地址B.低 8 位地址 C.8 位数据D.ALE 信号解析:4.下面不属于中断处理过程的是( )(分数:1.00)A.保护现场号恢复现场B.开中断与关中断C.中断向量 D.中断服务与中断返回解析:解析 中断向量是中断处理程序的入口地址表,是预先设置的。5.JZ rel 指令中,操作数 rel 的寻址方式是( )(分数:1.00)A.立即寻址B.直接寻址C.位寻址方式D.相对寻址方式 解析:6.以下说法中正确的是( )(分数:1.00)A.C 语言程序总是从第一个定义的函数开
20、始执行B.要调用的函数必须在 main()函数中定义C.C 语言程序总是从 main()函数开始执行 D.main()函数必须放在程序的开始部分解析:7.若有定义 int a10,*p=a;则 p+5 表示的是( )(分数:1.00)A.a5的值B.a6的值C.a5的地址 D.a6的地址解析:解析 p 指的是 a0,则 p+5 是指 a5。8.通过串行口发送或接收数据时,在程序中应使用( )(分数:1.00)A.MOV 指令 B.MOVX 指令C.MOVC 指令D.SWAP 指令解析:解析 串口发送或接收是内部可寻址寄存器。因此使用 MOV 指令。9.以下集成块型号中不属于 16 位系列单片机
21、型号的是( )(分数:1.00)A.8095BHB.8096BHC.83C452 D.9097BH解析:10.不能把字符串 Hello!赋给数组 b 的语句是( )(分数:1.00)A.char b10;b=”Hell0 !“; B.char b10=H,e,l,l,o,!;C.char b10;strcpy(b,“Hello !“);D.char b10=“Hello !“;解析:解析 数组名是常量,不能赋值。11.下列对 SCON 的相关位描述不正确的是( )(分数:1.00)A.当 REN=1 时,禁止串行口接收数据 B.在方式 0 时,SM2 必须为 0C.RI 位由软件清零D.IT1
22、=1,表示帧发送结束解析:12.MCS-51 单片机的定时器/计数器工作方式 1 是( )(分数:1.00)A.16 位计数器结构 B.8 位计数器结构C.13 位计数器结构D.两个 8 位计数器结构解析:13.MCS-51 布尔处理机的存储空间指的是( )(分数:1.00)A.00H0FHB.10H1FHC.20H2FH D.30H3FH解析:14.用户可以直接使用的 8031 单片机 I/O 接口是( )(分数:1.00)A.P0B.P2C.P1 D.P3解析:解析 只有 P1 口没有第二功能,因此可以直接使用。15.用 16 位(bit)二进制能够表示的无符号数的范围是( )(分数:1.
23、00)A.65536 B.65535C.65537D.65534解析:解析 2 16+1=65535,注意还有 0。16.ANL20H,#30H 指令中,源操作数的寻址方式是( )(分数:1.00)A.立即寻址 B.直接寻址C.位寻址D.相对寻址解析:解析 单片机指令系统规定,加#的数据是立即数。二、B填空题/B(总题数:4,分数:8.00)17.int a;则表达式(a=4*5,a*2),a+6 的值是 1。(分数:2.00)填空项 1:_ (正确答案:26)解析:解析 逗号表达式的值是最后一个表达式的值。18.若 a=6,b=4,c=3,则表达式 ab+c|b-c 的值是 1。(分数:2.
24、00)填空项 1:_ (正确答案:1)解析:解析 注意比较、逻辑运算顺序。19.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。 main() int t=0,s=0,i; for(i=1;i=5;i+) t=i+_;s=s+t; printf(“s=%d/n“,s); (分数:2.00)填空项 1:_ (正确答案:t*10)解析:解析 s=1+12+123+1234+12345 分解为 1+(1*10+2)+(1*10)+2)*10+3)+(1*10)+2)*10+3)*10+4)因此;得到表达式 t=i+t*10。20.输入两个整数 n1,n2(要求 n1n2),
25、统计两整数范围内被 3 整除的数的个数。请填空。 #include”stdio.h” main() int n1,n2,j,n=0; printf(“/n 请输入两个数:“); scanf(“%d%d“,n1,n2); if(n1n2)j=n1;n1=n2;n2=j; for(j=n1;j=n2,j+) if(_)n+; printf(“a=%5d,b=%5d,n=%5d/n“n1,n2,n);(分数:2.00)填空项 1:_ (正确答案:j%3=0)解析:解析 注意能被 m 整除的表达式,n%m=0。三、B改错题/B(总题数:4,分数:8.00)21.#includestdio.h main
26、() int a; char ch; ch=“A“: scanf(“%d“,a); printf(“%c+%d=%c/n“,ch,ch+a); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:scanf(“%d“,a);)解析:改正:将其修改为 scanf(“%d“,a); 解析 scanf 函数格式错误22.main() int a3=0,1,2; int i; scarf(“%d“,a); for(i=1;i3;i+)a0=a0+ai;printf(“a 0=%d/n“,a0); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:scanf(“%d
27、“,a);)解析:改正:将其修改为 scanf(“%d“,a0); 解析 scanf 函数格式错误,a 是数组名,不是数组元素23.下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中 y 变成 A,z 变成 B。 #include “stdio.h“ main() char c; while(c=getchar()!=/n) if(c=ac=z) c=c-30; if(cz|c=z+2) c=c-26; printf(“%c“,c); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:if(cz|c=z+2))解析:改正:将其修改为 if(czc=z+2) 解析
28、 if 语句表达式错误24.以下程序的输出结果是 29,改正错误。 fun(int x,int y) x*x+y*y; main() int a; a=fun(5,2); printf(“%d“,a); 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:x*x+y*y;)解析:改正:将其修改为 return(x*x+y*y); 解析 fun 函数没有返回值四、B程序阅读题/B(总题数:4,分数:16.00)25.#includestdio.h main() int a10=2,4,0,-5,10,6,-8,9,6,7; inti,s=0,count=0; for(i=0;i
29、10;i+) if(ai0)s+=ai,count+; else continue; printf(“s=%d,count=%d/n“,s,count); 程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:s=44,count=7)解析:解析 将数组中大于 0 的数相加,共 7 个。关键是条件语句。26.#includestdio.h main() int i,n; double x,mypow; scanf(“%lf%d“,x,n); mypow:1; for(i=1;i=n;i+) mypow*=x: printf(“%.2f/n“,mypow); 程序运行时输入 2,3回车
30、,则程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:8.00)解析:解析 关键是循环语句,计算 2 的 3 次方。27.#include“stdio.h“ main() int a,b; for(a=1,b=1;a=100;a+) if(b=20)break; if(b%3=1)b+=3;continue; b- =5; printf(“%d/n“,a); 程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:8)解析:解析 在循环体中,当 b=1,4,7,10,13,16,19 时,对应 b=4,7,10,13,16,19,22 则共循环 7 次,当 b=22 时结
31、束循环。因此 a=8。28.#includemath.h #includestdio.h main() float x,y,z; scanf(“%f%f“,x,y); z=x/y; while(1) if(fabs(z)1.0)x=y;y=z;z=x/y; else break; printf(“%f“,y); 程序运行时,从键盘输入 3.6,2.4回车,则程序运行结果是:_(分数:4.00)填空项 1:_ (正确答案:1.6)解析:解析 进入循环前 x=3.6,y=2.4,z=x/y=1.6。第一次循环后 x=2.4,y=1.5,z=x/y=1.6。第二次循环后 x=1.5,y=1.6,z=
32、x/y1。第三次进入循环体执行 break 语句。所以 y=1.6。五、B程序设计题/B(总题数:1,分数:8.00)29.输入 m 和 n(mn0)后,计算 m!/n!(m-n)!表达式的值并输出。要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为 float。(分数:8.00)_正确答案:()解析:main() float fact(int n); int n,m;float y do/*输入 m,n,如果 mn 或 n0,则重输入:即要求 m=n=0*/ scanf(“%d%d“,m,n)while(mn|n0); y=fact(m)/(fact(n)*fact(m-n);p
33、rintf(“%f/n“,y); /*int fun(float s,int n)函数定义如下:*/ float fact(int n) int i;float s=1.0 for(i=1;i=n;i+) s=s*i: return s;六、B填空题-单片机原理与接口技术(总题数:8,分数:16.00)30.8051 内部并行口 P0 口直接作输出口时,必须外接_;并行口作输入口时,必须先_,才能读入外设的状态。(分数:2.00)填空项 1:_ (正确答案:上拉电阻 将口锁存器置 1)解析:31.MCS-51 有一个全双工的_步串行口,有_种工作方式。(分数:2.00)填空项 1:_ (正确答
34、案:异 4)解析:32.MCS-51 单片机外部中断请求信号有电平方式和_,在电平方式下,当采集到 INT0 或 INT1 的有效信号为_时,激活外部中断。(分数:2.00)填空项 1:_ (正确答案:脉冲方式 低电平)解析:解析 电平方式也称为低电平有效方式,脉冲方式也称其为下降沿有效。33.执行完本段指令后(A)=_(B)=_。 MOV A,#08H MOV B,#45H PUSH A PUSH B POP A POP B(分数:2.00)填空项 1:_ (正确答案:45H 08H)解析:解析 注意后进先出。34.已知(R0)=20H,(20H)=36H,(21H)=17H,(36H)=3
35、4H,执行下列程序后,则(R0)=_(R2)=_。 MOV A,R0 MOV R0,A MOV A,R0 ADD A,21H ORL A,#21H RL A MOV R2 A RET(分数:2.00)填空项 1:_ (正确答案:36H F6H)解析:解析 MOV A,R0 MOV R0,A ;R0=36H MOV A,R0 ;A=34H ADD A,21H :A=34H+17H=5BH ORL A,#21H ;0101101100100001=01111011 RL A ;A=11110110=F6H MOV R2 A ;R2=F6H RET35.若(A)=86H,(PSW)=80H,则执行
36、RRCA 指令后,(A)= 1。(分数:2.00)填空项 1:_ (正确答案:C3H)解析:解析 PSW=80H,则 CY=1。若 A=10000110,则 RRC A 指令后,A=11000011。36.若 PSW=00,执行下列程序后,CY=_。 MOV A,#0FBH MOV PSW,#10H ADD A,#7FH(分数:2.00)填空项 1:_ (正确答案:1)解析:解析 ADD 指令不影响 CY。37.若由程序设定 RS1.RS0=11,则工作寄存器 R0R7 的直接地址为 1。(分数:2.00)填空项 1:_ (正确答案:181FH)解析:七、B改错题-单片机原理与接口技术(总题数
37、:2,分数:4.00)38.已知在累加器 A 中存放一个 BCD(09),下面子程序实现一个查平方表。 SQR: INC A MOVC A,A+PC RET TAB: DB 0,1,4,9,16 DB 25,36,49,64,81 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:MOVC A,A+PC)解析:改正:MOVC A,A+PC 解析 语法错误39.下列指令组要完成重复执行 LOOP 开始的程序 20 次。 MOV A,#14H L00P:MOV R1,#01H DEC A JNC LOOP 错误:_ 改正:_(分数:2.00)填空项 1:_ (正确答案:错误:J
38、NC LOOP)解析:改正:JNZ LOOP 解析 DEC 指令不影响 PSW八、B程序阅读题-单片机原理与接口技(总题数:2,分数:8.00)40.下面程序是在_中存放一个压缩的 BCD 码,将它拆成二个 BCD 字节,结果存于_开始的单元中(低位在前) MOV R0,#SUM MOV A,R2 ANL A,#0FH MOV R0,A MOV A,R2 ANL A,#0F0H SWAP A INC R0 MOV R0,A RET(分数:4.00)填空项 1:_ (正确答案:R2 SUM)解析:解析 MOV R0,#SUM ;存放结果的开始单元 MOV A,R2 ;取压缩的 BCD 码 ANL
39、 A,#0FH ;屏蔽高四位 MOV R0,A ;存放 SUM 中 MOV A,R2 ;再次取压缩的 BCD 码 ANL A,#0F0H ;屏蔽低四位 SWAP A ;交换高低四位数据 INC R0 ;SUM 开始的下一个存储单元 MOV R,A ;存放结果 RET41.以下程序是将存于外部 RAM_开始的 50H 数据传送到_的区域。 MOV DPTR,#8000H MOV R0,#10H MOV R2,#50H L00P:MOVX A,DPTR MOVX R0,A INC DPTR INC R0 DJNZ R2,LOOP RET(分数:4.00)填空项 1:_ (正确答案:800014 0
40、01014)解析:解析 MOV DPTR,#8000H ;外部开始单元 MOV R0,#10H ;目的开始单元 MOV R2,#50H ;数据长度 LOOP: MOVX A,DPTR ;开始传送 MOVX R0,A INC DPTR INC R0 ;不为 0 继续 DJNZ R2,LOOP RET九、B程序设计题-单片机原理与接口技(总题数:1,分数:8.00)42.从内部 RAM30H 单元开始,有 10 个单字节数据。试编一个程序,把其巾的正数、负数分别送 40H 和50H 开始的内部 RAM 单元。(分数:8.00)_正确答案:()解析:MOV R0,#30H MOV R1,#40H M
41、OV A,#50H MOV R7,#10 L00P: MOV 20H,R0 JB 20H.7,FSHU ZSHU: MOV R0,20H INC R1 SJMP NEXT FSHU: XCH A,R0 MOV R0,A XCH A,R1 INC A NEXT: DJNZ R7,LOOP SJMP $十、B十、应用题/B(总题数:1,分数:8.00)已知晶体振荡器的频率为 fosc=12MHz。T0 工作在方式 1 计数器模式,T1 作定时器,工作在方式 0,每隔0.5ms 使 P1.0 引脚上的电平变反,在 P1.0 引脚上产生周期为 1ms 的方波输出,将下列程序补充完整。 0RG 0000H AJMP MAIN 0RG 001BH AJMP INTP ORG 0030H MAIN:MOV TMOD,U /U ;写控制字 MOV TH1,#0F0H ;写定时常数(定时 1ms) MOV TL1,#0CH U /U ;启动 T1 U /U ;启动 T0 U /U ;允许 T1 中断 U /U ;开放 CPU 中断 AJMP $ ;定时中断等待 ORG 0200 H ;T1 中断服务程序 INQP:PUSH 0 MOV TH1,#0F0H ;重写定时常数 MOV TL1,#0CH CPL P1.0 ;P1.0 变反输出