标题:
单片机根据加速度数据控制IO口,输出电平不稳定问题求助大家
[打印本页]
作者:
1400301635
时间:
2020-4-26 17:43
标题:
单片机根据加速度数据控制IO口,输出电平不稳定问题求助大家
我用STC89C52单片机连接了一个加速度模块,根据角度信息控制IO口的电平,设置了串口中断,加速度模块每帧数据25个字节,串口RX读取数据后用来控制其他IO口的电平,连接了几个二极管控制亮灭来观察现象,然后发现IO电平会不断地快速波动,被困住了好几天,想求助大家这个问题是怎么回事。把中断代码和读取代码贴上来请大家指导,谢谢大家。
中断
#include "stc_it.h"
#include "usart.h"
#include "string.h"
//串口中断
void USART_IRQHandler(void)interrupt 4
{
static uint8_t i=0;//
if(RI)//接收完成标志
{
RI=0;//清中断接收标志
RX_BUF[i]=SBUF;
if (i==0&&RX_BUF[0]!=0x5a) return;//检查帧头
i++;
if(i==25) //
{
i=0; //
Receive_ok=1;
}
}[/i][/font][i]
[font=Tahoma] }[/font][font=Tahoma][size=5]
读取
[/size][/font][font=Tahoma]while(1)
{
if(Receive_ok)//串口接收完毕
{ Receive_ok=0;
for(sum=0,i=0;i<(RX_BUF[3]+4);i++)
sum+=RX_BUF[i];
count=0;
if(sum==RX_BUF[i])//校验和判断
{
if(RX_BUF[2]&0x01) //加速度数据
count=6;
if(RX_BUF[2]&0x02) //陀螺数据
count+=6;
if(RX_BUF[2]&0x04) //磁场数据
count+=6;
if(RX_BUF[2]&0x08) //四元数数据
count+=8;
if(RX_BUF[2]&0x10) //欧拉角数据
{
// LED_0=0;
rpy[0]=(RX_BUF[4+count]<<8)|RX_BUF[5+count];
rpy[1]=(RX_BUF[6+count]<<8)|RX_BUF[7+count];
rpy[2]=(RX_BUF[8+count]<<8)|RX_BUF[9+count];
Y=rpy[0]; //获取角度
X=rpy[1];
TI=1;
LED(Y,X);
count+=6;
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1