I/O地址译码实验

单片机实验

27人已加入

描述

实验一 I/O地址译码
一)实验目的
掌握I/O地址译码电路的工作原理。
二)实验内容
1. 实验电路如图13所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器,请使用插在通用插座DIP20上的74LS138和74LS30,其引脚图如图14,译码输出端Y0~Y7在实验台上。I/O地址输出端引出每个输出端包含8个地址Y0:3C0H~3C7H;Y1: 3C8H~3CFH;⋯⋯;Y7:3F8H~3FFH。当CPU执行I/ O指令且地址在3C0H~3FFH范围内译码器选中必有一根译码线输出负脉冲。
特别提醒:74LS138的第8脚是接地脚,第16脚是接电源脚,千万不能接错,否则一切后果自负。
例如执行下面两条指令
PortWriteByte(0x2A0,data);
或 PortReadByte(0x2A0,&data);
Y4输出一个负脉冲,执行下面两条指令
PortWriteByte(0x2A8,data);
或 PortReadByte(0x2A8,&data);
Y5输出一个负脉冲

地址

利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭⋯⋯),时间间隔通过软件延时实现。
2. 改变A9~A3的接线方法,从而得到Y0;388H~38FH;Y1:398H~39FH; ⋯⋯;Y7:3F8H~3FFH。并修改上一问的程序,以同样获得L7灯闪烁的效果。
三)编程提示
1、实验电路中D触发器CLK端输入脉冲时,上升沿使Q端输出高电平L7发光,CD端加低电
平L7灭。
2、参考程序
/***********************/
/* I/O地址译码 */
/***********************/
#include
#include
#include "ApiEx.h"
#pragma comment(lib," ApiEx.lib")
void main()
{
printf("----------EXP1_I/O-----------\n");
printf("Press any key to begin!\n\n");
getch();
printf("Press any key to exit!\n");
if(!Startup()) /*打开设备*/
{
printf("ERROR:Open Device Error!\n");
return;
}
while(!kbhit()) /*判断是否有键按下*/
{
PortWriteByte(0x3E0,0x10); /*或PortReadByte(0x3E0, &data)*/
Sleep(1000); /*延迟一秒钟*/
PortWriteByte(0x3E8,0x10); /*或PortReadByte(0x3E8, &data)*/
Sleep(1000); /*延迟一秒钟*/
}
Cleanup(); /*关闭设备*/
}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分