采用8253作定时

2018-11-21 23:26

采用8253作定时/计数器,其接口地址为0120H~0123H。 要求计数器0每10ms输出一个CLK脉冲宽的负脉冲;用计数器1产生10KHz的连续方波信号,计数器2在定时5ms后产生输出高电平。输入8253的时钟频率为2MHz。 要求:画线路连接图,并编写初始化程序。 计算计数初值:

输入时钟频率为2MHz, 其周期为: 1/2000000=0.5us(微秒) 确定计数初值:

CNT0: 10ms/0.5us = 20000 CNT1: 2MHz/10KHz = 200 CNT2: 5ms/0.5us = 10000 确定控制字:

CNT0:方式2,16位计数值 0011 0100B(34H) CNT1:方式3,低8位计数值 0101 0110B(56H) CNT2:方式0,16位计数值 1011 0000B(B0H) 线路连接图:

初始化程序 CNT0:

MOV DX, 0123H MOV AL, 34H OUT DX, AL MOV DX, 0120H MOV AX, 20000 OUT DX, AL MOV AL, AH OUT DX, AL CNT1:

MOV DX,0123H MOV AL,56H OUT DX,AL MOV DX,0121H MOV AX,200 OUT DX,AL CNT2:

MOV DX,0123H MOV AL,0B0H OUT DX,AL MOV DX,0122H MOV AX,10000 OUT DX,AL MOV AL,AH OUT DX,AL

8255特点:

含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力 可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。 8255工作方式:

基本输入/输出方式(方式0) A、B、C 选通输入/输出方式(方式1) A、B 双向传送方式(方式2) 仅A口

某端口工作于哪一种方式,可通过软件编程来指定。即向8255写入方式控制字来决定其工作方式 单片8259A可支持8个中断源;

采用多片8259A级连,可最多支持64个中断源。n片8259A可支持7n+1个中断源; 级连时只能有一片8259A为主片,其余的均为从属片; 涉及到的8259A引脚包括: CAS0-CAS2;SP#/EN#;IRi;INT .4请完成以下计算:

3ACH=(1110101100)B=( 100101000000 )BCD

1.6设字长为8位,用补码形式完成下列计算,要求有运算结果并讨论是否发生溢出? 120+18 -33-37 -90-70 50+84 答:120+18

其补码形式分别为:(120)补=01111000 (18)补=00010010 01111000 + 00010010 10001010

由于Cs=0 ,Cp=1,因此有溢出,结果错误 -33-37

其补码形式为:(-33)补=11011111 (-37)补=11011011 11011111 +11011011 10111010

由于Cs=1, Cp=1,所以没有溢出,结果正确 -90-70

其补码形式为:(-90)补=10011100 (-70)补=10111010 10011100 +10111010 01010110

由于Cs=1, Cp=0,所以有溢出,结果错误

3.1指出下列各指令中源操作数和目的操作数的寻址方式: ⑵ AAA ⑶ JMP 2200H ⑵ AAA

源操作数:寄存器寻址AL(也称隐含寻址);目的操作数:寄存器寻址 ⑶ JMP 2200H

程序转移段内直接寻址方式

3.2若AX=0ABCDH,BX=7F8FH,CF=1. 求分别执行8086 CPU指令 ⑺ XOR AX, BX ⑻ IMUL BL

后,AX寄存器中的内容,并指出标志寄存器SF,ZF,AF,PF,CF及OF的状态。 ⑺ AX=D442H, SZAPCO=10X100B ⑻ AX=1683H, SZAPCO=XXXX11B 3.3 若AL=78H,BL=87H, ⑴求执行指令 ADD AL,BL DAA

之后,AL=?、标志AF=?、CF=?

⑵ 若执行指令 SUB AL,BL与DAS后,AL=?、标志AF=?、CF=? ⑴ AL=65H, AF=1, CF=1。⑵ AL=91H, AF=0, CF=1。 3.4指出下列指令中哪些是错误的,并指出错在何处?

⑺ IN AL,DX ⑻ OUT 1C0H,AX ⑺ 对 ⑻ 错,输出指令的地址若是16位,必须用DX间址。

3.5连续执行以下指令,填写执行指令的结果(MEM为存储器物理地址)。 MOV AX, 3380H MOV CX, 0F000H MOV DS, AX MOV SI, CX

SUB CX, AX ;⑴CX= bc80h H , CF= 0 B MOV [SI], CX ;⑵[SI]= 80 H, [SI+1]= bc H SBB [SI], AL ;⑶[SI]= 0 H, MEM= f000 H

INC BYTE [SI] ;⑷[SI]= 1 H, ZF、CF、PF=0 、0 、1 B MOV AL, 08

SBB AX, 09 ;⑸AX= 32ff H, CF、AF= 0 、1 B AAS ;⑹AX= 3109 H, CF、AF= 1 、1 B SUB AL,68H ;⑺AL= a1 H, CF、AF= 1 、0 B DAS ;⑻AL= 41 H AND AL, 0FH MOV BX,-10

NEG BX ;⑼BX= 0a H MOV DL, 60H

MUL DL ;﹙10﹚ AX= 60 H OR AX, 0FF00H

CWD ; ﹙11﹚AX= ff60 H

IDIV BX ; ﹙12﹚AX= fff0 H, DX= 0 H MOV AH, 4CH INT 21H

3.6下列程序段执行后 AX=?

设数据段有: TABLE DW 158,258,358,458 ENTRY DW 3

代码段 对DS初始化

MOV BX, OFFSET TABLE MOV SI, ENTRY MOV AX, [BX+SI]

3.6 解答: AX=6601H

3.7 将AL中的8位二进制数按倒序方式重新排列,即AL原来为D7D6?D0,倒序后AL=D0D1?D7.

3.7参考答案 ?

MOV CX, 8 L: SHL AL, 1 RCR BL, 1 LOOP L MOV AL, BL

?

3.8 若起始地址偏移量为2000H的内存单元存放有100个ASCII码字符,现给这些字符添加奇偶校验位(bit7),使每个字符中“1”的个数为偶数,在顺序输出到地址为100H的端口. 3.8解答

MOV SI, 2000H MOV CX, 100 MOV DX, 100H

NEXT2: MOV AL, [SI] ;取字符串中字符送AL AND AL, 0FFH ;改变标志位

JPE NEXT1 ;“1”的个数为偶,bit7不变 OR AL, 80H ;“1”的个数为奇,bit7变为1 NEXT1: OUT DX, AL INC SI

LOOP NEXT2 MOV AH, 4CH INT 21H

3.9 若SS=1652H, SP=2100H, AX=1234H, BX=5678H, FR=2115,试说明执行指令 PUSH AX PUSH BX PUSHF POP CX POP

之后,SP=? SS=? CX=? DX=? 并画图指出堆栈中各单元的内容. 3.9解答: SS=1652H 地址 RAM SP=20FEH 20FAH 15 CX=2115H 20FBH 21 DX=5678H 20FCH 78 栈中各单元内容如下所示: 20FDH 56 20FEH 34 20FFH 12 4.4.3 循环程序设计 2100H XX

循环程序的结构分为单循环、双循环和多重循环3种。三重以上的循环程序比较复杂。从结构上讲,循环程序分为循环准备、循环体和循环控制3部分。通常使用寄存器或者内存单元作为循环计数器。从循环结构的程序实现上,通常分为WHILE-DO结构(当型循环)和DO-UNTIL(直到型循环)。WHILE-DO结构的主要设计思想是,当循环控制条件满足时,执行循环体程序,否则退出循环。DO-UNTIL结构的主要设计思想时,先执行循环体程序,再判断控制条件是否满足,若不满足则再次执行循环体程序,否则退出循环。循环程序的结构如图6.5所示。 【例4.4.5】找最大数。

假设从BUF单元开始为一个ASCII码字符串,找出其中的最大数送屏幕显示。程序框图如图6.6所示。 [解法1程序清单]

;FILENAME: 445_1.ASM .486

DATA SEGMENT USE16

BUF DB ′QWERTYUIOP123 ′

COUNT EQU ﹩-BUF ;统计串长度 MAX DB ′MAX= ′,?,0DH,0AH, ′﹩ ′

DATA ENDS CODE SEGMENT USE16

ASSUME CS:CODE,DS:DATA BEG: MOV AX,DATA MOV DS,AX

MOV AL,0 ;无符号最小数0→AL

LEA BX,BUF ;串首址偏移量→BX MOV CX,COUNT ;串长度→CX LAST: CMP [BX],AL ;比较

JC NEXT

MOV AL,[BX] ;大数→AL NEXT: INC BX

LOOP LAST ;循环计数

MOV MAX+4,AL ;最大数→MAX+4单元 MOV AH,9

MOV DX,OFFSET MAX

INT 21H ;显示结果 MOV AH,4CH

INT 21H ;返回DOS CODE ENDS

END BEG

ASCII码字符应看作是无符号数,而无符号数的最小值为0,所以在第1次比较的时候,把0 →AL寄存器。各个数都和AL 相比,每次比较都把较大的数放入AL寄存器中。N个数需比较N次,如果把第一个数送AL作为初始化比较对象,那么N个数只需比较N -1次。

在循环程序中,循环计数控制着循环体的执行次数,通常使用寄存器或者内存单元作循环计数器,也可以使用“循环结束标志”来控制循环。我们仍以找最大数为例,在下面的解法2程序中,在BUF单元字符串的末尾,额外地增设了一个FLAG单元,其中存放“-1”,它就是字符串的结束标志。程序首先判断BX间地址的单元内容是否是-1,若是,表明在此之前的数都判断过了,可以结束循环了。什么数可以作为循环结束标志呢?不属于要比较的数据都可以作循环结束的标志。采用循环结束标志来结束循环,可以不使用循环计数器,在多重循环的程序中可以省去一重循环计数。 [解法2程序清单]

;FOLENAME:445_2.ASM .486

DATA SEGMENT USE16

BUF DB ′QWERTYUIOP123 ′

FLAG DB -1 ;设置串结束标志 MAX DB ′MAX=′,?,0DH,0AH,′﹩′ DATA ENDS

CODE SEGMENT USE16

ASSUME CS:CODE,DS:DATA BEG: MOV AX,DATA MOV DS,AX

MOV AL,0 ;无符号最小数0→AL LEA BX,BUF ;串首址偏移量→BX

LAST: CMP BYTE PTR[BX],-1 ;[BX]=串结束标志? JE DISP ;是,转 CMP [BX],AL

JC NEXT

MOV AL,[BX] ;大数→AL

NEXT: INT BX JMP LAST

DISP: MOV MAX+4,AL ;最大数→MAX+4单元 MOV AH,9

MOV DX,OFFSET MAX

INT 21H ;显示结果 MOV AH,4CH

INT 21H ;返回DOS

CODE ENDS

END BEG


采用8253作定时.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:词汇学练习题目

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: