永发信息网

51单片机通过P3.0从蓝牙模块接受数据的C语言程序

答案:1  悬赏:70  手机版
解决时间 2021-02-04 06:04
  • 提问者网友:献世佛
  • 2021-02-03 18:06
51单片机通过P3.0从蓝牙模块接受数据的C语言程序
最佳答案
  • 五星知识达人网友:青尢
  • 2021-02-03 18:25
#include //串口通信打印与数码管

#define uint unsigned int
#define uchar unsigned char

sbit dula=P2^6; //申明锁存器1
sbit wela=P2^7; //申明锁存器

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //定义数码管段选

uchar flag; //标志位
uchar a,b,e,f,g,h;

void delay(uint x) //毫秒级延时
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}

void display(uchar e,uchar f) //数码管显示函数
{
wela=1; //位选
P0=0xfe;
wela=0;
P0=0xff; //消影
dula=1; //段选
P0=table[e];
dula=0;
delay(1);

wela=1; //位选
P0=0xfd;
wela=0;
P0=0xff; //消影
dula=1; //段选
P0=table[f];
dula=0;
delay(1);
}

void init()
{
TMOD=0x21; //T1定时器工作方式2 T0定时器工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //装初值
TH1=0xFD;
TL1=0xFD; //定波特率为9600
SCON=0x50;
PCON=0x00;
ET0=1;
TR1=1;
EA=1;
ES=1;
}

void main()
{
init();
while(1)
{
display(e,f);
if(flag==1)
{
ES=0; //关中断
SBUF=a;
while(!TI);
TI=0;
if(a==1)
{
TR0=1; //开中断
}
if(a==2)
{
TR0=0;
}
ES=1;
flag=0;
}
}
}

void T() interrupt 1
{
TH0=(65536-50000)/256; //重装初值
TL0=(65536-50000)%256;
g++;
if(g==20)
{
h++;
b=h;
SBUF=b;
while(!TI);
TI=0;
g=0;
f=h%10;
e=h/10;
}
if(h==99)
h=0;
}

void Th() interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯