搜档网
当前位置:搜档网 › 单片机课后习题答案

单片机课后习题答案

单片机课后习题答案
单片机课后习题答案

第一章

1. 给出下列有符号数的原码、反码和补码(假设计算机字长为8位)。

+45 -89 -6 +112

答:【+45】原=00101101,【+45】反=00101101,【+45】补=00101101

【-89】原=11011001,【-89】反=10100110,【-89】补=10100111

【-6】原=10000110,【-6】反=11111001,【-6】补=11111010

【+112】原=01110000,【+45】反=01110000,【+45】补=01110000

2. 指明下列字符在计算机内部的表示形式。

AsENdfJFmdsv120

答:41H 73H 45H 4EH 64H 66H 4AH 46H 6DH 64H 73H 76H 31H 32H 30H

3. 什么是单片机?

答:单片机是把微型计算机中的微处理器、存储器、I/O接口、定时器/计数器、串行接口、中断系统等电路集成到一个集成电路芯片上形成的微型计算机。因而被称为单片微型计算机,简称为单片机。

4. 单片机的主要特点是什么?

答:主要特点如下:

1) 在存储器结构上,单片机的存储器采用哈佛(Harvard)结构

2) 在芯片引脚上,大部分采用分时复用技术

3) 在内部资源访问上,采用特殊功能寄存器(SFR)的形式

4) 在指令系统上,采用面向控制的指令系统

5) 内部一般都集成一个全双工的串行接口

6) 单片机有很强的外部扩展能力

5. 指明单片机的主要应用领域。

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。

2

答:单机应用:1) 工业自动化控制;2) 智能仪器仪表;3) 计算机外部设备和智能接口;4) 家用电器多机应用:功能弥散系统、并行多机处理系统和局部网络系统。

第二章

1. MCS-51单片机由哪几个部分组成?

答:MCS-51单片机主要由以下部分组成的:时钟电路、中央处理器(CPU)、存储器系统(RAM和ROM)、定时/计数器、并行接口、串行接口、中断系统及一些特殊功能寄存器(SFR)。

2. MCS-51的标志寄存器有多少位,各位的含义是什么?

答:MCS-51的标志寄存器PSW有8位;

D 7

D

6

D

5

D

4

D

3

D

2

D

1

D

C

A

C

F

R

S1

R

S0

O

V

- P

含义如下:

C(PSW.7):进位或借位标志位。

AC(PSW.6):辅助进位或借位可标志位。

F0(PSW.5):用户标志位。是系统预留给用户自己定义的标志位。

RS1、RS0(PSW.4、PSW.3):寄存器组选择位。可用软件置位或清零,用于从四组工作寄存器中选定当前的工作寄存器组。

OV(PSW.2):溢出标志位。在加法或减法运算时,如运算的结果超出8位二进制数的范围,则OV置1,标志溢出,否则OV清零。

P(PSW.0):奇偶标志位。用于记录指令执行后累加器A中1的个数的奇偶性。若累加器A中1的个数为奇数,则P置位,若累加器A中1的个数为偶数,则P清零。

其中PSW.1未定义,可供用户使用。

3. 在8051的存储器结构中,内部数据存储器可分为几个区域?各有什么特点?

答:片内数据存储器按功能可以分成以下几个部分:工作寄存器组区、位寻址区、一般RAM区和特殊功能寄存器区,其中还包含堆栈区。工作寄存器组区,00H~1FH单元,可用R0~R7等8个寄存器访问;位寻址区,20H~2FH单元,可按位方式访问;一般RAM区,30H~7FH单元;堆栈区,可从08到7F 单元;特殊功能寄存器区位于80H~FFH单元。

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。 3

4. 什么是堆栈?说明MCS-51单片机的堆栈处理过程。

答:堆栈是按先入后出、后入先出的原则进行管理的一段存储区域。CS-51单片机的堆栈是向上生

长型的,存入数据是从地址低端向高端延伸,取出数据是从地址高端向低端延伸。入栈和出栈数据是以字节为单位的。入栈时,SP指针的内容先自动加1,然后再把数据存入到SP指针指向的单元;出栈时,先把SP指针指向单元的数据取出,然后再把SP指针的内容自动减1。

5. MCS-51单片机有多少根I/O线?它们和单片机的外部总线有什么关系?

答:MCS-51单片机有32根I/O线,由P0口经地址锁存器提供低8位(A7~A0),P2口提供高8位(A15~A8)而形成。数据总线宽度为8位,由P0口直接提供。控制总线由第二功能状态下的P3口和4根独立的控制线RST、EA、ALE和PSEN组成。

6. 什么是机器周期? MCS-51单片机的一个机器周期包括多少个时钟周期?

答:机器周期:机器周期是单片机的基本操作周期,每个机器周期包含S1、S2、 、S66个状态,每个状态包含两拍P1和P2,每一拍为一个时钟周期(振荡周期)。因此,一个机器周期包含12个时钟周期。

7.如果时钟周期的频率为12MHz,那么ALE信号的频率为多少?

答:2MHZ

第三章

1.在MCS-51单片机中,寻址方式有几种?其中对片内RAM可以用哪几种寻址方式?对片外RAM可以用哪几种寻址方式?

答:寻址方式可分为数的寻址和指令寻址,数的寻址有:常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址。片内RAM寻址有:寄存器寻址、直接寻址方式和寄存器间接寻址方式。片外RAM寻址有:寄存器间接寻址方式。

2.在对片外RAM单元寻址中,用Ri间接寻址与用DPTR间接寻址有什么区别?

答:片外数据存储器寻址中,用Ri间接寻址只能访问低端的256字节单元,而用DPTR作指针间接访问可访问整个64K字节。

3.在位处理中,位地址的表示方式有哪几种?

4

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。答:1.直接位地址(00H~0FFH)。例如:20H

2.字节地址带位号。例如:20H.3表示20H单元的3位。

3.特殊功能寄存器名带位号。例如:P0.1表示P0口的1位。

4.位符号地址。例如:TR0是定时/计数器T0的启动位

4.写出完成下列操作的指令。

(1)R0的内容送到R1中。

MOV A,R0

MOV R1,A

(2)片内RAM的20H单元内容送到片内RAM的40H单元中。

MOV 40H,20H

(3)片内RAM的30H单元内容送到片外RAM的50H单元中。

MOV A,30H

MOV R0,#50H

MOVX @R0,A

(4)片内RAM的50H单元内容送到片外RAM的3000H单元中。

MOV A,50H

MOV DPTR,#3000H

MOVX @DPTR,A

(5)片外RAM的2000H单元内容送到片外RAM的20H单元中。

MOV DPTR,#2000H

MOVX A,@DPTR

MOV 20H,A

(6)片外RAM的1000H单元内容送到片外RAM的4000H单元中。

MOV DPTR,#1000H

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。 5 MOVX A,@DPTR

MOV DPTR,#4000H

MOV @DPTR,A

(7)ROM的1000H单元内容送到片内RAM的50H单元中。

MOV A,#0

MOV DPTR,#1000H

MOVC A,@A+DPTR

MOV 20H,A

(8)ROM的1000H单元内容送到片外RAM的1000H单元中。

MOV A,#0

MOV DPTR,#1000H

MOVC A,@A+DPTR

MOVX @DPTR,A

5.区分下列指令有什么不同?

(1)MOV A,20H和MOV A,#20H

答:前者源操作数是直接寻址,后者源操作数立即寻址。

(2)MOV A,@R1和MOVX A,@R1

答:前者源操作数是访问片内数据存储器,后者源操作数访问片外数据存储器低256字节。

(3)MOV A,R1和MOV A,@R1

答:前者源操作数是寄存器寻址,后者源操作数寄存器间接寻址。

(4)MOVX A,@R1和MOVX A,@DPTR

答:前者源操作数是访问片外数据存储器低256字节,后者源操作数访问片外数据存储器整个64K字节。

(5)MOVX A,@DPTR和MOVC A,@A+DPTR

答:前者源操作数是访问片外数据存储器,后者源操作数访问程序数据存储器。

6.设片内RAM的(20H)=40H,(40H)=10H,(10H)=50H,(P1)=0CAH。分析下列指令执行后片内RAM的20H、40H、10H单元以及P1、P2中的内容。

MOV R0,#20H

MOV A,@R0 ;A=40H

6

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。

MOV R1,A ;R1=40H

MOV A,@R1 ;A=10H

MOV @R0,P1 ;(40H)=0CAH

MOV P2,P1 P2=0CAH

MOV 10H,A (10H)=10H

MOV 20H,10H (20H)=10H

结果:(20H)=10H、(10H)=10H、(40H)=0CAH、P2=0CAH和P1=0CAH

7.已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH,片内RAM(7FH)=70H,片外RAM(2FFEH)

=11H,ROM(2FFEH)=64H,试分别写出以下各条指令执行后目标单元的内容。

(1)MOV A,@R1 结果:累加器A等于70H

(2)MOVX @DPTR,A 结果:片外RAM(2FFCH)单元等于02H

(3)MOVC A,@A+DPTR 结果:累加器A等于64H

(4)XCHD A,@R1 结果:累加器A等于00H,片内RAM(7FH)单元等于72H

8.已知:(A)=78H,(R1)=78H,(B)=04H,CY=1,片内RAM(78H)=0DDH,(80H)=6CH,试分别写出下列指令执行后目标单元的结果和相应标志位的值。

(1)ADD A,@R1 ;累加器A等于55H,CY等于1

(2)SUBB A,#77H ;累加器A等于00H,CY等于0

(3)MUL AB ;累加器A等于E0H,B寄存器等于01H,CY等于1,OV等于0

(4)DIV AB ;累加器A等于1EH,B寄存器等于00H,CY、OV等于0 (5)ANL 78H,#78H ;片内RAM(78H)单元等于58H

(6)ORL A,#0FH ;累加器A等于7FH

(7)XRL 80H,A ;片内RAM(80H)等于14H

9.设(A)=83H,(R0)=17H,(17H)=34H,分析当执行完下面指令段后累加器A、R0、17H单元的内容。

ANL A,#17H ;A=03H

ORL 17H,A ;(17H)=37H

XRL A,@R0 ;A=34H

CPL A ;A=CBH

结果:A=CBH,(R0)=17H,(17H)=37H

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。7 10.写出完成下列要求的指令。

(1)累加器A的低2位清零,其余位不变。

ANL A,#11111100B

(2)累加器A的高2位置“1”,其余位不变。

ORL A,#11000000B

(3)累加器的高4位取反,其余位不变。

XRL A,#11110000B

(4)累加器第0位、2位、4位、6位取反,其余位不变。

XRL A,#01010101B

11.说明LJMP指令与AJMP指令的区别?

答:LJMP指令后面提供的是16位目标地址,所以可以转移到64KB程序存储器的任意位置,缺点是:执行时间长,字节数多。

AJMP指令后带的是11位直接地址,执行时,先将程序指针PC的值加2(该指令长度为2字节),然后把指令中的11位地址addr11送给程序指针PC的低11位,而程序指针的高5位不变,只能在当前2K范围内转移。

12.设当前指令CJNE A,#12H,10H的地址是0FFEH,若累加器A的值为10H,则该指令执行后的PC值为多少?若累加器A的值为12H呢?

答:指令执行后的PC值为1011H,若累加器A的值为12H,则指令执行后的PC值为1001H。

13.用位处理指令实现P1.4=P1.0∧(P1.1∨P1.2)∨/P1.3的逻辑功能。

程序:

MOV C,P1.1

ORL C,P1.2

ANL C,P1.0

ORL C,/P1.3

MOV P1.4,C

14.下列程序段汇编后,从1000H单元开始的单元内容是什么?

ORG 1000H

TAB: DB 12H,34H

DS 3

DW 5567H,87H

8

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。

答:(1000H)=12H,(1001H)=34H,(1002H)=00H,(1003H)=00,(1004H)=00,(1005H)=67H,(1006H)=55H,(1007H)=87H,(1008H)=00H

15.试编一段程序,将片内RAM的20H、21H、22H单元的内容依次存入片外RAM的20H、21H、22H 中。

程序:

MOV R0,#20H

MOV R2,#03H

LOOP:MOV A,@R0

MOVX @R0,A

INC R0

DJNZ R2,LOOP

SJMP $

16.编程实现将片外RAM的2000H~2030H单元的内容,全部搬到片内RAM的20H单元开始位置,并将源位置清零。

程序:

MOV R0,#20H

MOV DPTR,#2000H

MOV R2,#30H

LOOP:MOVX A,@DPTR

MOV @R0,A

MOV A,#00

MOVX @DPTR,A

INC DPTR

INC R0

DJNZ R2,LOOP

SJMP $

17.编程将片外RAM的1000H单元开始的100个字节数据相加,结果放于R7R6中。

程序:

MOV DPTR,#1000H

MOV R2,#100

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。9 MOV R7,#00

MOV R6,#00

LOOP:MOVX A,@DPTR

ADD A,R6

MOV R6,A

MOV A,R7

ADDC A,#0

MOV R7,A

INC DPTR

DJNZ R2,LOOP

SJMP $

18.编程实现R4R3?R2,结果放于R7R6R5中。

程序:

ORG 0100H

MUL1:MOV A,R2

MOV B,R3

MUL AB ;R2?R3,结果的低字节直接存入积的R5

MOV R5,A ;结果的高字节存入R6中暂存起来

MOV R6,B

MUL2:MOV A,R2

MOV B,R4

MUL AB ;R2?R4,结果的低字节与R6相加后,再存入R6中

ADD A,R6

MOV R6,A

MOV A,B ;结果的高字节加上进位位后存入R7中

ADDC A,#00

MOV R7,A

SJMP $

10

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。

19.编程实现把片内RAM的20H单元的0位、1位,21H单元的2位、3位,22H单元的4位、5位,23H单元的6位、7位,按原位置关系拼装在一起放于R2中。

程序:

MOV C,20H.0

MOV A.0,C

MOV C,20H.1

MOV A.1,C

MOV C,21H.2

MOV A.2,C

MOV C,21H.3

MOV A.3,C

MOV C,22H.4

MOV A.4,C

MOV C,22H.5

MOV A.5,C

MOV C,23H.6

MOV A.6,C

MOV C,23H.7

MOV A.7,C

MOV R2,A

20.用查表的方法实现一位十六进制数转换成ASCII。

程序:(设一位十六进制数放在R2中,轮换的ASCII也放于R2中)

C16STASC:MOV DPTR,#TAB

MOV A,R2

MOVC A,@A+DPTR

MOV R2,A

RET

TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H

DB 38H,391H,41H,42H,43H,44H,45H,46H

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。11 21.编程统计从片外RAM2000H开始的100个单元中“0”的个数放于R2中。

程序:

MOV DPTR,#2000H

MOV R3,#100

MOV R2,#00

LOOP:MOVX A,@DPTR

JNZ NEXT

INC R2

NEXT:INC DPTR

DJNZ R3,LOOP

SJMP $

第四章

1. C语言有哪些特点?

答:C语言具有以下特点:

1) 语言简洁、紧凑,使用方便、灵活

2) 运算符丰富

3) 数据结构丰富,具有现代化语言的各种数据结构

4) 可进行结构化程序设计

5) 可以直接对计算机硬件进行操作

6) 生成的目标代码质量高,程序执行效率高

7) 可移植性好

2. 有哪些数据类型是MCS-51单片机直接支持的?

答:MCS-51单片机直接支持的数据类型标准分为基本数据类型和组合数据类型,基本数据类型有字符型char、短整型short、整型int、长整型long、浮点型float、双精度型double、特殊功能寄存器型和位类型,其中char型与short型相同,float型与double型相同。组合数据类型有数组类型、结

构体类型、共同体类型和枚举类型,另外还有指针类型和空类型。

3. C51特有的数据类型有哪些?

12

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。

答:C51特有的数据类型有特殊功能寄存器型和位类型。

4. C51中的存储器类型有几种,它们分别表示的存储器区域是什么?

答:C51中的存储器类型有6种,分别如下:

data:直接寻址的片内RAM低128B,访问速度快

bdata:片内RAM的可位寻址区(20H~2FH),允许字节和位混合访问

idata:间接寻址访问的片内RAM,允许访问全部片内RAM

pdata:用Ri间接访问的片外RAM低256B

xdata:用DPTR间接访问的片外RAM,允许访问全部64KB片外RAM

code:程序存储器ROM 64KB空间

5. 在C51中,bit位与sbit位有什么区别?

答:bit位类型符用于定义一般的位变量。存储器类型只能是bdata、data、idata,只能是片内

RAM的可位寻址区,严格来说只能是bdata。

sbit位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时需指明其位地址,可以是

位直接地址,可以是可位寻址变量带位号,也可以是特殊功能寄存器名带位号。

6. 在C51中,通过绝对地址来访问的存储器有几种?

答:通过绝对地址来访问存储器有三种方法:1. 使用C51运行库中预定义宏。2. 通过指针访问。3. 使用C51扩展关键字_at_

7. 在C51中,中断函数与一般函数有什么不同?

答:中断函数在定义时后面带interrupt m修饰符,m的取值为0~31,对应的中断情况如下:0——外部中断0,1——定时/计数器T0,2——外部中断1,3——定时/计数器T1,4——串行口中断,5——定时/计数器T2,其他值预留。

编写MCS-51中断函数需要注意如下几点。

(1) 中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。

(2) 中断函数没有返回值。

(3) 在任何情况下都不能直接调用中断函数

(4) 如果在中断函数中调用了其他函数,则被调用函数所使用的寄存器必须与中断函数相同,否则

会产生不正确的结果。

(5) C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容。

(6) C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。

(7) 中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明。防止其他程序调用。

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。13 8. 按给定的存储类型和数据类型,写出下列变量的说明形式。

(1) 在data区定义字符变量val1。

char data val1;

(2) 在idata区定义整型变量val2。

int idata val2;

(3) 在xdata区定义无符号字符型数组val3[4]。

unsigned char xdata val3[4];

(4) 在xdata区定义一个指向char类型的指针px。

char xdata *px;

(5) 定义可寻址位变量flag。

bit flag;

(6) 定义特殊功能寄存器变量P3。

sfr P3=0xa0;

(7) 定义特殊功能寄存器变量SCON。

sfr SCON=0x98;

(8) 定义16位的特殊功能寄存器T0。

sfr16 T0=0x8a;

9. 写出下列关系表达式或逻辑表达式的结果,设a=3,b=4,c=5。

(1) a+b>c&&b= =c 结果:假

(2) a||b+c&&b-c 结果:真

(3) !(a>b)&&!c||1 结果:真

(4) !(a+b)+c-1&&b+c/2 结果:假

10. 写出下列C51程序的执行结果。

(1)

#include

extern serial_initial();

main()

{

int x,y,z;

serial_initial();

x=y=8;z=++x;

14

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。

printf("\n %d %d %d",y,z,x);

x=y=8;z=x++;

printf("\n %d %d %d",y,z,x);

x=y=8;z=--x;

printf("\n %d %d %d",y,z,x);

x=y=8;z=x--;

printf("\n %d %d %d",y,z,x);

printf("\n");

while(1);

}

结果:8 9 9

8 8 9

8 7 7

8 8 7

(2)

#include

extern serial_initial();main()

{

int x,y,z;

serial_initial();

printf("input data x,y?\n");

scanf("%d %d",&x,&y);

printf("\n x y xy x>=y x!=y x==y");

printf("\n");

printf("\n%3d%3d",x,y);

z=x

z=x<=y; printf("%5d",z);

z=x>y; printf("%5d",z);

z=x>=y; printf("%5d",z);

z=x!=y; printf("%5d",z);

z=x==y; printf("%5d",z);

while(1);

}

执行结果:

input data x,y?

1 2

x y xy x>=y x!=y x==y

1 2 1 1 0 0 1 0

(3)

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。15

#include

extern serial_initial();

main()

{

int x,y,z;

serial_initial();

printf("input data x, y ?\n");

scanf("%d %d",&x,&y);

printf("\n x y !x x||y x&&y");

printf("\n%3d%3d",x,y);

z=!y; printf("%5d",z);

z=x||y; printf("%5d",z);

z=x&&y; printf("%5d",z);

printf("\n");printf("\n");

printf("That is all\n");

while(1);

}

执行结果:

input data x, y ?

x y !x x||y x&&y

1 2 0 1 1

That is all

16

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。

(4)

#include

extern serial_initial();

main()

{

int a,b;

unsigned int x,y;

serial_initial();

a=b=0xaa55;x=y=0xaa55;

printf("\n a=%4x b=%4x x=%4x y=%4x",a,b,x,y);

a=a<<1;b=b>>1;

x=x<<1;y=y>>1;

printf("\n a=%4x b=%4x x=%4x y=%4x",a,b,x,y);

printf("\n");

printf("\n");

printf("That is all.\n");

while(1);

}

执行结果:

a=aa55 b=aa55 x=aa55 y=aa55

a=54aa b=d52a x=54aa y=552a

That is all.

11. break和continue语句的区别是什么?

答:break语句可以跳出switch结构,使程序继续执行switch结构后面的一个语句。break语句还可以从循环体中跳出循环,提前结束循环而接着执行循环结构下面的语句。

continue语句用在循环结构中,用于结束本次循环,跳过循环体中continue下面尚未执行的语句,直接进行下一次是否执行循环的判定。

continue语句和break语句的区别在于:continue语句只是结束本次循环而不是终止整个循环;break语句则是结束循环,不再进行条件判断。

12. 用分支结构编程实现:输入“1”显示“A”,输入“2”显示“B”,输入“3”显示“C”,输入“4”显示“D”,输入“5”结束。

参考程序:

#include

#include

void main(void)

{

unsigned char x;

SCON=0x52; //串口初始化

TMOD=0x20;

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。17

TH1=0XF3;

TR1=1;

while(1)

{

printf("input x:\n"); //输出提示信息

scanf("%c",&x);

switch(x)

{

case '1':printf(" A\n");break;

case '2':printf(" B\n");break;

case '3':printf(" C\n");break;

case '4':printf(" D\n");break;

case '5':printf(" QUIT\n");break;

default: printf(" RETRY\n");;

}

if (x=='5') break;

}

while(1);

}

13. 输入3个无符号的字符数据,要求按由大到小的顺序输出。

参考程序:

#include

#include

void main(void)

{

unsigned char x,y,z,m;

SCON=0x52; //串口初始化

TMOD=0x20;

TH1=0XF3;

TR1=1;

printf("input x,y,z:"); //输出提示信息

scanf("%c,%c,%c",&x,&y,&z);

printf("\n");

if (x

if (y

if (x

printf("output %c,%c,%c\n", x,y,z); //输出

while(1);

}

14. 用3种循环结构编写程序实现输出1到10的平方之和。

参考程序:

(1)while循环

#include //包含特殊功能寄存器库

#include //包含I/O函数库

void main(void) //主函数

{

18

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。

int i,s=0; //定义整型变量

i=1;

SCON=0x52; //串口初始化

TMOD=0x20;

TH1=0XF3;

TR1=1;

while (i<=10) //累加1到10的平方之和在s中

{

s=s+i*i;

i++;

}

printf("1到10的平方之和=%d\n",s);

while(1);

}

(2)do while循环

#include //包含特殊功能寄存器库

#include //包含I/O函数库

void main(void) //主函数

{

int i,s=0; //定义整型变量

i=1;

SCON=0x52; //串口初始化

TMOD=0x20;

TH1=0XF3;

TR1=1;

do //累加1到10的平方之和在s中

{

s=s+i*i;

i++;

}

while (i<=10);

printf("1到10的平方之和=%d\n",s);

while(1);

}

(3)for循环

#include //包含特殊功能寄存器库

#include //包含I/O函数库

void main(void) //主函数

{

int i,s=0; //定义整型变量

SCON=0x52; //串口初始化

TMOD=0x20;

TH1=0XF3;

TR1=1;

for (i=1;i<=10;i++) s=s+i*i; //累加1到10的平方之和在s中

printf("1到10的平方之和=%d\n",s);

while(1);

}

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。19 15. 对一个由5个元素组成的无符号字符数组按由小到大的顺序进行排序。

参考程序:

#include //包含特殊功能寄存器库

#include //包含I/O函数库

main()

{

unsigned char f[5],m,i,j;

SCON=0x52; //串口初始化

TMOD=0x20;

TH1=0XF3;

TR1=1;

printf("输入任意5个字符:");

scanf("%c,%c,%c,%c,%c",&f[0],&f[1],&f[2],&f[3],&f[4]);

printf("\n");

for (i=0;i<5;i++)

for (j=0;j<5-i;j++)

if (f[j]>f[j+1])

{m=f[j];f[j]=f[j+1];f[j+1]=m;}

printf("由小到大的顺序为:%c,%c,%c,%c,%c ",f[0],f[1],f[2],f[3],f[4]);

printf("\n");

while(1);

}

16. 用指针实现,输入3个无符号字符数据,按由大到小的顺序输出。

参考程序:

#include //包含特殊功能寄存器库

#include //包含I/O函数库

main()

{

unsigned char x,y,z;

unsigned char *p,*p1,*p2,*p3;

SCON=0x52; //串口初始化

TMOD=0x20;

TH1=0XF3;

TR1=1;

printf("input x,y and z:\n");

scanf("%c,%c,%c",&x,&y,&z);

printf("\n");

p1=&x;p2=&y; p3=&z;

if (*p1<*p2) {p=p1;p1=p2;p2=p;}

if (*p2<*p3) {p=p2;p2=p3;p3=p;}

if (*p1<*p2) {p=p1;p1=p2;p2=p;}

printf("max to min is:%c,%c,%c\n",*p1,*p2,*p3);

while(1);

}

20

错误!使用“开始”选项卡将标题 1,部分标题 1 应用于要在此处显示的文字。

17. 有3个学生,每个学生都包括学号、姓名和成绩,要求找出成绩最高的学生的姓名和成绩。

参考程序:

#include //包含特殊功能寄存器库

#include //包含I/O函数库

struct student

{

unsigned char number[10];

unsigned char name[10];

unsigned int grade;

}p1[3];

main()

{

unsigned char i,j=0;

SCON=0x52; //串口初始化

TMOD=0x20;

TH1=0XF3;

TR1=1;

printf("input 3 studend number,name and grade:\n");

for (i=0;i<3;i++)

{

printf("input number:\n");

scanf("%s",p1[i]. number);

printf("input name:\n");

scanf("%s",p1[i].name);

printf("input grade:\n");

scanf("%d",&p1[i].grade);

}

for (i=1;i<3;i++)

{

if (p1[i].grade>p1[j].grade) j=i;

}

printf("成绩最高的学生是:%s,成绩是:%d",p1[j].name,p1[j].grade);

printf("\n");

}

while(1);

}

第五章

1.单片机C语言与汇编语言混合编程有哪几种方式?通常采用什么方式?

答:单片机C语言和汇编语言混合编程分为汇编中调用C51函数和C51程序中引用汇编,通常使用的是在C51程序中引用汇编。在C51程序中使用汇编语言有两种情况:一种是汇编程序部分和C51程序部分为不同的模块,或不同的文件,通常由C51程序调用汇编程序模块的变量和函数(也可称为子程序或过程);另一种是嵌入式汇编,即在C51程序中嵌入一段汇编语言程序。

2.简述C51程序调用汇编程序时如何实现参数传递。

单片机课程设计心得体会

单片机课程设计心得体会 本页是网最新发布的《单片机课程设计心得体会》的详细范文参考文章,感觉写的不错,希望对您有帮助,为了方便大家的阅读。 单片机课程设计心得体会 结束了两周的电视机实训,我们又迎来了单片机课程设计实训,真是让我们受益匪浅啊?学到了很多东西,不管怎么样,先感谢学校给我的这么多机会。真正的学到了东西。为期一周的单片机课程设计让我们受益匪浅。此次课程设计软件与硬件相结合,考察了我们的焊接水平与编程能力。对于我们应用电子技术的学生而言焊接是不成问题,也很顺利;可到了编程时就出现了很大的障碍,先开始的显示时钟还算顺利,下面的报警部分就花费了相当长的时间,还有加上报警时的音乐也是我们到图书馆里查阅资料由汇编转化成c语言得来的。本来还以为编程会很简单的,等到实际操作起来才知道它的复杂性,没有想像中的那么得心应手,理解流程是有思维的前提。单片机是我们上学期开设的课程,所以很多专业知识也都忘记了。不过经过我们一步步的努力,花费的时间与精力终于没有白费,效果渐渐地出现了。其实本身程序的思维是正确的,只是步骤中有点小错误,所以导致整个程序的结果很乱,在仔细修改程序之后,终于一步步地达到效果了。

我们将各个部分的程序编好后怎么都连不起来,出不了预期的效果。对于硬件在编程过程中pcb板的接触又是一个头疼的问题,在进行编译的时候,数码显示管上什么都没有,按一下旁边与之相连的元器件时就有显示了,所以也花费了好多时间在pcb 板的重新焊接上。对于软件我们在时钟完成后就对其加入了报警系统,可加了之后发现程序乱了,以前的时钟也不可以控制了。网经过反复研究,发现接地接错了位置,导致了用来报警的红灯跟绿灯根本不亮,然后就将接地线重新焊接了一下,功夫不负有心人,红灯亮了,配合编好的程序,用纸板挡住了发射管与接收管之间的信号传输,数码显示管出现闪烁的效果,并且没信号的时候绿灯亮,有信号的时候红灯就亮了,这个现象让我们喜出望外。经过修改时钟程序和报警系统都被使用上了,可更大的难题就是如何让它报警?这困扰了我们,数码显示管上终于有了闪烁的效果,可报警声还没加的上去。老师的要求是除了蜂鸣器上的报警声再加一段音乐。翻阅了图书馆里的书籍,查出来的音乐程序都是用汇编编的,要将此程序放到主程序中就必须将汇编程序改编成c语言程序。这再次困扰了我们,虽然以前也学过汇编跟c 之间的互换,可都是简单的,从没涉及到这么复杂的程序过,改编很是有压力,经过研究,我们将汇编程序舍弃了,到网上下载了一段音乐程序,是c语言编的。要让音乐在我们的红外报警系统中唱出来可不是什么简单的事情,虽然找到了音乐程序,但要让音乐程序跟我们的主程序融合在一起得花费点心思了。

单片机课后答案

答:中断是指计算机在执行某一程序的过程中,由于计算机系统内、外的某种原因而必须终止原程序的执行,转去完成相应的处理程序,待处理结束之后再返回继续执行被终止原程序的过程。中断源指向 CPU 提出中断申请的设备,包括中断请求信号的产生及该信号怎样被CPU 有效地识别,要求中断请求信号产生一次,只能被CPU 接收处理一次,即不能一 次中断申请被CPU 多次响应。当 CPU 正在执行中断服务程序时,又有中断优先级更高的中断申请产生,CPU 就会暂停原来的中断处理程序而转去处理优先级更高的中断请求,处理完毕后再返回原低级中断服务程序,这一过程称为中断嵌套.中断优先级指在实际应用系统中往往有多个中断源,且中断申请是随机的,有时还可能会有多个中断源同时提出中断申请,但CPU 一次只能响应一个中断源发出的中断请求,CPU 响应哪个中断请求,就需要用软件或硬件安排一个优先顺序,即中断优先级排队。 6-2 MCS-51 单片机提供了几个中断源有几级中断优先级别各中断标志是如何产生的又如何清除这些中断标志各中断源所对应的中断矢量地址是多少 答:(1)MCS-51 单片机提供了5 个中断源: INT0 、INT1 、T0、T1、串行口。 (2)MCS-51 系列单片机有两个中断优先级,每一个中断请求源均可编程为高优先级中 断或低优先级中断,从而实现两级中断嵌套。 (3)外部中断可以设置边沿触发或者电平触发,靠软件置位。边沿触发进入中断程序后硬件自动清中断标志。电平触发需要软件清除中断标志位,还需在中断响应后把中断请求信号引脚从低电平强制改变为高电平。 (4)定时器T0、T1 计数溢出产生中断,进入中断程序后由硬件自动清除标志位TF0 或TF1。(5)串行口发送完成或者接收到数据就触发中断,由于是两个中断标志共享一个中断向量,所以需要在中断程序里由软件判断是发送中断还是接受中断,并且只能由软件清除中断标志位。使用软件清除中断标志位的方法是: CLR TI ;清TI 标志位 CLR RI ;清RI 标志位 (6)各中断源对应的中断矢量地址分别为: 中断源中断矢量 外部中断 0 0003H 定时器T0 中断000BH 外部中断1 0013H 定时器T1 中断001BH 串行口中断0023H 定时器中断T2(仅52 系列有) 002BH 6-3 外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同怎样设定 答:采用中断电平触发方式时,中断请求标志IT0=0,CPU 在每个机器周期的S5P2 期间采样,一旦在( INT0 )引脚上检测到低电平,则有中断申请,使IE0 置位(置1),向CPU 申请中断。在电平触发方式中,在中断响应后中断标志位IE0 的清0 由硬件自动完成,但由于CPU 对( INT0 )引脚没有控制作用,使中断请求信号的低电平可能继续存在,在以后的机器周期采样时又会把已清0 的IE0 标志位重新置1,所以, 在中断响应后必须采用其它方法撤消该引脚上的低电平,来撤除外部中断请求信号,否则有可能再次中断造成出错。采用边沿触发方式时,IT0=1,CPU 在每个机器的S5P2 期间采样,当检测到前一周期为高电平,后一周期为低电平时,使标志IE0 置1,向CPU 申请中断,此标志位一直保持到CPU 响应中断后,才由硬件自动清除。在边沿触发方式中,为保证CPU 在两个机器周期内检测到由高到低的负跳变,高电平与低电平的持续时间不得少于一个机器周

单片机原理与应用教程第3版习题课后答案

《单片机原理及应用程序》(第三版)习题参考答案 第一章 1. 为什么计算机要采用二进制数?学习十六进制数的目的是什么? 在计算机中,由于所采用的电子逻辑器件仅能存储和识别两种状态的特点,计算机部一切信息存储、处理和传送均采用二进制数的形式。可以说,二进制数是计算机硬件能直接识别并进行处理的惟一形式。十六进制数可以简化表示二进制数。 2. (1) 01111001 79H (2) 0.11 0.CH (3) 01111001.11 79.CH (4) 11101010.101 0EA.AH (5)01100001 61H (6) 00110001 31H 3. (1) 0B3H (2)80H (3) 17.AH (4) 0C.CH 4. (1)01000001B 65 (2) 110101111B 431 5. (1) 00100100 00100100 00100100 (2) 10100100 11011011 11011100 (5) 10000001 11111110 11111111 6. 00100101B 00110111BCD 25H 7. 137 119 89 8.什么是总线?总线主要有哪几部分组成?各部分的作用是什么? 总线是连接计算机各部件之间的一组公共的信号线。一般情况下,可分为系统总线和外总线。 系统总线应包括:地址总线(AB)控制总线(CB)数据总线(DB) 地址总线(AB):CPU根据指令的功能需要访问某一存储器单元或外部设备时,其地址信

息由地址总线输出,然后经地址译码单元处理。地址总线为16位时,可寻址围为216=64K,地址总线的位数决定了所寻址存储器容量或外设数量的围。在任一时刻,地址总线上的地址信息是惟一对应某一存储单元或外部设备。 控制总线(CB):由CPU产生的控制信号是通过控制总线向存储器或外部设备发出控制命令的,以使在传送信息时协调一致的工作。CPU还可以接收由外部设备发来的中断请求信号和状态信号,所以控制总线可以是输入、输出或双向的。 数据总线(DB):CPU是通过数据总线与存储单元或外部设备交换数据信息的,故数据总线应为双向总线。在CPU进行读操作时,存储单元或外设的数据信息通过数据总线传送给CPU;在CPU进行写操作时,CPU把数据通过数据总线传送给存储单元或外设9.什么是接口电路? CPU与接口电路连接一般应具有哪些信号线?外部设备与接口电路连接一般应具有哪些信号线? CPU通过接口电路与外部输入、输出设备交换信息, 一般情况下,外部设备种类、数量较多,而且各种参量(如运行速度、数据格式及物理量)也不尽相同。CPU为了实现选取目标外部设备并与其交换信息,必须借助接口电路。一般情况下,接口电路通过地址总线、控制总线和数据总线与CPU连接;通过数据线(D)、控制线(C)和状态线(S)与外部设备连接。 10. 存储器的作用是什么?只读存储器和随机存储器有什么不同? 存储器具有记忆功能,用来存放数据和程序。计算机中的存储器主要有随机存储器(RAM)和只读存储器(ROM)两种。随机存储器一般用来存放程序运行过程中的中间数据,计算机掉电时数据不再保存。只读存储器一般用来存放程序,计算机掉电时信息不会丢失。 11.某存储器的存储容量为64KB,它表示多少个存储单元?64×1024 12. 简述微型计算机硬件系统组成。

单片机课后习题

第一章 1. 给出下列有符号数的原码、反码和补码(假设计算机字长为8位)。 +45 -89 -6 +112 答:【+45】原=00101101,【+45】反=00101101,【+45】补=00101101 【-89】原=11011001,【-89】反 =10100110,【-89】补=10100111 【-6】原=10000110,【-6】反=11111001,【-6】补=11111010 【+112】原=01110000,【+45】反=01110000,【+45】补=01110000 2. 指明下列字符在计算机内部的表示形式。AsENdfJFmdsv120 答:41H 73H 45H 4EH 64H 66H 4AH 46H 6DH 64H 73H 76H 31H 32H 30H 10. 什么是单片机? 答:单片机是把微型计算机中的微处理器、存储器、I/O接口、定时器/计数器、串行接口、中断系统等电路集成到一个集成电路芯片上形成的微型计算机。因而被称为单片微型计算机,简称为单片机。 11. 单片机的主要特点是什么?答:主要特点如下: 1) 在存储器结构上,单片机的存储器采用哈佛(Harvard)结构 2) 在芯片引脚上,大部分采用分时复用技术 3) 在内部资源访问上,采用特殊功能寄存器(SFR)的形式 4) 在指令系统上,采用面向控制的指令系统 5) 内部一般都集成一个全双工的串行接口 6) 单片机有很强的外部扩展能力 12. 指明单片机的主要应用领域。 答:单机应用:1) 工业自动化控制;2) 智能仪器仪表;3) 计算机外部设备 和智能接口;4) 家用电器 多机应用:功能弥散系统、并行多机处理系统和局部网络系统。 第二章 1. MCS-51单片机由哪几个部分组成? 答:MCS-51单片机主要由以下部分组成的:时钟电路、中央处理器(CPU)、存储器系统(RAM和ROM)、定时/计数器、并行接口、串行接口、中断系统及一些特殊功能寄存器(SFR)。 2. MCS-51的标志寄存器有多少位,各位的含义是什么? 答:MCS-51的标志寄存器PSW有8位; D D 6 5 4 3 2 1 0 c 0 S1 R so R V 含义如下: C(PSW.7):进位或借位标志位。 AC(PSW.6):辅助进位或借位可标志位。 F0(PSW.5):用户标志位。是系统预留给用户自己定义的标志位。 RS1、RS0(PSW.4、PSW.3):寄存器组选择位。可用软件置位或清零,用于从四组工作寄存器中选定当前的工作寄存器组。 OV(PSW.2):溢出标志位。在加法或减法运算时,如运算的结果超出8位二进制数的范围,则OV置1,标志溢出,否则OV清零。 P(PSW.0):奇偶标志位。用于记录指令执行后累加器A中1的个数的奇偶性。若累加器A中1的个数为奇数,则P置位,若累加器A中1的个数为偶数,则P清零。 其中PSW.1未定义,可供用户使用。 3. 在8051的存储器结构中,内部数据存储器可分为几个区域?各有什么特点? 答:片内数据存储器按功能可以分成以下几个部分:工作寄存器组区、位寻址区、一般RAM区和特殊功能寄存器区,其中还包含堆栈区。工作寄存器组区,00H~1FH单元,可用R0~R7等8个寄存器访问;位寻址区,20H~2FH单元,可按位方式访问;一般RAM区,30H~7FH单元;堆栈区,可从08到7F单元;特殊功能寄存器区位于80H~FFH单元。 4. 什么是堆栈?说明MCS-51单片机的堆栈处理过程。 答:堆栈是按先入后出、后入先出的原则进行管理的一段存储区域。CS-51单片机的堆栈是向上生长型的,存入数据是从地址低端向高端延伸,取出数据是从地址高端向低端延伸。入栈和出栈数据是以字节为单位的。入栈时,SP指针的内容先自动加1,然后再把数据存入到SP指针指向的单元;出栈时,先把SP指针指向单元的数据取出,然后再把SP指针的内容自动减1。 5. 简述内部ROM的工作寄存器组情况,系统默认是第几组? 答:51单片机有4组工作寄存器,每组8个,用寄存器R0~R7表示,标志寄存器PSW的RS1、RS03两位用于从四组工作寄存器中选定当前的工作寄存器组,默认是第0组。 6. 51单片机的程序存储器64KB空间在使用时有那几个特殊地址? 答:51单片机程序存储器的64KB存储空间使用时有7个特殊的地址,第一个是0000H,它是系统的复位地址,51单片机复位后PC的值为0000H,复位后从0000H单元开始执行程序,由于后面几个地址的原因,用户程序一般不直接从0000H单元开始存放,而是放于后面,通过在0000H单元放一条绝对转移指令转到后面的用户程序。后面6个为6个中断源的入口地址,51单片机中断响应后,系统会自动的转移到相应中断

单片机课程设计stc89c52+nrf24l01

武汉纺织大学
单片机原理与应用 课 程 设 计
设计题目: 学 班 姓 QQ 院: 级: 名: 号: nrf24l01 数据传送 电子与电气工程学院 电子 11201 张啸宇 胡安凯 1272779714
1

目录
一、思想出路: .............................................................................. 3 二、设计方案: .............................................................................. 3 2.1、硬件设计方案: ............................................................... 3 2.2、软件设计方案: ............................................................... 3 1.驱动文件: ........................................................................ 3 2.发送端主程序 .................................................................... 4 3.接收端主程序 .................................................................... 5 2.3、接线: ............................................................................... 6 三、选题方案 .................................................................................. 7 四、系统原理图 .............................................................................. 7 4.1、发射端: ........................................................................... 7 4.2、接收端: ........................................................................... 8 五、程序精选 .................................................................................. 8 六、总结 ......................................................................................... 8 6.1、功能总结: ....................................................................... 8 6.2、功能完善: ....................................................................... 9 6.3、自我总结: ....................................................................... 9 七、展望:...................................................................................... 9
2

单片机课后习题答案

单片机课后习题答案 1.89C51单片机内包含哪些主要逻辑功能部件? 答:80C51系列单片机在片内集成了以下主要逻辑功能部件: (l)CPU(中央处理器):8位(2)片内RAM:128B(3)特殊功能寄存器:21个(4)程序存储器:4KB (5)并行I/O口:8位,4个(6)串行接口:全双工,1个(7)定时器/计数器:16位,2个(8)片内时钟电路:1个 2.89C51的EA端有何用途? 答:/EA端接高电平时,CPU只访问片内flash Rom并执行内部程序,存储器。/EA端接低电平时,CPU只访问外部ROM,并执行片外程序存储器中的指令。/EA端保持高电平时,CPU执行内部存储器中的指令。 3.89C51的存储器分哪几个空间?如何区别不同空间的寻址? 答:ROM(片内ROM和片外ROM统一编址)(使用MOVC)(数据传送指令)(16bits地址)(64KB)片外RAM(MOVX)(16bits地址)(64KB)片内RAM (MOV)(8bits地址)(256B) 4.简述89C51片内RAM的空间分配。 答:片内RAM有256B,低128B是真正的RAM区,高128B是SFR(特殊功能寄存器)区。 5.简述布尔处理存储器的空间分配,片内RAM中包含哪些可位寻址单元。 答:片内RAM区从00H~FFH(256B) 其中20H~2FH(字节地址)是位寻址区对应的位地址是00H~7FH 6. 如何简捷地判断89C51正在工作? 答:用示波器观察8051的XTAL2端是否有脉冲信号输出(判断震荡电路工作是否正常?)ALE(地址锁存允许)(Address Latch Enable)输出是fosc的6分频 用示波器观察ALE是否有脉冲输出(判断8051芯片的好坏?) 观察PSEN(判断8051能够到EPROM 或ROM中读取指令码?) 因为/PSEN接外部EPROM(ROM)的/OE端子OE=Output Enable(输出允许) 7. 89C51如何确定和改变当前工作寄存器组? 答:PSW(程序状态字)(Program Status Word)中的RS1和RS0 可以给出4中组合,用来从4组工作寄存器组中进行选择PSW属于SFR(Special Function Register)(特殊功能寄存器) 9.读端口锁存器和“读引脚”有何不同?各使用哪种指令? 答:读锁存器(ANLP0,A)就是相当于从存储器中拿数据,而读引脚是从外部拿数据(如MOV A,P1这条指令就是读引脚的,意思就是把端口p1输入数据送给A)传送类MOV,判位转移JB、JNB、这些都属于读引脚,平时实验时经常用这些指令于外部通信,判断外部键盘等;字节交换XCH、XCHD算术及逻辑运算 ORL、CPL、ANL、ADD、ADDC、SUBB、INC、DEC控制转移CJNE、DJNZ

89C52单片机课程设计

1. 设计任务及要求 1.1 设计任务 (1)完成基本焊接任务 (2)单片机开发板功能正确 (3)完成指定的实验 (4)完成课程设计报告 1.2 要求 (1)元件面:元器件位置正确、排列整齐有序,元件整形恰当。 焊接面:整洁、清爽,焊点圆润、无虚焊,引脚修整合适。 (2)能够下载程序、运行演示程序。 (3)完成3个程序的编写、下载及演示功能。 (4)报告格式规范、文字流畅、思路清晰。 2.方案设计与论证 2.1 方案设计 方案一:仿照周立功实验箱自行设计电路,然后完成焊接,实现各功能。 https://www.sodocs.net/doc/de13090845.html,单片机仿真器、编程器、实验仪三合一综合开发平台方案二:采用JB-MCS 51-V8.0电路板,直接焊接相关元器件并实现各功能。 2.2论证 经验证https://www.sodocs.net/doc/de13090845.html,实验平台所需元器件无法找齐,且体积过大不便于携带等原因,最终决定采用方案二。 3.单元电路原理

各单元电路原理图4.总原理图及元器件清单 4.1 总原理图 4.2 元器件清单

5 硬件安装与调试 在安装硬件的过程中要注意硬件的排列有序,焊点圆润、无虚焊,引脚修剪整齐。在硬件安装完毕后,对作品进行调试。通过STC软件对作品进行调试以及程序的下载,具体步骤如下: (1)选择单片机型号 (2)选择程序 (3)选择串口,安装USB驱动程序后,可在设备管理器中看到多出的串口(每台电脑不一样)。

然后在软件中选择相应的串口 (4)选择波特率,一般情况下这都是默认的,最高波特率选择115200,最低波特率选择1200。 (5)以上步骤完成后,就点击Download/下载,按左下角的提示进行操作。

单片机课后习题答案解析

一)填空题 1. 十进制数14对应的二进制数表示为(1110B),十六进制数表 示为(0EH)。十进制数-100的补码为(9CH),+100的补码为(64H)。 2. 在一个非零的无符号二进制整数的末尾加两个0后,形成一个新的无符号二进制整数,则新数是原数的(4)倍。 3. 8位无符号二进制数能表示的最大十进制数是(255)。带符号二进制数11001101转换成十进制数是(-51)。 4. 可以将各种不同类型数据转换为计算机能处理的形式并输送到计算机中去的设备统称为(输入设备)。 5. 已知字符D的ASCII码是十六进制数44,则字符T的ASCII码是十进制数(84)。 6. 若某存储器容量为640KB,则表示该存储器共有(655360)个存储单元。 7. 在计算机中,二进制数的单位从小到大依次为(位)、(字节)和(字),对应的英文名称分别是(bit)、(Byte)和(Word)。 8. 设二进制数A=10101101,B=01110110,则逻辑运算A∨B=(11111111),A ∧B=(00100100),A⊕B=(11011011)。 9. 机器数01101110的真值是(+110),机器数01011001的真值是(+89),机器数10011101的真值是(+157或-115),机器数10001101的真值是(+206或-50)。(二)单项选择题 1. 用8位二进制补码数所能表示的十进制数范围是(D) (A)-127 ~ +127 (B)-128 ~ +128 (C)-127 ~ +128 (D)-128 ~ +127 2. 下列等式中,正确的是(B) (A)1 KB = 1024×1024 B (B)1 MB = 1024×1024 B (C)1 KB = 1024 M B (D)1 MB = 1024 B 3. 程序与软件的区别是(C) (A)程序小而软件大(B)程序便宜而软件昂贵 (C)软件包括程序(D)程序包括软件 4. 存储器中,每个存储单元都被赋予惟一的编号,这个编号称为(A) (A)地址(B)字节(C)列号(D)容量 5. 8位二进制数所能表示的最大无符号数是(B) (A)255 (B)256 (C)128 (D)127 6. 下列4个无符号数中,最小的数是(B) (A)11011001(二进制)(B)37(八进制) (C)75(十进制)(D)24(十六进制) 7. 下列字符中,ASCII码最小的是(B) (A)a (B)A (C)x (D)X 8. 下列字符中,ASCII码最大的是(C) (A)a (B)A (C)x (D)X 9. 有一个数152,它与十六进制数6A相等,那么该数是(B) (A)二进制数(B)八进制数(C)十进制数(D)十六进制数 第2章80C51单片机的硬件结构 (一)填空题

单片机课后习题解答

练习练习练习 第二章单片机结构及原理 1、MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么? 答:(1)一个8bit CPU是微处理器的核心,是运算和逻辑计算的中心。 (2)片内震荡器及时钟电路:提供标准时钟信号,所有动作都依据此进行。 (3)4K ROM程序存贮器:存贮程序及常用表格。 (4)128B RAM 数据存贮器:存贮一些中间变量和常数等。 (5)两个16bit定时器/计数器:完全硬件定时器 (6)32根可编程I/O口线:标准8位双向(4个)I/O接口,每一条I/O线都能独立地作输入或输出。 (7)一个可编程全双工串行口。 (8)五个中断源。 2、什么是指令?什么是程序? 答:指令是规定计算机执行某种操作的命令。 程序是根据任务要求有序编排指令的集合。 3、如何认识89S51/52存储器空间在物理结构上可以划分为4个空间,而在逻辑上又可以划分为3个空间? 答:89S51/52存储器空间在物理结构上设有4个存储器空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。在逻辑上有3个存储器地址空间:片内、片外统一的64KB程序存储器地址空间,片内256B数据存储器地址空间,片外64KB的数据存储器地址空间。 4、开机复位后,CPU使用的是哪组工作寄存器?他们的地址是多少?CPU如何确定和改变当前工作寄存器组? 答:开机复位后,CPU使用的是第0组工作寄存器,地址为00H~07H,CPU通过改变状态字寄存器PSW中的RS0和RS1来确定工作寄存器组。 5、什么是堆栈?堆栈有何作用?在程序设计时,有时为什么要对堆栈指针SP重新赋值?如果CPU在操作中要使用两组工作寄存器,SP应该多大? 答:堆栈是一个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。堆栈为位寻址区,这些单元有其他2FH~20H为工作寄存器区,1FH~00H单元,07H复位后指向SP 指针. 功能,因此在程序设计时,需要对SP重新赋值。如果CPU在操作中要使用两组工作寄存器,SP 应该至少设置为0FH。 6、89S51/52的时钟周期、机器周期、指令周期是如何分配的?当振荡频率为8MHz时,一个单片机周期为多少微秒? 答:时钟周期为时钟脉冲频率的倒数,他是单片机中最基本的、最小的时间单位。机器周期是指完成一个基本操作所需要的时间,一个机器周期由12个时钟周期组成。指令周期是执行一条指令所需要的时间,由若干个机器周期组成。 若fosc=8MHz,则一个机器周期=1/8×12μs=μs 7、89S51/52扩展系统中,片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生总线冲突? 答:访问片外程序存储器和访问数据存储器使用不同的指令用来区分同一地址空间。 8、程序状态字寄存器PSW的作用是什么?常用状态标志有哪些位?作用是什么? 答:程序状态字PSW是8位寄存器,用于存放程序运行的状态信息,PSW中各位状态通常是在指

单片机课后习题-答案~

习题答案 习题0 1.单片机是把组成微型计算机的各功能部件即(微处理器(CPU))、(存储器(ROM 和RAM))、(总线)、(定时器/计数器)、(输入/输出接口(I/O口))及(中断系统)等部件集成在一块芯片上的微型计算机。 2.什么叫单片机?其主要特点有哪些? 将微处理器(CPU)、存储器(存放程序或数据的ROM和RAM)、总线、定时器/计数器、输入/输出接口(I/O口)、中断系统和其他多种功能器件集成在一块芯片上的微型计机,称为单片微型计算机,简称单片机。 单片机的特点:可靠性高、便于扩展、控制功能强、具有丰富的控制指令、低电压、低功耗、片内存储容量较小、集成度高、体积小、性价比高、应用广泛、易于产品化等。 3. 单片机有哪几个发展阶段? (1)第一阶段(1974—1976年):制造工艺落后,集成度低,而且采用了双片形式。典型的代表产品有Fairchild公司的F8系列。其特点是:片内只包括了8位CPU,64B的RAM 和两个并行口,需要外加一块3851芯片(内部具有1KB的ROM、定时器/计数器和两个并行口)才能组成一台完整的单片机。 (2)第二阶段(1977—1978年):在单片芯片内集成CPU、并行口、定时器/计数器、RAM和ROM等功能部件,但性能低,品种少,应用范围也不是很广。典型的产品有Intel 公司的MCS-48系列。其特点是,片内集成有8位的CPU,1KB或2KB的ROM,64B或128B的RAM,只有并行接口,无串行接口,有1个8位的定时器/计数器,中断源有2个。片外寻址范围为4KB,芯片引脚为40个。 (3)第三阶段(1979—1982年):8位单片机成熟的阶段。其存储容量和寻址范围增大,而且中断源、并行I/O口和定时器/计数器个数都有了不同程度的增加,并且集成有全双工串行通信接口。在指令系统方面增设了乘除法、位操作和比较指令。其特点是,片内包括了8位的CPU,4KB或8KB的ROM,128B或256B的RAM,具有串/并行接口,2个或3个16位的定时器/计数器,有5~7个中断源。片外寻址范围可达64KB,芯片引脚为40个。代表产品有Intel公司的MCS-51系列,Motorola公司的MC6805系列,TI公司的TMS7000系列,Zilog公司的Z8系列等。 (4)第四阶段(1983年至今):16位单片机和8位高性能单片机并行发展的时代。16位机的工艺先进,集成度高,内部功能强,运算速度快,而且允许用户采用面向工业控制的专用语言,其特点是,片内包括了16位的CPU,8KB的ROM,232B 的RAM,具有串/并行接口,4个16位的定时器/计数器,有8个中断源,具有看门狗(Watchdog),总线控制部件,增加了D/A和A/D转换电路,片外寻址范围可达64KB。代表产品有Intel公司的MCS-96系列,Motorola公司的MC68HC16系列,TI公司的TMS9900系列,NEC公司的783××系列和NS公司的HPC16040等。然而,由于16位单片机价格比较贵,销售量不大,大量应用领域需要的是高性能、大容量和多功能的新型8位单片机。 近年来出现的32位单片机,是单片机的顶级产品,具有较高的运算速度。代表产品有Motorola公司的M68300系列和Hitachi(日立)公司的SH系列、ARM等。 4.在实际应用中,如何选择单片机的类型? 选择原则:主要从指令结构、运行速度、程序存储方式和功能等几个方面选择单片机。 MCS-51为主流产品。 Motorola是世界上最大的单片机厂商。品种全、选择余地大、新产品多。其特点是噪声低,抗干扰能力强,比较适合于工控领域及恶劣的环境。 Microchip单片机是市场份额增长较快的单片机。它的主要产品是PIC系列8位单片机。其特点是运行速度快,低价位,适用于量大、档次低、价格敏感的产品。 美国德州仪器(TI)公司生产的MSP430系列单片机是一种特低功耗的Flash微控制器。主要用于三表及超低功耗场合。

单片机课后习题答案部分筛选

第一章 2单片机具有哪些特点 (1)片内存储容量越来越大。 (2抗干扰性好,可靠性高。 (3)芯片引线齐全,容易扩展。 (4)运行速度高,控制功能强。 (5)单片机内部的数据信息保存时间很长,有的芯片可以达到100年以上。 第二章 6. 如何简捷地判断89C51正在工作? 答:用示波器观察8051的XTAL2端是否有脉冲信号输出(判断震荡电路工作是否正常?) ALE(地址锁存允许)(Address Latch Enable)输出是fosc的6分频用示波器观察ALE是否有脉冲输出(判断 8051芯片的好坏?) 观察PSEN(判断8051能够到EPROM 或ROM中读取指令码?) 因为/PSEN接外部EPROM(ROM)的/OE端子 OE=Output Enable(输出允许) 9. 读端口锁存器和“读引脚”有何不同?各使用哪种指令? 答:读锁存器(ANL P0,A)就是相当于从存储器中拿数据,而读引脚是从外部拿数据(如MOV A,P1 这条指令就是读引脚的,意思就是把端口p1输入数据送给A) 传送类MOV,判位转移JB、JNB、这些都属于读引脚,平时实验时经常用这些指令于外部通信,判断外部键盘等;字节交换XCH、XCHD算术及逻辑运算 ORL、CPL、ANL、ADD、ADDC、SUBB、INC、DEC控制转移CJNE、DJNZ都属于读锁存器。 13. 内部RAM低128字节单元划分为哪3个主要部分?各部分主要功能是什么? 答:片内RAM低128单元的划分及主要功能: (l)工作寄存器组(00H~lFH) 这是一个用寄存器直接寻址的区域,内部数据RAM区的0~31(00H~lFH),共32个单元。它是4个通用工作寄存器组,每个组包含8个8位寄存器,编号为R0~R7。 (2)位寻址区(20H~2FH) 从内部数据RAM区的32~47(20H~2FH)的16个字节单元,共包含128位,是可位寻 址的RAM区。这16个字节单元,既可进行字节寻址,又可实现位寻址。 (3)字节寻址区(30H~7FH) 从内部数据RAM区的48~127(30H~7FH),共80个字节单元,可以采用间接字节寻址 的方法访问。 15. 开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组?

单片机课程设计

秒表的设计 1设计要求 1.1 设计任务 (1)实现计时范围00.00-99.99秒表 (2)实现秒表精确到0.01秒 (3)实现秒表的三个控制键;开启计时键,暂停键和复位键 1.2 设计要求 用单片机设计一个计时范围在00.00致99.99的秒表,秒表精确在0.01秒 秒表有三个控制键分别是;秒表计时开启键,计时暂停键和秒表复位键。 1.3 方案论证 方案一:用AT89C51作为主要芯片,采用排阻,并用汇编语言写程序,采用硬件消抖 方案二:采用三极管驱动数码管,C语言编写程序,在编写程序时进行软件消抖 相比之后方案二更简便,因为软件消抖更容易,C语言程序更容易懂,易修改,硬件电路更简单。 2 设计思想 2.1 硬件设计思想 数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。本设计用单片机组成数字电子秒表,力求结构简单、精度高为目标。 设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器,计时与显示电路和回零、启动等。主控制器采用单片机AT89C52,显示电路采用四位共阳极LED数码管显示计时时间。由于本实验有四位数码管,如果采用静态显示要占用全部的I/O端口,所以本次试验采用静态显示, 建立最小单片机系统,在AT89C51单片机的P2端通过三极管接上4位七段共阴极数码管,P2.0脚接第一位数码管片选端,P2.1脚接第二位数码管片选端,P2.2脚接第三位数码片选端,P2.3脚接第四位数码管片选端,这四位分别显示秒时间的十位,个位,小数点后一位,小数点后两位显示的片选控制端。P2.4脚接小数点控制端。 秒表控制键盘。用P3.0接键盘开启计时键,P3.1接键盘计时暂停键,P3.2 接键盘计时复位键。

单片机原理及应用课后习题参考答案1~6章(DOC)

《单片机原理及应用》习题答案 第一章计算机基础知识 1-1 微型计算机主要由哪几部分组成?各部分有何功能? 答:一台微型计算机由中央处理单元(CPU)、存储器、I/O接口及I/O设备等组成,相互之间通过三组总线(Bus):即地址总线AB、数据总线DB和控制总线CB来连接。 CPU由运算器和控制器组成,运算器能够完成各种算术运算和逻辑运算操作,控制器用于控制计算机进行各种操作。 存储器是计算机系统中的“记忆”装置,其功能是存放程序和数据。按其功能可分为RAM和ROM。 输入/输出(I/O)接口是CPU与外部设备进行信息交换的部件。 总线是将CPU、存储器和I/O接口等相对独立的功能部件连接起来,并传送信息的公共通道。 1-3 什么叫单片机?其主要由哪几部分组成? 答:单片机(Single Chip Microcomputer)是指把CPU、RAM、ROM、定时器/计数器以及I/O接口电路等主要部件集成在一块半导体芯片上的微型计算机。 1-4 在各种系列的单片机中,片内ROM的配置有几种形式?用户应根据什么原则来选用? 答:单片机片内ROM的配置状态可分四种: (1)片内掩膜(Mask)ROM型单片机(如8051),适合于定型大批量应用产品的生产; (2)片内EPROM型单片机(如8751),适合于研制产品样机; (3)片内无ROM型单片机(如8031),需外接EPROM,单片机扩展灵活,适用于研制新产品; (4)EEPROM(或Flash ROM)型单片机(如89C51),内部程序存储器电可擦除,使用更方便。 1-5 写出下列各数的另两种数制的表达形式(二、十、十六进制) 1-6 写出下列各数的BCD参与: 59:01011001,1996:0001100110010110,4859.2:0100100001011001.0010

51单片机练习题

一.闪烁灯 1.实验任务 如图4.1.1所示:在端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为秒。 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。 4.程序设计内容 (1)延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为秒,相对于微秒来说,相差太大,所以我们在执行 某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是 如何设计呢下面具体介绍其原理:

如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒 MOV R6,#20 2个 2 D1: MOV R7,#248 2个22+2×248=49820× DJNZ R7,$ 2个2×248(498 DJNZ R6,D1 2个2×20=40 10002 因此,上面的延时程序时间为。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求秒=200ms,10ms×R5 =200ms,则R5=20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1所示,当端口输出高电平,即=1时,根据发光二极管的单向导 电性可知,这时发光二极管L1熄灭;当端口输出低电平,即=0时,发 光二极管L1亮;我们可以使用SETB指令使端口输出高电平,使用CLR 指令使端口输出低电平。 5.程序框图

单片机课后习题答案 胡汉才编

1.25 单片机内部由哪几部分电路组成?各部分电路的主要功能是什么? 解:单片机内部由CPU、存储器和I/O接口等电路组成。CPU的主要功能是对二进制数进行算术和逻辑运算、执行指令(从ROM中取指令,对指令译码,发各种控制信号使CPU和其他部分协调一致的工作,完成指令的功能),存储器由ROM和RAM组成,ROM的主要功能是存储单片机应用系统的程序,RAM的主要功能是存储实时数据或作为通用寄存器、堆栈、数据缓冲区。I/O接口的主要功能是负责单片机和外设、外部存储器间的通信。 第二章 存在的错别字问题:“振荡”写出“推荡”;“芯片”写成“蕊片”。 2.3、程序状态字PSW各位的定义是什么? 解:PSW的各位定义如下: Cy:进位标志位;AC:辅助进位位; F0:用户标志位;RS1、RS0:寄存器选择位; OV:溢出标志位;P:奇偶标志位; PSW1:未定义。 2.4、什么叫堆栈?8031堆栈的最大容量是多少?MCS51堆栈指示器SP有多少位,作用是什么?单片机初始化后SP中的内容是什么? 解:堆栈:符合“先进后出”或“后进先出”存取规律的RAM区域。 8031堆栈的最大容量是128B; MCS-51堆栈指针SP有8位,作用是存放栈顶(/栈低)地址; 单片机初始化后(即单片机复位后)SP中的内容是07H。 存在的问题:1、堆栈的定义中,未答出“RAM区域”,而用了“部件”; 2、只说了“单片机初始化后(即单片机复位后)SP中的内容是栈底地址”,未说明具体值07H; 3、8031堆栈的最大容量错成128M或256B。 2.5、数据指针DPTR有多少位,作用是什么? 解:数据指针DPTR有16位;作用是存放ROM或外部RAM的地址。 2.7、8051片内RAM容量有多少?可以分为哪几个区?各有什么特点? 解:8051的片内RAM容量有128B;分为三个区:工作寄存器区、位寻址区和便笺区; 存在的问题:1、8051的片内RAM容量错成256B。 2.8、8051的特殊功能寄存器SFR有多少个?可以位寻址的有哪些? 解:8051的SFR有21个,可位寻址的有11个:ACC、B、PSW、IP、P3、IE、P2、SCON、P1、TCON 和P0。 存在的问题:SFR有21个错成了26个;可位寻址的SFR中多了一个T2CON,个别同学甚至在T2CON 用了一个“+”号。

单片机课程设计

浙江工业大学之江学院 题目:数字时钟逻辑电路课程设计 班级:测控901 学号:200920540104 姓名:侯晓明 指导老师:刘勤贤 时间:2011年12月26日-2012年1月3日

设计背景 数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。 单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。 课程设计目的 (1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力; (2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力; (3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。 89C51及各管脚介绍:带4K字节闪烁可编程可擦除只读存储器低电压、高性能CMOS8位微处理器

VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。P1口:一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P2口:一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。P3口:管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。 74LS273相关介绍:带有清除端的8D触发器,只有在清除端保持高电平时,才具有锁存功能,锁存控制端为11脚CLK,采用上升沿锁存。 CPU 的ALE信号必须经过反相器反相之后才能与74LS273的控制端CLK 端相连。 1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。

相关主题