视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
单片机原理及接口技术课后习题参全
2025-09-30 19:51:53 责编:小OO
文档
第1章   单片机概述

1.除了单片机这一名称之外,单片机还可称为        和        。

答:微控制器,嵌入式控制器。

2.单片机与普通微型计算机的不同之处在于其将      、     、和       3部分集成于一块芯片上。

答:CPU、存储器、I/O口。

3.8051与8751的区别是        。

A.内部数据存储单元数目不同             B.内部数据存储器的类型不同

C.内部程序存储器的类型不同              D.内部寄存器的数目不同

答:C。

4.在家用电器中使用单片机应属于微计算机的        。

A.辅助设计应用;B.测量、控制应用    ;C.数值计算应用;D.数据处理应用

答:B。

5.微处理器、微计算机、微处理机、CPU、单片机它们之间有何区别?

答:微处理器、微处理机和CPU都是处理器的不同称谓;而微计算机、单片机都是一个完整的计算机系统,单片机特指集成在一个芯片上的用于测控目的的单片微计算机。

6.MCS-51系列单片机的基本型芯片分别为哪几种?它们的差别是什么?

答:MCS-51系列单片机的基本型芯片分别是8031、8051和8751。它们的差别是在片内程序存储器上。8031无片内程序存储器,8051片内有4KB的程序存储器ROM,而8751片内集成有4KB的程序存储器EPROM。

7.为什么不应当把51系列单片机称为MCS-51系列单片机?

答:因为MCS-51系列单片机中的“MCS”是Intel公司生产的单片机的系列符号,而51系列单片机是指世界各个厂家生产的所有与8051的内核结构、指令系统兼容的单片机。

8.ATC51单片机相当于MCS-51系列单片机中的哪一种型号的产品?

答:相当于MCS-51系列中的87C51,只不过是ATC51芯片内的4KB Flash存储器取代了87C51片内的4KB的EPROM。

第2章   ATC51单片机片内硬件结构

1.在ATC51单片机中,如果采用6MHz晶振,一个机器周期为        。

答:2µs

2.ATC51单片机的机器周期等于        个时钟振荡周期。

答:12。

3.内部RAM中,位地址为40H、88H的位,该位所在字节的字节地址分别为         和        。

答:28H;88H。

4.片内字节地址为2AH单元的最低位的位地址是        ;片内字节地址为88H单元的最低位的位地址是        。

答:50H;88H。

5.若A中的内容为63H,那么,P标志位的值为        。

答:P标志位的值为0。

6.ATC51单片机复位后,R4所对应的存储单元的地址为        ,因上电时PSW =         。这时当前的工作寄存器区是        组工作寄存器区。

答:04H;00H;0。

7.内部RAM中,可作为工作寄存器区的单元地址为         H~         H。

答:00H;1FH。

8.通过堆栈操作实现子程序调用,首先要把        的内容入栈,以进行断点保护。调用返回时,再进行出栈保护,把保护的断点送回到        。

答:PC;PC。

9.ATC51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为ATC51单片机的PC是16位的,因此其寻址的范围为         KB。

答:KB。

10.判断下列        项说法是正确的。

A.ATC51单片机的CPU是由RAM和EPROM组成的

B.区分片外程序存储器和片外数据存储器的最可靠的方法是看其位于地址范围的低端还是高端

C.在ATC51单片机中,为使准双向的I/O口工作在输入方式,必须保证它被事先预置为1

D.PC可以看成是程序存储器的地址指针

答: A. 错; B. 错;C. 对;D. 对。

11.判断以下有关PC和DPTR的结论        是正确的。

A.DPTR是可以访问的,而PC不能访问

B.它们都是16位寄存器

C.在单片机运行时,它们都具有自动加“1”的功能

D.DPTR可以分为2个8位的寄存器使用,但PC不能

答:A. 对; B. 对;C. 错;D. 对。

12.判断下列说法        项是正确的。

A.程序计数器PC不能为用户编程时直接访问,因为它没有地址

B.内部RAM的位寻址区,只能供位寻址使用,而不能供字节寻址使用

C.ATC51单片机共有21个特殊功能寄存器,它们的位都是可用软件设置的,因此,是可以进行位寻址的。

答:A. 对; B. 错;C. 错。

13.PC的值是        。

A.当前正在执行指令的前一条指令的地址

B.当前正在执行指令的地址

C.当前正在执行指令的下一条指令的地址

D.控制器中指令寄存器的地址

答:A. 错;B. 错;C. 对;D. 错。

14.判断下列说法        项是正确的。

A.PC是一个不可寻址的特殊功能寄存器

B.单片机的主频越高,其运算速度越快

C.在ATC51单片机中,一个机器周期等于1s

D.特殊功能寄存器内存放的是栈顶首地址单元的内容

答:A. 对;B. 对;C. 错;D.错。

15.ATC51单片机的片内都集成了哪些功能部件?各个功能部件的最主要的功能是什么?

(1)1个微处理器(CPU);

(2)128个数据存储器(RAM)单元;

(3)4KB Flash程序存储器;

(4)4个8位可编程并行I/O口(P0口、P1口、P2口、P3口);

(5)1个全双工串行口;

(6)2个16位定时器/计数器;

(7)一个中断系统,5个中断源,2个优先级;

(8)21个特殊功能寄存器(SFR)。

16.说明ATC51单片机的引脚的作用,该引脚接高电平和低电平时各有何种功能?

答:当脚为高电平时,单片机读片内程序存储器(4KB Flash),但在PC值超过0FFFH(即超出4KB地址范围)时,将自动转向读外部程序存储器内的程序。当脚为低电平时,对程序存储器的读操作只限定在外部程序存储器,地址为0000H~FFFFH,片内的4KB Flash程序存储器不起作用。

17.KB程序存储器空间有5个单元地址对应ATC51单片机5个中断源的中断入口地址,请写出这些单元的入口地址及对应的中断源。

答:KB程序存储器空间中有5个特殊单元分别对应于5个中断源的中断服务程序的入口地址,见下表。

表 5个中断源的中断入口地址

入口地址中断源
0003H外部中断0 ()

000BH定时器0 (T0)

0013H外部中断1 ()

001BH定时器1 (T1)

0023H串行口
18.当ATC51单片机运行出错或程序陷入死循环时,如何摆脱困境?

答:按下复位按钮。

第3章   ATC51单片机的指令系统

1.在基址加变址寻址方式中,以      作为变址寄存器,以      或      作为基址寄存器。

答:A,PC,DPTR。

2.指令格式是由     和     组成,也可仅由     组成。

答:操作码,操作数,操作码。

3.假定累加器A中的内容为30H,执行指令

1000H:    MOVC  A,@A+PC

后,把程序存储器        单元的内容送入累加器A中。

答:1031H。

4.在ATC51单片机中,PC和DPTR都用于提供地址,但PC是为访问

        存储器提供地址,而DPTR是为访问        存储器提供地址。

答:程序,数据。

5.在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的        。

答:地址。

6.已知程序执行前有(A) = 02H,(SP) = 52H,(51H) = FFH,(52H) = FFH。下述程序执行后,(A) =     ,(SP) =     ,(51H) =     ,(52H) =     ,(PC) =     。

POP      DPH

POP      DPL

MOV      DPTR,#4000H

RL       A

MOV      B,A

MOVC     A,@A+DPTR

PUSH     Acc

MOV      A,B

INC      A

MOVC     A,@A+DPTR

PUSH      Acc

RET

ORG      4000H

DB          10H,80H,30H,50H,30H,50H

答:(A)=50H,(SP)=50H,(51H)=30H,(52H)=50H,(PC)=5030H。

7.假定(A) = 83H,(R0) = 17H,(17H) = 34H,执行以下指令后,(A) =        。

ANL        A,#17H

ORL        17H,A

XRL        A,@R0

CPL        A

答:(A)=0CBH。

8.假设(A) = 55H,(R3) = 0AAH,在执行指令“ANL  A,R5”后,(A) =         ,(R3) =         。

答:(A)=00H,(R3)=0AAH。

9.如果(DPTR) = 507BH,(SP) = 32H,(30H) = 50H,(31H) = 5FH,(32H) = 3CH,则执行下列指令后,(DPH) =         ,(DPL) =          ,(SP) =          。

POP       DPH

POP       DPL

POP       SP

答:(DPH)=3CH,(DPL)=5FH,(SP)=50H。

10.假定,(SP) = 60H,(A) = 30H,(B) = 70H,执行下列指令后,SP的内容为        ,61H单元的内容为        ,62H单元的内容为        。

PUSH       Acc

PUSH       B

答:(SP)=62H,(61H)=30H,(62H)=70H。

11.判断下列说法        项是正确的。

A.立即寻址方式是被操作的数据本身就在指令中,而不是它的地址在指令中

B.指令周期是执行一条指令的时间

C.指令中直接给出的操作数称为直接寻址

答:A.对;B.对; C.错。

12.判断以下指令的正误。

(1)MOV  28H,@R2  (2)DEC  DPTR   (3)INC  DPTR  (4)CLR   R0

(5)CPL  R5  (6)MOV  R0,R1  (7)PHSH  DPTR  (8)MOV  F0,C

(9)MOV  F0,Acc.3  (10)MOVX  A,@R1  (11)MOV  C,30H  (12)RLC  R0

答:(1)错(2)错(3)对(4)错(5)错(6)错(7)错(8)对(9)错(10)对 (11)对(12)错。

13.访问SFR,可使用哪些寻址方式?

答:只能使用直接寻址方式。

14.下列程序段的功能是什么?

PUSH    Acc

PUSH      B

POP       Acc

POP       B

答:A的内容与B的内容互换。

15.写出完成如下要求的指令,但是不能改变未涉及位的内容。

(1)把ACC.3,ACC.4,ACC.5和ACC.6清“0”。

(2)把累加器A的中间4位清“0”。

(3)使ACC.2和ACC.3置“1”。

答:    (1)ANL  A,#87H

              (2)ANL  A,#0C3H

            (3)ORL  A,#0CH

16.借助本书中的表3-2(指令表),对如下指令代码(十六进制)进行手工反汇编。

FF  C0  E0  E5  F0  F0

答:    MOV        R7,A

PUSH       A

MOV        A ,B

MOVX       @DPTR,A

第4章   ATC51单片机汇编语言程序设计

1.已知程序执行前有A = 02H,SP = 42H,(41H) = FFH,(42H) = FFH。下述程序执行后,A =         ;SP =         ;(41H) =         ;(42H) =         ;PC =         。

POP      DPH

POP      DPL

MOV      DPTR,#3000H

RL          A

MOV      B,A

MOVC      A,@A+DPTR

PUSH      Acc

MOV      A,B

INC      A

MOVC      A,@A+DPTR

PUSH      Acc

RET

ORG      3000H

DB          10H,80H,30H,80H,50H,80H

答: A=80H,SP=40H,(51H)=50H,(52H)=80H ,PC=8050H。

2.说明伪指令的作用。“伪”的含义是什么?常用伪指令的功能如何?

答:伪指令不属于指令系统中的汇编语言指令,它是程序员发给汇编程序的控制命令。只有在汇编前的源程序中才有伪指令。所以“伪”体现在汇编后,伪指令没有相应的机器代码产生。

3.解释手工汇编、机器汇编、交叉汇编、反汇编术语概念。

答:(1)手工汇编:手工编程,首先把程序用助记符指令写出,然后通过查指令的机器代码表,逐个把助记符指令“翻译”成机器代码,这种人工查表“翻译”指令的方法称为手工汇编。

(2)机器汇编:是借助于微型计算机上的软件(汇编程序)来代替手工汇编,完成把助记符指令“翻译”成机器代码的工作。

(3)交叉汇编:使用微型计算机来完成汇编,而汇编后得到的机器代码却是在另一台计算机(这里是单片机)上运行,称这种机器汇编为交叉汇编。

(4)反汇编:将二进制的机器代码语言程序翻译成汇编语言源程序的过程。

4.下列程序段经汇编后,从1000H开始的各有关存储单元的内容是什么?

ORG  1000H

TAB1      EQU  1234H

TAB2      EQU  3000H

DB       "MAIN"

DW        TAB1,TAB2,70H

答:4D  41  49  4E  12  34  30  00  00  70 

5.设计子程序时应注意哪些问题?

答:在编写子程序时应注意以下问题。

(1)子程序的第一条指令前必须有标号。

(2)使用子程序调用指令时,有两条调用指令可供使用。

①使用绝对调用指令(ACALL addr11)要注意,被调用的子程序的首地址与本绝对调用指令的下一条指令的高5位地址相同,即只能在同一2KB程序存储区内。

②使用长调用指令(LCALL addr16)时,addr16为直接调用的子程序的目标地址,也就是说,被调用的子程序可放置在KB程序存储器区的任意位置。

(3)子程序结构中必须用到堆栈,堆栈通常用来保护断点和现场保护。

(4)子程序返回主程序时,最后一条指令必须是RET指令。

(5)子程序可以嵌套,即主程序可以调用子程序,子程序又可以调用另外的子程序。

6.试编写一个程序,将内部RAM中45H单元的高4位清“0”,低4位置“1”。

答:参考程序如下:

MOV        A,45H

ANL        A,#0FH

ORL        A,#0FH

MOV        45H,A

7.试编写程序,查找在内部RAM的30H~50H单元中是否有0AAH这一数据。若有,则将51H单元置为“01H”;若未找到,则将51H单元置为“00H”。

答:参考程序如下:

START:    MOV    R0,#30H

    MOV    R2,#20H

LOOP:    MOV    A,@R0

    CJNE    A,#0AAH,NEXT

MOV    51H,#01H

LJMP    EXIT

NEXT:        INC        R0

    DJNZ    R2,LOOP

MOV    51H,#00H

EXIT:        RET

8.试编写程序,查找在内部RAM的20H~40H单元中出现“00H”这一数据的次数,并将查找到的结果存入41H单元。

答:参考程序如下:

START:    MOV    41H,#0

        MOV    R0,#20H

        MOV    R2,#20H

LOOP:    MOV    A,@R0

        JNZ        NEXT

        INC        41H

NEXT:    INC        R0

        DJNZ    R2,LOOP

        RET

9.在内部RAM的21H单元开始存有一组单字节无符号数,数据长度为20H,编写程序,要求找出最大数存入MAX单元。

答:略:

10.若SP = 60H,标号LABEL所在的地址为3456H。LCALL指令的地址为2000H,执行如下指令

2000H    LCALL  LABEL

后,堆栈指针SP和堆栈内容发生了哪些变化?PC的值等于什么?如果将指令LCALL直接换成ACALL是否可以?如果换成ACALL指令,可调用的地址范围是什么?

答:     (1)SP=SP+1=61H       (61H)=PC的低字节=03H

               SP=SP+1=62H   (62H)=PC的高字节=20H

(2)PC=3456H

        (3)可以

        (4)2KB=2048 Byte

第5章   ATC51单片机的中断系统

1.外部中断1的中断入口地址为        。定时器1的中断入口地址为        。

答:0013H;001BH。

2.若(IP) = 00010100B,则优先级最高者为        ,最低者为        。

答:外部中断1;定时器T1。

3.ATC51单片机响应中断后,产生长调用指令LCALL,执行该指令的过程包括:首先把        的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送        ,使程序执行转向        中的中断地址区。

答:PC、PC、程序存储器。

4.判断ATC51单片机对外中断请求源响应的最快响应时间为3个机器周期        。

答:对。

5.下列说法正确的是        。

A.各中断源发出的中断请求信号,都会标记在ATC51单片机的IE寄存器中

B.各中断源发出的中断请求信号,都会标记在ATC51单片机的TMOD寄存器中

C.各中断源发出的中断请求信号,都会标记在ATC51单片机的IP寄存器中

D.各中断源发出的中断请求信号,都会标记在ATC51单片机的TCON与SCON寄存器中

答:D。

6.中断查询确认后,在下列各种ATC51单片机运行情况下,能立即进行响应的是        。

A.当前正在进行高优先级中断处理

B.当前正在执行RETI指令

C.当前指令是DIV指令,且正处于取指令的机器周期

D.当前指令是MOV  A,R3

答:D。

7.在ATC51单片机的中断请求源中,需要外加电路实现中断撤销的是        。

A.电平方式的外部中断

B.脉冲方式的外部中断

C.外部串行中断

D.定时中断

答:A。

8.下列说法正确的是        。

A.同一级别的中断请求按时间的先后顺序响应

B.同一时间同一级别的多中断请求将形成阻塞,系统无法响应

C.低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级中断请求

D.同级中断不能嵌套

答:A、C、D。

9.中断服务子程序与普通子程序有哪些相同和不同之处?

答:RETI指令在返回时,同时清除中断系统中相应的优先级触发器,以允许下次中断,而RET指令则没有这个操作。除了这一点两条指令不同外,其他操作都相同。

10.ATC51单片机响应外部中断的典型时间是多少?在哪些情况下,CPU将推迟对外部中断请求的响应?

答:略。

11.编写外部中断1为跳沿触发的中断初始化程序段。

答:    SETB    IT1

        SETB    EX1

        SETB    EA

12.中断响应的条件是什么?

答:略。

13.某系统有3个外部中断源1、2、3,当某一中断源发出的中断请求使引脚变为低电平时(见图5-10),便要求CPU进行处理,它们的优先处理次序由高到低为3、2、1,中断处理程序的入口地址分别为1000H、1100H、1200H。试编写主程序及中断服务子程序(转至相应的中断处理程序的入口即可)。

答:参见电路如图5-10所示,参考程序如下:

            ORG        0000H

            LJMP        MAIN

            ORG        0013H

            LJMP        INT_EX1

            ORG        0030H

MAIN:        CLR        IT0            ;采用电平触发,低电平有效中断

            SETB        EX1        ;允许外部中断1

            SETB        EA            

WAIT:         LJMP        WAIT        ;用原地跳转代替一段用户程序

;以下为外部中断1服务子程序

INT_EX1:    JNB        P1.2,NEXT1    ;P1.2=0,不是3号中断,跳转NEXT1

              LJMP        INT_IR3  ;是3号中断,跳转到对应的中断处理程序

NEXT1:          JNB        P1.1,NEXT2    ;P1.1=0,不是2号中断,跳转NEXT2

              LJMP        INT_IR2        ;跳转到2号中断处理程序

NEXT2:          LJMP        INT_IR1        ;跳转到1号中断处理程序

            ORG        1000H

INT_IR3:    插入相应中断处理程序

            RETI                    ;中断返回

            ORG        1100H

INT_IR2:    插入相应中断处理程序

            RETI                    ;中断返回

            ORG        1200H

INT_IR1:    插入相应中断处理程序

            RETI                    ;中断返回

第6章  ATC51单片机的定时器/计数器

1.下列        项说法是正确的。

A.特殊功能寄存器SCON,与定时器/计数器的控制无关

B.特殊功能寄存器TCON,与定时器/计数器的控制无关

C.特殊功能寄存器IE,与定时器/计数器的控制无关

D.特殊功能寄存器TMOD,与定时器/计数器的控制无关

答:A.对;B.;错C.错;D.错。

2.如果采用的晶振的频率为3MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间各为多少?

答:因为机器周期

  所以定时器/计数器工作方式0下,其最大定时时间为

  同样可以求得,方式1下的最大定时时间为262.144ms;方式2下的最大定时时间为1024ms。

3.定时器/计数器用作定时器模式时,其计数脉冲由谁提供?定时时间与哪些因素有关?

答:定时器/计数器用作定时器时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关。

4.定时器/计数器用作计数器模式时,对外界计数频率有何?

答:由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。

5.采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数工作方式,如此循环不止。假定ATC51单片机的晶体振荡器的频率为6MHz,请使用方式1实现,要求编写程序。

答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。参考程序如下:

                ORG        0000H

                LJMP        MAIN

                ORG        000BH

                LJMP        IT0P

MAIN:        MOV        TMOD,#06H    ;定时器/计数器T0为计数方式2

                MOV        TL0,#156        ;计数100个脉冲的初值赋值

                MOV        TH0,#156

                SETB        GATE        ;打开计数门

                SETB        TR0        ;启动T0,开始计数

                SETB        ET0            ;允许T0中断

                SETB        EA            ;CPU开中断

                CLR        F0            ;设置下一轮定时方式的标志位

WAIT:        AJMP        WAIT

IT0P:        CLR        EA                ;CPU关中断

                JB            F0,COUNT        ;F0=1,转计数方式设置

                MOV        TMOD,#00H    ;定时器/计数器T0为定时方式0

                MOV        TH0,#0FEH        ;定时1ms初值赋值

                MOV        TL0,#0CH

                SETB        EA

                RETI

COUNT:    MOV        TMOD,#06H

                MOV        TL0,#156    

                SETB        EA

                RETI

6.定时器/计数器的工作方式2有什么特点?适用于哪些应用场合?

答:定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,如波特率的产生。

7.编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400µs,占空比为10∶1的矩形脉冲。

答:根据题意,从P1.0输出的矩形脉冲的高低电平的时间为10∶1,则高低电平的时间分别为363.63µs和36.37µs。如果系统采用6MHz晶振,Tcy=2µs,因此高低电平输出取整,则约为3µs和36µs。参考程序如下:

ORG    0000H

            LJMP    MAIN

            ORG    000BH

            LJMP    IT0P

MAIN:    MOV    TMOD,#02H    ;定时器/计数器T0为定时方式2

            MOV    TL0,#4AH        ;定时3 s初值赋值

            SETB    TR0            ;启动T0,开始计数

            SETB    ET0            ;允许T0中断

            SETB    EA            ;CPU开中断

            SETB    P1.0

WAIT:    AJMP    WAIT

IT0P:    CLR    EA

CLR        P1.0            ;关中断

            MOV    R0,#9

DLY:    DJNZ    R0,DLY        ;延时36 s

            MOV    TL0,#4AH        ;定时3 s初值赋值

            SETB    P1.0

            SETB    EA

        RETI

8.一个定时器的定时时间有限,如何用两个定时器的串行定时来实现较长时间的定时?

答:方法1,在第一个定时器的中断程序里关闭本定时器的中断程序,设置和打开另一个定时器;在另一个定时器的中断程序中关闭本定时中断,设置和打开另一个定时器。这种方式的定时时间为两个定时器定时时间的和。

方法2,一个作为定时器,在定时中断后产生一个外部计数脉冲(比如由P1.0接产生),另一个定时器工作在计数方式。这样两个定时器的定时时间为一个定时器的定时时间乘以另一个定时器的计数值。

9.当定时器T0用于方式3时,应该如何控制定时器T1的启动和关闭?

答:由T1(P3.5)口控制定时器T1的启动和关闭。

10.定时器/计数器测量某正单脉冲的宽度,采用何种方式可得到最大量程?若时钟频率为6MHz,求允许测量的最大脉冲宽度是多少?

答:采用方式1定时工作方式。最大脉冲宽度为131.072ms。

11.编写一段程序,功能要求:当P1.0引脚的电平正跳变时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写入R0、R1(高位存R1,低位存R0)。

答:将P1.1的输入脉冲接入INT0,即使用T0计数器完成对P1.1口的脉冲计数。参考程序如下:

ORG    0000H

        LJMP    MAIN

        ORG    000BH

        LJMP    IT0P

MAIN:    JNB    P1.0,MAIN

MOV    TMOD,#05H            ;定时器/计数器T0为计数方式1

        SETB    TR0            ;启动T0,开始计数

        SETB    ET0                ;允许T0中断

        SETB    EA                ;CPU开中断

WAIT:    JB        P1.2,WAIT

        CLR    EA

        CLR    TR0

        MOV    R1,TH0

        MOV    R0,TL0

        AJMP    $

IT0P:    INC        R2

        RETI

12.THx与TLx(x = 0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当前计数器计满后才能刷新?

答:THx与TLx(x=0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更改后的新值立即刷新。但在读THx、TLx值时,应该先读THx值,后读TLx,再读THx值。若两次读得THx值相同,则可确定读得的内容正确。若前后两次读得的THx值有变化,再重复上述过程。

第7章  ATC51单片机的串行口

1.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式        。

答:1。

2.在串行通信中,收发双方对波特率的设定应该是        的。

答:相等。

3.下列选项中,        是正确的。

A.串行口通信的第9数据位的功能可由用户定义

B.发送数据的第9数据位的内容是在SCON寄存器的TB8位中预先准备好的

C.串行通信帧发送时,指令把TB8位的状态送入发送SBUF中

D.串行通信接收到的第9位数据送SCON寄存器的RB8中保存

E.串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定

答:(A)对(B)对(C)错(D)对(E)对。

4.通过串行口发送或接收数据时,在程序中应使用        。

A.MOVC指令     B.MOVX指令    C.MOV指令    D.XCHD指令

答:(C)MOV指令。

5.串行口工作方式1的波特率是        。

A.固定的,为fosc/32                            B.固定的,为fosc/16

C.可变的,通过定时器/计数器T1的溢出率设定    D.固定的,为fosc/

答:(C)。

6.在异步串行通信中,接收方是如何知道发送方开始发送数据的?

答:当接收方检测到RXD引脚上的有效的负跳变时,即可知道发送方开始发送数据。

7.串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?

答:串行口有4种工作方式:方式0、方式1、方式2、方式3。

      有3种帧格式,方式2和3具有相同的帧格式。

          方式0的发送和接收都以fosc/12为固定波特率。

          方式1的波特率=2SMOD/32×定时器T1的溢出率。

          方式2的波特率=2SMOD/×fosc。

          方式3的波特率=2SMOD/32×定时器T1的溢出率。

8.假定串行口串行发送的字符格式为1个起始位、8个数据位、1个奇校验位、1个停止位,请画出传送字符“B”(42H)的帧格式。

答:传送的字符“B”的帧格式如图所示(先低位后高位)。

             起始位      0    1   0    0    0    0    1   0   校验位    停止位

              

9.为什么定时器/计数器T1用作串行口波特率发生器时,常采用方式2?若已知时钟频率、通信波特率,如何计算其初值?

答:(1)因为定时器/计数器在方式2下,初值可以自动重装,这样在进行串口波特率发生器设置时,就避免了重装参数的操作,且减少了重装参数的误差。

      (2)已知时钟频率、通信波特率,根据公式(7-3),即可计算出初值。

10.若晶体振荡器为11.0592MHz,串行口工作于方式1,波特率为4 800bit/s,写出用T1作为波特率发生器的方式控制字和计数初值。

答:经计算,初值为FAH。

控制字:    ANL     TMOD,#0F0H

            ORL    MOD,#20H

            MOV    TH1,#0FAH

            MOV    TL1,#0FAH

        MOV    SCON,#40H

11.简述利用串行口进行多机通信的原理。

答:以方式1为例。

      发送过程:数据位由TXD端输出,发送1帧信息为10位,当CPU执行1条数据写发送缓冲器SBUF的指令,就启动发送。发送开始时,内部发送控制信号SEND变为有效,将起始位向TXD输出,此后,每经过1个TX时钟周期,便产生1个移位脉冲,并由TXD输出1个数据位。8位数据位全部输出完毕后,置1中断标志位TI,然后SEND信号失效。

接收过程:当检测到起始位的负跳变时,则开始接收。接收时,定时控制信号有2种。其中一种是位检测器采样脉冲,它的频率是RX时钟的16倍。也就是在1位数据期间,有16个采样脉冲,以波特率的16倍速率采样RXD引脚状态,当采样到RXD端从1到0的跳变时就启动检测器,接收的值是3次连续采样,取其中2次相同的值,以确认是否是真正的起始位的开始,这样能较好地消除干扰引起的影响,以保证可靠无误地开始接收数据。

12.使用ATC51的串行口按工作方式1进行串行数据通信,假定波特率为2 400bit/s,以中断方式传送数据,请编写全双工通信程序。

答:请参考教材的P115-P117程序,并作适当改动。

13.某ATC51单片机串行口,传送数据的帧格式由1个起始位(0)、7个数据位、1个偶校验和1个停止位(1)组成。当该串行口每分钟传送1 800个字符时,试计算出它的波特率。

答:串口每秒钟传送的字符为1800/60=30个字符/秒,所以波特率为30个字符/秒×10位1个字符=300b/s。

14.为什么ATC51单片机串行口的方式0帧格式没有起始位(0)和停止位(1)?

答:串行口的方式0为同步移位寄存器输入/输出方式,常用于外接移位寄存器,以扩展并行I/O口,一般不用于两个C51之间的串行通信。该方式以fosc/12的固定波特率从低位到高位发送或接收数据。

15.直接以TTL电平串行传输数据的方式有什么缺点?

答:优点是连线简单,缺点是抗干扰性能差,传输距离短。

第8章  ATC51单片机扩展存储器的接口设计

1.单片机存储器的主要功能是存储        和        。

答:程序,数据。

2.假设外部数据存储器2000H单元的内容为80H,执行下列指令后累加器A中的内容为        。

MOV     P2,#20H

MOV     R0,#00H 

MOVX    A,@R0

答:80H。

3.在存储器扩展中,无论是线选法还是译码法最终都是为扩展芯片的片选端提供        控制信号。

答:片选。

4.起止范围为0000H~3FFFH的存储器的容量是         KB。

答:16KB

5.在ATC51单片机中,PC和DPTR都用于提供地址,但PC是为访问

        存储器提供地址,而DPTR是为访问        存储器提供地址。

答:程序,数据。

6.11条地址线可选        个存储单元,16KB存储单元需要        条地址线。

答:2KB,14。

7.4KB RAM存储器的首地址若为0000H,则末地址为         H。

答:0FFFH。

8.区分ATC51单片机片外程序存储器和片外数据存储器的最可靠方法是        。

A.看其位于地址范围的低端还是高端

B.看其离ATC51单片机芯片的远近

C.看其芯片的型号是ROM还是RAM

D.看其是与信号连接还是与信号连接

答:D。

9.试编写一个程序(如将05H和06H拼为56H),设原始数据放在片外数据区2001H单元和2002H单元中,按顺序拼装后的单字节数放入2002H。

答:本题主要考察对外部存储器的读、写操作的编程,只要正确使用MOVX指令就可以了。编程思路:首先读取2001H的值,保存在寄存器A中,将寄存器A的高4位和低4位互换,再屏蔽掉低4位然后将寄存器A的值保存到30H中,然后再读取2002H的值,保存在寄存器A中,屏蔽掉高4位,然后将寄存器A的值与30H进行“或运算”,将运算后的结果保存在2002H中。

            ORG        0000H

MAIN:        MOV        DPTR,#2001H        ;设置数据指针的初值

            MOVX        A,@DPTR            ;读取2001H的值

            SWAP        A                    

            ANL        A,#0F0H            ;屏蔽掉低4位

            MOV        30H,A                ;保存A

            INC            DPTR            ;指针指向下一个片外RAM单元

            MOVX        A,@DPTR        ;读取2002H的值

            ANL        A,#0FH            ;屏蔽掉高4位

            ORL        A,30H            ;进行拼装

            MOVX        @DPTR,A        ;保存到2002H片外RAM单元

            END

10.编写程序,将外部数据存储器中的4000H~40FFH单元全部清“0”。

答:本题主要考察对外部数据块的写操作;编程时只要注意循环次数和MOVX指令的使用就可以了。

            ORG        0000H

MAIN:        MOV    A,#0                    ;0给A

            MOV    0,#0FFH                ;设置循环次数

            MOV    DPTR,#4000H            ;设置数据指针的初值

LOOP:        MOVX    @DPTR,A                ;当前单元清“0”

            INC        DPTR                ;指向下一个单元

            DJNZ    R0,LOOP                ;是否结束    

            END

11.在ATC51单片机系统中,外接程序存储器和数据存储器共16位地址线和8位数据线,为何不会发生冲突?

答:因为控制信号线的不同。 外扩的RAM芯片既能读出又能写入,所以通常都有读、写控制引脚,记为和,它们分别与C51的和引脚相连。

  外扩的EPROM在正常使用中只能读出,不能写入,故EPROM芯片没有写入控制引脚,只有读出引脚,记为,该引脚与C51单片机的相连。

12.请写出图8-14中4片程序存储器27128各自所占的地址空间。

答:图中采用了译码法。4片地址分别为0000H~3FFFH、4000H~7FFFH、8000H~BFFFH、C000H~FFFFH。

13.现有ATC51单片机、74LS373锁存器、1片27 EPROM和两片62 RAM,请用它们组成一个单片机应用系统,要求如下:

(1)画出硬件电路连线图,并标注主要引脚;

(2)指出该应用系统程序存储器空间和数据存储器空间各自的地址范围。

答:略。

14.图8-22(a)所示为ATC51单片机中存储器的地址空间分布图。题图8-22(b)为存储器的地址译码电路,为使地址译码电路按题图8-22(a)所示的要求进行正确寻址,要求画出:

(1)A组跨接端子的内部正确连线图。

(2)B组跨接端子的内部正确连线图。

答:

(1)A组跨接端子的内部正确连线图如下左图所示。

(2)B组跨接端子的内部正确连线图如下右图所示。

         

第9章   ATC51单片机扩展I/O接口的设计

1.判断下列说法是否正确,为什么?

(1)由于81C55不具有地址锁存功能,因此在与ATC51芯片的接口电路中必须加地址锁存器。

(2)在81C55芯片中,决定端口和RAM单元编址的信号是AD7~AD0和。

(3)82C55具有三态缓冲器,因此可以直接挂在系统的数据总线上。

(4)82C55的PB口可以设置成方式2。

答:

(1)错,81C55具有地址锁存功能。

(2)错,在81C55芯片中,引脚IO/M*、A2、A1、A0决定端口地址和RAM单元编址。

(3)错,82C55不具有三态缓冲器。

(4)错,82C55的PB口只可以设置成方式0和方式1。

2.I/O接口和I/O端口有什么区别?I/O接口的功能是什么?

答: I/O端口简称I/O口,常指I/O接口电路中具有端口地址的寄存器或缓冲器。I/O接口是指单片机与外设间的I/O接口芯片。

   I/O接口的功能:(1)实现和不同外设的速度匹配;(2)输出数据缓存;(3)输入数据三态缓冲。

3.I/O数据传送由哪几种传送方式?分别在哪些场合下使用?

答:(1)同步传送方式。同步传送又称无条件传送。当外设速度可与单片机速度相比拟时,常常采用这种方式。最典型的同步传送就是单片机和外部数据存储器之间的数据传送。

    (2)查询传送方式。查询传送又称有条件传送,也称异步传送。单片机通过查询得知外设准备好后,再进行数据传送。异步传送的优点是通用性好,硬件连线和查询程序十分简单,但是效率不高。为了提高单片机的工作效率,通常采用中断方式。

(3)中断传送方式。中断传送方式是利用ATC51本身的中断功能和I/O接口的中断功能来实现I/O数据的传送。单片机只有在外设准备好后,发出数据传送请求,才中断主程序,进入与外设进行数据传送的中断服务程序,进行数据的传送。中断服务完成后又返回主程序继续执行。因此,采用中断方式可以大大提高单片机的工作效率。

4.常用的I/O端口编址有哪两种方式?它们各有什么特点?ATC51单片机的I/O端口编址采用的是哪种方式?

答:有两种。(1)编址方式。就是I/O地址空间和存储器地址空间分开编址。其优点是,I/O地址空间和存储器地址空间相互,界限分明。但是,却需要设置一套专门的    读/写I/O的指令和控制信号。(2)统一编址方式。它是把I/O端口的寄存器与数据存储器单元同等对待,统一编址。统一编址的优点是不需要专门的I/O指令,直接使用访问数据存储器的指令进行I/O操作,简单、方便且功能强大。

C51单片机使用的是I/O和外部数据存储器RAM统一编址的方式。

5.82C55的“方式控制字”和“PC口按位置位/复位控制字”都可以写入82C55的同一控制寄存器,82C55是如何来区分这两个控制字的?

答:82C55通过写入控制字寄存器的控制字最高位来判断,最高位为1时,为方式控制字;最高位为0时,为PC口按位置位/复位控制字。

6.编写程序,采用82C55的PC口按位置位/复位控制字,将PC7置“0”,PC4置“1”(已知82C55各端口的地址为7FFCH~7FFFH)。

答:本题主要考察对82C55的PC口的操作。其方式控制字的最高位为0时,低4位对PC口进行置位。由题目可知方式控制寄存器的地址为7FFFH。

                ORG    0100H

    MAIN:    MOV    DPTR,#7FFFH        ;控制字寄存器地址7FFFH送DPTR

                MOV    A,#0EH                ;将PC7置0

                MOVX    @DPTR,A

                MOV    A,#09H                ;将PC4置1

                MOVX    @DPTR,A

                END

7.由图9-6来说明82C55的PA口在方式1的应答联络输入方式下的工作过程。

答:当外设输入一个数据并送到PA7~PA0上时,输入设备自动在选通输入线向82C55发送一个低电平选通信号,则把PA7~PA0上输入的数据存入PA口的输入数据缓冲/锁存器;然后使输入缓冲器输出线IBFA变成高电平,以通知输入设备,82C55的PA口已收到它送来的输入数据。82C55检测到联络线由低电平变成了高电平、IBFA为1状态和中断允许触发器INTEA为1时,使输出线INTRA(PC3)变成高电平,向C51发出中断请求。INTEA的状态可由用户通过对PC4的置位/复位来控制。C51响应中断后,可以通过中断服务程序从PA口的输入数据缓冲/锁存器读取外设发来的输入数据。当输入数据被CPU读走后,82C55撤销INTRA上的中断请求,并使IBFA变为低电平,以通知输入外设可以送下一个输入数据。

8.81C55的端口都有哪些?哪些引脚决定端口的地址?引脚TIMERIN和的作用是什么?

答:81C55的端口有以下几种:命令/状态寄存器、PA口、PB口、PC口、计数器的高8位寄存器与低8位寄存器以及RAM单元。引脚IO/,A2、A1、A0决定端口地址。TIMERIN是计数脉冲输入引脚,输入脉冲的上跳沿用于对81C55片内的14位计数器减1。为计数器输出引脚。当14位计数器减为0时,就在该引线上输出脉冲或方波,输出的信号波形与所选的计数器工作方式有关。

9.现有一片ATC51单片机,扩展了一片82C55,若把82C55的PB口用作输入,PB口的每一位接一个开关,PA口用作输出,每一位接一个发光二极管,请画出电路原理图,并编写出PB口某一位开关接高电平时,PA口相应位发光二极管被点亮的程序。

答:电路图可以参考图9-10,PA口每一位接二极管的正极,二极管的负极接地。PB口每1位接一开关和上拉电阻,开关另一端直接接地。这样只需要将读到的PB口的值送给PA口就可以满足题目要求了。

            ORG        0100H

MIAN:    MOV    A,#10000010B      ;设置PA口方式0输出,PB口方式0输入

            MOV    DPTR,#0FF7FH        ;控制口地址送DPTR

            MOVX    @DPTR,A            ;送方式控制字

            MOV    DPTR,#0FF7DH        ;PB口地址送DPTR

            MOVX    A,@DPTR            ;读入开关信息

            MOV    DPTR,#0FF7CH        ;PA口地址送DPTR

            MOVX    @DPTR,A        ;PA口的内容送PB口点亮相应的二极管

        END

10.假设81C55的TIMERIN引脚输入的频率为4MHz,问81C55的最大定时时间是多少?

答:81C55计数器的初值范围是3FFFH~2H。当频率为4MHz,初值为3FFFH时,最大定时时间为0.004096s。

11.假设81C55的TIMERIN引脚输入的脉冲频率为1MHz,请编写在81C55的引脚上输出周期为10ms的方波的程序(假设I/O口地址为7F00H~7F05H)。

答:将1MHz的脉冲改变为10ms的方波,实际上就是分频。分频前后频率之比为100∶1,这样只要将定时器初值设置为H就可以了(假设I/O口地址为7F00H~7F05H)。

START:    MOV        DPTR,#7F04H    ;指针指向计数器低8位

        MOV        A,#H            ;送初值给A

        MOVX        @DPTR,A        ;初值送给计数器低8位

        INC            DPTR            ;指向计数器高8位

        MOV        A,#40H            ;计数器方波输出

        MOVX        @DPTR,A            

        MOV        DPTR,#7F00H    ;指向命令/状态口

        MOV        A,#0C2H        ;设定控制字

        MOVX        @DPTR,A        ;启动计数器

        END

第10章   ATC51单片机与输入外设和输出外设的接口设计

1.下列        项说法正确。

A.HD7279是一个用于键盘和LED显示器的专用接口芯片

B.在单片机与微型打印机的接口中,打印机的BUSY信号可作为查询信号或中断请求信号使用

C.为给扫描法工作的8  8键盘提供接口电路,在接口电路中只需要提供两个输入口和一个输出口

D.LED显示器的字型码是固定不变的

答:A.对;B.对;C.错;D.错。

2.为什么要消除按键的机械抖动?软件消除按键机械抖动的原理是什么?

答:在按键的闭合和断开过程中,由于开关的机械特性,导致了按键抖动的产生。如果不消除按键的机械抖动,按键的状态读取将有可能出现错误。消除按键抖动一般是采用软件或硬件去抖。软件去抖的原理是,在第一次检测到有键按下时,该键所对应的行线为低电平,执行一端延时10ms的子程序后,确认该行线电平是否仍然为低电平,如果仍为低电平,则确认该行确实有键按下。

3.LED的静态显示方式与动态显示方式有何区别?各有什么优缺点?

答:静态显示时,数据是分开送到每一位LED上的。而动态显示时,则数据是同时送到每一个LED上,再根据位选线来确定是哪一位LED被显示。静态显示亮度很高,但口线占用较多。动态显示口线占用较少,适合用在显示位数较多的场合。

4.写出表10-1中仅显示小数点“.”的段码。

答:80H(共阴极);7FH(共阳极)。

5.说明矩阵式键盘按键按下的识别原理。

答:按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到+5V上,无按键按下时,行线处于高电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平亦为高。将行、列线信号配合起来并做适当的处理,才能确定闭合键的位置。

6.对于图10-10所示的键盘,采用线反转法原理编写出识别某一按键被按下并得到其键号的程序。

答:先对P1口高4位送低电平,读取P1口低4位的值;再对P1口低4位送低电平,读取P1口高4位的值,将两次读到的值组合在一起就得到了按键的特征码,再根据特征码查找键值。参考程序如下:

    KEYIN:        MOV    P1,#0FH                ;反转读键

                MOV    A,P1

                ANL    A,#0FH

                MOV    B,A

                MOV    P1,#0F0H

                MOV    A,P1

                ANL    A,#0F0H

                ORL    A,B

                CJNE    A,#0FFH,KEYIN1

                RET                            ;未按键

    KEYIN1:    MOV    B,A                        ;暂存特征码

                MOV    DPTR,#KEYCOD        ;指向特征码表

                MOV    R3,#0FFH                ;顺序码初始化

    KEYIN2:    INC        R3

                MOV    A,R3

                MOVC    A,@A+DPTR

                CJNE    A,B,KEYIN3

                MOV    A,R3                    ;找到,取顺序码

                RET

    KEYIN3:    CJNE    A,#0FFH,KEYIN2        ;未完,再查

                RET                        ;已查完,未找到,以未按键处理

    KEYCOD:    DB        0E7H,0EBH,0EDH,0EEH    ;特征码表

                DB        0D7H,0DBH,0DDH,0DEH

                DB        0B7H,0BBH,0BDH,0BEH

                DB        77H,7BH,7DH,7EH

7.键盘有哪3种工作方式,它们各自的工作原理及特点是什么?

答:(1)编程扫描方式。当单片机空闲时,才调用键盘扫描子程序,反复扫描键盘,等待用户从键盘上输入命令或数据,响应键盘的输入请求。

    (2)定时扫描方式。单片机每隔一定的时间对键盘扫描一次。

     (3)中断扫描方式。只有在键盘有键按下时,才执行键盘扫描程序并执行该按键功能程序,如果无键按下,单片机将不理睬键盘。

8.根据图10-11所示的电路,编写在6个LED显示器上轮流显示“1,2,3,4,5,6”的显示程序。

答:参见教材P170的显示程序。

9.简述TPP-40A/16A微型打印机的Centronics接口的主要信号线及功能,与ATC51单片机相连接时,如何连接几条控制线?

答:DB0~DB7——数据线,单向传输,由单片机输入给打印机。

STB(STROBE)——数据选通信号。在该信号的上升沿,数据线上的8位并行数据被打印机读入机内锁存。

BUSY——打印机忙状态信号。当该信号有效(高电平)时,表示打印机正忙于处理数据。此时,单片机不得使STB信号有效,向打印机送入新的数据。

ACK——打印机的应答信号。低电平有效,表明打印机已取走数据线上的数据。

ERR——出错信号。当送入打印机的命令格式出错时,打印机立即打印1行出错信息,提示出错。在打印出错信息之前。该信号线出现一个负脉冲,脉冲宽度为30μs。

用一条地址线来控制写选通信号STB和读取BUSY引脚状态。

10.如果把图10-25所示的打印机的BUSY线断开,然后与ATC51单片机的线相接,请简述电路的工作原理并编写将以20H为起始地址的连续20个内存单元中的内容输出的打印程序。

答:本程序采用外部中断来完成数据打印,先打印一个数据,当BUSY线从高电平变成低电平时,再打印下一个数据。参考程序如下:

            ORG        0000H

            LJMP        MAIN

            ORG        0003H

            LJMP        IN

            ORG        0030H

MAIN:    SETB        EX0            ;允许外部中断

            SETB        IT0

            SETB        EA

            MOV        R0,#7FH        ;控制口地址

            MOV        A,#81H            ;控制字

            MOVX        @R0,A

            MOV        R1,#20H        ;数据区首地址

            MOV        R2,#19            ;计数器

            MOV        A,@R1            ;打印内容

            MOV        R0,#7CH        ;A口地址

            MOVX        @R0,A

            MOV        R0,#7FH

            MOV        A,#0EH

            MOVX        @R0,A            ;PC7=0

            MOV        A,#0FH

            MOVX        @R0,A            ;PC7=1

            SJMP        $

IN:        DJNZ        R2,EX            ;20个数据都结束了吗?

INC        R1                ;指向下一个数据

MOV        A,@R1

            MOV        R0,#7CH

            MOVX        @R0,A

            MOV        R0,#7FH

            MOV        A,#0EH

            MOVX        @R0,A

            MOV        A,#0FH

            MOVX        @R0,A

EX:            RETI

第11章   ATC51单片机与D/A、A/D转换器的接口

1.对于电流输出的D/A转换器,为了得到电压的转换结果,应使用        。

答:由运算放大器构成的I/V转换电路。

2.使用双缓冲同步方式的D/A转换器,可实现多路模拟信号的        输出。

答:同步。

3.判断下列说法是否正确。

(1)“转换速度”这一指标仅适用于A/D转换器,D/A转换器不用考虑“转换速度”问题。

(2)ADC0809可以利用“转换结束”信号EOC向ATC51单片机发出中断请求。

(3)输出模拟量的最小变化量称为A/D转换器的分辨率。

(4)对于周期性的干扰电压,可使用双积分型A/D转换器,并选择合适的积分元件,可以将该周期性的干扰电压带来的转换误差消除。

答:(1)错  (2)对 (3)错  (4)对。

4.D/A转换器的主要性能指标都有哪些?设某DAC为二进制12位,满量程输出电压为5V,试问它的分辨率是多少?

答:D/A转换器的主要技术指标如下:

(1)分辨率。指输入的单位数字量变化引起的模拟量输出的变化,是对输入量变化敏感程度的描述。

(2)建立时间。是描述D/A转换速度的一个参数,用于表明转换速度。其值为从输入数字量到输出达到终位误差±(1/2)LSB(最低有效位)时所需的时间。

(3)转换精度。理想情况下,精度与分辨率基本一致,位数越多精度越高。严格讲,精度与分辨率并不完全一致。只要位数相同,分辨率则相同,但相同位数的不同转换器精度会有所不同。

当DAC为二进制12位,满量程输出电压为5V时,分辨率为1.22mV。

5.A/D转换器两个最重要的指标是什么?

答:A/D转换器的两个最重要指标:

    (1)转换时间和转换速率:转换时间为A/D完成一次转换所需要的时间。转换时间的倒数为转换速率。

(2)分辨率:表示输出数字量变化一个相邻数码所需输入模拟电压的变化量。习惯上用输出二进制位数或BCD码位数表示。

6.分析A/D转换器产生量化误差的原因,一个8位的A/D转换器,当输入电压为0~5V时,其最大的量化误差是多少?

答:量化误差是由于有限位数字且对模拟量进行量化而引起的;0.195%。

7.目前应用较广泛的A/D转换器主要有哪几种类型?它们各有什么特点?

答:目前应用较广泛的主要有以下几种类型:逐次逼近型转换器、双积分型转换器、∑-∆式A/D转换器。

逐次逼近型A/D转换器在精度、速度和价格上都适中,是最常用的A/D转换器件。

双积分型A/D转换器具有精度高、抗干扰性好、价格低廉等优点,但转换速度慢,近年来在单片机应用领域中也得到广泛应用。

∑-∆式A/D转换器具有积分型与逐次逼近型ADC的双重优点,它对工业现场的串模干扰具有较强的抑制能力,不亚于双积分型ADC,它比双积分型ADC有较高的转换速度。与逐次逼近型ADC相比,有较高的信噪比,分辨率高,线性度好,不需要采样保持电路。

8.在DAC和ADC的主要技术指标中,“量化误差”、“分辨率”和“精度”有何区别?

答:对DAC来说,分辨率反映了输出模拟电压的最小变化量。而对于ADC来说,分辨率表示输出数字量变化一个相邻数码所需输入模拟电压的变化量。

量化误差是由ADC的有限分辨率而引起的误差,但量化误差只适用于ADC,不适用于DAC。

精度与分辨率基本一致,位数越多精度越高。严格讲,精度与分辨率并不完全一致。只要位数相同,分辨率则相同。但相同位数的不同转换器,精度会有所不同。

9.在一个由ATC51单片机与一片ADC0809组成的数据采集系统中,ADC0809的8个输入通道的地址为7FF8H~7FFFH,试画出有关接口的电路图,并编写每隔1分钟轮流采集一次8个通道数据的程序,共采样50次,其采样值存入片外RAM中以2000H单元开始的存储区中。

答:接口电路可参见图11-17。参考程序如下:

MAIN:        MOV    R0,#20H

MOV    R1,#00H

MOV    R2,#00H

MOV    R3,#50

MOV    R8,#08H

LOOP:        MOV    DPTR,#7FF8H

LOOP1:     MOVX    @DPTR,A

MOV    R6,#0AH

DELAY:        NOP

NOP 

NOP

DJNZ     R6,DELAY

MOVX    A,@DPTR

INC        DPTR

MOV    R2,DPL

MOV    DPH,R0

MOV    DPL,R1

MOVX    @DPTR,A

INC        DPTR

MOV    R0,DPH

MOV    R1,DPL

MOV    DPH,#7FH

MOV    DPL,R2

DJNZ    R7,LOOP1

LCALL   DELAY1M      ;延时1分钟

DJNZ    R3,LOOP

…………………

第12章   单片机的串行扩展技术

1.I2C总线的优点是什么?

答:I2C总线的优点是各外围器件的连接仅需2条I/O口线(SDA线和SCL线),极大地简化了器件间的连接,进而提高了可靠性。I2C串行接口器件体积小,因而占用电路板的空间小,仅为并行接口器件的10%,明显减少了电路板空间和成本。在标准I2C普通模式下,数据的传输速率为100kbit/s,高速模式下可达400kbit/s。除上述优点外,还有工作电压宽、抗干扰能力强、功耗低、数据不易丢失等特点。

2.I2C总线的起始信号和终止信号是如何定义的?

答:(1)起始信号S的规定如下:

在SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号,只有在起始信号以后,其他命令才有效。

(2)终止信号P的规定如下:

在SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。随着终止信号的出现,所有外部操作都结束。

起始和终止信号都是由主器件发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号出现后,总线就处于空闲状态。

3.I2C总线的数据传输方向如何控制?

答:在单片机应用系统的I2C串行总线扩展系统中,通常是主器件由单片机来担当,其他外围接口器件为从器件的单主器件情况。I2C串行总线上的数据传输方向由主器件控制。I2C总线的数据传输方向是由单片机发给各从器件的寻址字节中的数据方向位(R/W*)来决定的。寻址字节的格式如下所示:

寻址

字节DA3DA2DA1DA0A2A1A0
器件地址引脚地址方向位
最低位的数据方向位(R/W*)规定了总线上的单片机(主器件)与外围器件(从器件)的数据传送方向。R/W*=1,表示接收(读)。R/W*=0,表示发送(写)。

4.单片机如何对I2C总线中的器件进行寻址?

答:I2C总线所有扩展器件都有规范的器件地址。器件地址由7位组成,第8位数据的传送方向位(R/W*)的作用已在上题介绍。这8位共同构成了I2C总线器件的寻址字节。寻址字节的格式如上图所示。

器件地址(DA3、DA2、DA1、DA0)是I2C总线外围器件固有的地址编码,器件出厂时就已经给定。

引脚地址(A2、A1、A0)是由I2C总线外围器件所指定的地址端口,A2、A1、A0在电路中接高电平或接地,形成地址编码。

5.I2C总线在数据传送时,应答是如何进行的?

答:利用I2C总线进行数据传送时,传送的字节数(数据帧)没有,但是每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随1位应答位(即一帧共有9位)。

在接收器件收到一个完整的数据字节后,有可能需要完成一些其他工作(如从器件正在进行实时性的处理工作而无法接收总线上的数据),不需要立刻接收下一字节,这时接收器件可以将SCL线拉成低电平,从而使主器件处于等待状态。直到接收器件准备好接收下一字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。

如果主器件对从器件进行了应答,但在数据传送一段时间后无法继续接收更多的数据,从器件可以通过对无法接收的第1个数据字节的“非应答”通知主器件,主器件则应发出终止信号以结束数据的继续传送。

当主器件接收数据时,它收到从器件发出的最后一个数据字节后,必须向主器件发出一个结束传送的信号。这个信号是由对从器件的“非应答”来实现的。然后,从器件释放SDA线,以允许主器件产生终止信号。

第13章   ATC51单片机应用系统的设计与调试

1.下列        项说法是正确的。

A.ATC51单片机P0~P3口的驱动能力是相同的

B.ATC51单片机P0~P3口在口线输出为高电平的驱动能力和输出为低电平的驱动能力是相同的

C.ATC51单片机扩展的外围芯片较多时,需加总线驱动器,P2口应加单向驱动器,P0口应加双向驱动器

D.ATC51单片机最小系统可对温度传感器来的模拟信号进行温度测量

答:A.错;B.错;C.对;D.错。

2.为什么单片机应用系统的开发与调试离不开仿真开发系统?

答:当一个单片机应用系统完成了用户样机的硬件和软件设计开发后,在用户样机的程序存储器中放入编写好的应用程序,系统即可运行。但程序运行一次性成功几乎是不可能的,多少会存在一些软件、硬件上的错误,这就需要借助单片机的仿真开发工具进行调试,发现错误并加以改正。ATC51单片机只是一个芯片,既没有键盘,又没有CRT、LED显示器,也无法运行系统开发软件(如编辑、汇编、调试程序等),因此,必须借助仿真开发工具(也称为仿真开发系统)所提供的开发手段来进行。

3.仿真开发系统由哪几部分组成?

答:常用通用机仿真开发系统由PC机外加在线仿真器的仿真开发系统组成,在线仿真器必须与PC的并行口、串行口或USB口相连,才能完成开发任务。

还有另一种结构的仿真开发系统:型仿真器。该类仿真器采用模块化结构,配有不同外设,如外存板、打印机、键盘/显示板等,用户可根据需要选用。在没有通用计算机支持的场合,利用键盘/显示板也可在工业现场完成仿真调试工作。

4.利用仿真开发系统对用户样机软件调试,需经哪几个步骤?各个步骤的作用是什么?

答:用户样机的软件调试,可分为以下4个步骤。

(1)建立用户源程序。用户使用开发系统的键盘、CRT显示器及开发系统的编辑软件,按照汇编语言源程序要求的格式、语法规定,把源程序输入到开发系统中,并保存在磁盘上。

(2)在开发系统机上,利用汇编程序对第(1)步输入的用户源程序进行汇编,直至语法错误全部纠正为止。如无语法错误,则进入下一个步骤。

(3)动态在线调试。这一步对用户的源程序进行调试。上述的步骤(1)、步骤(2)是一个纯粹的软件运行过程,而在这一步,必须要有在线仿真器配合,才能对用户源程序进行调试。用户程序中分为与用户样机硬件无关的程序以及与其用户样机硬件紧密关联的程序。

对于与用户样机硬件无关的程序,如计算程序,虽然已经没有语法错误,但可能存在逻辑错误,使计算结果不正确,此时必须借助于在线仿真器的动态在线调试手段,如单步运行、设置断点等,发现逻辑错误,然后返回到步骤(1)修改,直至逻辑错误纠正为止。

对于与用户样机硬件紧密相关的程序段(如接口驱动程序),一定要先把在线仿真器的仿真插头插入用户样机的仿真插座中,进行在线仿真调试,仿真开发系统提供单步、设置断点等调试手段,来对用户样机进行调试。

有关部分程序段运行有可能不正常,可能是软件逻辑上有问题,也可能是硬件有故障,必须先通过在线仿真调试程序提供的调试手段,把硬件故障排除以后,再与硬件配合,对用户程序进行动态在线调试。对于软件的逻辑错误,则返回到第(1)步进行修改,直至逻辑错误消除为止。在调试这类程序时,硬件调试与软件调试是不能完全分开的。许多硬件错误是通过软件的调试而发现和纠正的。

(4)将调试完毕的用户程序通过编程写入器(也称烧写器),固化写入到程序存储器中。

5.用软件仿真开发工具能否对用户样机中硬件部分进行调试与实时在线仿真?

答:尽管软件仿真开发工具具有开发效率高,不需要附加的硬件开发装置成本。但是软件模拟器是使用软件来模拟硬件,且不能完全准确地模拟用户样机硬件电路的实时性,因此不能进行用户样机硬件部分的诊断与实时在线仿真。下载本文

显示全文
专题