8251A串行通信和8253计数器编程举例
本文由发表于6年前 | 硬件知识 | 暂无评论 |  被围观 6,004 views+

本程序使用串行通信,电路图中提供的8253计数器用于产生8251A的发送和接收时钟。其中,TXD和RXD连在一起。

程序运行效果:从键盘输入一个字符,将该字符的ASCII码加1后发送出去,再接收回来在屏幕上显示,实现自发自收。

8251A计数器:

控制口地址:2B9H
数据口地址:2B8H

8253计数器时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。(计数器初值 = 时钟频率 / (波特率 * 波特率因子))

程序的电路如下图:
8251A串行通信和8253计数器编程举例

8251A串行通信和8253计数器编程举例

程序的基本流程图如下:
8251A串行通信和8253计数器编程举例

8251A串行通信和8253计数器编程举例

具体编程实现如下:
data segment
		mes db 'you can play a key on the keyboard!',0dh,0ah,24h
data ends

code segment

		assume	cs:code,ds:data		
out1	proc near	;向外发送一个字节的子程序
	out	dx,al		;把al中的额数据送往dx
	push	cx
	mov cx,40h
gg:	loop	gg
	pop cx
	ret
out1	endp

start:	mov ax,data
	mov	ds,ax
	mov	dx,283h	;设置8253计数器0的工作方式
	mov	al,16h	;00010110 计数器0,只读/写低8位,模式3,二进制格式
	out	dx,al
	mov	dx,280h
	mov	al,52	;给8253计数器0送初值
	out	dx,al
	mov dx,2b9h	;初始化8251A
	xor	al,al
	mov	cx,03
delay:	call out1
	loop	delay
	mov	al,40h	;向8251A控制端口发送40H,使其复位 01000000(IR位)
	call	out1
	mov	al,4eh	;01001110 一个停止位,八个数据位,波特率因子16
	call	out1
	mov	al,27h	;00100111 接收允许,数据终端准备好,发送允许
	call	out1
	1ds	dx,offset	ms1	;显示提示信息
	mov	ah,09
	int	21h
waiti:	mov	dx,2b9h
	in	al,dx	;读取8251A状态字
	test	al,01	;测试是否准备好
	jz	waiti
	mov	ah,01	;准备好,则从键盘上读一个字符
	int	21h
	cmp	al,27	;输入的是ESC则结束
	jz	exit
	mov	dx,2b8h	;向8251A数据口发送数据
	inc	al
	out	dx,al
	mov	cx,40h
s51:	loop	s51	;延时
next:	mov	dx,2b9h
	in	al,dx
	test	al,02	;检查接收是否准备好
	jz	next	;没有则继续循环等待
	mov	dx,2b8h	;准备好了则接收
	in	al,dx
	mov	dl,al
	mov	ah,02	;将接收到的字符显示在屏幕上
	int	21h
	jmp	waiti
exit:	mov	ah,4ch	;退出
	int	21h
code	ends
	end start
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/8251a-serial-communication-and-programming-8253-counter-example.html
关键字: , , ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 5/5
文章评论
    没有评论
给我留言

有人回复时邮件通知我
硬件知识的相关文章
随机文章 本月热门 热评
1 数据结构笔记 – 排序算法 最简单的排序实现 初级版的冒泡排序 2011/9/19
2 C++语法笔记 – 多态性 2011/9/3
3 乔布斯:遗失的访谈(1995) 2013/5/15
4 Java基础笔记 – 线程同步问题 解决同步问题的方法 synchronized方法 同步代码块 2011/10/24
5 JavaScript设计模式笔记汇总 | IT宅文章归档 AD 2012/12/28 2012/12/28
6 Java中使用Base64编码URL作为URL的参数 2011/9/12
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.