微机实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东南大学
《微机实验及课程设计》
实验报告
实验七8251串行通信
实验八数模与模数转换
姓名:学号:
专业:实验室:
实验时间:报告时间:
评定成绩:审阅教师:
实验七8251串行通信
一、实验目的与内容
(一)实验目的:
(1)了解串行通信的基本原理,认识串行收发过程;
(2)掌握串行接口芯片8251 的工作原理和编程方法。
(二)实验内容:
(1)编写测试程序,初始化8251,实现连续发送固定字符,用示波器观察发送波形,试用多种不同字符格式和字符;
(2)编程实现从键盘输入一个字符, 将其ASCII 码加1 后发送出去,再接收回来在屏幕上显示,实现自发自收;
二、基本实验原理
(1)按图连接好电路 (8251 插在带锁通用插座D 上),其中8253 计数器用于产生8251 的发送和接收时钟,TXD 和RXD 直接相连;
(2)编写测试程序,初始化8251,实现连续发送固定字符,用示波器观察发送波形,试用多种不同字符格式和字符;
(3)编程实现从键盘输入一个字符, 将其ASCII 码加1 后发送出去,再接收回来在屏幕上显示,实现自发自收;
(4)若在调试方式下用命令或单步初始化8251,用端口输出(发送)和输入(接收)检查硬件;编程简单周期连续发送,用示波器观察发送过程和波特率(波形)。
三. 方案实现与测试
(1)8251 通信查询程序流程图:
8251串行通信程序关键程序段:
start:
mov ax,stacks
mov ss,ax
mov ax,data
mov ds,ax
mov dx,io8253b ;设置8253 计数器0 工作方式
mov al,16h
out dx,al
mov dx,io8253a
mov al,52 ;给8253 计数器0 送初值
out dx,al
mov dx,io8251b ;初始化8251
xor al,al
mov cx,03 ;向8251 控制端口送3 个0
delay: call out1
loop delay
mov al,40h ;向8251 控制端口送40H,使其复位 call out1
mov al,4eh ;设置为1 个停止位,8 个数据位
call out1 ;波特率因子为16
mov al,27h ;向8251 送控制字允许其发送和接收 call out1
lds dx,mes2 ;显示提示信息
mov ah,09
int 21h
waiti: mov dx,io8251b
in al,dx
test al,01 ;发送是否准备好
jz waiti
mov ah,01 ;是,从键盘上读一字符
int 21h
cmp al,27 ;若为ESC,结束
jz exit
mov dx,io8251a
inc al
out dx,al ;发送
mov cx,0F00h
s51: loop s51 ;延时
next: mov dx,io8251b
in al,dx
test al,02 ;检查接收是否准备好
jz next ;没有,等待
mov dx,io8251a
in al,dx ;准备好,接收
inc al ;如果需要处理,如加1
mov dl,al
mov ah,02 ;将接收到的字符显示在
int 21h 屏幕上
jmp waiti
out1 proc near ;向外发送一字节的子程序
out dx,al
push cx
mov cx,0F00h
gg: loop gg ;延时
pop cx
ret
实验八数模与模数转换
一、实验目的与内容
(一)实验目的:
(1)了解数/模转换器的基本原理,掌握DAC0832 芯片的使用方法;
(2)了解模/数转换器的基本原理,掌握ADC0809 芯片的使用方法。(二)实验内容:
(1)分别编程产生锯齿波、正弦波电压波形(从Ub 输出,用示波器观察)。
(2)编程采集IN0 输入的电压,在屏幕上显示出转换后的数据(用16 进制数)。
二、基本实验原理
(1)DAC 实验电路原理如图3.9-1,DAC0832 采用单缓冲方式,具有单双极性输入端(图中的Ua、Ub)。进入DEBUG 调试,输出命令(O 290 数据)输出数据给DAC0832,用万用表测量单极性输出端Ua 及双极性输出端Ub 的电压,验证数字与电压之间的线性关系。
(2)分别编程产生锯齿波、正弦波电压波形(从Ub 输出,用示波器观察)。(3) ADC 实验电路原理图如图3.9-2,通过实验台左下角电位器RW1 输出0~5V直流电压送入ADC0809通道0(IN0),利用debug 的输出命令启动A/D转换器,输入命令读取转换结果,检查硬件是否正常,验证输入电压与转换后数字的关系。启动IN0 开始转换: O 0C818 0;读取转换结果: I 0C818。
(4) 编程采集IN0 输入的电压,在屏幕上显示出转换后的数据(用16 进制数)。
(5) 将JP3 的1、2 短接,使IN1 处于双极性工作方式,并给IN1 输入一个低频交流信号(幅度为±5V),编程采集这个信号数据并在屏幕上显示波形。
三. 方案实现与测试
(1)DA转换关键程序段:
程序1:锯齿波发生程序
start: mov ax,stacks
mov ss,ax
mov cl,0
mov dx,io0832a
lll: mov al,cl
out dx,al
inc cl ;cl 加1
inc cl
inc cl
inc cl
inc cl
inc cl
inc cl
push dx
mov ah,06h ;判断是否有键按下
mov dl,0ffh
int 21h
pop dx
jz lll ;若无则转LLL
mov ah,4ch ;返回DOS
int 21h
程序2:正弦波发生程序
data segment
ioport equ 0d400h-0280h ;tpc 卡中设备的io 地址
io0832a equ ioport+290h ;DAC0832 的口地址为290H
sin db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh
db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h
db 80h,66h,4eh,38h,25h,15h,09h,04h
db 00h,04h,09h,15h,25h,38h,4eh,66h ;正弦波数据
data ends
stacks segment
start: mov ax,stacks
mov ss,ax
mov ax,data