欢迎光临MCUWAY! 本站网名:单片机之路  永久域名:www.mcuway.com

设为首页

加入收藏

电子基础 初学MCU 单片机类型 MCU程序 MCU应用 设计软件 测控电路 技术论坛
 您现在的位置: 单片机之路 >> 单片机程序 >> 单片机编程 >> 文章正文

串行口应用编程实例

1. 串口方式0应用编程 8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就可以扩展一个并行口。

例:用8051串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。 串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于TI或RI标志。串行发送时,可以靠TI置位(发完一帧数据后)引起中断申请,在中断服务程序中发送下一帧数据,或者通过查询TI的状态,只要TI为0就继续查询,TI为1就结束查询,发送下一帧数据。在串行接收时,则由RI引起中断或对RI查询来确定何时接收下一帧数据。无论采用什么方式,在开始通讯之前,都要先对控制寄存器SCON进行初始化。在方式0中将,将00H送SCON就可以了。

ORG 2000H

START: MOV SCON,#00H ;置串行口工作方式0

MOV A,#80H ;最高位灯先亮

CLR P1.0 ;关闭并行输出(避象传输过程中,各LED的"暗红"现象)

OUT0: MOV SBUF,A ;开始串行输出

OUT1: JNB TI,OUT1 ;输出完否

CLR TI ;完了,清TI标志,以备下次发送

SETB P1.0 ;打开并行口输出

ACALL DELAY ;延时一段时间

RR A ;循环右移

CLR P1.0 ;关闭并行输出

JMP OUT0 ;循环

说明:DELAY延时子程序可以用前面我们讲P1口流水灯时用的延时子程序,这里就不给出了。

二、异步通讯

org 0000H

AJMP START

ORG 30H

START:

mov SP,#5fh ;

mov TMOD,#20h ;T1: 工作模式2

mov PCON,#80h ;SMOD=1

mov TH1,#0FDH ;初始化波特率(参见表)

mov SCON,#50h ;Standard UART settings

MOV R0,#0AAH ;准备送出的数

SETB REN ;允许接收

SETB TR1 ;T1开始工作

WAIT:

MOV A,R0

CPL A

MOV R0,A

MOV SBUF,A

LCALL DELAY

JBC TI,WAIT1 ;如果TI等于1,则清TI并转WAIT1

AJMP WAIT

WAIT1: JBC RI,READ ;如果RI等于1,则清RI并转READ

AJMP WAIT1

READ:

MOV A,SBUF ;将取得的数送P1

MOV P1,A

LJMP WAIT

DELAY: ;延时子程序

MOV R7,#0ffH

DJNZ R7,$

RET

END

将程序编译通过,写入芯片,插入实验板,用通读电缆将实验板与主机的串口相连就可以实验了。上面的程序功能很简单,就是每隔一段时间向主机轮流送数55H和AAH,并把主机送去的数送到P1口。可以在PC端用串口精灵来做实验。串口精灵在我主页上有下载。

三、上述程序的中断版本

org 0000H

AJMP START

org 0023h

AJMP SERIAL ;

ORG 30H

START:

mov SP,#5fh ;

mov TMOD,#20h ;T1: 工作模式2

mov PCON,#80h ;SMOD=1

mov TH1,#0FDH ;初始化波特率(参见表)

mov SCON,#50h ;Standard UART settings

MOV R0,#0AAH ;准备送出的数

SETB REN ;允许接收

SETB TR1 ;T1开始工作

SETB EA ;开总中断

SETB ES ;开串口中断

SJMP $

SERIAL:

MOV A,SBUF

MOV P1,A

CLR RI

RETI

END

本程序没有写入发送程序,大家可以自行添加。

→ 
 

普通文章28课:单片机音乐汇编程序设计
普通文章27课:单片机的一些基本概念
普通文章26课:单片机矩阵式键盘接口技术
普通文章51单片机教程(从原理开始基于汇编)
普通文章1课:单片机概述
普通文章2课:8051单片机引脚介绍
普通文章3课:单片机存储器结构结构分析
普通文章4课:第一个单片机小程序
普通文章5课:单片机延时程序分析
普通文章6课:单片机并行口结构
普通文章7课:单片机的特殊功能寄存器
普通文章8课:单片机寻址方式与指令系统
普通文章9课:单片机数据传递类指令
普通文章10课:单片机数据传送类指令
普通文章11课:单片机算术运算指令
普通文章12课:单片机逻辑运算类指令
普通文章13课:单片机逻辑与或异或指令祥解
普通文章14课:单片机条件转移指令
普通文章15课:单片机位操作指令
普通文章16课:单片机定时器与计数器
普通文章17课:单片机定时器/计数器的方式控制
普通文章18课:单片机的中断系统
普通文章19课:单片机定时器、中断试验
普通文章20课:单片机定时/计数器实验
普通文章21课:单片机串行口介绍

电子器件 基础电路 单片机语言 了解单片机
PIC系列 ARM系列 AVR系列 单片机源码
单片机编程 设计方法 应用实例 Protel
PowerPCD 知识点 练习题 单片机应用
  • 上一篇文章:
  • 下一篇文章:
  • 更多精彩内容>>>

    普通文章电流单位
    普通文章功率单位
    普通文章什么是达林顿管?
    普通文章晶闸管的作用与原理

    学习单片机的必经之路——单片机之路,永久域名:www.mcuway.com