搜索
您的当前位置:首页正文

单片机原理及其接口技术实验问答答案

来源:好土汽车网
实验一(无符号数加法实验)

1 如果要实现2345+6789,程序应如何修改?

2 如果去掉程序中的两句“DA A”指令,有何实验现象?原因是什么? 3 如果将程序中的“ADDC”改为ADD”, 有何实验现象?为什么? 4 如果将程序中的“ADD”改为“ADDC”,程序是否正确?为什么? 解:1将程序中66改为23, 78改为45, 67改为67, 43改为89

2结果是十进制变为十六进制,原因是“DA A”指令是十进制调整指令。 3不能改为ADD,因为ADDC是带有进位CY的加法指令。

4 ADD一般情况下不能改为ADDC,因为缺少CY的进位,但是在本题中可以,因为不造成进位。

实验二 闪烁灯控制

1若将程序中的“SETB P1.1”改为“CLR P1.1”有何实验现象? 答:将程序中的“SETB P1.1”改为“CLR P1.1”,指示灯不闪烁,因为SETB是置位指令,P1.1输出置1,CLR使P1.1输出置0,置1端口开启,置0时端口关闭,因此不闪烁。 2若将程序中的“JNB P1.1,LOOP”改为“JB P1.1,LOOP”有何实验现象? 答:将程序中的“JNB P1.1,LOOP”改为“JB P1.1,LOOP”,会使闪光灯开关置0闪烁,因为闪光灯闪烁频率由RT控制。

3若要加快或减慢灯的闪烁频率,有何方法?为什么?

答:若要加快频率可将MOV R7,#10H改为MOV R7,#5H,减慢频率可将MOV R7,#10H改为MOV R7,#50H。

4若将P1.0改为与灯L7连接,有何实验现象?为什么?

答:P1.1与L7连接,则L7灯就变成了闪烁灯。因为当P1.0数据为1时,引脚上出现高电平,导致L7发光,反之,数据为0,P1.0引脚上出现低电平不发光。

5若将灯的开关控制由当前程序的P1.1控制改为由P1.5控制,应如何修改? 答:若将P1.1控制改为由P1.5控制,可以酱SETB P1.1改为SETB P1.5将 JNB P1.1改为 JNB P1.5,$

6若将当前的P1.0与灯连接改为P1.3连接,应该如何修改程序?

答:若将当前P1.0与灯连接改为PL3灯连接,应将CPL P1.0G改为CPL P1.3。

跑动灯控制

1将程序中RL A改为RR A,有何实验现象?

答:将程序中RL A改为RR A,会使向左移动的【跑动灯变为右移

2将程序中MOV A,#88H改为MOV A,#77H,有何实验现象?

答:若将MOV A,#88H改为MOV A,#77H,会使原先10001000(88H的二进制数)变为01110111(77H的二进制数),会出现灭亮亮亮灭亮亮亮的实验现象。

3若将程序中MOV A.#88H改为MOV A,#66H,有何实验现象?

答01100110(66H的二进制数)变为向左移动的灭亮亮灭灭亮亮灭的现象。

4若将程序中MOV R7,#0F7H改为MOV R7,#83H,有何实验现象?

答:若将MOV R7,#0F7H改为MOV R7,#83H,则会使第一个灯无法正常跑动。

5若将程序中MOV R6#0FDH改为MOV R6,#92H,有何实验现象?

答:若将MOV R6#0FDH改为MOV R6,#92H,则第二个灯无法正常跑动。

6若要加快或减慢灯的跑动速度,可以修改哪些指令?为什么? 答:修改R5可改变跑动速度。

7若要将灯的起始顺序改为灭灭亮灭灭灭亮灭,应如何修改程序?为什么?

答:若将灯的起始顺序改为灭灭亮灭灭灭亮灭,可将MOV A#88H改为MOV A,#22H。因为00100010(22H的二进制数)。

实验三问题:(定时器应用)

(1) (2) (3) (4) (5) (6)

若将程序中“ORL P1,#02H”改为“CLR P1.1”,有何实验现象? 若将程序中“ORL P1,#02H”改为“SETB P1.1” 有何实验现象? 若将程序中“JB P1.1,LOOP1”改为“JNB P1.1,LOOP1”, 有何实验现象? 若分别将程序中“CJNE R7,#05H,LOOP2”改为“CJNE R7,#03H,LOOP2”及“CJNE R7,#0FH,LOOP2”,各有何实验现象? 若分别将程序中“SETB EA”、“SETB ET0”及“SETB TR0”改为“CLR EA”、 “CLR ET0”、 “CLR TR0”,各有何实验现象?

若分别将程序中“MOV TH0,#3CH”及“MOV TL0,#0B0H”中的数值增加或减少,各有何实验现象?为什么?

若将程序改为由定时器1定时,应如何修改程序?

若要加快或减慢灯的闪烁频率,如何修改程序?为什么?

(7) (8)

将“ORL,P1,#20H”改为“CLR P1.1”则会使闪光灯在置0时闪烁,因为ORL为累加器的逻辑运算指令,CLR为置0置位指令,SETB为置1置位指令;将ORL P1,#02H改为SETB P1.1会导致闪光灯在P1.1置1时闪烁;若将程序中“JB P1.1,LOOP1”改为“JNB P1.1,LOOP”则会使原来的亮变为灭,灭变为亮;如果“CJNE R7,#05H,LOOP2”改为“CJNB R7,#03H,LOOP2”则会导致延时变短;若改为“CJNE R7,#0FH,LOOP2”则会使延时变长。若将SETB EA改为“CLR EA”,会导致闪光灯不闪烁。“SETB TR0”改为“CLR TR0”导致闪光灯不闪烁。

将MOV TH0,#3CH若常数体增加,会减少中断次数和中断时间,数值减小,将增加中断次数和中断时间,若程序改为定时器1定时, 改为SETB TR1,CLR TR0.若加快闪烁频率,可减小CJNE A的值,反之,增加CJNE A的值。

实验四(查表显示实验)

1, 右侧第一位数字显示5,需要怎样修改程序。 2, 右侧第三位数字显示3,需要怎样修改程序。

3, 右侧第一位和第三位数字显示7,需要怎样修改程序。

解:1 要将右侧第一位数字显示5,需将TABLE:DB后的数值改为6DH并将MOV A后的数值改为#01H

2要将右侧第三位数字显示3,则需将MOV A 后的数值改为#04H,将TABLE: DB后的数值改为4FH;

3要将右侧第一位和第三位数字显示7,则需将MOV A 后的数值改为#05H,将TABLE: DB后的数值改为07H;

实验6(A/D转换:)

(1)若想使用外部中断1,如何修改程序?为什么?

(2)若要将A/D转换后的数值放在41H内,如何修改程序? (3)寄存器R5有何作用?为什么?

(4)程序中启动A/D转换的地址是多少?若不改变连线,这个地址是否唯一?为什么?若将启动A/D转换的地址改为7FFFH连线如何改变,这个地址是否唯一?为什么?

(5)从显示程序分析,A/D转换结果是如何变为十进制数并逐位分离出来的?分离出来的每一位十进制数分别存放在何处?

(6)从程序分析,显示所用的数码管共阴还是共阳?为什么?

(7)显示程序中的“RL A”有何作用?为什么?“CJNE R7,#08H,DISP2”有何作用?为什么?

(8)显示程序中的“DEC R0”有何作用?为什么?

使用外部中断时,要将中断DINT0改为INI1,如果将A/D转换后的数值放到41H中,则要MOV 40H,A----MOV 41H ,A.寄存器R5是用来控制程序的定时中断。启动A/D转换的地址为8000H,若不连线,则这个地址不唯一,要将A/D转换的地址为7FFFH,需将INT1中的MOV DPTR,#8000H----MOV DPTR ,#7FFFH. 将P1口接到P3口,这个地址是唯一的,从显示程序分析,A/D转换的结果,通过数据采集控制来实现的,分离后在XXX位,数码管共阳极,阴极可以改变。RL为累加器左循环,来控制程序左移。CJNE为寄存器与之即数不等转换,在R7中的#08H不等的则跳转到DISP2. DEC R0寄存器减小指令,来执行下一步。

实验7(步进电机控制:)

(1)若要增加或减少步进电动机的转动步数,如何修改程序? (2)若要增加或减慢步进电动机的转动速度,如何修改程序?

(3)若想将步进电动机的转向控制改为开、停控制,如何修改程序?

(4)若想将现有步进电动机的正、反向控制改为反、正向控制,有哪些方法?为什么? (5)程序中的两句“MOV R0,#00H”分别有何作用?当其它程序不变时,其中的数字“#00H”能否改变?为什么?

(6)若要将步进电动机的转向控制改为由P1.0控制,如何修改程序?连线有何变化?

(7)若将程序中“ORL P1,#80H”改为“ANL P1,#80H”有何实验现象?为什么? “ORL P1,#80H”是否不能变,为什么?

步进电机控制:

若要增加或减少步进电动机的转动步数,如何修改程序?

当需要改变步进电动机的步数时,只需将四拍改为八拍即可增加步数,将A—B—C—D—A改为A—AB—B—BC—C—CD—D—DA—A,将TAB:DB后的88H,84H,82H,81H改为

88H,80H,84H,89H,82H,83H,81H,86H,若要减少步数,DB后改为88H,84H,82H。 若要增加或减慢步进电动机的转动速度,如何修改程序?

当需要改变步进电动机的转动速度时,可改变脉的时间间隔,缩短或增加延时,DELY为延时指令,只需要MOV R7,#200H 200H变大则延时增加,速度变慢,200H变小则延时减小,速度变快。

若想将步进电动机的转向控制改为开、停控制,如何修改程序?

若想控制KO开关控制的效果,LOOP1中的循环不变,只需将LOOP2中的反转程序改为指令,后接END结束程序。

若想将现有步进电动机的正、反向控制改为反、正向控制,有哪些方法?为什么? 将正反控制改为反正控制,只需要将JNB为0转移指令改为JB为1转移指令;还可以将LOOP1中的程序和LOOP2中的程序多换一下;或者再输入TAB:DB后的程序改为88H,81H,82H,84H的顺序输入。

程序中的两句“MOV R0,#00H”分别有何作用?当其它程序不变时,其中的数字“#00H”能否改变?为什么?

程序输入的起始有一句“MOV R0,#00H”语句,首先将R0中清零,让程序从停止开始,同时给予反面的循环计数时的一个初始值,当00H改为其他数值时,当行动时,会陷入无限循环无数计数,正转LOOP1中也有一句“MOV R0,#00H”是为了在四拍结束时重新赋予一个初始值,如果将赋予其00H改变,四拍会变成五拍,六拍。

若要将步进电动机的转向控制改为由P1.0控制,如何修改程序?连线有何变化?

若要将步进电动机的转向控制改为由P1.0控制,将导线KO与P1.7接改为KO与P1.0连接,同时将程序中的P1.7改为P1.0,ORL相当于与指令,若改为ANL指令,P1中的数值会全部清零,灯将不亮,步进器无法转动。 若将程序中“ORL P1,#80H”改为“ANL P1,#80H”有何实验现象?为什么? “ORL P1,#80H”是否不能变,为什么?

80H不能变,因为如果变了,可能会其中一项置1,使其一直起作用。

实验8(8255操作实验)操作:

(1)步进电动机的转动步数由何决定?为什么? (2)步进电动机的转速由什么决定?

(3)程序中的“CJNE R0,#04H,ROTATE2” 有何作用?当其它程序不变时,其中的数字“#04H”能否改变?为什么? (4)举出1至3种改变步进电动机各相与8255口的连线但能保持步进电动机正常工作的方法。同时说明对应的程序如何修改?

(5)若将“TAB1”中的数据与“TAB2”中的数据对调,有何实验现象?为什么? (6)若将程序中的“LJMP 2000H”改为“LJMP 1000H”,是否可以?为什么?

1.步进电动机转动步数是由步进电动机的节拍决定的,四拍一周期停4下,八拍停八下。 2.步进电动机的转速由延时程序决定,时间越长转速越慢。

3.“CJNE R0,#04H,ROTE2”的作用是判断30H是否溢,溢出则清零。#04H 不能变,因为只有#00H~#03H可以用来查表

4.改为A-PA1 B-PA2 C-PA3,则将“03H,06H,09H”改为“06H ,0CH,18H,12H” 6.“LJMP 2000H”改为“LJMP 1000H”不可以,除非把对应地址改为1000H

因篇幅问题不能全部显示,请点此查看更多更全内容

Top