/***********************************
*工程名:servo-system1.0
*文件名:usart-t.c
*功能:USART通信,下位机程序。
*CPU:M8
*作者:YY
*当前版本:1.0
*日期:2008-3-11
************************************/
/************************************
*当前版本1.1
*修改日期:08-03-12
*修改内容:
* 将文件整合置servo8.c
*************************************/
/************************************
*当前版本1.2
*修改日期:08-04-11
*修改内容:更改通信协议
*注销write_ee() read_ee()函数
*增加time_ocrn()函数
*************************************/
#include "usart.h"
unsigned char pwm_temp[11]; //USART接收缓冲区
unsigned char pwm_temp_i=0; //USART接收定位
unsigned char usart_ok; //接收完毕标志
extern unsigned int pwm[10];
//***********USART初始化***************
void usart_init(void)
{
UBRRH=(0<<URSEL)|0;
UBRRL=47; //14.4k波特率
UCSRA|=(0<<U2X); //双倍速率
UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN)|(0<<UCSZ2); //允许接收中断
UCSRC=(1<<URSEL)|(0<<UMSEL)|(1<<UPM1)|(0<<UPM0)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);
}
/**********USART接收中断**************/
SIGNAL(SIG_UART_RECV)
{
pwm_temp[pwm_temp_i++]=UDR;
if(11==pwm_temp_i)
{
usart_ok=1;
pwm_temp_i=0;
}
}
//*****将接收数据转换成OCRN的值********
void time_ocrn(void)
{
unsigned char i;
unsigned int time_temp;
for(i=0;i<9;i++)
{
// j=i+1;
// pwm[i]=pwm_temp[j]*5-1; //接收的数据单位为(10us) ,这是8MHZ下的转换关系
pwm[i]=pwm_temp[i+1]+50; //11.0592下是pwm_temp[j]*13.824 - 1 这里为了方便用
pwm[i]*=14; //pwm_temp[j]*14
time_temp+=pwm[i] ; // +50为了宽度范围右移1ms
}
pwm[9]=55500-time_temp;
}
/*********接收数据处理*******************
*数据格式: S+(a1+b1)+(a2+b2)+...(an+bn)...+(a9+b9)+P
* S为起始码 P为停止码
* an-bn为unsignend char 型数据
* (an+bn)组成一个unsigned int型的数据
****************************************
****************************************
*1.2版本数据格式:S+a1+a2+...+a9+P
* S为起始码 P为停止码
* a1~a9为脉宽系数
****************************************/
unsigned char inceput_pwm(void)
{
if('S'==(pwm_temp[0])
&&'P'==(pwm_temp[10])) //判断数据识别码是否正确
{
// write_ee();
// read_ee();
time_ocrn();
return (1);
}
else
{
return (0); //数据错误,返回0
}
}
servo-system.zip_多路舵机控制_控制多路舵机_机器狗_舵机_舵机源代码
版权申诉
144 浏览量
2022-07-14
02:12:48
上传
评论
收藏 24KB ZIP 举报
我虽横行却不霸道
- 粉丝: 72
- 资源: 1万+
最新资源
- QuestionTwo.java
- QuestionOne.java
- OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).rar
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- 南京邮电大学数学实验:熟练掌握 Matlab 软件的基本命令和操作
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- 2017校招真题校园招聘真题算法题(37道)Python源码.zip
- 基于单片机protues仿真的多功能自动饮水机系统设计(仿真图、源代码、演示视频)
- 论文《一种修复流程挖掘事件日志中缺失活动标签的深度学习方法》翻译
- 智慧电厂相关资料发电控制的方式
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0