一、基础知识
1、AT89C51、87C51、80C51和80C31单片机的相同之处是——制造工艺都为CHMOS,都有128字节片内RAM、两个定时/计数器、4个8位I/O并行口,一个串行口和5个中断源。
主要区别是:① 89C51片内4K字节FLASHROM;
② 87C51片内4K字节EPROM;
③ 80C51片内4K字节掩膜ROM;
④ 80C31片内无程序存储器。
2.80C51单片机内部主要包含CPU、程序存储器、数据存储器、可编程I/O口、中断控制器、定时器/计数器、串行口等。
具体回答:
①一个8位CPU;
② 4KB ROM or EPROM(8031无ROM);
③ 128字节RAM数据存储器;
④ 21个特殊功能寄存器SFR;
⑤ 4个8位并行I/O口,其中P0、P2为地址/数据线,可寻址64KB 程序存储器和64KB 数据存储器;
⑥一个可编程全双工串行口;
⑦具有5个中断源,两个优先级,嵌套中断结构;
⑧两个16位定时器/计数器;
⑨一个片内振荡器及时钟电路。
3.80C51单片机的CPU主要包含运算器(算术逻辑单元ALU、累加器ACC、寄存器B和程序状态字PSW)、控制器(时钟电路、复位电路、指令寄存器和指令译码器、程序计数器PC、堆栈指针SP、数据指针寄存器DPTR)。
CPU中的ALU能完成的算术运算有“+、-、×、÷”;逻辑运算有“取反、与或、异或”。
4.对于8051来说, 程序存储器(ROM)的内部地址为 0000H~0FFFH, 共 4 KB;外部地址为 1000H~FFFFH, 共 60 KB。如果EA引脚接低电平则不使用内部程序存储器,而直接使用外部程序存储器;如果EA引脚接高电平,则当程序计数器由内部 0FFFH执行到外部 1000H 时, 会自
动跳转。对于 8751 来说, 内部有 4 KB的EPROM, 将它作为内部程序存储器,外部最多可以扩展60KB程序存储器。
8031 内部无程序存储器, 必须外接程序存储器,使用时EA引脚需要接低电平,8031 最多可
外扩 64 KB程序存储器。
程序存储器中 6 个单元地址具有特殊用途, 是保留给系统使用的。0000H是系统的启动地址, 一般在该单元中存放一条绝对跳转指令。0003H、000BH、 00013H、001BH和 0023H对应 5 种中断源的中断服务入口地址。
5.80C51单片机数据存储器可划分为:片内256 B数据存储器地址空间,片外最大可扩展64 KB的数据存储器地址空间。
MCS-51 单片机片内RAM为 256 字节, 地址范围为00H~FFH, 分为两大部分: 低 128 字节(00H~7FH)为真正的RAM区;高 128 字节(80H~FFH)为特殊功能寄存器区SFR。
在低 128 字节RAM中, 00H~1FH共 32个单元是 4 个通用工作寄存器区。每一个区有 8 个通用寄存器R0~R7;R0和R1能用作间接寻址寄存器用,但R2~R7不能。
单片机系统开机复位后,CPU使用的是第0组工作寄存器。它们的地址是 00~07H。CPU通过对程序状态字PSW中RS1和RS0的设置来确定和改变当前工作寄存器组(RS1 RS0=00时,使用第0组工作寄存器;RS1 RS0=01时,使用第1组工作寄存器;RS1 RS0=10时,使用第2组工作寄存器;RS1 RS0=11时,使用第3组工作寄存器)。
20H~2FH共 16个单元是可位寻址区;30H~7FH共 80个单元称为数据缓冲区。
外部数据存储器一般由静态RAM构成,其容量大小由用户根据需要而定, 最大可扩展到 64 KB , 地址是 0000H~0FFFFH。 CPU通过MOVX指令访问外部数据存储器, 用间接寻址方式。 R0、R1和DPTR都可作间接寄存器。注意, 外部RAM和扩展的I/O接口是统一编址的, 所有的外扩I/O口都要占用 64 KB中的地址单元。
6.MCS-51单片机有4个8位双向I/O接口P0~P3,共32根输入/输出线,每一条I/O口线都能独立使用(就是都可以位寻址的意思),且都由数据锁存器、输入缓冲器和输出驱动器等组成。4个口线都可以作为通用口使用。其中只有P1口是真正的用户口。而对于其他三个口线。
①当外接程序存储器或数据存储器时,P0口作为数据口线,同时P0口也分时复用地址线的低8位;P2口作为地址线高8位。
② P3口有第二功能:串行接收和发送、外中断0和1、计数器输入0和1、外部数据存储器写读选通。
7.当MCS-51单片机的CPU 访问外部存储器时,ALE 用来锁存P0口输出的地址信号的低8位。
8.单片机并行输入、输出接口带载能力: ① P0 :8个LSTTL 负载;
② P1、P2和P3口:4个LSTTL 负载。
9.CPU 总线信号在时间上的顺序关系称为时序(CPU 的控制器实质是一个复杂的同步时序电路,所有工作都是在时钟信号控制下进行的)。每执行一条指令,CPU 的控制器都要发出一系列特定的控制信号,这些控制在时间上的相互关系就是CPU 的时序。
(1) 振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期。 (2) 状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。 (3) 机器周期: 一个机器周期包含 6 个状态周期S1~S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU 可以完成一个独立的操作。
(4) 指令周期: 它是指CPU 完成一条操作所需的全部时间。 每条指令执行时间都是有一个或几个机器周期组成。
MCS - 51 系统中, 有单周期指令、双周期指令和四周期指令。
当单片机的时钟频率为12MHz 时,一个机器周期是多少1μs(微秒);ALE 引脚的输出频率是多少2MHz ;当单片机的时钟频率选择6MHz 时,一个机器周期为2μs ALE 引脚的输出频率是多少1MHz 。(机器周期=12/晶振频率)。
10. MCS-51单片机的,,EA ALE PSEN 信号各自的功能: 都是控制总线
① PP V EA /:访问内部程序存储器的控制信号/编程电压输入端。1=EA 时,CPU 从片内读取指令,0= CPU 从片外读取指令。
② PROG ALE /:地址锁存允许/编程信号线。 ③ PSEN :外部程序存储器读选通信号。
RSE/:复位输入信号/掉电保护后备电源引脚。
④VPD
11.特殊功能寄存器PSW中:
Cy—进位标志位、AC—辅助进位标志位、F0—用户标志位、OV—溢出标志位、P—奇偶
标志位。
12、MCS-51指令系统:
①按功能分为5类,数据传送类、算术操作类、逻辑操作类、控制转移类和位操作类;
②具有7种寻址方式;
立即寻址,寻址范围是程序存储器;
直接寻址,寻址范围是内部RAM低128字节和高128字节;
寄存器寻址,寻址范围是四组工作寄存器R0~R7;
寄存器间接寻址,寻址范围是内部RAM的低128和外部RAM低64K可寻址空间;
基址寄存器加变址寄存器间接寻址,寻址范围是程序存储器;
相对寻址,寻址范围是以下一条指令为相对地址的-128~+127字节范围内;
位寻址,寻址范围是可位寻址空间,包括内部RAM的可寻址位,特殊功能寄存器中的可寻址位。
13、伪指令又称汇编程序控制译码指令,属于说明性汇编指令,汇编时不产生机器指令代码,不影响程序的执行,仅产生供汇编用的某些命令,在汇编时执行某些特殊操作。
常用的伪指令有:
汇编起始地址伪指令 ORG
汇编终止伪指令 END
汇编赋值伪指令 EQU
定义字节伪指令 DB
定义字伪指令 DW
定义空间伪指令 DS
位定义伪指令 BIT
14.对80C51单片机,访问内部数据存储器可用直接寻址方式,也可以用寄存器间接寻址方式;但访问特殊功能寄存器必须用直接寻址方式;访问片外数据存储器只能用寄存器间接寻址方式。
15.访问片外数据存储器的间址寄存器可以是R0、R1或DPTR,但使用R0、R1时,寻指范围是00H~0FFH(256B);而使用DPTR寻指范围是0000H~0FFFFH(64KB)。
16.80C51单片机的压栈指令的作用是将数据存入堆栈中。其执行过程是先将堆栈指针(SP)的内容加1,然后将直接寻址单元中的数据送到堆栈指针(SP)所指的单元中。
17. 单片机系统复位后,堆栈指针(SP)= 07H,也就是说,单片机内部RAM的08H~7FH 都可以作为堆栈使用。但通常,我们把堆栈区设置的要高一些(如:60H以上),其它的RAM区,作为数据存储器使用。
18.指令系统中有两条查表指令,可以查找程序存储器中的固定数据或“表格”,其寻址方式都是基址寄存器加变址寄存器间接寻址方式。其中基址寄存器分别是PC或DPTR,变址寄存器是累加器A。
MOVC A,@A+PC
MOVC A,@A+DPTR
19.80C51单片机的中断源分别为:两个外部输入中断源、两个片内定时/计数器的溢出中断源和一个片内串行口中断源。五个中断源的顺序和入口地址分别是:
①外部中断0的入口地址是03H;
②定时器/计数器0中断的入口地址是0BH;
③外部中断1的入口地址是13H;
④定时器/计数器1中断的入口地址是1BH;
⑤串行口中断的入口地址是23H;
20. 若CPU允许响应中断,CPU必须在现行的指令执行完后,把断点处的PC值(即下一条应该执行的指令地址)推入堆栈保护起来,这一步是硬件自动完成的。
编写中断子程序时,子程序的末尾要由“RETI”指令结束,以便清除相应的中断标志位。如果采用“RET”指令结束中断程序,则不能清除相应的中断标志位,有可能使系统再次进入相应的中断程序。
21.中断优先级处理的原则是:当两个或者两个以上的中断源同时提出中断请求时,计算机首
先为优先权高的中断源服务,服务结束后,再响应级别低的中断源。
22.80C51单片机内部有2个16位的可编程加法定时器/计数器,共有4种工作方式。
其中方式0是13位的定时/计数器方式、方式1是16位的定时/计数器方式、方式2是8位可自动装入初值的定时/计数器方式、方式3 中T0为8位的定时/计数器方式,T1停止工作。
其中T1的方式2常用作串行口的波特率发生器。
23.特殊功能寄存器TH0、TL0、TH1和TL1分别是定时/计数器0和定时/计数器1的高8位和低8位;通常要放置计数的初值。
24.串行通信即所传送的数据的各位按顺序一位一位的发送或接收。串行通信分同步和两种方式。
25.在80C51扩展系统中,程序存储器和数据存储器虽然共用16位地址线和8位数据线,但由于数据存储器的操作由读(RD)和写(WR)信号控制,而程序存储器由读选通信号(PSEN)控制,因此,两者虽然共处同一个地址空间,但由于控制信号不同,所以不会发生总线冲突。
26.MCS-51单片机外扩I/O接口电路时,使用统一编址的方式,每一接口芯片中的一个功能寄存器(端口)的地址就相当于一个RAM单元。
27.由于单片机工作速度快,数据在数据总线上保留的时间十分短暂,无法满足慢速外设的数据接收。一般I/O电路应具有数据输出锁存器,以保证接收设备接收。
28.当输入设备向单片机输入数据时,数据总线上面可能“挂”有多个数据源,为不发生冲突,只允许当前正在进行数据传送的数据源使用数据总线,其余的应处于隔离状态,所以输入数据采用三态缓冲方式。
29.8255A可编程并行I/O接口芯片,内部包括三个并行数据输入/输出端口,且每个端口都是8位的;两个工作方式控制电路,一个读/写控制电路和8位总线缓冲器。
30.8255A可编程并行I/O接口芯片有三种工作方式,采用哪种工作方式由方式控制字(寄存
器)来决定。
31. 8155 可编程并行I/O接口芯片,内部具有256个字节RAM,两个8位、一个6位可编程并行I/O口和一个14位的减法计数器。
32.8155可编程并行I/O接口芯片的I/O方式分为基本I/O和选通I/O两种工作方式。可对片内任一寄存器读写,端口地址由A2、A1、A0三位决定
33.常用的LED数码显示器为8段(或7段,8段比7段多了一个小数点“h”段),有共阳极和共阴极两种。
显示器有段码线和位码线。段码线控制显示的字型,位选线控制该显示位的亮或暗。
常用的显示方式有静态显示和动态显示两种。
34.静态显示各位的公共端连接在一起(接地或+5V),每位的段码线(a~h)分别与一个8位的锁存器输出相连。显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段码为止,显示的亮度高。
35.动态显示所有位的段码线相应段并在一起,由一个8位I/O口控制,形成段码线的多路复用,各位的公共端分别由相应的I/O线控制,形成各位的分时选通,显示的亮度相对较低。
36.单片机的键盘接口电路常采用的有独立式按键接口和行列式键盘接口。
37.对于行列式键盘,由于行、列线为多键共用,各按键彼此将相互发生影响,必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。
38.行列式键盘按键的识别方法有扫描法和线反转法。
39.单片机键盘/显示器接口可利用并行I/O芯片实现;可以利用利用单片机的串行口实现;也可以利用利用通用键盘/显示器接口芯片实现。
40.D/A转换器有两种输出形式:电压输出形式与电流输出形式。对电流输出的D/A转换器,如需模拟电压输出,可在其输出端加一个I-V转换电路。
41.D/A转换需要一定时间,这段时间内输入端的数字量应稳定,为此应在数字量输入端之前设置锁存器,以提供数据锁存功能。根据芯片内是否带有锁存器,可分为内部无锁存器的和内部有锁存器的两类。
42.DAC0832是具有两个输入数据寄存器的8位DAC,可双缓冲输入、单缓冲输入或直接数字输入;单一电源供电(+5~+15V)。能直接与MCS-51单片机相连。
43.ADC0809是逐次比较式8路模拟输入、8位输出的A/D转换器。
44.ADC0809主要引脚功能是
① IN0~IN7:8路模拟信号输入端。
② D0~D7: 8位数字量输出端。
③ C 、B 、A:控制8路模拟通道的切换,C、B、A=000~111分别对应IN0~IN7通道。
④ OE、START、CLK:控制信号端,OE为输出允许端,START为启动信号输入端,CLK为时钟信号输入端。
⑤ VR(+)和VR(-):参考电压输入端。
45.单片机对ADC0809的控制(启动和读转换数据):首先用指令选择ADC0809的一个模拟输入通道,当执行MOVX @DPTR,A时,单片机的WR信号有效,产生一个启动信号给0809的START 脚,对选中通道转换。
转换结束后,0809发出转换结束EOC信号,该信号可供查询,也可向单片机发出中断请求;当执行指令:MOVX A,@DPTR,单片机发出RD信号,加到OE端高电平,把转换完毕的数字量读到A中。
46.单片机读取ADC0809的转换数据可以采用查询方式、中断方式,也可以采用延时方式。
47.WAVE软件将源程序的编辑、编译、下载和调试集成在一起(即可以在一个环境完成)。调
试程序时,可以观察到寄存器、RAM、SFR、外部RAM、程序存储器、外部端口、定时器等相关内容,有丰富的窗口显示功能,可以动态的展示仿真过程。
48.单片机软硬件实验的常用设备有:计算机、仿真器、仿真头和实验电路板等。
49.使用WAVE软件调试程序的步骤如下:
①建立程序
选择【文件/新建文件】功能,在编辑窗口中输入汇编程序。
②保存程序
选择【文件/保存文件】或【文件/另存为】功能,给出文件所要保存的位置。
③建立项目
选择【文件/新建项目】功能,新建项目会自动分三步进行。
a.加入模块文件(文件的扩展名要用“ASM”);
b.加入包含文件(文件的扩展名要用“ASM”);
c.保存项目(文件无需扩展名)。
50. 使用WAVE软件,需要设置项目
选择【仿真器设置】功能或按仿真器设置快捷图标。
①在语言设置栏选择“伟福汇编器”;
②在目标文件栏选择一般选缺省地址,编译可以生成BIN和HEX格式的目标文件;
③在仿真器设置栏选择所使用的仿真器、仿真头和CPU类型;
④在通信设置栏选择软件模拟或硬件模拟,硬件模拟还需选择串行通信口和串行通信波特率。
二、单项选择题
51. 设80C51采用异步通信方式1--3,已知其每秒传送xxxx个字符,则其波特率
A ;
B ;
C ;
D .
52. 设8051内部RAM可寻址位(30H)=1 ,执行位操作指令:JBC 30H,LOOP 后,可寻址位(30H)=?
A ;
B ;
C ;
D .
53. 设(A)=93H ,执行下面程序段后,(A)=?
ANL A,#07H
CPL A
A ;
B ;
C ;
D .
54. 查表指令的寻址方式是?
A ;
B ;
C ;
D .
55. 指令MOV 50H, # data 的机器码是?
A ;
B ;
C ;
D .
56. 特殊功能寄存器及其地址:P0 (80H);SCON (98H);SBUF (99H);A(0E0H) ,不能位寻址的是; ( 能位寻址的是。)
A ;
B ;
C ;
D .
57. 开外部中断1初始化程序正确的
A. MOV IE,#XX
B. MOV DPH,# XX
C. MOV A,# XX
D. MOV TH0,# XX
58. 定时器/计数器T0采用工作方式2(8位自动重装载操作方式),若对外部事件计数到XX申请中断,初始化程序正确的是:
A. MOV TL0,#
B. MOV TL0,#
MOV TH0,# MOV TH0,#
C. MOV TL0,#
D. MOV TL0,#
MOV TH0,# MOV TH0,#
三、程序分析题
1、程序段如下,试问:程序执行后寄存器A和B中的数据是多少?
MOV 30H, #data1
MOV 31H, #data2
MOV A,30H
MOV B,31H
MUL AB
2、设单片机内部RAM 60H单元中的内容是data1,50H单元中的内容是data2。执行完下列程序后,内部RAM 60H 单元的内容是什么?程序状态字寄存器中 Cy、OV和P中的内容是什么?
CLR C
MOV A,60H
MOV R0 , #50H
ADD A ,@R0
MOV 60H , A
3、说明每条指令执行后的结果。
MOV SP ,#data1;
MOV R1,SP
MOV A ,#01H;
PUSH ACC ;
PUSH 1
四、简单程序设计题
1.编写程序段,将外部(或内部)RAM存储器中的连续xx个单元清零,其首地址设为xxxxH单元。
2.试编写程序,将内部(或外部)RAM中xxH单元开始的??个单字节数据依次与yyH单元为起始地址的??个单字节数据进行交换。
3.两个无符号双字节数相加,设被加数存放于内部RAM的xxH(高位字节)、xx+1H(低位字节)。加数存放于内部RAM的yyH(高位字节)、yy+1H(低位字节),和数要求存入内部RAM的??H (高位字节)和??+1H(低位字节)单元中(设和数不超过两字节),试编写程序段。
五、实验题
1.实验3 ;实验4 .
二、程序分析或编写简单程序(执行程序的每一条,要求了解对应寄存器,RAM或外部RAM、SFR 和PSW相应标志位的变化)
1.编写一段循环程序,将内部RAM的20H至30H单元的内容依次存入外部RAM的40H至50H单元中。
答: ORG XXXXH
MOV R0,#20H
MOV R1,#40H
MOV R7,#10H
LOOP: MOV A,@R0
MOVX @R1,A
INC R0
INC R1
DJNZ R7,LOOP
END
2.设被加数存放在内部RAM的20H、21H单元,加数存放在22H、23H单元,若要求和存放在24H、25H、26H中(注:存放顺序为低位存放在低地址),请编写16位数相加的程序。
答: ORG XXXXH
MOV A,20H
ADD A,22H
MOV 24H,A
MOV A,21H
ADDC A,23H
MOV 25H,A
MOV A,#00H
ADDC A,#00H
MOV 26H,A
END
3、试编写两个16位无符号数的减法程序,被减数存于内部RAM的51H和50H单元,减数存于41H和40H单元,结果存于内部RAM的31H和30H单元(数的存放顺序为高位在高地址)。解: CLR C
MOV A,50H
SUBB A,40H
MOV 30H,A
MOV A,51H
SUBB A,41H
MOV 31H,A
4、在外部RAM的1000H和1001H单元存有一个双字节数(高位字节存于高地址单元)。将其求补后存于内部RAM的30H、31H单元。
解: MOV DPTR,#1000H
MOVX A,@DPTR
CPL A
INC A
MOV 30H,A
INC DPTR
JZ ZERO
MOVX A,@DPTR
CPL A
MOV 31H,A
SJMP LOOP
ZERO: MOVX A,@DPTR
CPL A
INC A
MOV 31H,A
LOOP: END
5、编写一段循环程序,将外部RAM的20H至2FH单元的内容依次存入外部RAM的40H至4FH 单元中。
解: MOV R0,#20H
MOV R1,#40H
MOV R7,#10H
LOOP: MOVX A,@R0
MOVX @R1,A
INC R0
INC R1
DJNZ R7,LOOP
END
6、编写程序段,将外部存储器中的连续50个单元清零,其首地址设为8000H单元。
答: CLEAR: CLR A
MOV DPTR,#8000H
MOV R2, #50
CLEAR1: MOVX @DPTR,A
INC DPTR
DJNZ R2, CLEAR1
7、试编写程序,将内部RAM中30单元开始的16个单字节数据依次与50H单元为起始地址的16个单字节数据进行交换。
答: MOV R0,#30H
MOV R1,#50H
MOV R2,#10H ;(或#16)
LOOP :MOV A,@R0
XCH A,@R1
XCH A,@R0
INC R0
INC R1
DJNZ R2,LOOP
8.两个无符号数双字节数相加,设被加数存放于内部RAM的40H(高位字节)、41H(低位字节)加数存放于内部RAM的50H(高位字节)、51H(低位字节),和数存入内部RAM的3FH (高位字节)、40H(次高位字节)和41H(低位字节)单元中,试编写程序段。
答:START: CLR C
MOV R0,#41H
MOV R1,#51H
MOV A,@R0
ADD A,@R1
MOV @R0,A
DEC R0
DEC R1
MOV A,@R0
ADDC A,@R1
MOV @R0,A
DEC R0
DEC R1
CLR A
ADDC A,#00H
MOV @R0,A
9、编写程序段,将外部存储器1200H单元中的高四位清零。其余位不变。
答: MOV DPTR,#1200H
MOVX A,@DPTR
ANL A,#0FH
MOVX @DPTR,A
10、编写程序段,将片内40H ~ 60H单元中的内容送到片外RAM 2000H为首的区域中。
答: MOV R1,#40H
MOV R0, #20H
MOV DPTR,#2000H
LOOP: MOV A,@R1
MOVX @DPTR,A
INC R1
INC DPTR
DJNZ R0,LOOP
11、编程完成代数运算5x+3y,运算结果存于内部RAM的50H(存高八位)和51H(存低八位)
单元,设无符号单字节数x和y分别存于寄存器R1和R2中。
答:
MOV A,R1
MOV B,#5
MUL AB
MOV 50H,B
MOV 51H,A
MOV A,R2
MOV B,#3
MUL AB
CLR C
ADD A,51H
MOV 51H,A
MOV A,B
ADDC A,50H
MOV 50H,A
12、编写程序,若外部数据存储器ST单元中的一个字节的有符号数为正数,则在清零用户标志位F0,否则置1标志位F0。
答:
MOV DPTR,#ST
MOVX A,@DPTR
MOV C, ACC.7
JC FU
CLR F0
AJMP JIESHU
FU: SETB F0
JIESHU: ……
13、编写程序将外部数据存储器WAICUN单元中的一个字节无符号数(设此数小于127)变成负数再存入NEXT单元中。
答:
MOV DPTR,# WAICUN
MOVX A,@DPTR
CPL A
INC A
MOV DPTR,# NEXT
MOVX @DPTR,A
14、编写程序段,将内部RAM存储器中的30H—32H连续3个单元依次存入数据0CH、5、1;并通过查表程序查出它们的共阴极显示码存入内部RAM存储器中的50H—52H连续3个单元。
答: MOV R1,#50H
MOV R0,# 30H
MOV @R0,#0CH
INC R0,
MOVX @R0,#5
INC R0,
MOVX @R0,#1
MOV R0,#30H
MOV DPTR,#TABL
MOV R7,#3
LOOP : MOV A,@R0
MOVC A,@A+DPTR
MOV @R1,A
INC R0
INC R1
DJNZ R7,LOOP
……
TABL: DB 3FH,06H,5BH,4FH,66H,6DH ;0,1,2,3,4,5
DB 7DH,07H,7FH,6FH,77H,7CH ;6,7,8,9,A,B
DB 58H,5EH,7BH,71H,00H,40H ;C,D,E,F, ,-
15.在内部 RAM的21H 单元开始存有一组单字节不带符号数,数据长度为20H,要求找出最大数存入60H单元。(此题稍难,根据自己掌握本科知识程度,选则性阅读)。
答: ORG XXXXH
SIZE EQU 20H
ARRAY EQU 21H
FLAG BIT 0
SORT: MOV R0,#ARRAY
MOV R7,#SIZE-1
CLR FLAG
GOON: MOV A,@R0
MOV R2,A
INC R0
MOV B,@R0
CJNE A,B,NOTEQUAL
SJMP NEXT
NOTEQUAL: JC NEXT
SETB FLAG
XCH A,@R0
DEC R0
XCH A,@R0
INC R0
NEXT:DJNZ R7,COON
JB FLAG,SORT
MOV 60H,40H
END
16、对内部RAM中起始地址为50H的20个无符号数进行升序排序。(此题稍难,根据自己掌握本科知识程度,选则性阅读)。
答: START: CLR 00H
MOV R7,#20
MOV R0,#50H
LOOP: MOV A,@R0
MOV 2BH,A
INC R0
MOV 2AH,@R0
CLR C
SUBB A,@R0
JC NEXT
MOV @R0,2BH DEC R0 MOV @R0,2AH INC R0
SETB 00H NEXT : DJNZ R7,LOOP JB 00H ,START END 三、硬件电路及连线
1、89C51单片机的 最小系统电路图(即晶
振复位电路图)。 (见图3-1)
2、80C31单片机的 最小系统电路图(即晶 振复位和外接程序存储
器电路图,以接2716 为例)。(见图3-2)
3、画静态RAM 6264 与单片机8051的硬件连 线图。(见图3-3)
4、画8255A 和89C51单片机的连线图。(见图
3-4) (如图连线, A 口地址是:0FF7CH ;B 口地址是:0FF7DH ;C 口地址是:0FF7EH,控制寄存
(图3-3)
A 口
器地址是:0FF7FH )。
5、画8155A 和89C51单片机的连线图。(见图3-5)
(如图,选单片机P2.1接8155的 /IO M ,P2.2接8155的片选 CE ,则8155内部RAM 的地址是:1111 1001 0000 0000 B ~1111 1001 1111 1111B ,即0F900H ~0F9FFH ,命令状态寄存器地址是:0FB00H ,A 口地址是:0FB01H ;B 口地址是:0FB02H ;C 口地址是:0FB03H ;定时器/计数器低8位地址是:0FB04H ;定时器/计数器高8位地址是:0FB05H )。
要求:会编程对 8155的内部RAM 读写 操作,对三个口线进行 读写操作。
6、用80C51定时器T0每隔20ms 控制ADC0809的IN0通道进行一次A/D 转换,试画出硬件电路图(器件已给出,请根据需要连线), 并编写初始化汇编程序。(此题为第7章作业题10,程序部
口
B 口
C 口