找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1375|回复: 3
打印 上一主题 下一主题
收起左侧

BS808B与单片机stc15W408AS通信问题,设置不了多键唤醒模式

[复制链接]
跳转到指定楼层
楼主
ID:464793 发表于 2019-1-8 18:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.电路是外接8个按键
2.SCD接外部中断0
以下程序
#include "reg51.h"
#include "intrins.h"
unsigned char key;
sbit SCD=P3^2;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
///////////////////////////////////////////////////////////////////////////////////////////////////////
void Delay50us()                //@11.0592MHz
{
        unsigned char i, j;

        _nop_();
        i = 1;
        j = 134;
        do
        {
                while (--j);
        } while (--i);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
void Delay3000ms()                //@11.0592MHz
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 127;
        j = 18;
        k = 107;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}



/////////////////////////////////////////////////////////////////////////////////////////////////////
void Delay10us()                //@11.0592MHz
{
        unsigned char i;

        _nop_();
        i = 25;
        while (--i);
}
//////////////////////////////////////////////////////////////////////////////////////////////////
void zd0()
{
EA=1;IT0=1;EX0=1;
}                                                                                                  
////////////////////////////////////////////////////////////////////////////////////////////////
void cmfs ()
{
unsigned char z;
SCD=0;
Delay50us();  Delay50us();Delay50us();  Delay50us();Delay50us();  Delay50us();        Delay50us();
Delay50us();  Delay50us();Delay50us();  Delay50us();Delay50us();  Delay50us();         Delay50us();
for(z=12;z>0;z--)
{
SCD=1;
Delay10us();
SCD=0;
Delay10us();
}
SCD=1;
IE0=0;
}
//////////////////////////////////////////////////////////////////////////////////////////
void read()interrupt 0
{
unsigned char x,y;
unsigned char date;
EX0=0;
Delay50us();
for(x=5;x>0;x--)
{
SCD=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
SCD=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
}
while(SCD);
while(!SCD);
for(y=8;y>0;y--)
{
while (SCD);
Delay50us();Delay50us();
SCD=1;
date>>=1;
if(SCD==1)
{date|=0x80;}
else
{date&=0x7f;}
while(!SCD);
}
if(date!=0xff)
key=date;
EX0=1;
EA=1;
IE0=0;
}
////////////////////////////////////////////////////////////////////////////////////
void main()
{
  cmfs ();
  zd0();

////while( 1){P1=key;}
while(1)
{
  if(key==0x7f){P1=0xfe;}
}
}


现象,读不了键值,设置不了多键唤醒模式,是没设置I/o模式?求指教
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2019-1-9 08:40 | 只看该作者
硬件如何接的?
回复

使用道具 举报

板凳
ID:464793 发表于 2019-1-9 10:49 | 只看该作者
yzwzfyz 发表于 2019-1-9 08:40
硬件如何接的?

BS808B的SCD直接接在单片机int0上,输出P1外接LED灯泡
回复

使用道具 举报

地板
ID:464793 发表于 2019-1-15 14:35 | 只看该作者
以解决、
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表