接口技术实验(一)
程序控制方式输入输出接口电路的工作班级:电子班学号:0839062 姓名:李睿一、实验任务
1.无条件输入输出的实现。
以8个拨动开关为输入外设,在现有实验箱的条件下构建一个基本输入端口,并编程控制将8个拨动开关的状态用一根地址线读入CPU 内,然后通过一个基本输出端口在发光二极管上显示相应的数码,如:8个拨动开关的状态为‘1 1 1 1 0 0 0 0’,则在八段数码管上显示‘亮、亮、亮、亮、亮、灭、灭、灭、灭’。
输入、输出端口的口地址从实验箱上的I/O地址译码输出中自行选定。
2.查询方式输入输出的实现。
以拨动开关为输入外设,以发光二极管做为输出外设,在现有实验箱的条件下构建一个查询方式输入输出接口电路。
具体做法:以第一个拨动开关高电平状态为‘输入准备好’的状态信号,将第一个拨动开关拨到高电平后,表示可以读取所有8个拨动开关的状态;将拨动开关的状态读入后再送到发光二极管上进行显示。
如:8个拨动开关的状态为‘1 1 1 0 0 0 1 1’,则在八段数码管上显示‘亮、亮、亮、灭、灭、灭、灭、亮、亮’。
二、实验时间
2011年4月14日19点—22点
三、实验原理分析
1.无条件输入输出的实现:CPU通过端口0x4c00读取开关的状态,再通过端口
0x4c00控制LED灯。
2.查询方式输入输出的实现:通过端口0x4c08查询开关最高位的状态。
当开关
最高位为高电平时,CPU通过端口0x4c00读取开关的状态来控制LED灯;当开关最高位为低电平时,LED灯不受开关的影响。
四、实验内容
☆软件部分
1.无条件输入输出的实现:
Data Segment
Data ends
Code segment
Assume cs:code,ds:data
Start:
Mov dx,4c00h
In al,dx
Not al
Mov dx,4c08h
Out dx,al
mov ah,0bh
int 21h
cmp al,0ffh
jnz start
mov ax,4c00h
int 21h
code ends
end start
2.查询方式输入输出的实现:
Data Segment
Data ends
Code segment
Assume cs:code,ds:data
Start:
Mov ax,data
Mov ds,ax
One:
Mov dx,4c00h
In al,dx
Test al,01h
Jz one
Mov dx,4c00h
In al,dx
Mov dx,4c08h
Out dx,al
mov ah,0bh
int 21h
cmp al,0ffh
jnz start
mov ax,4c00h
int 21h
code ends
end start
五、实验结果分析
1.无条件输入输出的实现:在DOS环境下运行程序,可以通过拨动开关,调节
状态,LED发生相应的变化。
如:当开关状态为“01”时,第一个LED灯亮。
按任意键退出程序。
2.查询方式输入输出的实现:在DOS环境下运行程序,首先查询开关最高位的
状态。
当开关最高位为高电平时,CPU通过读取开关状态控制LED灯的亮与暗;当开关最高位为低电平时,LED不受开关状态影响,继续保持原来状态。
六、实验总结与体会
其实本来是抱着试试的心态来学习这门课的,不知道这门课是不是能够去学,不过现在既然选了也就只能努力的去学习。
经过这么一次的实验,我认为我的汇编真的需要继续好好复习一下了,以前的东西得捡回来了,因为试验的程序需要。
据说可以用C语言做也,但是没有尝试过呢,回去自己可以试试。
再则觉得老师上课说的还是很重要的啊,上课不好好听课这实验就是不好去做啊,以后上课得好好听课了,虽然这个不是很能太懂,自己还是需要好好的去研究摸索啊!。