8254初始化编程

8254初始化编程,第1张

计数初值为2MHz/1KHz = 2000,等于十六进制数07D0H,控制字设定为先写低8位,后写高8位,方式3工作,二进制计数方式,所以控制字为36H。初始化程序如下:

MOV AL,36H ; 如果是37H则为BCD计数,这个是二进制计数

MOV DX, 43H ;

OUT DX,AL ;

MOV DX,40H ;

MOV AX,2000 ;

OUT DX,AL ;

MOV AL,AH ;

OUT DX,AL

《计算机接口技术》综合题

第6章分析、设计题

1 有一段对8253初始化程序:

MOV AL, 64H

OUT 53H, AL

MOV AL, 01H

OUT 51H, AL

它使用的是8253哪一个计数器 ?其端口地址是多少? 属哪种工作方式?其OUT端输出什么波形?波形的周期为多少? (设输入时钟频率为 100 KHz)

2 用8253计数器0设计一个输出频率为20KHZ的方波脉冲发生器,如果计数器的输入时钟频率为4MHZ,8253的选通地址为240H-243H,采用BCD计数。(1)要求算出计数初值,(2)编写初始化程序。

3已知8253的CLK=1MHz, =40H~43H,要求用8253连续产生10秒的定时信号,设计延时线路,编写控制程序。

4 8253通道2输出方波,波形周期0625ms已知CLK2频率为2MHz,8253端口地址60H~63H

(1)通道2工作于何种工作方式,写出工作方式名称。

(2)写出初始化程序段,采用二进制计数。10110110

答:

(1) 方式3,方波发生器

(2) MOV AL, 10110110B

OUT 63H,AT

MOV AX,1000

OUT 60H,AL

MOV AL,AH

OUT 60H,AL

2 8253四个端口分别为控制口CN,通道0口CNT0,通道1口CNT1,通道2口CNT2。现要求通道1功能为:将频率为625KHZ的外部时钟分频为高低电平都是1ms的方波,试完成其程序(采用BCD码计数)

答:8253 方式控制字格式为:

D7D6计数器选择: 00-通道0,01-通道1,10-通道2;

D5D4读写控制: 00-锁存,01-读写低8 位,10-读写高8 位,11-先低8 位后高8 位;

D3D2D1工作方式选择: 000-方式0,001-方式1,010-方式2,011-方式3,

100-方式4,101-方式5;

D0计数方式选择: 0-二进制,1-BCD。

设8253 口地址为60H~63H。

MOV AL,77H

OUT 63H,AL

MOV AL,50H

OUT 61H,AL

MOV AL,12H

OUT 61H,AL

6 某罐头包装流水线系统电路结构原理如下图所示。一个包装箱能装24罐,要求每通过24罐,流水线要暂停5秒,等待封箱打包完毕,然后重启流水线,继续装箱。8253的端口地址为20H~23H。图中虚线框是流水线工作台示意图,罐头从光源和光敏电阻(R)之间通过时,在晶体管(T)发射极上会产生罐头的脉冲信号,此脉冲信号作为计数脉冲,接到CLK0,对罐头进行计数。

通道0作为计数器工作于方式2,当计数满24罐,OUT0变低,触发通道1的定时 *** 作。通道1作为定时器工作于方式1,OUT1的下跳沿流水线暂停,通道0也停止计数。5秒钟后,OUT1上升沿使流水线重新启动,继续工作,通道0又开始计数。请编写8253控制程序。

答:

MOV DX, 323H;通道0初始化

MOV AL,14H

OUT DX,AL

MOV DX, 320H;写通道0计数初始值

MOV AT,18H

OUT DX,AL

MOV DX,323H;通道1初始化

MOV AT,72H

OUT DX,AL

MOV AX,1F4H;写通道1定时系数

MOV DX,321H

OUT DX,AL

MOV AL,AH;写地址高8位

OUT DX,AL

第7章简答题

1写出8086CPU各内中断源的名称及产生的条件。

答:溢出中断,执行INTO指令且OF=1;除法中断,执行DIV/IDIV指令后商大于规定范围; INTn,软中断指令INT3,单字节(断点)中断TF=1的单步中断(或陷阱)

9 8086CPU内部中断有何特点?

答:8086微处理器是典型的16位微处理器,HMOS工艺制造,集成了29万只晶体管,使用单一的+5V电源,有16根数据线和20根地址线;通过其16位的内部数据通路与设置指令预取队列的流水线结构结合起来而获得较高的性能。

10 如果8259A中断控制器下列寄存器内容都为10H,请指出各寄存器内容的意义:

①中断请求寄存器 (IRR)=10H

②中断屏蔽寄存器(IMR)=10H

③中断服务寄存器(ISR)=10H

答:(1)中断请求寄存器(IRR)=10H;说明IR4有中断请求

(2)中断屏蔽寄存器(IMR)=10H;说明屏蔽了IR4的中断请求

(3)中断服务寄存器(ISR)=10H;说明IR4的中断请求正在被服务

4比较中断方式与DMA方式的主要异同,并指出它们各自应用在什么性质的场合。

答:相同点:这两种方式下,主机和I/O设备都是并行工作。 不同点:中断方式在CPU响应了I/O设备的中断请求后,要暂停现行程序的执行,转为I/O设备服务。DMA 方式直接依靠硬件实现主存与I/O设备之间的数据直传,传送期间不需要CPU程序干预,CPU可继续执行原来的程序,CPU效率比中断方式。

5 请说明程序查询方式与中断方式各自的特点。

答:程序查询方式,数据在CPU和外围设备之间的传送完全靠计算机程序控制,优点是硬件结构比较简单,缺点是CPU效率低,中断方式是外围设备用来“主动”通知CPU,准备输入输出的一种方法,节省了CPU时间,但硬件结构相对复杂一些。

6简要说明中断控制器8259中IRR、IMR、ISR三个寄存器的作用。

答:IRR是中断请求控制器。它保存从IR0-IR7来的中断请求信号。某一位有1就表示相应引脚上有中断请求信号。中断响应后,该IR输入线上的请求信号应该撤销。

ISR是中断服务寄存器。它用于保存正在服务的中断源。在中断响应时,判优电路把发出中断请求的中断源中优先级最高的中断源所对应的位设置为1,表示该中断源正在处理中。ISR某一位置1课阻止与它同级和更低优先级的请求被响应,但允许更高优先级的请求被响应。

IMR是中断屏蔽寄存器。它用于存放中断控制字,其中为1的位表示对应的中断请求输入将被屏蔽

78086/8088在什么时候及什么条件下可以响应一个外部INTR中断请求,中断向量表在存储器的什么位置向量表的内容是什么8086如何将控制转向中断服务程序

答:(1)8086/8088在当前指令执行完且IF=1的情况下可以响应一个外部INTR中断请求。

(2)中断向量表在存储器的0段0000—03FFH区域,向量表存放中断处理程序的入口地址。

(3)8086/8088响应INTR中断请求时,首先在连续的两个总线周期中发出INTA#负脉冲,在第二个INTA#信号期间,中断源经数据总线向8086/8088送出一字节中断向量“类型码”。8086/8088收到“类型码”后将其乘4形 成中断向量表的入口,从此地址开始的4个单元中读出中断服务程序的入口地址(IP、CS),8086/8088从此地址取指令执行,将控制转向中断服务程序。

8 试比较指令中断与子程序调用有什么异同。

答:调用指令是用于调用程序中常用到的功能子程序,是在程序设计中就设计好的。根据所调用过程入口地址的位置可将调用指令分为段内调用和段间调用。在执行调用指令后,CPU要保护断点。中断指令是因一些突发事件而是CPU暂时中止它正在运行的程序,转去执行一组专门的中断服务程序,并在执行完后返回原被中止处继续执行原程序,它是随机的。在相应中断后CPU不仅要保护断点,还要将标志寄存器FLAGS压入堆栈保存。

9 8255A工作于方式2,采用中断传送,CPU如何区分输入中断还是输出中断?

答:CPU响应8255A的中断请求后,在中断服务程序的开始可以查询8255A的状态 字, 判断~OBF (PC7)和IBF (PC5)位的状态来区分是输入中断还是输出中断,并根据此转向相应的输入或输出 *** 作。

第8章综合分析、设计题

1典型的ADC0809系统连接如下图所示,=220H~227H。

⑴设某被测模拟量已连接至ADC0809的端,请写出锁存通道地址并启动A/D转换的程序片段。

⑵写出A/D转换结束后,读取转换结果的程序片段。220H~227H IN0~IN7

2下图为函数波形发生器芯片连接图,采用8255A作为DAC与CPU之间的接口芯片,8255的A口作为数据输出口, B口的PB0-PB4五根线作为控制信号来控制DAC0832的缓冲过程及转换 *** 作。8255A端口地址为300H--303H,要在示波器上看到连续的锯齿波波形。请编写程序完成相应的功能。

3 下图中8255口地址为A0H~A3H,从IN2读入1个模拟量,现给出经ADC0809转换后的数字

量送入CPU的控制程序,请在程序中空缺部分填上正确内容(初始化时无关项置0)。

答: MOV AL,

OUT , AL ; 8255初始化

MOV AL,

OUT ,AL ;送通道号到B口

ADD AL,

OUT , AL ;启动ADC0809转换

SUB AL,

OUT A1H , AL

L: IN AL, ;查EOC

TEST AL, 08H

JZ L

IN AL, ;读取转换结果

HLT

4.下图是ADC0809通过8255与PC总线接口,采用中断方式依次从IN0~IN7转换8个模拟量,把转换后的数字量依次存入内存BUFFER 的变量区中。

⑴计算8255口地址。0809输出允许OE的口地址。

⑵现给出满足上述要求的控制程序,请在程序中空缺部分填上正确内容(初始化时无关项置0)。

(2)控制程序: MOV AL,____ 8AH____ 8255A初始化

OUT ___ 8BH_____,AL

MOV SI,____ OFFSET BUFER____

MOV CX,8

MOV BL,____ 00H____ ;从IN0开始转换,生成正脉冲启动 转换

LOP: MOV AL,BL

OUT 88H,AL

ADD AL,10000000B

OUT 88H,AL

SUB AL,10000000B

OUT 88H,AL

CALL DELAY1;调用延时65时钟周期的子程序

LOP1: IN AL,____ 8AH____;检测EOC

TEST AL,____ 80H____

_____ JZ LOP1______

IN AL,____ 89H____

MOV [SI],AL

INC SI INC ____ BL____

LOOP ___ LOP_____

5.(10分)ADC0809与PC总线的接口如下图所示,地址译码器输出 地址范围为

84H~87H,采用软件延时来等待转换结束,已知ADC0809转换时间100us,延时程序为

DELAY100。请编写控制程序启动转换并读取模拟量IN7的转换结果。

6.(10分)ADC0809与8255、PC总线的接口如下图所示,地址译码器输出地址范围为80H~83H,地址范围为84H~87H,采用查询方式等待转换结束,请编写控制程序启动转换模拟量IN0并读取转换结果。

7.(10分)ADC0809与8255、PC总线的接口如下图所示,采用查询方式等待转换结束,请:

①计算8255端口地址,ADC0809启动转换地址,IN0~ IN7通道地址。

②编写控制程序从IN0开始启动转换,连续采样24个数据,然后采样下一通道,同样采样24个数据,直至IN7。采样数据存放在数据段2000H开始的数据区中。

8.(10分)ADC0809与8255、PC总线的接口如下图所示,采用查询方式等待转换结束,假设8255端口地址为80H~83H,ADC0809输出允许OE地址为84H~87H,编写控制程序完成IN0启动转换和数据输入。

9.(10分)ADC0809接口如下图所示,请回答以下问题:

①写出ADC0809启动转换程序段

②写出查询ADC0809转换是否结束程序段

③写出读出ADC0809转换结果程序段

④按图所示转换的是哪个模拟通道

10.(10分)ADC0809接口如下图所示,请回答以下问题:

①计算8255端口地址,ADC0809启动转换地址,IN0~ IN7通道地址。

②写出ADC0809启动转换IN7程序段

③写出查询ADC0809转换是否结束程序段

④写出使ADC0809的OE有效程序段

⑤写出读出ADC0809转换结果程序段

⑥按图所示若CLK88频率为4MHz,则ADC0809CLOCK周期为多少微妙?

第10章简答题

1 “行扫描法”和“行反转法”各分几步完成?每步的具体含义是什么?各有什么特点?

答:“行扫描法”分4步执行:

①判断是否有键按下

具体做法是:对行并行端口输出全“0”,然后,通过列并行输入端口读入列值,并进行比较判别:若列值为全“1”,则说明无键按下;若列值为非全“1”,则说明已有键按下,转下一步。

②延迟10~20ms,以消除按键的机械抖动

③识别是哪个键按下

具体做法是:从第0行开始,仅输出一行为“0”电平,其余为“1”电平,逐行扫描。每扫描一行,读入一次列值,若列值为全“1”,则说明此行无键按下,继续扫描下一行;若列值为非全“1”,则此行有键按下,记下此时的行、列值。

④依所得的行、列值查键号表可得键号(6),然后再由键号查键值表得出被按键得键值。

2 设计并画出一个8×8小键盘及接口电路,用文字叙述方式说明键盘及接口的工作原理及行扫描法识别键按下的工作过程。(规定用一片8255A作接口电路,其它元器件自选。)

答:1.电路工作原理:

(1)8255A的口A设置为输出状态,PAO~PA7接行线ROW0一ROW7。

(2)8255A的口B设置为输入状态,PB0一PB7接列线CO~C7。 (

3)电阻R为列线提拉电阻,保证列线静态电位为高电平。

(4)行列线交点接一开关,开关按下时将交点上行线逻辑状态送到该交点的列线上。

2.行扫描法识别键按下

(1)扫描程序首先让8255A的口A输出扫描码(初值为lllllll0B):

(2)扫描程序渎人8255A的B口连接的列线状态,判断是否有为逻辑。的列线;

(3)若B口读入有为。的位,说明本行有键按下,经移位检测出为。的列线序号,与扫描 码为。位所对应的行线序号共同形成键号,转相应键处理程序;

(4)若B口读人没有为。的位,说明本行无键按下,修改扫描码(第二次为llllll01B);

(5)转向(1),进行下一次扫描,如此循环直至发现有键按下为止。

假设(DS)=2000H,(ES)=3000H,(SS)=4000H,(SP)=100H,(BX)=200H,(SI)=1, (D1)=2,(BP)=256,字变量ARRAY偏移地址为0050H,(20250H)=1234H,(40100H)=00AOH,(40102H)=2200H.填空回答下列问题。

(1)MOV Ax,[BP][DI] ;源 *** 作数物理地址= 40102 H 指令执行后(AX)= 2200 H

(2)POP Ax ;源 *** 作数物理地址=40100 H 指令执行后(AX)=00AO H

(3)PUSH Es:[BX] ;源 *** 作数有效地址=200 H

(4)LEA DI,ARRAY;源字段的寻址方式是 直接寻址方式 指令执行后(DI)= 0050 H

(5)JMP [BX] ;指令执行后(IP)= 200 H

(6)ADD AL,BYTE PTR ARRAY[BX] ;源字段的寻址方式是 寄存器相对寻址方式 指令执行后(AL)= 34 H

第10章综合分析、设计题

1 四位共阴极七段LED显示器的接口电路如下图所示。8255A的PA口提供段选码,PB口提供位选码。设8255A口地址: 40H~43H。请:

⑴写出“1234”的段选码(字型码)。

⑵编写从左到右扫描显示 “1234”程序片段(初始化时无关项置0)。

2(10分)采用8253实现秒信号发生器的电路如下图所示,图中CLK0接基准时钟,OUT0接CLK1,OUT1产生秒定时信号。接口的初始化程序如下:

MOV DX, 控制口地址 ;计数通道0初始化,

MOV AL, 35H

OUT DX, AL

MOV AX, 5000H ;计数通道0写入计数初值

MOV DX, 通道0地址 ;

OUT DX, AL

MOV AL, AH

OUT DX, AL

MOV DX, 控制口地址 ;计数通道1初始化

MOV AL, 56H

OUT DX, AL

MOV AL, 200 ;计数通道1写入计数初值

MOV DX, 通道1地址 ;

OUT DX, AL

答:

3 (10分)

8086CPU通过8255A同开关及7段LED显示器接口电路如下图所示。请编写程序由7段LED显示器显示开关二进制状态值(用十六进制表示)。设端口地址为60H~63H,0~9,A~F的七段码分别为:0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H,88H,83H,0C6H,0A1H,86H,8EH

答:设8255A得端口地址为:

端口A:0FFF8H

端口B:0FFFAH

端口C:0FFFCH 控制口:0FFFEH

为增加8255A的负载能力,所以A口经驱动器同七段LED显示器相连。由图47可见,8255A的地址线A1、A0分别同地址锁存器输出的A2、A1相连,故每个端口可有二个端口地址,如A口为0FFF8H和0FFF9H,可认为未参加译码的地址线A0为0的地址,所以通常使用0FFF8H地址。

假设B口用输入,则8255A工作方式控制字为82H。

程序如下:

ORG 2000H ;从2000H开始存放数据

MOV AL, 82H ;只工作方式控制字

MOV DX,0FFFEH

OUT DX, AL

RDPOR TB: MOV DL, 0FAH ;读入B口信息

IN AL, DX

AND AL, 0FH ;屏蔽AL高四位,B口读入的信息 只低四位有效

MOV BX,OFFFSET SSEGCODE ;地址指针BX指向段选码表首地址

XLAT ; [BX+AL]→AL

MOV DL, 0F8H ;段选码→A口,由七段LED显示 器显示

OUT DX, AL

MOV AX, 56CH ;延时,使读入的信息保持显示一段 时间

DELAY: DEC AX

JNZ DELAY

JMP RDPORTB ;进入新一轮的 *** 作

HLT

ORG 2500H ;从2500H开始为段选码表

如果要求LED显示器循环显示0-F十六个数字,每个数字显示10s,显示100遍。则控制程序为:

ORG 2000H

MOV AL,82H

MOV DX,0FFFEH

OUT DX,AL

MOV BX,100 ;循环100次

DISFLOP: LEA DI,SSEGCODE ;指向段选码表

MOV CX,16 ;显示字符个数 LOP MOV AL,[DI] ;取显示字符送A口

MOV DL,0F8H

OUT DX,AL

INC DI ;修改显示指针

CALL DELAY10s ;延时10s字程序

LOOP LOP ;每遍循环16次 DEC BX ;修改大循环指针

JNZ DISFLOP

HLT

ORG 2500H

SEEG

CODE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,

DB 98H,88H,83H,DB 0C6H,0A1H,86H,8EH

代码 Award BIOS Ami BIOS Phoenix BIOS或Tandy 3000 BIOS

00 已显示系统的配置;即将控制INI19引导装入。

01 处理器测试1,处理器状态核实,如果测试失败,循环是无限的。 处理器寄存器的测试即将开始,不可屏蔽中断即将停用。

CPU寄存器测试正在进行或者失败。

02 确定诊断的类型(正常或者制造)。如果键盘缓冲器含有数据就会失效。 停用不可屏蔽中断;通过延迟开始。 CMOS写入/读出正在进行或者失灵。

03 清除8042键盘控制器,发出TESTKBRD命令(AAH) 通电延迟已完成。 ROM BIOS检查部件正在进行或失灵。

04 使8042键盘控制器复位,核实TESTKBRD。 键盘控制器软复位/通电测试。 可编程间隔计时器的测试正在进行或失灵。

05 如果不断重复制造测试1至5,可获得8042控制状态。 已确定软复位/通电;即将启动ROM。 DMA初如准备正在进行或者失灵。

06 使电路片作初始准备,停用视频、奇偶性、DMA电路片,以及清除DMA电路片,所有页面寄存器和CMOS停机字节。 已启动ROM计算ROM

BIOS检查总和,以及检查键盘缓冲器是否清除。 DMA初始页面寄存器读/写测试正在进行或失灵。

07 处理器测试2,核实CPU寄存器的工作。 ROM BIOS检查总和正常,键盘缓冲器已清除,向键盘发出BAT(基本保证测试)命令。

08 使CMOS计时器作初始准备,正常的更新计时器的循环。 已向键盘发出BAT命令,即将写入BAT命令。 RAM更新检验正在进行或Я椤

09 EPROM检查总和且必须等于零才通过。 核实键盘的基本保证测试,接着核实键盘命令字节。 第一个64K RAM测试正在进行。

0A 使视频接口作初始准备。 发出键盘命令字节代码,即将写入命令字节数据。 第一个64K RAM芯片或数据线失灵,移位。

0B 测试8254通道0。 写入键盘控制器命令字节,即将发出引脚23和24的封锁/解锁命令。 第一个64K RAM奇/偶逻辑失灵。

0C 测试8254通道1。 键盘控制器引脚23、24已封锁/解锁;已发出NOP命令。 第一个64K RAN的地址线故障。

0D 1、检查CPU速度是否与系统时钟相匹配。2、检查控制芯片已编程值是否符合初设置。3、视频通道测试,如果失败,则鸣喇叭。

已处理NOP命令;接着测试CMOS停开寄存器。 第一个64K RAM的奇偶性失灵

0E 测试CMOS停机字节。 CMOS停开寄存器读/写测试;将计算CMOS检查总和。 初始化输入/输出端口地址。

0F 测试扩展的CMOS。 已计算CMOS检查总和写入诊断字节;CMOS开始初始准备。

10 测试DMA通道0。 CMOS已作初始准备,CMOS状态寄存器即将为日期和时间作初始准备。 第一个64K RAM第0位故障。

11 测试DMA通道1。 CMOS状态寄存器已作初始准备,即将停用DMA和中断控制器。 第一个64DK RAM第1位故障。

12 测试DMA页面寄存器。 停用DMA控制器1以及中断控制器1和2;即将视频显示器并使端口B作初始准备。 第一个64DK RAM第2位故障。

13 测试8741键盘控制器接口。 视频显示器已停用,端口B已作初始准备;即将开始电路片初始化/存储器自动检测。 第一个64DK RAM第3位故障。

14 测试存储器更新触发电路。 电路片初始化/存储器处自动检测结束;8254计时器测试即将开始。 第一个64DK RAM第4位故障。

15 测试开头64K的系统存储器。 第2通道计时器测试了一半;8254第2通道计时器即将完成测试。 第一个64DK RAM第5位故障。

16 建立8259所用的中断矢量表。 第2通道计时器测试结束;8254第1通道计时器即将完成测试。 第一个64DK RAM第6位故障。

17 调准视频输入/输出工作,若装有视频BIOS则启用。 第1通道计时器测试结束;8254第0通道计时器即将完成测试。 第一个64DK

RAM第7位故障。

18 测试视频存储器,如果安装选用的视频BIOS通过,由可绕过。 第0通道计时器测试结束;即将开始更新存储器。 第一个64DK RAM第8位故障。

19 测试第1通道的中断控制器(8259)屏蔽位。 已开始更新存储器,接着将完成存储器的更新。 第一个64DK RAM第9位故障。

1A 测试第2通道的中断控制器(8259)屏蔽位。 正在触发存储器更新线路,即将检查15微秒通/断时间。 第一个64DK RAM第10位故障。

1B 测试CMOS电池电平。 完成存储器更新时间30微秒测试;即将开始基本的64K存储器测试。 第一个64DK RAM第11位故障。

1C 测试CMOS检查总和。 第一个64DK RAM第12位故障。

1D 调定CMOS配置。 第一个64DK RAM第13位故障。

1E 测定系统存储器的大小,并且把它和CMOS值比较。 第一个64DK RAM第14位故障。

1F 测试64K存储器至最高640K。 第一个64DK RAM第15位故障。

20 测量固定的8259中断位。 开始基本的64K存储器测试;即将测试地址线。 从属DMA寄存器测试正在进行或失灵。

21 维持不可屏蔽中断(NMI)位(奇偶性或输入/输出通道的检查)。 通过地址线测试;即将触发奇偶性。 主DMA寄存器测试正在进行或失灵。

22 测试8259的中断功能。 结束触发奇偶性;将开始串行数据读/写测试。 主中断屏蔽寄存器测试正在进行或失灵。

23 测试保护方式8086虚拟方式和8086页面方式。 基本的64K串行数据读/写测试正常;即将开始中断矢量初始化之前的任何调节。

从属中断屏蔽存器测试正在进行或失灵。

24 测定1MB以上的扩展存储器。 矢量初始化之前的任何调节完成,即将开始中断矢量的初始准备。 设置ES段地址寄存器注册表到内存高端。

25 测试除头一个64K之后的所有存储器。 完成中断矢量初始准备;将为旋转式断续开始读出8042的输入/输出端口。 装入中断矢量正在进行或失灵。

26 测试保护方式的例外情况。 读出8042的输入/输出端口;即将为旋转式断续开始使全局数据作初始准备。 开启A20地址线;使之参入寻址。

27 确定超高速缓冲存储器的控制或屏蔽RAM。 全1数据初始准备结束;接着将进行中断矢量之后的任何初始准备。 键盘控制器测试正在进行或失灵。

28 确定超高速缓冲存储器的控制或者特别的8042键盘控制器。 完成中断矢量之后的初始准备;即将调定单色方式。

CMOS电源故障/检查总和计算正在进行。

29 已调定单色方式,即将调定彩色方式。 CMOS配置有效性的检查正在进行。

2A 使键盘控制器作初始准备。 已调定彩色方式,即将进行ROM测试前的触发奇偶性。 置空64K基本内存。

2B 使磁碟驱动器和控制器作初始准备。 触发奇偶性结束;即将控制任选的视频ROM检查前所需的任何调节。 屏幕存储器测试正在进行或失灵。

2C 检查串行端口,并使之作初始准备。 完成视频ROM控制之前的处理;即将查看任选的视频ROM并加以控制。 屏幕初始准备正在进行或失灵。

2D 检测并行端口,并使之作初始准备。 已完成任选的视频ROM控制,即将进行视频ROM回复控制之后任何其他处理的控制。 屏幕回扫测试正在进行或失灵。

2E 使硬磁盘驱动器和控制器作初始准备。 从视频ROM控制之后的处理复原;如果没有发现EGA/VGA就要进行显示器存储器读/写测试。

检测视频ROM正在进行。

2F 检测数学协处理器,并使之作初始准备。 没发现EGA/VGA;即将开始显示器存储器读/写测试。

30 建立基本内存和扩展内存。 通过显示器存储器读/写测试;即将进行扫描检查。 认为屏幕是可以工作的。

31 检测从C800:0至EFFF:0的选用ROM,并使之作初始准备。 显示器存储器读/写测试或扫描检查失败,即将进行另一种显示器存储器读/写测试。

单色监视器是可以工作的。

32 对主板上COM/LTP/FDD/声音设备等I/O芯片编程使之适合设置值。 通过另一种显示器存储器读/写测试;却将进行另一种显示器扫描检查。

彩色监视器(40列)是可以工作的。

33 视频显示器检查结束;将开始利用调节开关和实际插卡检验显示器的关型。 彩色监视器(80列)是可以工作的。

34 已检验显示器适配器;接着将调定显示方式。 计时器滴答声中断测试正在进行或失灵。

35 完成调定显示方式;即将检查BIOS ROM的数据区。 停机测试正在进行或失灵。

36 已检查BIOS ROM数据区;即将调定通电信息的游标。 门电路中A-20失灵。

37 识别通电信息的游标调定已完成;即将显示通电信息。 保护方式中的意外中断。

38 完成显示通电信息;即将读出新的游标位置。 RAM测试正在进行或者地址故障>FFFFH。

39 已读出保存游标位置,即将显示引用信息串。

3A 引用信息串显示结束;即将显示发现ESC信息。 间隔计时器通道2测试或失灵。

3B 用OPTI电路片(只是486)使辅助超高速缓冲存储器作初始准备。 已显示发现<ESC>信息;虚拟方式,存储器测试即将开始。

按日计算的日历时钟测试正在进行或失灵。

3C 建立允许进入CMOS设置的标志。 串行端口测试正在进行或失灵。

3D 初始化键盘/PS2鼠标/PNP设备及总内存节点。 并行端口测试正在进行或失灵。

3E 尝试打开L2高速缓存。 数学协处理器测试正在进行或失灵。

40 已开始准备虚拟方式的测试;即将从视频存储器来检验。 调整CPU速度,使之与外围时钟精确匹配。

41 中断已打开,将初始化数据以便于0:0检测内存变换(中断控制器或内存不良) 从视频存储器检验之后复原;即将准备描述符表。 系统插件板选择失灵。

42 显示窗口进入SETUP。 描述符表已准备好;即将进行虚拟方式作存储器测试。 扩展CMOS RAM故障。

43 若是即插即用BIOS,则串口、并口初始化。 进入虚拟方式;即将为诊断方式实现中断。

44 已实现中断(如已接通诊断开关;即将使数据作初始准备以检查存储器在0:0返转。) BIOS中断进行初始化。

45 初始化数学协处理器。 数据已作初始准备;即将检查存储器在0:0返转以及找出系统存储器的规模。

46 测试存储器已返回;存储器大小计算完毕,即将写入页面来测试存储器。 检查只读存储器ROM版本。

47 即将在扩展的存储器试写页面;即将基本640K存储器写入页面。

48 已将基本存储器写入页面;即将确定1MB以上的存储器。 视频检查,CMOS重新配置。

49 找出1BM以下的存储器并检验;即将确定1MB以上的存储器。

4A 找出1MB以上的存储器并检验;即将检查BIOS ROM数据区。 进行视频的初始化。

4B BIOS ROM数据区的检验结束,即将检查<ESC>和为软复位清除1MB以上的存储器。

4C 清除1MB以上的存储器(软复位)即将清除1MB以上的存储器 屏蔽视频BIOS ROM。

4D 已清除1MB以上的存储器(软复位);将保存存储器的大小。

4E 若检测到有错误;在显示器上显示错误信息,并等待客户按<F1>键继续。 开始存储器的测试:(无软复位);即将显示第一个64K存储器的测试。

显示版权信息。

4F 读写软、硬盘数据,进行DOS引导。 开始显示存储器的大小,正在测试存储器将使之更新;将进行串行和随机的存储器测试。

50 将当前BIOS监时区内的CMOS值存到CMOS中。 完成1MB以下的存储器测试;即将高速存储器的大小以便再定位和掩蔽。

将CPU类型和速度送到屏幕。

51 测试1MB以上的存储器。

52 所有ISA只读存储器ROM进行初始化,最终给PCI分配IRQ号等初始化工作。 已完成1MB以上的存储器测试;即将准备回到实址方式。

进入键盘检测。

53 如果不是即插即用BIOS,则初始化串口、并口和设置时种值。 保存CPU寄存器和存储器的大小,将进入实址方式。

54 成功地开启实址方式;即将复原准备停机时保存的寄存器。 扫描“打击键”

55 寄存器已复原,将停用门电路A-20的地址线。

56 成功地停用A-20的地址线;即将检查BIOS ROM数据区。 键盘测试结束。

57 BIOS ROM数据区检查了一半;继续进行。

58 BIOS ROM的数据区检查结束;将清除发现<ESC>信息。 非设置中断测试。

59 已清除<ESC>信息;信息已显示;即将开始DMA和中断控制器的测试。

5A 显示按“F2”键进行设置。

5B 测试基本内存地址。

5C 测试640K基本内存。

60 设置硬盘引导扇区病毒保护功能。 通过DMA页面寄存器的测试;即将检验视频存储器。 测试扩展内存。

61 显示系统配置表。 视频存储器检验结束;即将进行DMA#1基本寄存器的测试。

62 开始用中断19H进行系统引导。 通过DMA#1基本寄存器的测试;即将进行DMA#2寄存器的测试。 测试扩展内存地址线。

63 通过DMA#2基本寄存器的测试;即将检查BIOS ROM数据区。

64 BIOS ROM数据区检查了一半,继续进行。

65 BIOS ROM数据区检查结束;将把DMA装置1和2编程。

66 DMA装置1和2编程结束;即将使用59号中断控制器作初始准备。 Cache注册表进行优化配置。

67 8259初始准备已结束;即将开始键盘测试。

68 使外部Cache和CPU内部Cache都工作。

6A 测试并显示外部Cache值。

6C 显示被屏蔽内容。

6E 显示附属配置信息。

70 检测到的错误代码送到屏幕显示。

72 检测配置有否错误。

74 测试实时时钟。

76 扫查键盘错误。

7A 锁键盘。

7C 设置硬件中断矢量。

7E 测试有否安装数学处理器。

80 键盘测试开始,正在清除和检查有没有键卡住,即将使键盘复原。 关闭可编程输入/输出设备。

81 找出键盘复原的错误卡住的键;即将发出键盘控制端口的测试命令。

82 键盘控制器接口测试结束,即将写入命令字节和使循环缓冲器作初始准备。 检测和安装固定RS232接口(串口)。

83 已写入命令字节,已完成全局数据的初始准备;即将检查有没有键锁住。

84 已检查有没有锁住的键,即将检查存储器是否与CMOS失配。 检测和安装固定并行口。

85 已检查存储器的大小;即将显示软错误和口令或旁通安排。

86 已检查口令;即将进行旁通安排前的编程。 重新打开可编程I/O设备和检测固定I/O是否有冲突。

87 完成安排前的编程;将进行CMOS安排的编程。

88 从CMOS安排程序复原清除屏幕;即将进行后面的编程。 初始化BIOS数据区。

89 完成安排后的编程;即将显示通电屏幕信息。

8A 显示头一个屏幕信息。 进行扩展BIOS数据区初始化。

8B 显示了信息:即将屏蔽主要和视频BIOS。

8C 成功地屏蔽主要和视频BIOS,将开始CMOS后的安排任选项的编程。 进行软驱控制器初始化。

8D 已经安排任选项编程,接着检查滑了鼠和进行初始准备。

8E 检测了滑鼠以及完成初始准备;即将把硬、软磁盘复位。

8F 软磁盘已检查,该磁碟将作初始准备,随后配备软磁碟。

90 软磁碟配置结束;将测试硬磁碟的存在。 硬盘控制器进行初始化。

91 硬磁碟存在测试结束;随后配置硬磁碟。 局部总线硬盘控制器初始化。

92 硬磁碟配置完成;即将检查BIOS ROM的数据区。 跳转到用户路径2。

93 BIOS ROM的数据区已检查一半;继续进行。

94 BIOS ROM的数据区检查完毕,即调定基本和扩展存储器的大小。 关闭A-20地址线。

95 因应滑鼠和硬磁碟47型支持而调节好存储器的大小;即将检验显示存储器。

96 检验显示存储器后复原;即将进行C800:0任选ROM控制之前的初始准备。 “ES段”注册表清除。

97 C800:0任选ROM控制之前的任何初始准备结束,接着进行任选ROM的检查及控制。

98 任选ROM的控制完成;即将进行任选ROM回复控制之后所需的任何处理。 查找ROM选择。

99 任选ROM测试之后所需的任何初始准备结束;即将建立计时器的数据区或打印机基本地址。

9A 调定计时器和打印机基本地址后的返回作;即调定RS-232基本地址。 屏蔽ROM选择。

9B 在RS-232基本地址之后返回;即将进行协处理器测试之初始准备。

9C 协处理器测试之前所需初始准备结束;接着使协处理器作初始准备。 建立电源节能管理。

9D 协处理器作好初始准备,即将进行协处理器测试之后的任何初始准备。

9E 完成协处理器之后的初始准备,将检查扩展键盘,键盘识别符,以及数字锁定。 开放硬件中断。

9F 已检查扩展键盘,调定识别标志,数字锁接通或断开,将发出键盘识别命令。

A0 发出键盘识别命令;即将使键盘识别标志复原。 设置时间和日期。

A1 键盘识别标志复原;接着进行高速缓冲存储器的测试。

A2 高速缓冲存储器测试结束;即将显示任何软错误。 检查键盘锁。

A3 软错误显示完毕;即将调定键盘打击的速率。

A4 调好键盘的打击速率,即将制订存储器的等待状态。 键盘重复输入速率的初始化。

A5 存储器等候状态制定完毕;接着将清除屏幕。

A6 屏幕已清除;即将启动奇偶性和不可屏蔽中断。

A7 已启用不可屏蔽中断和奇偶性;即将进行控制任选的ROM在E000:0之所需的任何初始准备。

A8 控制ROM在E000:0之前的初始准备结束,接着将控制E000:0之后所需的任何初始准备。 清除“F2”键提示。

A9 从控制E000:0 ROM返回,即将进行控制E000:0任选ROM之后所需的任何初始准备。

AA 在E000:0控制任选ROM之后的初始准备结束;即将显示系统的配置。 扫描“F2”键打击。

AC 进入设置

AE 清除通电自检标志。

B0 检查非关键性错误。

B2 通电自检完成准备进入作系统引导。

B4 蜂鸣器响一声。

B6 检测密码设置(可选)。

B8 清除全部描述表。

BC 清除校验检查值。

BE 程序缺省值进入控制芯片,符合可调制二进制缺省值表。 清除屏幕(可选)。

BF 测试CMOS建立值。 检测病毒,提示做资料备份。

C0 初始化高速缓存。 用中断19试引导。

C1 内存自检。 查找引导扇区中的“55”“AA”标记。

C3 第一个256K内存测试。

C5 从ROM内复制BIOS进行快速自检。

C6 高速缓存自检。

CA 检测Micronies超速缓冲存储器(如果存在),并使之作初始准备。

CC 关断不可屏蔽中断处理器。

EE 处理器意料不到的例外情况。

FF 给予INI19引导装入程序的控制,主板OK

8259中断结束的3种模式:

(1)自动中断结束模式AEOI(在8259初始化写入ICW4的D1位为1)

在中断响应的最后周期的NNA信号后沿,中断源在ISR对应位自动复位零,中断结束。

(2)非自动中断结束模式EOI(即普通中断结束方式)

(在8259初始化写入ICW4的D1位为0),

中断处理完毕,中断服务程序返回之前,CPU向8259发出EOI命令,

使中断源在ISR相应位复位零,中断结束。

(3)特殊中断结束模式

写入OCW2的D7~D5位为011,OCW2的D2~D0位指定某中断源的ISR相应位。

中断处理完毕,中断服务程序返回之前,CPU向8259发出特殊EOI命令,

使中断源在ISR相应位复位零,中断结束。

电路设计的思路:

1、计时功能实现逻辑:

通过8253计数器0和计数器1级联实现准确定时;用8255的A口低六位控制东西、南北路口交通灯的状态;灯的亮灭可直接由8086输出0,1控制。用8259A管理可屏蔽中断即开机初始化。

采用两个计数器级联的方式, 并且计数器0工作于方式3用于产生方波信号,计数器1工作方式0,计数到时高电平信号。计数器1的输出端OUT1接入8255芯片的PC0口,通过查询8255的C口的值,以完成计时功能。将计数器0的输出OUT0接到计数器1的输入端CLK1,而CLK0的输入采用119MHZ的时钟频率, 计数器0计数初值为59499=0E86BH,则OUT0=20HZ, 即计数器1的时钟频率为20HZ。

当计数器1的记数初值为9时,05S后OUT1输出一高电平。8086通过读取8255C口的值,来决定对A口写入的数据。因此每隔05秒8086变换灯的状态,持续6次即完成3秒的闪烁功能。

当计数器1的记数初值为899时,45S后OUT1输出一高电平。通过查询8255的C口PC0的状态改变,达到延时45秒的作用。同理计数器1的计数初值分别为59、799时,分别为3、40秒的延时。

2、 译码电路设计

通过分析8259、8253、8255各端口地址,设计合理的地址译码电路。8259的地址为20H、21H,8253的地址为40H、41H、42H、43H,8255的端口地址为0F0H、0F1H、0F2H、0F3H。故芯片的地址只与8086的地址的低8位有联系,不妨设高十二为全为1将它们相与后作为38译码器的始能信号E3。再分析发现8259、8253、8255各端口地址的低八位其中D2、D3均为0,将8086的地址总线的D2、D3作为38译码器的始能信号E1、E2。将8086的地址总线的D0、D1分别与8253和8255的A0、A1连接,利用D4、D5、D6、D7构成译码电路。将8086的地址总线的D0与8259的A0连接,利用D2、D4、D5、D6、D7通过38译码器构成译码电路。

程序代码:

MY8259_ICW1 EQU 20H ;实验系统中 8259的ICW1端口地址

MY8259_ICW2 EQU 21H ;实验系统中8259的ICW2端口地址

MY8259_ICW3 EQU 21H ;实验系统中8259的ICW3端口地址

MY8259_ICW4 EQU 21H ;实验系统中8259的ICW4端口地址

MY8259_OCW1 EQU 21H ;实验系统中8259的OCW1端口地址

MY8259_OCW2 EQU 20H ;实验系统中8259的OCW2端口地址

MY8259_OCW3 EQU 20H ;实验系统中8259的OCW3端口地址

MY8253_COUNT0 EQU 40H ;实验系统中8253计数器0端口地址

MY8253_COUNT1 EQU 41H ;实验系统中8253计数器1端口地址

MY8253_COUNT2 EQU 42H ;实验系统中8253计数器2端口地址

MY8253_MODE EQU 43H ;实验系统中8253控制寄存器端口地址

MY8255_A EQU 0F0H ;实验系统中8255的A口地址

MY8255_B EQU 0F1H ;实验系统中8255的B口地址

MY8255_C EQU 0F2H ;实验系统中8255的C口地址

MY8255_MODE EQU 0F3H ;实验系统中8255的控制寄存器地址

DATA SEGMENT

CS_BAK DW ;保存INTR原中断处理程序入口段地址的变量

IP_BAK DW ;保存INTR原中断处理程序入口偏移地址的变量

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE ,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AX,3508H

INT 21H

MOV IP_BAK, ES ;保存INTR原中断处理程序入口偏移地址

MOV CS_BAK, BX ;保存INTR原中断处理程序入口段地址

MOV AX,SEG INITIAL

MOV DS,AX

MOV DX,OFFSET INITIAL

MOV AX,2508H

INT 21H ;设置中断向量

MOV DX,MY8259_ICW1 ; 初始化实验系统中8259的ICW1

MOV AL,13H ;边沿触发、单片8259、需要ICW4

OUT DX,AL

MOV DX, MY8259_ICW2 ;初始化实验系统中8259的ICW2

MOV AL,08H ;IR0中断类型号

OUT DX,AL

MOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4

MOV AL,03H ;自动结束EOI

OUT DX,AL

MOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1

MOV AL,0FEH ;打开IR0的屏蔽位

OUT DX,AL

MOV AL,00H

MOV DX, MY8259_OCW2 ;初始化实验系统中8259的OCW2,完成8259的初始化

OUT DX,AL

QUERY: MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令

MOV AL,0CH

OUT DX,AL

IN AL,DX ;读出查询字

TEST AL,80H ;判断中断是否已响应

JZ QUERY ;没有响应则继续查询

AND AL,01H

CMP AL,00H

JNE QUERY ;若不是IR0请求,继续查询

L4: INT 08H ;调用08H中断程序

CALL DELAY3S ;延时3秒

MOV DX,MY8255_A ;写8255的A口

MOV AL,12H

OUT DX,AL ; L2、L5亮

CALL DELAY45S ;延时45秒

MOV CX, 03H ;周期1S,循环三次完成灯闪烁

L2: MOV DX,MY8255_A ;写8255的A口

MOV AL,02H

OUT DX,AL ; L2亮 、L5灭

CALL DELAYHALFS ;延时05秒

MOV DX,MY8255_A

MOV AL,12H

OUT DX,AL ; L2、L5亮

CALL DELAYHALFS ;延时05秒

DEC CX

JNZ L2 ;L2亮,L5闪烁

MOV DX,MY8255_A ;写8255的A口

MOV AL,06H

OUT DX,AL ; L2、L3亮

CALL DELAY3S ;延时3秒

MOV DX,MY8255_A ;写8255的A口

MOV AL,21H

OUT DX,AL ; L1、L6亮

CALL DELAY45S ;延时40秒

MOV CX,03H ;周期1S,循环三次完成灯闪烁

L3: MOV DX,MY8255_A ;写8255的A口

MOV AL,01H

OUT DX,AL ; L1亮 、L6灭

CALL DELAYHALFS ;延时05秒

MOV DX,MY8255_A ;写8255的A口

MOV AL,21H

OUT DX,AL ; L1、L6亮

CALL DELAYHALFS ;延时05秒

DEC CX ;L1亮,L6闪烁

JNZ L3

MOV DX,MY8255_A ;写8255的A口

MOV AL,09H

OUT DX,AL ; L1、L4亮

CALL DELAY3S ;延时3秒

JMP L4 ;循环一次完成,跳到L4重新开始循环

MOV AH,4CH

INT 21H ;返回DOS

INITIAL PROC ;中断类型号08H的中断子程序

MOV DX,MY8253_MODE ;对8253初始化

MOV AL,36H

OUT DX,AL

MOV AX, 0E86BH

MOV DX,MY8253_COUNT0

OUT DX,AL

MOV AL,AH

OUT DX,AL ;计数器0工作方式3 ,OUT0为频率20HZ的方波

MOV DX, MY8255_MODE

MOV AL,89H

OUT DX,AL ;8255初始化完成 A口输出,C口输入

MOV DX,MY8255_A

MOV AL,03H

OUT DX,AL ;两个红灯L1、L2亮,灯初始化完成

IRET

INITIAL ENDP ;开机初始化完成

DELAY3S PROC ;延时3S子程序

MOV AL,51H

MOV DX,MY8253_MODE

OUT DX,AL

MOV AL,59H

MOV DX,MY8253_COUNT1

OUT DX,AL ;计数器1工作方式0 ,计数初值为59

L1: MOV DX, MY8255_C

IN AL,DX

CMP AL,01H

LOOPNZ L1

RET

DELAY3S ENDP

DELAY45S PROC ;延时45S子程序

MOV AL,71H

MOV DX,MY8253_MODE

OUT DX,AL

MOV AX,0899H

MOV DX,MY8253_COUNT1

OUT DX,AL

MOV AL,AH

OUT DX,AL ;计数器1工作方式0 ,计数初值为899

L5: MOV DX, MY8255_C

IN AL,DX

CMP AL,01H

LOOPNZ L5

RET

DELAY45S ENDP

DELAYHALFS PROC ;延时05S子程序

MOV AL,51H

MOV DX,MY8253_MODE

OUT DX,AL

MOV AL,09H

MOV DX,MY8253_COUNT1

OUT DX,AL ;计数器1工作方式0 ,计数初值为9

L6: MOV DX, MY8255_C

IN AL,DX

CMP AL,01H

LOOPNZ L6

RET

DELAYHALFS ENDP

DELAY40S PROC ;延时40S子程序

MOV AL,71H

MOV DX,MY8253_MODE

OUT DX,AL

MOV AX,0799H

MOV DX,MY8253_COUNT1

OUT DX,AL

MOV AL,AH

OUT DX,AL ;计数器1工作方式0 ,计数初值为799

L7: MOV DX, MY8255_C

IN AL,DX

CMP AL,01H

LOOPNZ L7

RET

DELAY40S ENDP

CODE ENDS

END START

cli ;关闭中断,这就是停止CPU响应可屏蔽中断。一般在进行中断处理和8259初始化时,都要用这个,做好后,用STI再开放中断

mov ax,0

mov ds,ax ;将数据段寄存器置0,因为中断向量表在这个位置存放。

mov bx,4icw2 ;(icw2放的中断向量号);一个中断向量用4个字节,前字节是偏移地址,后字放的是段地址。也就是说,一个向量要占4个字节,你的ICW2在8086系统中是0AH(10),也就是说,它的向量放在物理地址的0:40开始的连续4个字节中。

mov ax,code ;这里的code是什么个意思?;这个CODE应该是该程序的代码段标号,准确地说是中断处理程序的段地址。

shl ax,4 ;以下是算出中断处理程序的物理地址。注意,除了在特定系统中,一般不能按下面的办法设置中断向量。正常就是把中断处理程序的段CODE值放在后字,将偏移入口地址放在前字。

add ax,offset ienter ;ienter中断程序名

mov [bx],ax 下面是将中断处理程序物理地址放入向量表。当中断处理程序在64K之外的物理地址中时,你提供的这个程序就是错误的。

mov ax,0

inc bx

inc bx

mov [bx],ax

另:你提供的这个程序片段与8259无直接关联。是一个典型的8086系统下的中断初始化的一个部分。

再,这里三言两句怕是讲不明白8086向量表的结构,你可以看下资料。希望能帮到你

问题描述不是很明确,也没有任何补充说明,具体是遇到了什么问题,是使用中出现了异常,具体的报错代码是什么,如果有相应的截图,建议一并上传,再补充下具体的情况说明,以便给予针对性的说明或介绍。

以上就是关于8254初始化编程全部的内容,包括:8254初始化编程、计算机接口技术综合题,题目如下,请各位大虾江湖救急救急!!!、电脑测试中的8254/8259/8042/8086指的是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9504321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存