串行口通信原理及操作流程
在具体操作串口之前需要对单片机的一些与串口有关的特殊功能寄存器进行初始化设置,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:
1. 确定T1的工作方式(编程TMOD寄存器)
2. 计算T1的初值,载入TH1、TL1
3. 启动T1(编程TCON中的TR1位)
4. 确定串行口工作方式(编程SCON寄存器)
5. 串行口工作在中断方式时,要进行中断设置(编程IE,IP)
/**********************
实现功能:
RS232通信(串口通信)
**********************/
#include #define uint unsigned int #define uchar unsigned char uchar flag; uchar date; void init() { TMOD=0X20;//定时器1工作方式2 TH1=0xfd;//9600 TH0=0xfd;//9600 TR1=1;//启动定时器1 REN=1;//允许串口接收 SM0=0;//设定串口工作方式1 SM1=1;//设定串口工作方式1 EA=1; //开总中断 ES=1;//开串口中断 } void main() { init(); while(1) { if(flag==1) { ES=0; //关闭串口中断 P1=date; SBUF=date; while(!TI);//等待串行发送停止位的开始,TI=1,并向CPU发送中断请求 TI=0;//取消此次中断 ES=1; //开串口中断 flag=0; } } } void time1() interrupt 4 { RI=0;//取消中断申请 date=SBUF; flag=1; }
评论