include "config.h"
/******************************串口1的波特率********************************/
//T1作波特率发生器
//在波特率加倍情况下
#define BAUD_57600 256 - (OSC_FREQ/192L)/57600L // 254 FF
#define BAUD_28800 256 - (OSC_FREQ/192L)/28800L // 254 FE
#define BAUD_19200 256 - (OSC_FREQ/192L)/19200L // 253 FD
#define BAUD_14400 256 - (OSC_FREQ/192L)/14400L // 252 FC
#define BAUD_9600 256 - (OSC_FREQ/192L)/9600L // 250 FA
#define SYS_Fosc 11059200L //晶振频率
uint32_t COMM_BAUD_RATE=9600 ; //串口波特率
#define OSC_FREQ 11059200 //11059200
static INT8U Send_buf[10] = {0} ;
static INT8U Recv_buf[10] = {0} ;
static INT8U SendDataLen = 0 ;
static INT8U ResendDataLen = 0 ;
/************************************************************************
函 数 名: 串口初始化
功能描述: STC10L08XE 单片机串口初始化函数
返回函数: none
其他说明: none
**************************************************************************/
void UartIni(void)
{
TMOD = 0x20; // 设置 T1 为波特率发生器
SCON = 0x50; // 0101,0000 8位数据位, 无奇偶校验
PCON = 0x00; //PCON=0;
TH1=256-(SYS_Fosc/COMM_BAUD_RATE/32/12);//设置为9600波特率
TL1=256-(SYS_Fosc/COMM_BAUD_RATE/32/12);
TR1 = 1; //定时器1打开
REN = 1; //串口1接收使能
ES = 1; //串口1中断使能
EA = 1;
}
//串口接受函数初始化1
void UartIni1(void)
{
SCON = 0x50; //8-bit variable UART
TMOD = 0x20; //Set Timer1 as 8-bit auto reload mode
TH1 = TL1 = -(SYS_Fosc/12/32/COMM_BAUD_RATE); //Set auto-reload vaule
TR1 = 1; //Timer1 start run
ES = 1; //Enable UART interrupt
EA = 1; //Open master interrupt switch
}
/***********************************************************
* 名 称:
* 功 能:
* 入口参数: 无
* 出口参数:无
* 说 明:
**********************************************************/
void Uart_Isr() interrupt 4 using 1
{
if(RI)
{
}
}
/************************************************************************
功能描述: 串口发送一字节数据 sbuf=data
接受 data=sbuf
入口参数: DAT:带发送的数据
返 回 值: none
其他说明: none
**************************************************************************/
void Uart_PutByte(uint8_t DAT)
{
ES = 0;
TI=0;
DAT=SBUF ;
while(TI==0);
TI=0;
ES = 1;
}
///*****************************************************************************************************
// - 功能描述: 串口接受一帧数据
// - 隶属模块: 内部
// - 参数说明:
// - 返回说明:
// - 注:无
//*****************************************************************************************************/
void SendCmd(INT8U len )
{
INT8U i = 0 ;
for(i=0; i Uart_PutByte(Send_buf[i]) ; } } ///******************************************************************************************** // - 功能描述:求和校验 // - 隶属模块: // - 参数说明: // - 返回说明: // - 注: 和校验的思路如下 // 发送的指令,去掉起始和结束。将中间的6个字节进行累加,最后取反码 // 接收端就将接收到的一帧数据,去掉起始和结束。将中间的数据累加,再加上接收到的校验 // 字节。刚好为0.这样就代表接收到的数据完全正确。 //********************************************************************************************/ void DoSum( INT8U *Str, INT8U len) { INT16U xorsum = 0; INT8U i; for(i=0; i xorsum = xorsum + Str[i]; } xorsum = 0 -xorsum; *(Str+i) = (INT8U)(xorsum >>8); *(Str+i+1) = (INT8U)(xorsum & 0x00ff); } ///******************************************************************************************** // - 功能描述: 串口向外发送命令[包括控制和查询] // - 隶属模块: 外部 // - 参数说明: CMD:表示控制指令,请查阅指令表,还包括查询的相关指令 // feedback:是否需要应答[0:不需要应答,1:需要应答] // data:传送的参数 // - 返回说明: // - 注: //********************************************************************************************/ void Uart_SendCMD(INT8U CMD ,INT8U feedback , INT16U dat) { Send_buf[0] = 0xff; //保留字节 Send_buf[1] = 0x06; //长度 Send_buf[2] = CMD; //控制指令 Send_buf[3] = feedback;//是否需要反馈 Send_buf[4] = (INT8U)(dat >> 8);//datah Send_buf[5] = (INT8U)(dat); //datal DoSum(&Send_buf[0],6); //校验 SendCmd(8); //发送此帧数据 } /************************************************************************ 功能描述: 串口发送字符串数据 入口参数: *DAT:字符串指针 返 回 值: none 其他说明: API 供外部使用,直观! **************************************************************************/ void PrintCom(uint8_t *DAT) { while(*DAT) { Uart_PutByte(*DAT++); } } /************************************************************************ 功能描述: 串口发送字符串数据 直接发送 hex 文件 0x0f 等价于 0f 入口参数: *DAT:字符串指针 返 回 值: none 其他说明: API 供外部使用,直观! **************************************************************************/ void PrintCom1(uint8_t *DAT) { int i; for(i=0;i<12;i++) { Uart_PutByte(*DAT++); //Uart_PutByte 串口发送一字节数据 sbuf=data } }
上一篇:以AT24C02为例的IIC通信协议
下一篇:单片机中Sprint函数
推荐阅读
史海拾趣
为了进一步提升竞争力,Brilliance公司开始着手进行产业链整合。公司与上下游企业建立了紧密的合作关系,共同打造了一条完整的电子产业链。通过协同发展和资源共享,Brilliance不仅降低了生产成本,还提高了产品质量和生产效率。这种产业链整合的模式也为公司未来的发展奠定了坚实的基础。
随着业务的不断拓展,固得沃克意识到技术升级和产能扩张的重要性。2019年,公司在江苏盐城成立了江苏固得沃克微电子科技有限公司,作为新的生产基地。该基地拥有2万平米的厂房,引进了具有国际水准的专业生产设备及先进检测仪器,并通过了ISO9001、ISO14001等国际管理体系认证。这一举措不仅提升了公司的生产能力和产品质量,还进一步巩固了其在半导体行业的地位。
硕颉科技高度重视知识产权保护,积极申请专利。截至2015年10月,公司已取得台湾63件、美国52件、中国大陆24件、日本4件及韩国10件等共153件专利。这些专利的取得,不仅为公司的技术创新提供了法律保障,也进一步巩固了公司在行业内的竞争地位。
为了支持公司的持续发展和业务扩张,Eureka成功完成了多轮融资。这些融资不仅为公司提供了充足的资金支持,也吸引了众多投资者的关注。借助这些资金,Eureka加大了在研发、生产、销售等方面的投入,进一步提升了公司的竞争力和市场地位。同时,公司也积极开展战略合作,与上下游企业建立了紧密的合作关系,共同推动产业链的发展。
浙江东亚电子自成立以来,一直致力于技术创新和研发。公司拥有一支由50余名技术研发人员组成的专业团队,不断开发新产品和解决方案,以满足市场需求。这些创新产品不仅在国内外市场上获得了广泛认可,还为公司在新能源、通讯和军工等领域树立了良好的品牌形象。
英制 1 inch=1000 mil=25.4 mm 公制 电源线: 50 mil(5v或更低) 120mil(220v) 连接线: 12 mil 过孔via:40 mil(外)/28 mil(内) 焊盘pad:座孔 62 mil(外)/40 mil(内) 脚孔 50 mil(外)/32 mil(内) 电源端子 120 mil ...… 查看全部问答∨ |
|
微芯的协议栈说明书上有这么一句 RTOS and application independent 这是什么意思啊?操作系统和应用程序独立?老夫怎么觉得老夫写的应用程序是嵌入到他的操作系统框架里面的呢… 查看全部问答∨ |
|
准备重新编辑一下的,结果全部都是乱码,还是重新截图吧undefined [ 本帖最后由 Leo417love 于 2013-8-6 21:21 编辑 ]… 查看全部问答∨ |
买的开发板包装胶布被弄断,不是自己签收的,问题是我还弄不清倒是是卖家少邮东西.... 本帖最后由 ddllxxrr 于 2016-1-7 16:42 编辑 不知道发在这里合不合适,心里很是疑惑想问问大家,我在淘宝上买的别人的开发板,全新的两套,之后呢东西今天到了,因为我去上课,是别人签收的,我租的旅店的一个房间,回来之后店主把快件给我了,我 ...… 查看全部问答∨ |
新手求教 cc2541 sensortag 外加sensor的方案讨论 各位大神,小弟正在纠结于学校的一project 需要了解如何外接而外sensor通过sensortag帮助蓝牙发送数据去PC端,该如何实现呢? 现在的想法是通过sensortag上的P1-1-6的端口用I2C OR UART 连接?是否可行,求教具体的操作 感激不敬!… 查看全部问答∨ |
今早收到意法半导体邮件,看了一下,居然是高大上的STM32F7系列开发板横空出世了。 开售的有STM32F7 evaluation boards 和对应的 STM32F7 Microcontroller Discovery Board!话不多说先来几张靓照 STM32F7 Microcontroller Discovery ...… 查看全部问答∨ |
LED驱动电源设计并不难,但一定要心中有数。只要做到调试前计算,调试时测量,调试后老化,相信谁都可以搞好LED。 1、LED电流大小 大家都知道LEDripple过大的话,LED寿命会受到影响,影响有多大,但目前没有具体的指标。 2、芯片发热 ...… 查看全部问答∨ |
首先我谈谈我个人认为的学习方法,我大致分成了三大部分去学习单片机。1.基础理论 基础理论知识包括模拟电路、数字电路和C语言知识。模拟电路和数字电路属于抽象学科,要把它学好还得费点精神。在你学习单片 ...… 查看全部问答∨ |