串口通信++++多线程简单实例
来源:互联网 发布:java面试宝典2017 编辑:程序博客网 时间:2024/05/01 07:35
/*RS-232串口*/
#include "reg52.h"
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit s2 = P2^1;
sbit en = P2^5;
uint8 arg;
uint8 counter =0;
void init(void)
{
TMOD=0x20; //定时器1的工作方式2
TL1=0xfd; //装载计数初值
TH1=0xfd;
SCON=0x50; //采用串口工作方式1,无奇偶校验
PCON=0x00; //串口波特率不加倍
TMOD |= 0x01;//初始化定时器0
TL0 = 0X3C;
TH0 = 0X0B0;
EA = 1; //开总中断,开串口中断
ES = 1;
ET0 = 1;
TR1=1; //启动定时器1
TR0 = 1;
}
/************************单片机接收PC机发来的指令让数码管循环显示0-F******************/
receive_byte(uint8 *dat)
{
*dat = SBUF;
while (!RI);
RI = 0;
//SBUF = *dat;
//while(!TI);
//TI = 0;
}
serial_server(void) interrupt 4
{
EA = 0;
receive_byte(&arg);
P0 = arg;
EA = 1;
}
/************************单片机接每隔2s向PC机发送一串字符******************/
code unsigned char send_txt[]={"Serial Interface Test OK!/n"};
void test_serial(void)
{
int i;
EA=0;//关一下
for(i=0;i<sizeof(send_txt);i++)
{
SBUF=send_txt[i];
while(TI==0);
TI=0;
}
EA=1;//再打开
}
//中断源编号为4,即串口中断
void timer0_server(void) interrupt 1
{
EA=0;//清除中断标志,硬件置位,软件清零
RI=0;
counter++;
if(20 == counter)
{
test_serial();
counter = 0;
}
TL0 = 0X3C;
TH0 = 0X0B0;
EA=1;//开中断,等待下一次中断的到来
}
main()
{
en = 1;
s2 = 0;
init();
while(1);
}
- 串口通信++++多线程简单实例
- 简单多线程通信实例
- 串口通信+TCP网络通信简单综合实例
- 多线程编程实例----服务器客户端简单通信
- 线程--简单多线程通信实例
- 多线程串口通信
- 实践手记--串口通信/Windows API 实现 No.1:串口通信 API 介绍【含简单实例】
- api串口通信实例
- Java串口通信实例
- java串口通信实例 -
- android串口通信实例
- android串口通信实例
- 单片机串口通信实例
- MFC串口通信实例
- 串口通信实例
- QT串口通信实例
- PLC-串口通信实例
- 简单的串口通信
- 数据库建表-- 一对多/多对一/一对一/多对多 关系
- 可重入函数与不可重入函数(转)
- VS2008生成的MFC运行速度为什么超慢
- Python调用windows下DLL详解 - ctypes库的使用[转]
- VC6.0中用ADO连接SQL2000
- 串口通信++++多线程简单实例
- Android-OpenCV
- HOOK
- 串口通信之简单协议-----结构体的发送
- VS2005中CString与其他格式的转换 (UNICODE字符集带来的问题)
- 课程设计——AVL搜索树理论基础
- 有趣的DBA面试题
- 12 general questions from an international company
- Eclipse调试Bug的七种常用技巧(转)