2012-3-16(单片机串口通信).docVIP

  • 4
  • 0
  • 约2.28千字
  • 约 3页
  • 2018-03-13 发布于河南
  • 举报
2012-3-16(单片机串口通信)

2012-3-16 串口异步通信UART 1.UART是单片机与PC之间的最简单的通信方式之一,也是单片机之间常用通信。 说明:TXD:发送 RXD:接收 2.UART有四种模式(0-4),大多数情况只用模式1 模式1:以TXD为例,平时没数据时TXD为高电平,来了数据,一位起始位0,八位数据位(一个字节),一位停止位1。 模式2和3:原理和模式1一样,只是添加了一位奇偶校验位(防止通信出错)。 常用串口波特率:300、600、1200、2400、4800、9600、19200 ……115200; 波特率:就是发送一位数据的速率,即发送一个数据的持续时间 = 1/baud; SBUF:串口数据缓冲寄存器,发送数据时,只要将数据送入SBUF,则单片机自动发送数据,接收数据时,自动将数据接收至SBUF。(将数据传送给SBUF就能自动发送) 3.SCON串口控制寄存器(一般设置SCON0x50) 位 7 6 5 4 3 2 1 0 符号 SM0 SM1 SM2 REN TB8 RB8 TI RI 模式1到模式4的SM0和SM1为工作方式选择位 SM0 SM1 方式 说明 波特率 0 0 0 移位寄存器 fosc/12 0 1 1 8位数据位 定时器产生 1 0 2 9位数据位 fosc/32或fosc/64 1 1 3 9位数据位 定时器产生 SM2:使能模式2和3中的多机通信功能。通常不使用。 REN:使能串口接收。由软件置1,则允许串口接收数据;由软件清零,则禁止串口接收数据。 TB8,RB8:方式2和方式3中的校验位,分为四种方式A.偶校验;B.奇校验;C.强制为0;D.强制为1 。 TI:发送中断标志,在发送停止位时由硬件置1。必须通过软件才能清零。(TI=1:表示PC往单片机发送数据完成) RI:接收中断标志,接收停止位的中间时刻由硬件置1,必须通过软件清零。(RI=1:表示单片机接收PC数据完成,存放在SBUF) 4.定时器的特殊功能寄存器 TMOD 位 7 6 5 4 3 2 1 0 符号 T1 GATE T1 C/T T1 M1 T1 M0 T0 GATE T0 C/T T0 M1 T0 M0 T1和T0分别代表单片机两个计数器 GATE:该位被置位时为门控位。仅当TR1被置位并且INT1脚为高,定时器开始计数。当该位被清零时,只要TR1被置位,定时器1马上开始计数。 C/T:该位为0的时候,用作定时器,该位为1的时候,用做计数器。 ● M1 M0 00 01 10 11 模式0 模式1 模式2 模式3 模式1:16位的计数器。(TH1,TL1) 模式2:自动装载8位计数器。主要应用在串口波特率发生器。 模式0模式3:几乎不用。 TCON和TMOD复位后都会自动变成0x00. 12*(65536-x)0.001 (0.001表示1ms) ●串口通信时定时器设置 定时器1使用自动重装模式,即模式2。 TH1=TL1=256(12*32*9600)=0xfd(9600为波特率) 实现步骤: 1、将定时器1置为自动重装模式。 2、将串口设置为方式1。 3、根据公式计算出定时器1的初值。 4、打开定时器1,打开串口允许接受。 5.程序思路 1).初始化init():SCON=0x50; 串口特殊寄存器设置 TMOD=0x20; 定时器模式 TH1=0xfd; 定时器初始值高4位 TL1=0xfd; 定时器初始值低4位 TR1=1; 打开定时器 ES=1; 开串口中断 EA=1; 开总中断 2).发送数据 send_dat(dat) 将数据给SBUF单片机就能自动发送数据出去 { SBUF=dat; While(!TI); TI=0表示单片机向PC发送数据中,TI=1表示单片机向PC发送完成 TI=0; 置TI=0使单片机向PC继续发送数据 } 3).中断内容: if(TI) TI=1时:PC向单片机发送数据,发送完成后TI置0 { TI=0; 单片机接收PC发送来的数据完成后置0 REN=1; 允许单片机接收PC发送来的数据 } if(RI) RI=1时:单片机接收PC发送来的数据,接收完成后RI置0 { RI=0; Num=SBUF; 取出数据 Num++; 数据处理 SBUF=Num; 单片机发送处理后的数据给PC REN=0; 单片机发送数据给PC时,禁止单片机接收 } /**********单片机将数据转

文档评论(0)

1亿VIP精品文档

相关文档