一、 简答题
1、何谓单片机?单片机与一般微型计算机相比,具有哪些特点? 2、简述8051单片机的内部基本结构。
3、程序状态字PSW中主要包含了哪些状态信息?
4、什么是时钟周期、机器周期、指令周期?8051CPU机器周期与时钟周期是什么关系? 5、若震荡频率fosc=12MHz,则震荡周期、状态周期、机器周期分别为多少? 6、如何区别一条访问数据存储器的指令是访问片RAM还是访问片外RAM?
7、8051的存储器由哪几部分组成?片内RAM分为哪几个性质和用途不同的区域?
8、在8051单片机中,什么是特殊功能寄存器?特殊功能寄存器与其它片内RAM单元有什么区别?
9、简述堆栈工作过程和SP的作用。 10、EA引脚有何功能?
11、51系列程序存储器的编址规律是怎样的?如何知道单片机执行指令时,是从片内ROM中取指令,还是从片外ROM中取指令?
12、访问位地址20H和字节地址20H的区别是什么?
13、按照同一优先级中的优先权排队顺序列出MCS-51的中断源和相应的中断入口地址 14、MCS-51定时器/计数器作定时器以及计数器使用时,计数脉冲由谁提供?这与什么因素有关?
15、已知振荡器振荡频率为12MHz,要求定时器/计数器0产生10ms的定时,试编写初始化程序
首先计算TH0、TL0的初值,TH0=D8H,TL0=F0H;其次确定方式寄存器TMOD的值为01H;最后写出初始化程序: START: MOV TL0,#0F0H MOV TH0,#0D8H MOV TMOD,#01H SETB TR0
16、简述定时器/计数器0、1的4中工作方式的特点。 17、综述P0、P1、P2、P3口各有哪几个功能? 18、为何说P1口是“准双向接口”?
19、波特率表示什么?8051单片机的串口在4种工作方式下的波特率分别如何确定? 20、如异步通信,每个字符由11位组成,串行口每秒钟传送250个字符,则波特率为多少?
答:波特率是每秒钟传送的二进制数的位数,所以波特率为11×250=2750
21、设串行异步通信的传送速率为2400波特,传送的是带奇偶校验的ASCII码字符,每个字符包含10位(1个起始位,7个数据位,1个奇偶校验位,1个停止符),问每秒钟最多可传送多少个字符?
答:2400/10=240
22、串行数据传送的主要优点和用途是什么? 23、MCS-51有几个中断优先级?如何设定?
24、MCS-51单片机CPU响应中断后,由硬件自动执行哪些操作? 25、MCS-51指令系统主要有哪几种寻址方式?请举例说明。
26、中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别? 27、试用三种方法,实现累加器A与寄存器B的内容交换。
方法一、XCH A, B
方法二、MOV R0, B MOV B, A MOV A, R0
方法三、PUSH ACC PUSH B POP ACC POP B 28、何谓堆栈?为什么要设置堆栈?栈区是怎么样确定的?数据进栈、出栈有何种规律?出
栈用什么指令?进栈用什么指令?进栈、出栈时堆栈指针将怎样变化? 29、基址寄存器加变址寄存器间接寻址指令中使用PC与DPTR有何区别? 30、区分下列指令的不同功能:MOV A,#24H与MOV A,24H 31、分析8051单片机数据传送指令中MOV、MOVC、MOVX的作用。 32、JMP、AJMP、SJMP指令有何区别?
33、用于外部数据传送的指令有哪几条?有何区别?
34、MCS-51单片机扩展系统中,为什么P0口要接一个8位的锁存器,而P2口却不接? 35、单片机系统中的定时和计数功能有何区别?分别适用于什么场合?简述其工作原理。 36、说明MCS-51汇编语言源程序的基本格式。
37、请举例说明MCS-51汇编语言中伪指令的作用。 38、简述/PSEN控制信号线的作用。
39、基址寄存器加变址寄存器间接寻址指令包括哪两种?请列举说明。
40、A/D转换接口中采样保持电路的作用是什么?省略采样保持电路的前提条件是什么? 41、单片机用于外界过程控制中,为何要进行A/D、D/A转换? 42、MCS-51外扩的程序存储器和数据存储器可以有相同的地址空间,但不会发生数据冲突,为什么?
43、在既有片内程序存储器、又扩展片外程序存储器的情况下,两部分存储器的编址如何进行?
44、用线选法和译码扩展存储器各有什么特点?
45、简述MCS-51单片机扩展时/WE、/RD控制信号线的作用。 46、请说明动态扫描和静态扫描显示方式的特点。
47、区分下列指令的不同功能:MOV A,R0与MOV A,@R0。 48、访问位地址2BH和字节地址2BH的区别是什么? 49、简述中断系统初始化步骤
1、 置位相应中断源的中断允许 2、 设定所有终端源的中断优先级
3、 若为外部中断,则应规定低电平还是负边沿的中断触发方式
50、简述键盘的工作原理。
二、 程序题
1、 设被加数和加数分别在以ADR1和ADR2为初址的片内数据存储器中,自低字节起,由低
字节依次存放;他们的字节数为L;请编程将他们加得的和放在原存放被加数的单元中。 MOV R0,#ADR1 MOV R1,#ADR2 MOV R2,L LOOP: MOV A,@R0
ADDC A,@R1 MOV @R0,A INC R0 INC R1
DJNZ R2,LOOP DONE:
2、设被减数和减数分别在以ADR1和ADR2为初址的片内数据存储器中,自低字节起,由低字节依次存放;他们的字节数为L;被减数够减,即最稿高字节想减时不至借位;请编程将他们减得的差放在原存放被减数的单元中
MOV R0,#ADR1
MOV R1,#ADR2 MOV R2,#L CLR C
LOOP: MOV A,@R0 SUBB A,@R1 MOV @R0,A INC R0 INC R1 DJNZ LOOP DONE:
3、将ROM中自2000H单元起的100个数,按序移至片外RAM自2080H单元起的内存区间去 MOV DPTR,#2000H MOV R1,#64H MOV R2,#0 LOOP: MOV A,R2
MOVC A,@A+DPTR MOV R3,A MOV A,#8OH ADD A,R2 MOV DPL,A MOV A,R3 MOVX @DPTR,A INC R2
MOV DPL,#0 DJNZ R1,LOOP DONE:
4、编写程序将片外数据存储器地址为1000H~102FH的数据块,全部搬迁到片内RAM30H~5FH中,并将原数据块区域全部清零。
START: MOV DPTR,#1000H MOV R0,#30H MOV R1,#30H LOOP: MOVX A,@DPTR
MOV @R1,A CLR A
MOVX @DPTR,A INC DPTR INC R1
DJNZ R0,LOOP
5、设有100个有符号数,连续存放在以2000H为首址的片外数据存储器中,试编程统计其中正数、负数和零的个数,统计的个数分别放在R0、R1、R2中。
START: CLR A MOV R0,A MOV R1,A MOV R2,A MOV DPTR,#2000H MOV R3,#100 LOOP: MOVX A,@DPTR JZ ZERO JB A.7,NEG INC R0 SJMP LL
ZERO: INC R2 SJMP LL NEG: INC R1 LL: INC DPTR
DJNZ R3,LOOP
6、 将片内RAM60H~69H单元中的10个数相加,和的低8位存入7EH,高8位存入7FH。
MOV 7FH,#00H
MOV R1,#09H MOV R0,#60H MOV A,@R0 INC R0 LOOP: ADD A,@R0 JNC LP1 INC 7FH
LP1: INC R0 DJNZ R1,LOOP MOV 7EH,A DONE: …
7、 将寄存器A中的十六进制数(该数为0—F)转换为ASCII码,转换后的数仍然放在
寄存器A中。
MOV R2,A
ADD A,#0F6H MOV A,R2 JNC AD30 ADD A,#07H
AD30: ADD A,#30H
8、 编写程序,统计自P1口输入的数字串中的正数、负数及零的个数,统计的个数分别
存放在R0、R1、R2三个工作寄存器中。 START: CLR A MOV R0,A MOV R1,A MOV R2,A ENTER: MOV A,P1 JZ ZERO JB P1.7,NEG INC R0 SJMP ENTER
ZERO: INC R2 SJMP ENTER NEG: INC R1 SJMP ENTER
9、 编写程序,将外部数据存储器中的5000H—50FFH单元全部清零
MOV DPTR #5000H
MOV R0,#00H CLR A
LOOP: MOVX @DPTR,A INC DPTR DJNZ R0,LOOP
HERE:: SJMP HERE (RET ,SJMP $ 等) 10、分析下列程序的功能 PUSH ACC PUSH B POP ACC POP B
是通过累加器ACC与寄存器B数据交换
11、如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后:
POP DPH; POP DPL; POP SP;
则:(DPH)= ___3CH___;(DPL)=_____5FH_____;(SP)=_____50H_____;
12、如果(DPTR)=5678H,(SP)=42H,(3FH)=12H ,(40H)=34H,(41H)=50H,(42H)=80H,则执行下列指令后:
POP DPH POP DPL RET