mov dx,ioport_cent+68h ;设置 tpc 卡中9054芯片io口,关闭中断 in ax,dx and ax,0f7ffh out dx,ax mov ax,4c00h int 21h
int_proc proc far
push ax push dx push ds
dec irq_times
mov ax,data ;Interrupt to do mov ds,ax mov dx,offset msg1 mov ah,09h int 21h
mov al,20h ;Send EOI out 0a0h,al out 20h,al pop ds pop dx pop ax sti
iret
int_proc endp
code ends end start
五、总结
本次实验的程序比较复杂,所以我用的是老师所准备的程序。但是仍花了很多的时间在程序上。在程序中,有很多的中断掩码、中断向量的设置和保存,感觉有些糊涂。但是在看了几遍之后也是可以理解的。这次实验让我了解到很多程序都是比较复杂的。我还有很多要去学习。
14
实验四 模/数转换器
一、 实验目的
了解模/数转换的基本原理,掌握ADC0809的使用方法。
二、 实验内容
实验电路原理图如图10。通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0(IN0),编程采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数)。
Ref(+) msb 2-1+5VCC 2-2 2-3GND 2-4Ref(-) 2-5 2-6 2-7 CLOCK lsb 2-8IN-2 ADD-C ADD-BIN-1 ADD-A EOC ALED7D6D5D4D3D2D1D0A2A1A0EOCIOWU8:A1MHz+5IN1IN0+5 STARTIN-0 ENABLE RW 110KCSIOR298HU9 ADC0809U8:B74LS02
图10
三、参考流程图
15
开始启动A/D转换延时读入转换后数据所读数据赋给BL将数据右移四位调显示子程序显示其高四位从BL中取出数据和OFH相与调显示子程序显示其低四位有键按下吗?NY结束图11
四、源程序及注释
源程序:
code segment
assume cs:code
start:mov dx,0ec18h ;启动A/D转换器out dx,al nop nop nop nop
in al,dx ;从A/D转换器输入数据 mov bl,al ;将AL保存到BL mov cl,4
shr al,cl ;将AL右移四位
call disp ;调显示子程序显示其高四位 mov al,bl and al,0fh
开始将AL赋给DLDL大于9吗?NYDL加7DL加30H显示ASCII码为DL的字符 结束 图12
16
call disp ;调显示子程序显示其低四位 mov ah,02h mov dl,20h int 21h mov dl,20h int 21h push dx
mov ah,06h ;判断是否有键按下 mov dl,0ffh int 21h pop dx
je start ;若没有转START mov ah,4ch ;退出 int 21h
disp proc near ;显示子程序 mov dl,al
cmp dl,9 ;比较DL是否>9
jle ddd ;若不大于则为'0'-'9',加30h为其ASCII码 add dl,7;否则为'A'-'F',再加7 ddd: add dl,30h ;显示 mov ah,02 int 21h ret
disp endp code ends end start
五、总结
本次实验也不是很难,碰到的问题主要是屏幕的显示。当我改动 mov ah,02h mov dl,20h int 21h mov dl,20h
int 21h
这一部分的程序时,屏幕显示十分混乱,但仍是正确的。经过研究,是因为空格的个数改变了导致显示有重叠。
17
实验五 PC机串行通讯实验
一、实验目的
1、 进一步了解串行通信的基本原理。
2、 掌握串行接口芯片8250的工作原理和编程方法。
3、 熟悉PC机串行口的基本连接方法
二、实验内容
1、PC机RS-232串口自发自收。
按照PC机串口自发自收的连接方法连线。编写PC机自发自收串行通信程序,要求:从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。
2、两台PC机间RS-232串口通信。
按照PC机RS-232串口直接互连的方法连接两台PC机。 编写PC机直接互连串行通信程序;要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示在屏幕上。当键入感叹号“!”,结束收发过程。
3、连线图:
图13
图14
18