MCS96单片机实验指导书
MCS96单片机(8098)习题
陈博编写
北京航空航天大学
工程训练中心
第 1 页
MCS96单片机实验指导书
目 录
MCS96单片机习题及答案
习题一 8098单片机的系统构成………………………………..……..3 习题二 8098单片机指令系统
…………………………………...3
习题三 8098单片机汇编语言程序设计……………………………....5 习题四 8098单片机汇编语言程序设计………………………………..7 习题五 8098单片机的扩展技术………………………………………..8 习题六 数/模、模/数转换及其8098单片机的接口…………………..10
参考答案 ………………………………………………………….11
第 2 页
MCS96单片机实验指导书
MCS96单片机习题集
习题一 8098单片机的系统构成
1.1简述8098单片机CPU主要由那些部件构成?
1.2 8098单片机中的RALU是_________位? 围绕RALU设计的各寄存器的主要功能有那
些?
1.3简述8098单片机的CPU的A总线和D总线的位数及作用.
1.4 8098单片机的工作频率范围是从_____到________。内部时钟分为____、____、____
相时钟,它们分别是外部振荡频率的_______分频?该内部时钟被称为 ____________。
1.5已知有一单片机系统外接的振荡器频率为8MHZ,试问,此单片机系统的状态周期为
多少?
1.6单片机的存储空间地址是如何分配的(请用存储空间分配图进行说明)?请分别写
出8098单片机的存储空间地址范围及空间容量,专用寄存器存储空间地址范围及空 间容量,通用寄存器存储空间地址范围及空间容量。
1.7请说明18H,19H寄存器的用途。8098单片机的堆栈操作有何特点,堆栈是向高位
地址方向生长还是向低位地址方向生长?
1.8请给出8098单片机的上电/复位的程序入口地址为____________?芯片配置字节的
地址为__________?中断向量的地址范围是从______________到_______________。
1.9写出中断向量表中的各个地址所代表的中断方式。在各个中断向量地址中存放的数
据是___________数据?
1.10请说明单片机中CPU总线与系统总线的不同
1.11 8098单片机有那几种总线运行方式?请画出标准总线运行方式下的存储时序图。
说明该时序图与单片机最小系统设计之间的关系。
1.12为什么单片机要设置复位功能?如何实现单片机系统的复位?如何设计8098单片
机的复位电路?请设计出简单的单片机上电、手动复位电路。 1.13 8098单片机的I/O口包括那些?简述各I/O口的基本功能。 1.14 8098单片机的系统控制信号有哪几个?它们的功能分别是什么?
习题二 8098单片机指令系统
2.1 8098单片机能直接识别的语言是 _____________语言,而编程语言则为 _______________语言。 2.2 机器指令格式中,放在指令的第一个(最前面)字节数据被称为___________码,
它表明了指令_____________________?
2.3 8098单片机的操作数据类型共有___________种?它们分别是 ________________________?其中,短
整型操作数是__________位的 ______________数?其取值范围是_______________?整型数是_______位的 _____________数?其取值范围是_______________________?
2.4对于16位寄存器,要求其低位地址为________________,高位地址为 _______________.对于32位寄存
器,要求其最低位地址能为________________.
2.5 分别写出下列指令中的源操作数和目的操作数以及源操作数所使用的寻址方式。
LDB AL,#0A0H
第 3 页
MCS96单片机实验指导书
LD DX,#3000H MULU DX,AX,BX LDB AL,[DX]+ SUB DX,12[CX] ADD AX,1234H[BX] STB AL,1234H[BX] LDB AL,1234H[BX] LD BX,2100H[0]
2.6 判断下列指令是否正确,如果不对,请说明错误性质。 LD AX,8000H
LDB 6000H,#12 LD [BX],AX
ADD AX,BX,0FFFFH[0] STB BL,CX+20H ST AX,0A000H
MULU 1AH,22H,20H ADD 21H,23H
2.7设3000H单元至3004H单元中的内容依次为01H,11H,02H,22H,和33H,试写出当 最后一条指令执行后,AL,AH,BL,BH,CX,DX及3000H至3004H的内容。 LD DX,#3000H LDB AL,[DX]+ LDB AH,[DX]+ LD CX,[DX] LDB BL,02H[DX] LDB BH,3003H[0] ST CX,02H[DX]
2.8写出下列指令执行后的有关结果。 ⑴已知AL=12H ADDB AL,#88H
AL= , C= , Z= , N= , V= , VT= . ⑵已知BL=30H,DL=27H SUBB BL,DL
BL= , DL= , C= , Z= , N= , V= , VT= . ⑶已知AL=B5H , C=1 ADDCB AL , #33H AL= , C=
⑷已知CL=ABH , DL=32H
CMPB CL , DL
CL= , DL= , C= , Z= , N= , V= , VT= ⑸已知BL=7AH ,
ANDB BL , #0A7H
BL= , C= , Z= , N= , V= , VT= 2.9试写出实现以下操作要求的指令.
⑴将字节数据12H和35H分别存入3050H单元和3051H单元. ⑵将3000H单元中的数据转送至4500H单元中.
第 4 页
MCS96单片机实验指导书
⑶将3000H单元中的数据与3500H单元中的数据交换存放.
⑷将3100H单元和3150H单元中的数据相加后的和值存入3200H单元.
⑸将3200H单元中的数据处理为低4位为0, 且将高4位的数据送至3202单元的低4 位.
2.10分别写出以下几个程序段执行以后的结果.
⑴设存储字(3000H)=1234H, (3002H)=3456H, (3004H)=2364H, 下面程序段执行以后,BX=?,存储字(3004H)=?
LD BX, #3000 LD AX, [BX]+ ADD AX, {BX}+ ST AX, [BX]
⑵ 请写出执行完以下程序段以后,AL=?, BL=?, BH=? LDB BL, #03H LDB BH, #77H LDB AL,#44H ANDB AL, BL ORB AL, BH XORB BH, BL
⑶若BX=3C46H,下列指令执行后,BX=? C=? SHL BX, #02H SHR BX, #01H
2.11试编写一程序,实现将3100H单元和3101H单元中的数据相加,和值存入3102H单
元。
2.12试用16位加法指令编写一程序,实现将以3000H为起始地址的32位数据与以3004H
为起始地址的32位数据相加,结果存入以3008H为起始地址的单元中。 2.13试编程实现将3100H单元中的D1、D3、D5位置1,其他各位取反。 2.14试用移位和加法指令实现将3000H单元中的数据乘5。
习题三 8098单片机汇编语言程序设计
3.1汇编语言程序中,一条语句通常是由____________、_____________、___________、____________、
__________五部分构成的.
3.2汇编语言程序中,标号的意义是什么?书写标号有什么规定?
3.3什么是伪指令?8098有那些常用的伪指令,它们的功能是什么?试分别举例说明.
3.4编程实现数据3456789AH与12345678H相减,“差值”存入单片机的通用寄存器BX、AX中,要求程序中写
出必要的伪指令。
3.5设3000H和3001H单元中分别存有非压缩BCD码,试编程实现将这两个BCD码拼成 一个压缩的BCD码并存入3002H单元。(要求3001H单元的BCD码存入3002H单元的 高位。)
3.6设3000H单元和3001H单元中分别存有一无符号数,试编程找出其中较小数并存入 3002H单元。
3.7在DATA单元中,有一符号数据X,试编程并按以下关系式求出Y值后存入RESU单 元中。要求程序中写出必要的伪指令,上述符号地址的具体值自定。 1; 当X>0 Y={ 0; 当X=0 -1; 当X<0
第 5 页
MCS96单片机实验指导书
3.8试编程实现将以3000H为首地址的连续100个字节数据传送到以3100H为首地址的 存储区中。
3.9试编程,判断3000H单元中所存的16位数据中有多少位为 “1”,并将统计结果存入DX中。 3.10试编写一程序将3000H单元中所存的压缩BCD码转换为ASCII码存入3002H和 3003H单元中。(高位BCD码存高字节地址)。
3.11试编程计算若干个16位无符号二进制数之和,设数据个数存在3000H单元中,所 计算数据从3002H单元开始。 “和”存入3100H和3101H单元中。(设和值<65536) 3.12设有两个各有100个字节的无符号数组成的数据块分别存放在自BLOCK1和BLOCK2
单元开始的连续地址单元中,试编程并使用子程序调用的方法,分别找出这两个数 据块中的最大、最小数,存放在MAX1、MIN1、MAX2、MIN2单元中。(求最大、 最小数以子程序形式写出)
3.13设从BCDD单元开始的连续单元中存放着一组非压缩BCD码,试采用调用子程序方 法,将其转换为ASCII码存放在以ASCD开始的存储区中。转换数据个数存放在COUN 单元中.BCD码转换为ASCII码功能以子程序形式编写)
3.14在下述程序中画线处,填入适当操作数或指令,以实现程序功能并画出程序流程图 。程序功能为:将一组由8位构成的并存放在3000H开始的十六进制数转换为ASCII 码后存放到以3050H为首地址的存储区中。 ORG 2080H LDB CL,#16 LD BX,#3050H LD DX,#2FFFH LOOP: INC DX
LDB AL,[DX] SHRB AL,#4 SCALL ASCH
STB AL,[BX]+ LDB AL,[DX]
ANDB AL,____________ SCALL ASCH STB AL,[BX]+ DJNZ CL,LOOP HALT: SJMP HALT
ORG 2100H ASCH: CMPB AL,#10 JNC SDD
ADDB AL,_____________ SDD: ________________________ RET
3.15试在下述程序划线处填写操作数或指令以实现程序功能:找出一数据块中最大数存
入3000H单元中。设这一数据块由五符号字节数据组成,存放在以3002H为首地址 的存储区中,数据块长度存放于3001H单元中。 ORG 2080H LD BX,#3001H LDB AH,[BX]+
第 6 页
MCS96单片机实验指导书
LDB AL,_________ LOOP: INC BX
CMPB AL,[BX]
___________________ LDB AL,[BX] DECNT: DJNZ AH,LOOP LD BX,#3000H STB AL,[BX] HALT SJMP HALT
习题四 8098单片机外围子系统及其应用
4.1中断登记寄存器INT_PENDING有什么功能?对它进行操作要注意什么问题? 4.2什么是中断屏蔽?中断屏蔽寄存器INT_MASK的功能是什么? 4.3简述8098单片机响应中断的工作过程.
4.4中断优先的意义是什么?8098单片机各中断源的中断优先级是否可以改变?若可以则如 何实现?
4.5 中断响应周期是指单片机_____________________________________________. 4.6简述定时器T1、T2及WDT的工作特点。它们分别应用于什么场合?
4.7已知某单片机系统使用12M的晶振,请计算T1所记的每个数代表的时间为多少?记 满溢出所代表的时间又为多少?如果系统晶振为6MHZ,那么T1min和T1max又各为 多少?
4.8试编写一程序,利用T1定时使接在P2.5引脚上的发光二极管亮2秒钟后,熄灭2秒
钟,不断循环。已知该单片机系统使用12M的晶振。
4.9若外部计数脉冲从HSI.1引入,利用T2对它进行计数。当P0.7=0启动计数,P0.7=1 则停止计数,每当所记录的脉冲数为32768时,使COUNT寄存器加1,试编写程序 实现。 4.10填空
⑴高速输入部件HSI以定时器_______为时间基准来记录某一外部时间触发的 __________和______________。
⑵HSI工作时,外部事件发射的状态和时刻以_________________的顺序存放在 _______________和_____________寄存器中。
⑶HSI部件中,事件执行的顺序取决于____________________________。而在HSO部 件中, 事件产生的顺序取决于________________________________。 ⑷8098中的A/D转换器的启动方式分别有__________________和 ___________________.
⑸8098单片机中有两种方式的PWM输出,这两种方式分别是 _________________________和_________________________。 ⑹8098单片机的串行通讯共有___________种工作方式,它们分别是
__________________ 、________________、_____________________、 _________________________。
4.11对HSI_STATUS和HSI_TIME的读取顺序有什么要求?为什么?
4.12有一单片机系统使用10MHZ的外部振荡器正跳变为一触发事件,通过编程从HSI.0引
脚采集脉冲信号,现已将采集到的8个外部事件的时间数据存放在单片机的存储区中 以DATA开始的一组空间,如表所示
第 7 页
MCS96单片机实验指导书
?若采用每个正跳变作为一个事件的触发方式时,请计算输入脉冲的周期和频率分别为 多少?
?若采用每八个正跳变作为一个事件的触发方式时,请计算输入脉冲的周期和频率又分 别为多少?
DATA 3159H DATA+1 318BH DATA+2 31BDH DATA+3 31EFH DATA+4 3221H DATA+5 3253H DATA+6 3285H DATA+7 32B7H 4.13试编写一程序测量HSI.0引脚输入的脉冲的周期,已知系统晶振为12M。(使用查 询和中断方式各编写一个程序)
4.14试说明HSO中的保持寄存器及CAM和HSI中的保持寄存器和FIFO单元有什么不
同。一周期为131MS,占空比为50%的脉冲系列。已知系统晶振为12M。(使用查 询和中断方式各编写一个程序)
4.15 HSO可产生几种类型的中断?它们有什么不同?
4.16试编程满足HSO.0引脚输出一周期为131MS,占空比为50%的系列脉冲. 已知系统 晶振为12M。(使用查询和中断方式各编写一个程序)
4.17请说明软件定时器与T1在使用上有什么不同?当4个软件定时器同时打开并允许 中断时,在中断程序中,如何判定是由那个软件定时器引起的中断?
4.18设单片机系统的A/D参考电压Vref=5V,当ACH中的某一引脚电压为2V时,经 A/D转换器转换后的数字量为多少?
4.19编写一程序,采用查询方式实现ACH6通道的A/D转换,并按正常数据格式将转换
结果存入寄存器AX中。
4.20已知系统的状态周期为250ns,试编写一程序,在PWM引脚输出一周期为16.384ms 的正向锯齿波。
习题五 8098单片机的扩展技术
5.1单片机存储器的扩展编址有那几种方法?各有什么特点?
5.2试用线选法扩展8K×8位的程序存储芯片,要求选通的地址范围为2000H-
3FFFH。存储芯片自选,画出扩展逻辑图。
5.3试用地址译码法扩展16K×8位的程序存储芯片,要求选通的地址范围为2000H- 5FFFH。存储芯片选用2764,画出扩展逻辑图。
5.4试用线选法扩展4个I/O接口,其中两个为输入口,两个为输出口,要求分别占用的 地址范围为8000H、8001H。存储芯片自选,画出扩展逻辑图。 5.5简述8255A并行接口芯片的工作方式0、工作方式1的工作特点。
5.6对8255A的C口进行操作时,在什么情况下用普通写指令进行输出?什么情况下用 置位/复位命令进行写操作?
5.7设要求8255A芯片的A口工作在方式0输入,B口工作在方式1输出,C口高4位 为输出,低4位为输入。控制口地址为B003H,试写出该芯片的初始化程序段。 5.8试画出8255A芯片与8098单片机的接口逻辑图。
5.9若用8255A扩展8098的I/O口,8255的A口用作输入,口线的每一位接一开关。 用B口作输出,输出的每一位接一发光二极管LED。若要求某开关接“1”时B口
第 8 页
MCS96单片机实验指导书
相应位的发光二极管点亮(要求输出为“0”为点亮)。试画出接口逻辑图并写出相 应的程序。
5.10若要求8098单片机通过8255A芯片与四位七段数码管接口并以动态扫描方式显示 数据。试编写一程序,在数码管上显示“3579”。
5.11 8279是一种专用于____________________________________的可编程接口电路. 5.12试写出如图所示存储芯片62128和62256所占用的存储地址范围及芯片选通方式。
5.13试写出如图所示1片RAM存储芯片6264与2片ROM芯片2764各占用的存储地址范 围及芯片选通方式。
第 9 页
MCS96单片机实验指导书
习题六 数/模、模/数转换及其8098单片机的接口
6.1 DAC0832芯片具有什么功能?有那些起控制作用的引脚信号?
6.2试画出8098单片机与DAC0832单缓冲工作方式的接口电路并编写出一输出幅度为
0- 4V,占空比为0.4,周期为0.5S的矩形脉冲系列的程序。系统时钟为12MHZ。 6.3出ADC0809与8098单片机采用查询方式输入转换结果的接口电路。若要每隔0.5S 采集通道0的数据5次。并将结果存入以DATA为首地址的连续5个单元,请编程 实现。
6.4试画出ADC0809与8098单片机采用查询方式输入转换结果的接口电路.若要每隔
0.5S采集通道0的数据5次并将结果存入以DATA为首地址的连续5个单元中,请编 程实现.
第 10 页
MCS96单片机实验指导书
参考答案:
习题一 8098单片机的系统构成
1.1 8098单片机CPU主要由寄存器型的算术逻辑单元及CPU总线构成。 单片机特点:
1.2 17位。围绕RALU设计的各寄存器的主要功能包括:暂存寄存器TR具有移位功能,常数寄存器中存有0,
1,2等数据,标志寄存器可存入指令运行后的有关状态。
1.3 A总线为片内存储器的8位地址总线,用于对片内寄存器寻址。也用于片外分时传送的地址、数据总线。
D总线为16为数据总线,用于在片内寄存器间传送数据. 1.4 6M-12M。A、B、C。3,状态周期
1.5 TS=(3/8×1000000=0.375 us (375ns)
1.6单片机的存储空间地址是按照片内、片外特统一编码的形式分配的。 0000H—FFFFH,64K,0000H—0017H,24字节,0018H—00FFH,232字节 1.7 18H,19H寄存器为堆栈指针,指向所设定的堆栈区的首地址。
8098单片机的堆栈操作为后入先出的操作,堆栈是向低位地址方向生长. 1.8 2080H,2018H,2000H到200FH 1.9 2000H 定时器中断
2002H A/D中断 2004H HSI中断 2006H HSO中断 2008H HSI.0中断
200AH 软件定时器中断 200CH 串行口中断 200EH 外中断
各类别中断服务程序的首地址.
1.10单片机中CPU总线为内总线,主要用于在CPU与片内寄存器之间传送数据与地址。 系统总线为单片机的外总线,用于单片机与外部扩展存储区及扩展接口之间传送数据
1.11 4种总线运行方式,分别是:标准总线运行方式、地址有效运行方式、写选通运行方式、地址有效且写
选通运行方式。 标准总线时序图
该时序图为单片机最小系统设计的依据,利用该时序图可分离单片机P3口的数据、地址。完成系 统设计
1.12设置复位功能是使单片机上电或按下复位按键后使得RESET引脚被强制拉低后的一段时间内,单片机系统于正常工作前在片内建立起一种特定的初始状态,只有以此状态为起点,单片机系统才能进入正常的工作状态.另外,可在单片机受到干扰,系统运行不正常时,通过复位使单片机系统回到正常状态,而不必开关电源。实现单片机系统的复位,只需在通过简单的电路设计使其RESET引脚接入2Ts以上周期的低电平。
8098单片机的复位电路可为简单的RC充电电路。 简单的单片机上电、手动复位电路:
1.13 P0,P2,P3,P4
P0:为4位口,可分别用于作为AD(ACH4-ACH7)的输入口线和数据输入口线 P2:为4位多功能选择口 P2.5/PWM,P2.0/ ,P2.1/ ,P2.2/。 P3:低8位地址(A0-A7)输出和数据(D0-D7)分时共用总线。 P4:高8位地址(A8-A15)输出线。
11 第 页
MCS96单片机实验指导书
1.14 ALE:P3口地址与数据分离控制信号线、 RD:将外总线数据读入单片机内的控制信号线、
WR:将单片机片内数据输出到外总线的控制信号线、EA:片内片外存储区选择控制信号
习题二 8098单片机指令系统
2.1 机器语言,汇编语言。 2.2 操作码,所要进行的操作
2.3 7,位型,字节型,字型,长字型,短整型,整型,长整型,
8,符号数,-128~+127
16,符号数,-32768~+32767 2.4偶数,奇数。4整除
2.5 单片机寻址,是寻找参与运算的操作数的地址 8098单片机共有6种基本寻址方式
LDB AL,#0A0H AL:目的操作数,#0A0H:源操作数,立即寻址方式
LD DX,#3000H DX:目的操作数,#3000H:源操作数,立即寻址方式 MULU DX,AX,BX DX:目的操作数,AX、BX:源操作数,寄存器寻址方式 LDB AL,[DX]+ AL:目的操作数,[DX]+:源操作数,自动增量寻址方式 SUB DX,12[CX] DX:目的操作数,12[CX]:源操作数,短变址寻址方式 ADD AX,1234H[BX] AX:目的操作数,1234H[BX]:源操作数,长变址寻址方式 STB AL,1234H[BX] 1234H[BX]:目的操作数,AL:源操作数,长变址寻址方式 LDB AL,1234H[BX] AL:目的操作数,1234H[BX]:源操作数,长变址寻址方式
LD BX,2100H[0] BX:目的操作数,2100H[0]寄存器:源操作数,零寄存器寻址方式 2.6 下列指令均不正确,错误性质如下。
LD AX,8000H 若8000H为立即数,少了#号。若为地址,则不可采用这种方式送数 LDB 6000H,#12 立即数不能直接送往>100H的地址中
LD [BX],AX 间接寻址指令,应使用 ST AX,[BX] 送数,无此指令
ADD AX,BX,0FFFFH[0] 字型(整型)数操作,其低位地址必须为偶数,FFFFH为奇数 STB BL,CX+20H 无此指令,应使用 STB BL,20H[CX]
ST AX,0A000H 大于100H的地址空间必须用间址指令完成.
MULU 1AH,22H,20H 16位数据相乘,结果为32位(长字型数据),存放长字型数据的 寄存器最低位必须被4整除.1AH不能被4整除。
ADD 21H,23H 字型(整型)数相加, 存放字型数据的寄存器最低位必须为偶数.21H、23H均为 奇数。
2.7 AL=01H AH=11H BL=33H BH=22H CX=2202H DX=3002H 3000H~3003H单元数据保持不变,(3005H 3004H)=2202H 2.8写出下列指令执行后的有关结果。
⑴ AL=9AH, C=0 , Z=0 , N=1 , V=0 , VT=0 . ⑵ BL=09H , DL=27H, C=1, Z=0 , N=0 , V=0 , VT=0 ⑶ AL=E9H , C=0
⑷ CL=ABH, DL=32H, C=1 , Z=0, N=1, V=1, VT=1 ⑸ BL=22H, C=0 , Z=0 , N=0 , V=0 , VT=0 2.9
⑴ LD AX,#3050H Ldb cl,#12h Ldb ch,#35h ST cx,[AX]
第 12 页
MCS96单片机实验指导书
⑵ LD AX,#3000H LDB BL,[AX] LD AX,#4500H STB BL,[AX]
⑶ LD AX,#3000H LD BX,#3500H LDB CL,[AX] Ldb ch,[bx] STB CL,[BX] Stb ch,[ax]
⑷ LD AX,3100H ldb bh,[ax]
ADDB BL,bh,3150H[0] STB BL,3200H[0]
⑸ LD AX,#3200H LD BL,[AX] ANDB BL,#0F0H SHRB BL,#4
STB BL,3202H[0]
2.10分别写出以下几个程序段执行以后的结果. ⑴ BX=3004H (3004H)=468AH ⑵ AL=77H, BL=03H, BH=74H ⑶ BX=788CH , C=0
2.11 ORG 3000H
LD CX,#3100H LDB AL,3100H[0] LDB AL,[CX]+ ADDB AL,3101H[0] ADDB AL,[CX]+ STB AL,3102H[0] STB AL,[CX] RET
2.12 ORG 2080H
LD CX,#3000H LD AX,[CX]+ LD BX,[CX]+ ADD AX,[CX]+ ADDC BX,[CX]+ ST AX,[CX]+ ST BX,[CX] RET
第
页
13 MCS96单片机实验指导书
2.13 ORG 2500H LD CX,#3100H LDB AL,[CX] NOTB AL
ORB AL,#00101010B STB AL,[CX] RET
2.14 ORG 2500H LD CX,#3000H LDB AL,[CX]
SHLB AL,#2 ;乘4 ADDB AL,[CX] ;加一次 STB AL,[CX] RET
习题三 8098单片机汇编语言程序设计 3.1标号、操作码、源操作数、目的操作数、注释
3.2标号为程序的符号地址,书写标号必须顶格写且标号的第一个符号为英文字母。 3.3伪指令是专门提供给编译程序使用的指令。
8098常用的伪指令:ORG 定义程序的起始地址 EQU 为变量赋值 DCB 定义字节 DCW 定义字 END程序结束 3.4 AX EQU 20H BX EQU 22H ORG 3000H LD AX,#789AH LD BX,#3456H SUB AX,#4567H SUBC BX,1234H RET
3.5 AX EQU 20H
BX EQU 22H CX EQU 24H ORG 2500H LD CX,#3000H LDB AL,[CX]+ LDB AH,[CX]+ SHRB AH,#4
ADDB AL,AH ;两个BCD码拼成一个压缩的BCD码
STB AL,[CX] RET
3.6 ORG 2500H
第 14 页
MCS96单片机实验指导书
LD CX,#3000H LDB AL,[CX]+ LDB AH,[CX]+ CMPB AL,AH JNH LIT_AL STB AH,[CX] RET
LIT_AL:STB AL,[CX] RET
3.7 1; 当X>0 Y={ 0; 当X=0 -1; 当X<0 R0 EQU 00H AX EQU 20H
BX EQU 22H CX EQU 24H DATA EQU 3000H RESU EQU 3002H ORG 2500H LD CX,#DATA LDB AL,[CX] CMPB AL,#0 JE MOVE_0 JGH MOVE_1
LDB AH,#0FFH ;符号数,FFH=-1 STB AH,RESU[0] RET
MOVE_0:STB R0,RESU[0] RET
MOVE_1:LDB AH,#1
STB AH,RESU[0] RET
3.8 ORG 2600H LD BX,#3000H LD CX,#3100H LDB AL,#100 LOOP: LDB AH.[BX]+ STB AH,[CX]+ DJNZ AL,LOOP RET
3.9 ORG 2800H CLRB DX
LD CX,#3000H LDB AL,#16 LD bx,[cx]
第
页
15
MCS96单片机实验指导书
LOOP: SHRB bx,#1 JC INC_DX LOOP1: DJNZ AL,LOOP RET INC_DX:INCB DX SJMP LOOP1
3.10 ORG 2800H BCAS:LD BX,#3000H
LDB AL,[BX] ;取压缩BCD码 LDB AH,AL ANDB AL,#0FH ORB AL,#30H STB AL,3002H[0] LDB AL,AH SHRB AL,#4 ORB AL,#30H STB AL,3003H[0] RET
3.11 ORG 2800H LD BX,#3000H LDB CL,[BX] LD DX,#3100H CLR AX LOOP: ADD BX,#2 ADD AX,[BX] DJNZ CL,LOOP ST AX,[DX] RET
3.12求最大数据子程序MAX给出,求最小数据子程序MIN同学自己编写
BLOCK1 EQU 3000H MAX1 EQU 3100H MIN1 EQU 3102H BLOCK2 EQU 3200H MAX2 EQU 3300H MIN2 EQU 3302H ORG 2080H LD SP,#0100H LDB CL,#99 LD BX,#BLOCK1 LD DX,#MAX1 SCALL MAX STB AL,[DX]
第 16 页
MCS96单片机实验指导书
LDB CL,#99 LD BX,#BLOCK2 LD DX,#MAX2 SCALL MAX STB AL,[DX] LDB CL,#99 LD BX,#BLOCK1 LD DX,#MIN1 SCALL MIN STB AL,[DX] LDB CL,#99 LD BX,#BLOCK2 LD DX,#MIN2 SCALL MIN STB AL,[DX] HALT:SJMP HALT
ORG 2200H MAX: LDB AL,[BX]+ LOOP:CMPB AL,[BX] JC NEXT LDB AL,[BX] NEXT:INCB BX
DJNZ CL,LOOP RET
3.13 COUN EQU 3000H
BCDD EQU 3100H ASCD EQU 3200H ORG 2080H LD SP,#0100H LDB CL,COUN[0] LD BX,#BCDD LD DX,#ASCD SCALL BCAS HALT:SJMP HALT
ORG 2100H
BCAS:LDB AL,[BX]+ ;取压缩BCD码 LDB AH,AL ANDB AL,#0FH ORB AL,#30H STB AL,[DX]+ LDB AL,AH SHRB AL,#4
第 17 页
MCS96单片机实验指导书
ORB AL,#30H STB AL,[DX]+ DJNZ CL,BCAS RET
3.14 ORG 2080H LDB CL,#16 LD BX,#3050H LD DX,#2FFFH LOOP: INC DX
LDB AL,[DX] SHRB AL,#4 SCALL ASCH
STB AL,[BX]+ LDB AL,[DX] ANDB AL,#0FH SCALL ASCH STB AL,[BX]+ DJNZ CL,LOOP HALT: SJMP HALT
ORG 2100H ASCH: CMPB AL,#10 JNC SDD ADDB AL,#07H SDD: ADDB AL,#30H RET
3.15 ORG 2080H LD BX,#3001H LDB AH,[BX]+ LDB AL,[BX] LOOP: INC BX
CMPB AL,[BX] JH DECNT
LDB AL,[BX] DECNT: DJNZ AH,LOOP LD BX,#3000H STB AL,[BX] HALT SJMP HALT
习题四8098单片机汇编语言程序设计
4.1中断登记寄存器INT_PENDING登记单片机中断源来的中断申请信号,每当其对应输入端有一正跳变,视为有一中断申请,其对应位置1,因其上电复位时的各单元为随机数,使用前要进行清零操作。
4.2中断屏蔽即为使CPU暂不响应申请中断的器件所发出的中断申请,不进入相应中断服务程序。中断屏蔽寄存器INT_MASK的功能是屏蔽单片机的对应中断源发出的中断申请信号。
4.3响应中断的工作过程:中断源发出中断申请信号,INT_PENDING登记中断源来的中断申请信号,INT_MASK
第 18 页
MCS96单片机实验指导书
对非屏蔽中断申请信号于与放行,中断总体开关闭合,中断优先级系统对中断申请信号进行优先级编码,使得中断级别高的中断申请进入CPU,CPU响应中断.
4.4中断优先的意义为在多个中断源同时申请中断,或CPU正在处理低级别中断时,可响应高级别中断申请,
转而处理高级别中断申请。
8098单片机各中断源的中断优先级可以改变。在低级别中断处理时屏蔽高级别中断。或在高级别中断时打开低级别中断。
4.5从中断源发出中断请求到CPU开始执行中断服务程序的第一条指令所需的时间。.
4.6定时器T1的计数脉冲为片内的状态周期TS的8分频,因而它所计的每个数据均与时间有关,此计数值,可作为HSI、定时器、软件定时器等子系统的基准时间,它上电后自由运行,计满16位后产生溢出,计数器清零,溢出后可向CPU申请中断。
T2为外部事件计数器,它为每个脉冲跳变计数器加1, 计满16位后产生溢出,计数器清零,溢出后可向CPU申请中断。T2可有3个复位通道,在运行过程中可使用指令使其复位 WDT的计数脉冲为片内的状态周期TS。它的计数器溢出将使单片机复位,启动WDT后,如果单片机系统处于正常工作状态,应在其溢出前,使其清零复位,它主要用于监视单片机系统的正常运行. 4.7 T1min=[(3×8)÷12]×10(-6)=2us
T1max=2us×65536=131.072ms T1min=[(3×8)÷6]×10(-6)=4us T1max=4us×65536=262.144ms
4.8 T1每隔131毫秒产生一次溢出中断,延时2秒需产生16次中断.选BL作为中断次数计数器.
ORG 2000H DCW TINT ORG 2080H MAIN:LD SP,#0100H NOTB P2 DI
CLRB INT_PENDING ORB INT_MASK,#01H
LDB IOC1,#04H 允许T1溢出中断 LDB BL,#10H EI
HALT:SJMP HALT
ORG 3500H TINT:DJNZ BL,EXIT Ldb bl,#10h NOTB P2 EXIT:RET 4.9 因HSI.1引脚脉冲进入T2,为每个跳变计1个数,计满65536,对应外界输入脉冲为32768个,使用T2中断,在中断服务程序中对COUNT加1,可实现程序要求. ORG 2000H DCW TINT ORG 2080H MAIN:LD SP,#0100H DI
第 19 页
MCS96单片机实验指导书
CLRB INT_PENDING ORB INT_MASK,#01H
LDB IOC0,#86H ;接通T2脉冲输入源,T2复位 LDB IOC1,#08H ;允许T2溢出中断 Coun1:EI
COUN:JBC P0,7, COUN di
HERE:JBS P0,7,HERE SJMP COUN1
ORG 3500H TINT:INC COUNT RET 4.10填空
⑴ T1、状态、时间
⑵ 先入先出、FIFO、保持寄存器
⑶HSI引脚事件产生的先后时刻、规定的事件与T1/T2基准时间相比较,离基准时间相近的事件先产生。 ⑷立即启动方式、延时启动方式 ⑸PWM引脚输出、HSO引脚输出
⑹4、同步脉冲方式、标准异步方式、异步第9位辨识方式、异步第9位方式 4.11先读HSI_STATUS、后读HSI_TIME、一旦读了HSI_TIME,将清除HSI_STATUS
4.12有一单片机系统使用10MHZ的外部振荡器正跳变为一触发事件,通过编程从HSI.0引
脚采集脉冲信号,现已将采集到的8个外部事件的时间数据存放在单片机的存储区中 以DATA开始的一组空间,如表所示
10M T1MIN=(3×8)÷(10÷1000000)=2.4US
?若采用每个正跳变作为一个事件的触发方式时,请计算输入脉冲的周期 T=[(DATA+1)-(DATA)]×2.4US
=(318BH-2159H)×2.4US=32H×2.4US=50×2.4US=120US 频率F=1/T=1/120us=8.38KHZ
?若采用每八个正跳变作为一个事件的触发方式时
周期T=120us/8=15us 频率F=1/T=66.67KHZ
DATA 3159H DATA+2 318BH DATA+4 31BDH DATA+6 31EFH DATA+8 3221H DATA+A 3253H DATA+C 3285H DATA+E 32B7H 4.13(请参考HSI部分的例题)
4.14 HSO中的保持寄存器及CAM为将要产生的内部或外部事件、而HSI中的保持寄存器和FIFO单元是 记录到的来自HSI引脚所产生的事件时间和状态。
4.15 HSO可产生HSO引脚事件中断,其作用改变引脚电平,为外部中断
第 20 页
MCS96单片机实验指导书
软件定时器中断为设定的时间到后向单片机申请中断,为内部中断 4.16(略)
4.17软件定时器可在预定的时刻使单片机响应中断,以达到精确计时,而T1则必须是产生溢 出后才向CPU申
请中断.
当4个软件定时器同时打开并允许中断时,在中断程序中,可根据软件定时器的到时标志 (IOS1.0—IOS1.3)来判断是由那个软件定时器引起的中断.
4.18 Vref=5V,当ACH中的某一引脚电压为2V时,经
N=(1023 ÷Vref)×2=400 4.19 ORG 2800H
LDB AD_COM,#0EH
WAIT: JBS AD_RESULT_L,3,WAIT LDB AL,AD_RESULT_L LDB AH,AD_RESULT_H SHL AX,#6 RET 4.20(略)
习题五 8098单片机的扩展技术 5.1单片机存储器的扩展编址有线选法和译码法.
线选法较直观,联线简单,但占用地址空间较大,可连接的芯片数取决于高位地址线的多少. 译码法联线略为复杂,但通过译码可为外接芯片设计合适的地址范围,可连接较多的外围芯片. 5.2(略) 5.3(略) 5.4(略) 5.5(略) 5.6(略) 5.7(略) 5.8(略) 5.9(略) 5.10(略)
5.11键盘与7段数码显示管. 5.12 采用线选法
62128 P4.7(A15)=0 0000H—7FFFH 62256 P4.7(A15)=1 8000H-FFFFH 5.13采用译码选通法
A15 A14 A13
6264 1/0 0 0 0000H-1FFFH 或 8000H-9FFFH 2764 1/0 0 1 2000H-3FFFH A000H-BFFFH 2764 1/0 1 0 4000H-5FFFH C000H-DFFFH
第 21 页
MCS96单片机实验指导书
习题六 数/模、模/数转换及其8098单片机的接口
6.1 DAC0832芯片将输入的8位数据变换为电流信号输出. 起控制作用的引脚信号为:/CS、WR1、WR2、ILE、XFER
6.2(略)
6.3(略) 6.4 (略)
第 22 页
MCS96单片机
实验指导书