赞助商链接
发一个用串口命令单片机控制开关输出的小程序,如串口发送led0_open回车后,单片机点亮led0
程序波特率设为2400bps(12Mhz晶振),请根据需要自行修改
[attachment=2332028]
#include <reg52.h>
#include "string.h"
sbit led0=P0^0; //定义led接口
sbit led1=P0^1; //同上
sbit led2=P0^2; //同上
sbit led3=P0^3; //同上
sbit led4=P0^4; //同上
sbit led5=P0^5; //同上
sbit led6=P0^6; //同上
sbit led7=P0^7; //同上
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
// 定义各种变量
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
unsigned char cmd_buf[40];//串口命令的缓冲区
unsigned char data counter=0;//用于数据接收计数
unsigned char data flag=0;//命令接收结束标记,为1时说明接收到了个完整的命令,进入到主函数中进行解析和执行
/**************************************************************************
- 功能描述:51单片机的串口初始化
- 隶属模块:STC51串口操作
- 函数属性:外部,使用户使用
- 参数说明:无
- 返回说明:无
- 注:正确的初始化串口十分重要
**************************************************************************/
void Com_init()
{
/******************设定定时器*********************/
TMOD = 0x20;//设定定时器的工作方式(方式2)
TH1= 0xf3;//设定波特率为 9600 bps (在11.0592MHZ晶振时)
TL1= 0xf3;
/*******************设定串口**********************/
SM0= 0; //SM0 和 SM1 设定串口的工作方式(方式1)
SM1= 1;
REN= 1; //允许串口接收外部传来的数据
/******************设定中断**********************/
ES = 1; //允许串口收到数据后产生中断通知我们
EA = 1; //因为总中断开关是控制所有中断的,所以要把它打开
TR1= 1; //启动定时器,串口就开始工作喽!
}
/**************************************************************************
- 功能描述:51单片机的串口发送字节的函数
- 隶属模块:STC51串口操作
- 函数属性:外部,使用户使用
- 参数说明:mydata:要发送的一个字节
- 返回说明:无
- 注:发送一个字节,是串口发送的基础操作
**************************************************************************/
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33992-1.html
它也无法预料中国是否会和当初的苏联一样---我舰奉命撞击你舰
我们加紧建设我们的