目录
一、实验目的和要求... 2
二、实验原理与背景... 3
三、实验具体的内容... 3
四、实验的代码说明... 4
五、实验结果的分析... 6
附录资料
一、实验目的和要求
学会8251芯片和微机接口原理和方法。
掌握8251串口芯片的基本工作原理、工作方式和编程原理。
二、实验原理与背景
TPC-USB平台上有一块8251A串行接口芯片,除了片选引脚,其他信号都已接好。
三、实验具体的内容
从键盘输入一个字符,将其ASCII码加 1 后串行发送出去,再从串行口接收回来在屏幕上显示,实现自发自收。收发均采用查询方式。
步骤如下:
1)按图3.1连接好电路,(8251插在通用插座上)。其中8253计数器用于产生8251的发送和接收时钟,TxD和RxD连在一起。图示电路8251的控制口地址为2B9H,数据口地址为2B8H。2、8253计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
图3.1 TPC-USB平台串行实验连接
2)根据流程图3.2,编程并运行,观察实验结果。
图3.2 TPC-USB平台串行实验流程
四、实验的代码说明
1 data segment 2 mes1 db 'you can play a key on the keybord!',0dh,0ah,24h 3 mes2 dd mes1 4 data ends 5 code segment 6 assume cs:code,ds:data 7 start: mov ax,data 8 mov ds,ax 9 mov dx,283h ;设置8253计数器0工作方式3 10 mov al,16h 11 out dx,al 12 13 mov dx,280h 14 mov al,52 ;给8253计数器0送初值 15 out dx,al 16 17 mov dx,2b9H ;初始化8251 18 xor al,al 19 mov cx,03 ;向8251控制端口送3个0 预处理 20 delay: call out1 ;连续发送3个0 21 loop delay 22 mov al,40h ;向8251控制端口送40H,使其复位 23 call out1 24 mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 25 call out1 26 mov al,27h ;向8251送控制字允许其发送和接收 27 call out1 28 lds dx,mes2 ;显示提示信息 29 mov ah,09 30 int 21h 31 waiti: mov dx,2b9H 32 33 in al,dx 34 test al,01 ;发送是否准备好 35 jz waiti 36 mov ah,01 ;是,从键盘上读一字符 37 int 21h 38 cmp al,27 ;若为ESC,结束 39 jz exit 40 41 mov dx,2B8H 42 inc al 43 mov dl,al 44 mov ah,02h 45 int 21h 46 out dx,al ;发送 47 mov cx,40h 48 s51: loop s51 ;延时 49 next: mov dx,2B9H 50 in al,dx 51 test al,02 ;检查接收是否准备好 52 jz next ;没有,等待 53 mov dx,2B8h 54 in al,dx ;准备好,接收 55 mov dl,al 56 mov ah,02 ;将接收到的字符显示在屏幕上 57 int 21h 58 jmp waiti 59 exit: mov ah,4ch ;退出 60 int 21h 61 out1 proc near ;向外发送一字节的子程序 62 out dx,al 63 push cx 64 mov cx,40h 65 gg: loop gg ;延时 66 pop cx 67 ret 68 out1 endp 69 code ends 70 end start
五、实验结果的分析
从键盘输入一个字符,将其ASCII码加 1 后串行发送出去,再从串行口接收回来在屏幕上显示,实现了自发自收。
附录资料
本文链接:http://www.cnblogs.com/zjutlitao/p/4181380.html
更多精彩:http://www.cnblogs.com/zjutlitao/p/4125085.html
文档下载:http://pan.baidu.com/s/1eQcS7Nc
本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/4181380.html,如需转载请自行联系原作者