HC-06蓝牙模块问题,问题解决追加20~30分。程序很短,麻烦看一下。

过程是通过手机蓝牙传输数据到丛机蓝牙,从机蓝牙txd,rxd分别和AVR单片机的rxd,txd连接,只要单片机一接收到数据,就点亮一盏led显示。#include<iom... 过程是通过手机蓝牙传输数据到丛机蓝牙,从机蓝牙txd,rxd分别和AVR单片机的rxd,txd连接,只要单片机一接收到数据,就点亮一盏led显示。
#include<iom16v.h>
#include <macros.h>
#define uchar unsigned char //宏定义
#define uint unsigned int
uchar temp;

void delay_ms(uint ms) //延时
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<1141;j++);
}

void uart0_init(void)
{
UCSRB = 0x00;
UCSRA = 0x02; //倍率发送
UCSRC = 0x06; //8位数据位,一位停止位,无奇偶校验位
UBRRL = 0x67; //9600波特率
UBRRH = 0x00;
UCSRB = 0x18; //接收使能,发送使能
}

uchar uart0_receive(void) //接收采用查询方式
{
while(!(UCSRA&(1<<RXC))); //等待接收数据
PORTA=0xff; //只要一接收就点亮led
delay_ms(100);
return UDR;
}

void port_init(void) //端口定义
{
DDRA=0XFF;
}

void main()
{
while(1);
{
port_init();
uart0_init();
uart0_receive();
}
}

出现问题是led无显示,说明单片机无法接收数据。
下面接收采用中断方式,程序哪里出错了呢?(硬件上已经解决好问题了)
void uart0_init(void)
{
UCSRB = 0x00;
UCSRA = 0x02; //倍率发送
UCSRC = 0x86;//URSEL=1选择配置UCSRC, 8位数据位,一位停止位,无奇偶校验位
UCSRC = 0x06;//URSEL=0选择配置UBRRH
UBRRL = 0x67; //9600波特率
UBRRH = 0x00;
UCSRB = 0x98; //接收使能,接收中断使能,发送使能
}

void main()
{
while(1)
{
port_init();
uart0_init();
SREG|=0X80; //打开总中断
}
}

//中断服务子程序
#pragrma interrupt_handler uart0_rx:12
void uart0_rx(void)
{
temp=UDR;
//UCSRB&=0xef; //关闭接收使能
PORTA=0xff;
//UCSRB|=0x10;//打开接收使能
}
展开
 我来答
c3344c
2013-04-27 · TA获得超过2419个赞
知道小有建树答主
回答量:966
采纳率:57%
帮助的人:687万
展开全部
我做过ATmega16的串口通讯,对照我先前做过的程序,发现你的串口配置存在一个容易被忽略的问题,这可能是你蓝牙通信失败的最主要原因:
你程序中寄存器配置UCSRC = 0x06;是错误的,UCSRC和UBRRH寄存器公用一个地址,为了在同一个地址上对两个寄存器分别配置,需要改变UCSRC的最高位URSEL对两个寄存器进行选择,当URSEL=1时选择配置UCSRC,当URSEL=0时选择配置UBRRH。你的问题就出在这里,现修改如下:
UCSRC = 0x86;//URSEL=1选择配置UCSRC, 8位数据位,一位停止位,无奇偶校验位
UCSRC = 0x06;//URSEL=0选择配置UBRRH
UBRRH = 0x00;//按照你原先的配置,
UBRRL = 0x67; //9600波特率
其它的程序不变,不知道你用的内部RC振荡器还是外部晶振,也不知道频率,所以波特率你自己搞定。
如果还有什么问题,除了继续追问还可通过百度知道的私信功能发送邮件给我。
追问
不好意思,试过继续追问和评论都字数有限制,我私信给你,分数已经提高了,你的回答很耐心。万分感谢。
追答
用的是ICCAVR吧,你的中断定义(声明)的位置错了,#pragrma interrupt_handler uart0_rx:12 这一行应该放在文件的开始处,就是引用头文件或声明函数的位置。
来自:求助得到的回答
晓网科技
2024-10-17 广告
电源: 2V-3.6V 典型值:3.3V。模块总功耗:A无线模块不工作时平均功耗 22-25mW  B无线模块工作时平均功耗 130-135mW  C无线模块工作时峰值功耗 140-150mW。发射功率:100mW  天线功率:1dBm  ... 点击进入详情页
本回答由晓网科技提供
chr1999
2013-04-27 · TA获得超过1056个赞
知道小有建树答主
回答量:2462
采纳率:0%
帮助的人:1249万
展开全部
那硬件问题?
更多追问追答
追问
硬件上没有连接错误,就从机蓝牙txd,rxd分别和AVR单片机的rxd,txd连接,单片机VCC,GND的连接而已,没有其他外围了。
追答
那蓝牙配置错误?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式