这是微机接口与汇编技术的实验札记。
一、实验目的
1、了解串行通讯的基本原理。
2、掌握串行接口芯片8251的工作原理和编程方法。
二、实验内容
1、按图13-1连接好电路,(8251插通用插座)其中8253计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。
2、编程: 从键盘输入一个字符,将其ASCII码加 1 后发送出去,再接收回来在屏幕上显示,实现自发自收。
三、实验提示
1、图示电路8251的控制口地址为2B9H,数据口地址为2B8H。
2、8253计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
3、收发采用查询方式。
实验流程图
实验原理图
汇编代码如下:
;************************************************************************************************; ;* 8251串行通讯(自发自收) *; ;*280H--8253CS GATE0--+5V CLK0--1MHZ TXCLK--OUT0 RXCLK--OUT0 8251CS--298H RXD8251--TXD8251 *; ;*************************************************************************************************; data segment io8253a equ 280h io8253b equ 283h io8251a equ 298h io8251b equ 299h mes1 db 'you can play a key on the keybord!',0dh,0ah,24h mes2 dd mes1 data ends code segment assume cs:code,ds:data start: 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,4dh ;设置为1个停止位,8个数据位,波特率因子为16 call out1 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,40h s51: loop s51 ;延时 next: mov dx,io8251b in al,dx test al,02 ;检查接收是否准备好 jz next ;没有,等待 mov dx,io8251a in al,dx ;准备好,接收 mov dl,al mov ah,02 ;将接收到的字符显示在屏幕上 int 21h jmp waiti exit: mov ah,4ch ;退出 int 21h out1 proc near ;向外发送一字节的子程序 out dx,al push cx mov cx,40h gg: loop gg ;延时 pop cx ret out1 endp code ends end start
这就是本次实验。