试了好久,就是没结果。

[复制链接]
1156|9
 楼主| 野强强 发表于 2015-5-2 10:31 | 显示全部楼层 |阅读模式
#include<reg51.h>
sbit P1_1=P1^1;
unsigned char q;
void delay(unsigned int ms)
{
unsigned int i;
unsigned char j;
    for(i=0;i<ms;i++)
    {
        for(j=0;j<20;j++);
        for(j=0;j<5;j++);
    }
}
main()
{
EA=1;
ES=1;
SCON=0x50;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
do
{
P1_1=0;
delay(60-q);
P1_1=1;
delay(q);
}
while(1);
}
void lanya(void) interrupt 4
{
unsigned char h;


RI=0;
h=SBUF;
if(h==0)
{

q=50;


}
else if(h==1)
{
q=10;

  delay(600);
}
else if(h==2)
{

q=30;


}
else
{
q=0;
  
  
}
}
/////////////////////////////////////////////////////////
这是一个单片机响应手机蓝牙发出命令的程序(手机可以发出0,1,2,3供单片机接收)。目的是为了完成p1_1口输出高电平分别持续2.28ms,1.37ms,0.47ms的脉冲电波。可是结果却不是。能否找出程序BUG.
as564335sa 发表于 2015-5-2 16:15 | 显示全部楼层
结果不是但现象是什么,是发送后没反应还是延时不对,问个问题都让人费解
JY-DX-JY 发表于 2015-5-2 16:20 | 显示全部楼层
先要连上蓝牙模块。
NE5532 发表于 2015-5-2 16:26 | 显示全部楼层
1.不会写程序。
2.不会描述问题。
3.不会加注释。
4.不会调程序。

评分

参与人数 1威望 +2 收起 理由
ocon + 2 很给力!

查看全部评分

 楼主| 野强强 发表于 2015-5-2 18:18 | 显示全部楼层
as564335sa 发表于 2015-5-2 16:15
结果不是但现象是什么,是发送后没反应还是延时不对,问个问题都让人费解 ...

我以为看到程序大神是会猜到结果的,还有没加注释是由于代码少于100行的大神应该都不需要看注释。结果就是不管按哪个键,P1.1口输出2.5ms的高电平脉冲。求改
 楼主| 野强强 发表于 2015-5-2 18:19 | 显示全部楼层
NE5532 发表于 2015-5-2 16:26
1.不会写程序。
2.不会描述问题。
3.不会加注释。

我以为看到程序大神是会猜到结果的,还有没加注释是由于代码少于100行的大神应该都不需要看注释。结果就是不管按哪个键,P1.1口输出2.5ms的高电平脉冲。求改
as564335sa 发表于 2015-5-2 20:22 | 显示全部楼层
考虑下手机发送的字符是ascii的还是hex的,51串口似乎不能仿真,简单点,手机上的蓝牙串口肯定是可以接收数据的,在你程序里把q,还有每次收到的字符用串口发回手机上(串口发送放在那不用我多说吧),是命令不对还是q没变,一看便知
NE5532 发表于 2015-5-3 10:14 | 显示全部楼层
野强强 发表于 2015-5-2 18:19
我以为看到程序大神是会猜到结果的,还有没加注释是由于代码少于100行的大神应该都不需要看注释。结果就 ...

注释不是写给大神看的,是写给你自己看的,你的态度和方法决定了你做的东西到处都是问题。
 楼主| 野强强 发表于 2015-5-3 12:40 | 显示全部楼层
版主,说的对。我以后要注意了。但是能否找出问题。。。
xuyaqi 发表于 2015-5-3 13:26 | 显示全部楼层
串口中断里干的事情太多,更不应该在中断里还延时。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部