微机原理习题.docx

上传人:b****8 文档编号:11910480 上传时间:2023-06-03 格式:DOCX 页数:18 大小:425.12KB
下载 相关 举报
微机原理习题.docx_第1页
第1页 / 共18页
微机原理习题.docx_第2页
第2页 / 共18页
微机原理习题.docx_第3页
第3页 / 共18页
微机原理习题.docx_第4页
第4页 / 共18页
微机原理习题.docx_第5页
第5页 / 共18页
微机原理习题.docx_第6页
第6页 / 共18页
微机原理习题.docx_第7页
第7页 / 共18页
微机原理习题.docx_第8页
第8页 / 共18页
微机原理习题.docx_第9页
第9页 / 共18页
微机原理习题.docx_第10页
第10页 / 共18页
微机原理习题.docx_第11页
第11页 / 共18页
微机原理习题.docx_第12页
第12页 / 共18页
微机原理习题.docx_第13页
第13页 / 共18页
微机原理习题.docx_第14页
第14页 / 共18页
微机原理习题.docx_第15页
第15页 / 共18页
微机原理习题.docx_第16页
第16页 / 共18页
微机原理习题.docx_第17页
第17页 / 共18页
微机原理习题.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理习题.docx

《微机原理习题.docx》由会员分享,可在线阅读,更多相关《微机原理习题.docx(18页珍藏版)》请在冰点文库上搜索。

微机原理习题.docx

微机原理习题

1.设8255A的A口、B口、C口和控制字寄存器的端口地址分别为80H、82H、84H和86H。

要求A口工作在方式0输出,B口工作在方式0输入,C口高4位输入,低4位输出,试编写8255A的初始化程序。

MOVAL,10001010B;方式控制字

OUT86H,AL

2.8255A的A口、B口、C口和控制字寄存器的端口地址分别为80H、82H、84H和86H,要求PC4输出高电平,PC5输出低电平,PC6输出一个正脉冲,试写出完成这些功能的指令序列。

MOVAL,00001001B;PC4输出高电平

OUT86H,AL

MOVAL,00001010B;PC5输出低电平

OUT86H,AL

MOVAL,000001100B;PC6先输出低电平

OUT86H,AL

MOVAL,00001101B;PC6再输出高电平

OUT86H,AL

MOVAL,00001100B;PC6再输出低电平,形成一个正脉冲

OUT86H,AL

3.8255A的口地址为80H~83H,8253的口地址为84H~87H,

(1)若A口接8个开关K7~K0,B口接8个指示灯LED7~LED0,当开关合上时相应的

指示灯亮,断开时灯灭,要求每隔0.5s检测一次开关状态,并在LED上显示出来,试画出

硬件连线图,编写实现这种功能的程序。

(2)若把接在端口A上的开关去掉,要求接在端口B上的指示灯轮流熄灭,每只灯熄灭1

秒钟,请编程实现这种功能。

答:

(1)8255A:

A口输入,B口输出

8253:

2MHz/2Hz=1000000

通道0工作于方式2,取N0=1000

通道1工作于方式0,取N1=999,即得OUT1每0.5秒中断一次。

本题用8253定时中断,中断处理时检测开关状态,并点亮相应的LED。

假设8259A已初始化,主程序如下:

MOVAX,SEGINTR;形成中断矢量表

MOVDS,AX

MOVDX,OFFSETINTR

MOVAL,N

MOVAH,25H

INT21H

MOVAL,10010000B;8255初始化

OUT83H,AL

MOVAL,00110101B;通道0方式2,BCD计数

OUT87H,AL

MOVAL,00H;置初值1000

OUT84H,AL

MOVAL,10H

OUT84H,AL

MOVAL,01110001B;通道1方式0,BCD计数

OUT87H,AL

MOVAL,99H;置初值999

OUT85H,AL

MOVAL,09H

OUT85H,AL

STI

AGAIN:

HLT

JMPAGAIN

中断服务程序:

INTR:

PUSHAX

STI

INAL,80H;检测开关,合上为0

NOTAL;取反

OUT81H,AL;点亮相应LED(合上)

MOVAL,01110001B;通道1方式0,BCD计数

OUT87H,AL

MOVAL,99H;置初值999

OUT85H,AL

MOVAL,09H

OUT85H,AL

CLI

MOVAL,20H;普通EOI命令

OUT20H,AL

POPAX

IRET

2)8255A:

B口输出

8253:

通道0工作于方式2,取N0=2000

通道1工作于方式3,取N1=1000,即得OUT1频率为1Hz(周期为1秒)的方波,

接到8259A的IRi,边沿触发中断请求。

主程序如下:

MOVAX,SEGINTR;形成中断矢量表

MOVDS,AX

MOVDX,OFFSETINTR

MOVAL,N

MOVAH,25H

INT21H

MOVAL,10000000B;8255初始化

OUT83H,AL

MOVAL,00110101B;通道0方式2,BCD计数

OUT87H,AL

MOVAL,00H;置初值2000

OUT84H,AL

MOVAL,20H

OUT84H,AL

MOVAL,01110111B;通道1方式3,BCD计数

OUT87H,AL

MOVAL,00H;置初值1000

OUT85H,AL

MOVAL,10H

OUT85H,AL

MOVAL,0FEH;熄灭LED0

OUT81H,AL

STI

GOON:

HLT

JMP

中断服务程序如下:

INTR:

PUSHAX

STI

ROLAL,1;AL左循环移位1位

OUT81H,AL;点亮下一位LED

CLI

MOVAL,20H

OUT20H,AL;普通EOI结束命令

POPAX

IRET

硬件连接图如下:

4.设8255A的口地址为300H~303H,A口接4个开关K3~K0,B口接一个七段LED显示器,用来显示4个开关所拨通的16进制数字0~F,开关都合上时,显示0,都断开时显示F,每隔2秒钟检测一次,试画出硬件连线图,并编写实现这种功能的程序。

与上题思路相同

8255A:

A口方式0输入,B口方式0输出,端口地址300H~303H

8253:

用于2秒定时,端口地址为304H~307H

2MHz/0.5Hz=4000000

通道0工作于方式2,取N0=4000

通道1工作于方式0,取N1=999,即得OUT1每2秒中断一次。

本题用8253定时中断,中断处理时检测开关状态,并点亮相应的LED。

假设8259A已初始化,主程序如下:

TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;七段码表格

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H

MOVAX,SEGINTR;形成中断矢量表

MOVDS,AX

MOVDX,OFFSETINTR

MOVAL,N

MOVAH,25H

INT21H

MOVAL,10010000B;8255初始化

MOVDX,303H

OUTDX,AL

MOVAL,00110101B;8253初始化,通道0方式2,BCD计数

MOVDX,307H

OUTDX,AL

MOVAL,00H;置初值4000H

MOVDX,304H

OUTDX,AL

MOVAL,40H

OUTDX,AL

MOVAL,01110001B;通道1方式0,BCD计数

MOVDX,307H

OUTDX,AL

MOVAL,99H;置初值999

MOVDX,305H

OUTDX,AL

MOVAL,09H

OUTDX,AL

STI

AGAIN:

HLT

JMPAGAIN

中断服务程序:

INTR:

PUSHAX

STI

MOVDX,300H

INAL,DX;检测开关,合上为0

ANDAL,0FH;只保留低4位PA3~PA0

MOVBX,OFFSETTABLE

XLATTABLE

MOVDX,301H

OUTDX,AL;点亮LED,显示数字

MOVAL,01110001B;通道1方式0,BCD计数

MOVDX,307H

OUTDX,AL

MOVAL,99H;置初值999

MOVDX,305H

OUTDX,AL

MOVAL,09H

OUTDX,AL

CLI

MOVAL,20H;普通EOI命令

OUT20H,AL

POPAX

IRET

 

5.利用8255A和ADC0809等芯片设计PC机上的A/D转换卡,设8255A的口地址为3C0H~

3C3H,要求对8个通道各采集1个数据,存放到数据段中以D_BUF为始址的缓冲器中,

试完成以下工作:

(1)画出硬件连接图。

(2)编写完成上述功能的程序。

(2)AD_SUBPROCNEAR

MOVCX,8;CX作数据计数器

MOVBL,00H;模拟通道号存在BL中

LEADI,D_BUF;缓冲区

NEXT_IN:

MOVDX,3C2H;8255A端口C地址

MOVAL,BL

OUTDX,AL;输出通道号

MOVDX,3C3H;指向控制口

MOVAL,00000111B;PC3置1

OUTDX,AL;送出开始启动信号

NOP;延时

NOP

NOP

MOVAL,00000110B;PC3复位

OUTDX,AL;送出结束启动信号

MOVDX,3C2H;C口

NO_CONV:

INAL,DX;读入C口内容

TESTAL,80H;PC7,EOC信号

JNZNO_CONV;PC7=1,未开始转换,等待

NO_EOC:

INAL,DX;PC7=0,已启动转换

TESTAL,80H;再查PC7

JZNO_EOC;PC7=0,转换未结束,等待

MOVDX,3C0H;PC7=1,转换结束,DX指向A口

INAL,DX;读入数据

MOV[DI],AL;存入缓冲区

INCDI

INCBL;指向下个通道

LOOPNEXT_IN

RET

AD_SUBENDP

6.试利用ADC0809,8253和8259A等芯片设计8通道A/D转换电路。

系统中用8253作定时器,采用中断方式控制采样率,采样率为500Hz。

设8253的通道0输入时钟脉冲为2MHz,输出端OUT0接

8259A的IR2,8253的口地址为300H~303H,8259A的口地址为304H和305H,ADC0809的8个输入通道的口地址为308H~30FH,查询EOC信号和状态口地址为306H,ADC0809的输入时钟频率为640KHz,A/D转换的结果依次存入数据段中以BUFFER为始址的内存中,从通道0开始先存入各通道的第一个数据,再存放第二个数据,采集10秒钟后停止工作。

要求:

(1)画出硬件连线图,可以不画具体的译码电路。

(2)编写8253,8259A(只需写入中断屏蔽字)的初始化程序及采集8路模拟信号的中断服务程序。

答:

(1)

(2)因为8253的时钟输入频率为2MHz,而要求的采样频率f=500Hz,即用8253定时,每隔2ms中断一次,因此8253的分频次数(时间常数)N=2MHz/500Hz=4000。

采集10秒钟,共采集10s/2ms=5000次,即8253中断次数为5000次。

DATASEGMENT

BUFFERDB8*5000DUP(?

DATAENDS

;数据采集子程序

8253初始化编程,通道0,方式2,先写低字节,后高字节,BCD计数,时间常数4000

MOVDX,303H

MOVAL,00110101B

OUTDX,AL

MOVDX,300H;通道0

MOVAX,4000H;时间常数

OUTDX,AL

MOVAL,AH

OUTDX,AL

;8259A设置屏蔽字,仅允许8259A的IR2和键盘中断,其余禁止

MOVAL,11111001B;屏蔽字

MOVDX,305H

OUTDX,AL;向屏蔽寄存器输出屏蔽字

;设置数据缓冲区始址到SI中,计数初值到BX中,等待中断,每通道采完5000次后结束

中断

MOVSI,OFFSETBUFFER;SI指向数据缓冲区

MOVBX,5000

STI;开中断

AGAIN:

CMPBX,0

JNZAGAIN

MOVAL,11111101B;采集完,禁止IR2中断

MOVDX,305H

OUTDX,AL

MOVAH,4CH;退出中断

INT21H

;中断服务程序,对每个通道均采集一个数据,存入BUFFER

ADINTPROCNEAR

MOVCX,0008H;设置通道计数器初值

MOVDX,308H;DX指向ADC通道0

NEXT:

OUTDX,AL;启动一次转换

PUSHDX;保存通道号

MOVDX,306H;DX指向状态口

POLL:

INAL,DX;读入EOC状态

TESTAL,80H;EOC(D7)=0?

即开始转换了

JNZPOLL;非0,循环等待

NO_END:

INAL,DX;EOC=0,开始转换

TESTAL,80H;再查EOC是否为1

JZNO_END;EOC=0,等待转换结束

POPDX;EOC=1,恢复通道地址

INAL,DX;读取结果

MOV[SI],AL;存储到缓冲区

INCDX;DX指向下一个通道

INCSI;地址指针指向下一个缓冲单元

LOOPNEXT;通道计数器减1,结果非0则循环

DECBX;为0,缓冲数据计数器减1

MOVAL,20H

MOVDX,304H

OUTDX,AL

STI;开中断

IRET

ADINTENDP

7.利用8255A和AD574A设计数据采集系统,输入模拟电压为0~+10V,若每秒采集100

个数据,转换后的数据字存放在W_BUF开始的缓冲器中,低字节在前,高字节在后,采满

16K字节的数据后停止工作,要求:

(1)画出硬件连线图。

(2)编写启动AD574A工作和读取转换结果的子程序。

(2)16K字节的数据共需要8K=8192次采集

;8255A的端口地址

PORT_AEQU0F0H;A口地址

PORT_BEQU0F1H;B口地址

PORT_CEQU0F2H;C口地址

PORT_CTLEQU0F3H;控制口地址

;8255A控制字:

A口和B口工作于方式0,A口、B口和C口的上半部分为输入,C

口的下半部分为输出

LEADI,W_BUF

MOVCX,8192

AD_CONT:

MOVAL,10011010B;方式字

OUTPORT_CTL,AL;输出方式字

;启动A/D转换

MOVAL,00H

OUTPORT_C,AL;使CS,CE,R/C均为低

NOP;延时

NOP

MOVAL,04H

OUTPORT_C,AL;使CE=1,启动A/D转换

NOP

NOP

MOVAL,03H

OUTPORT_C,AL;使CE=0,CS=R/C=1,结束启动状态

READ_STS:

INAL,PORT_C;读STS状态

TESTAL,80H;转换(STS=0)完了吗?

JNZREAD_STS;否,则循环等待

;转换完成,启动读操作

MOVAL,01H

OUTPORT_C,AL;使CS=0,CE=0,R/C=1

NOP

MOVAL,05H;使CE=1,CS=0,R/C=1

OUTPORT_C,AL

;读取数据,存入BX中

INAL,PORT_A;读入高4位数据

ANDAL,0FH

MOVBH,AL;存入BH

INAL,PORT_B;读入低8位

MOVBL,AL;存入BL

MOV[DI],BX;存入缓冲区

INCDI

INCDI

;结束读操作

MOVAL,03H;使CE=0,CS=1

OUTPORT_C,AL;结束读操作

CALLDELAY_10MS;延时10个毫秒

LOOPAD_CONT

(注:

文档可能无法思考全面,请浏览后下载,供参考。

可复制、编制,期待你的好评与关注)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2