串口通讯中断
2017-02-25 13:23
155 查看
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 /*------------------------------------------------ 函数声明 ------------------------------------------------*/ void SendStr(unsigned char *s); /*------------------------------------------------ 串口初始化 ------------------------------------------------*/ void InitUART (void) { SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收 TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装 TH1 = 0xF3; // TH1: 重装值 2400 波特率 晶振 12MHz TR1 = 1; // TR1: timer 1 打开 EA = 1; //打开总中断 // ES = 1; //打开串口中断 } /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { InitUART(); SendStr("UART test,技术论坛:www.doflye.net 请在发送区输入任意信息"); ES = 1; //打开串口中断 while (1) { } } /*------------------------------------------------ 发送一个字节 ------------------------------------------------*/ void SendByte(unsigned char dat) { SBUF = dat; while(!TI); TI = 0; } /*------------------------------------------------ 发送一个字符串 ------------------------------------------------*/ void SendStr(unsigned char *s) { while(*s!='\0')// \0 表示字符串结束标志,通过检测是否字符串末尾 { SendByte(*s); s++; } } /*------------------------------------------------ 串口中断程序 ------------------------------------------------*/ void UART_SER (void) interrupt 4 //串行中断服务程序 { unsigned char Temp; //定义临时变量 if(RI) //判断是接收中断产生 { RI=0; //标志位清零 Temp=SBUF; //读入缓冲区的值 P1=Temp; //把值输出到P1口,用于观察 SBUF=Temp; //把接收到的值再发回电脑端 } if(TI) //如果是发送标志位,清零 TI=0; }
相关文章推荐
- STM32IO仿真与串口通讯实验、外部中断实验
- 串口中断通讯
- 串口通讯程序(中断方式)
- 串口通讯中断
- 关于串口通讯查询与中断两种方式
- [51单片机] 串口通讯 简单通信
- 串口通讯的实现(SPCOMM教程)
- Rfid通信1-串口模式(附:对串口通讯进行了封装源码及学习资料)
- Android下模拟器使用串口进行通讯
- ros 节点实现简易超声雷达串口通讯 模拟出激光雷达消息
- STM32自学之串口中断模式
- 串口中断接收方式详细比较
- 基于PC/104的多串口通讯的设计
- C#基于事件驱动的多串口多线程串口通讯软件架构设计
- 单片机——串口中断
- 51单片机中用中断方式实现串口数据发送与接收
- 串口通讯—通信协议
- 利用Java实现串口全双工通讯
- linux下判断 串口是否通讯 UART DEBUG
- 使用SerialPort类设计串口通讯程序