久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
51單片機怎么測量433MHZ的無線信號呢
[打印本頁]
作者:
水深藍
時間:
2019-8-15 18:15
標題:
51單片機怎么測量433MHZ的無線信號呢
我現在在做一個51單片機解碼無線433模塊的遙控器,想知道怎么測量他的脈沖信號?
作者:
小剛的故事
時間:
2019-8-16 10:13
用定時器測量就可以啊,查詢電平變化時定時器的計數值
作者:
水深藍
時間:
2019-8-18 23:00
#include <reg52.H>
typedef unsigned int uint ;
typedef unsigned char uchar ;
sbit RF=P3^2;
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
uchar mma1,mma2,mma3,mma4; //第一次遙控編碼
uchar rf_ok1; //第一次遙控編碼賦值成功
uchar mmb1,mmb2,mmb3,mmb4; //第二次遙控編碼
uchar rf_ok2; //第二次遙控編碼賦值成功
uchar bma1,bma2,bma3,bma4;//臨時遙控編碼
uchar last_state; //上一個編碼狀態,0為低,1為高
uint hh_w=0,ll_w=0; //高低電平寬度初始化
uchar tb_ok; //同步碼標志位,置1表示已經收到同步碼,置0表示未收到同步碼
uchar rf_data[4]; //最后收到的遙控編碼
uchar ma_x; //接收到第幾位編碼
uchar s; //收到第一個碼和第二個碼之間不能超過S個周期
uchar rf_ok;
uchar decode_ok;
void ledinit();
void ex0init();
void ledinit()
{
led1=1;
led2=1;
led3=1;
led4=1;
}
void main()
{
ledinit();
ex0init();
TMOD=0X01;
TH0=0X00;
TL0=0X00;
while(1)
{
if(decode_ok==1)
{
switch(rf_data[3])
{
case 0xc8:led1=0;break;
case 0xc4:led2=0;break;
case 0xc2:led3=0;break;
case 0xc1:led4=0;break;
P1=rf_data[3];
}
}
}
void ex0init()
{
EX0=1;
IT0=1;
EA=1;
}
void ex0() interrupt 0
{
uchar rf_tmp=0;
EX0=0;
TH0=0;
TL0=0;
TR0=1;
if(RF==1)
{
TR0=0;
hh_w=TH0*256+TL0;
TH0=0;
TL0=0;
TR0=1;
}
else
{
TR0=0;
ll_w=TH0*256+TL0;
last_state=0;
}
if(!last_state)
{
if(((hh_w>=300)&&(hh_w<=400))&&((ll_w>=10000)&&(ll_w<=10500)))
{
tb_ok=1;
ma_x=0;
bma1=0;bma2=0;bma3=0;bma4=0;
TH0=0;
TL0=0;
TR0=1;
if(RF==0)
{
TR0=0;
ll_w=TH0*256+TL0;
last_state=0;
}
}
else if ((tb_ok)&&(ll_w>=900)&&(ll_w<1000))
{
ma_x++;
if(ma_x>23)
{
if(!rf_ok1)
{
mma1=bma1;
mma2=bma2;
mma3=bma3;
mma4=bma4;
rf_ok1=1;
tb_ok=0;
s=1300;
}
else{
mmb1=bma1;
mmb2=bma2;
mmb3=bma3;
mmb4=bma4;
rf_ok2=1;
tb_ok=0;
TH0=0;
TL0=0;
TR0=1;
if(RF==0)
{
TR0=0;
ll_w=TH0*256+TL0;
last_state=0;
}
}
}
}
else if((tb_ok)&&((ll_w>=300)&&( ll_w<=400)))
{
switch(ma_x)
{
case 0 : { bma1=bma1 | 0x80;
break; } //遙控編碼第1位
case 1 : { bma1=bma1 | 0x40;
break; }
case 2 : { bma1=bma1 | 0x20;
break; }
case 3 : { bma1=bma1 | 0x10;
break; }
case 4 : { bma1=bma1 | 0x08;
break; }
case 5 : { bma1=bma1 | 0x04;
break; }
case 6 : { bma1=bma1 | 0x02;
break; }
case 7 : { bma1=bma1 | 0x01;
break; }
case 8 : { bma2=bma2 | 0x80;
break; }
case 9 : { bma2=bma2 | 0x40;
break; }
case 10: { bma2=bma2 | 0x20;
break; }
case 11: { bma2=bma2 | 0x10;
break; }
case 12: { bma2=bma2 | 0x08;
break; }
case 13: { bma2=bma2 | 0x04;
break; }
case 14: { bma2=bma2 | 0x02;
break; }
case 15: { bma2=bma2 | 0x01;
break; }
case 16: { bma3=bma3 | 0x80;
break; }
case 17: { bma3=bma3 | 0x40;
break; }
case 18: { bma3=bma3 | 0x20;
break; }
case 19: { bma3=bma3 | 0x10;
break; }
case 20: { bma4=bma4 | 0x08;
break; }// 按鍵狀態第1位
case 21: { bma4=bma4 | 0x04;
break; }
case 22: { bma4=bma4 | 0x02;
break; }
case 23: { bma4=bma4 | 0x01;
if(!rf_ok1)
{
mma1=bma1;
mma2=bma2;
mma3=bma3;
mma4=bma4;
rf_ok1=1;
tb_ok=0;
s=1300;
}
else
{
mmb1=bma1;
mmb2=bma2;
mmb3=bma3;
mmb4=bma4;
rf_ok2=1;
tb_ok=0;
break;
}
}
}
ma_x++;
}
else {
ma_x=0;tb_ok=0;bma1=0;bma2=0;bma3=0;bma4=0;hh_w=0;ll_w=0;
}
last_state=1;
}
if(rf_ok1)
{
s--;
if(!s)rf_ok1=0;
if(rf_ok2)
{
if((mma1==mmb1)&&(mma2==mmb2&&(mma3==mmb3)&&(mma4==mmb4)))
{
rf_ok=1;
rf_ok1=0;
rf_ok2=0;
}
else
{
rf_ok=0;
rf_ok1=0;
rf_ok2=0;
}
}
}
if((rf_ok))
{
rf_ok=0;
rf_data[0]=mma1;
rf_data[1]=mma2;
rf_data[2]=mma2;
rf_data[3]=mma3;
decode_ok=1;
}
}
作者:
水深藍
時間:
2019-8-18 23:01
#include <reg52.H>
typedef unsigned int uint ;
typedef unsigned char uchar ;
sbit RF=P3^2;
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
uchar mma1,mma2,mma3,mma4; //第一次遙控編碼
uchar rf_ok1; //第一次遙控編碼賦值成功
uchar mmb1,mmb2,mmb3,mmb4; //第二次遙控編碼
uchar rf_ok2; //第二次遙控編碼賦值成功
uchar bma1,bma2,bma3,bma4;//臨時遙控編碼
uchar last_state; //上一個編碼狀態,0為低,1為高
uint hh_w=0,ll_w=0; //高低電平寬度初始化
uchar tb_ok; //同步碼標志位,置1表示已經收到同步碼,置0表示未收到同步碼
uchar rf_data[4]; //最后收到的遙控編碼
uchar ma_x; //接收到第幾位編碼
uchar s; //收到第一個碼和第二個碼之間不能超過S個周期
uchar rf_ok;
uchar decode_ok;
void ledinit();
void ex0init();
void ledinit()
{
led1=1;
led2=1;
led3=1;
led4=1;
}
void main()
{
ledinit();
ex0init();
TMOD=0X01;
TH0=0X00;
TL0=0X00;
while(1)
{
if(decode_ok==1)
{
switch(rf_data[3])
{
case 0xc8:led1=0;break;
case 0xc4:led2=0;break;
case 0xc2:led3=0;break;
case 0xc1:led4=0;break;
P1=rf_data[3];
}
}
}
void ex0init()
{
EX0=1;
IT0=1;
EA=1;
}
void ex0() interrupt 0
{
uchar rf_tmp=0;
EX0=0;
TH0=0;
TL0=0;
TR0=1;
if(RF==1)
{
TR0=0;
hh_w=TH0*256+TL0;
TH0=0;
TL0=0;
TR0=1;
}
else
{
TR0=0;
ll_w=TH0*256+TL0;
last_state=0;
}
if(!last_state)
{
if(((hh_w>=300)&&(hh_w<=400))&&((ll_w>=10000)&&(ll_w<=10500)))
{
tb_ok=1;
ma_x=0;
bma1=0;bma2=0;bma3=0;bma4=0;
TH0=0;
TL0=0;
TR0=1;
if(RF==0)
{
TR0=0;
ll_w=TH0*256+TL0;
last_state=0;
}
}
else if ((tb_ok)&&(ll_w>=900)&&(ll_w<1000))
{
ma_x++;
if(ma_x>23)
{
if(!rf_ok1)
{
mma1=bma1;
mma2=bma2;
mma3=bma3;
mma4=bma4;
rf_ok1=1;
tb_ok=0;
s=1300;
}
else{
mmb1=bma1;
mmb2=bma2;
mmb3=bma3;
mmb4=bma4;
rf_ok2=1;
tb_ok=0;
TH0=0;
TL0=0;
TR0=1;
if(RF==0)
{
TR0=0;
ll_w=TH0*256+TL0;
last_state=0;
}
}
}
}
else if((tb_ok)&&((ll_w>=300)&&( ll_w<=400)))
{
switch(ma_x)
{
case 0 : { bma1=bma1 | 0x80;
break; } //遙控編碼第1位
case 1 : { bma1=bma1 | 0x40;
break; }
case 2 : { bma1=bma1 | 0x20;
break; }
case 3 : { bma1=bma1 | 0x10;
break; }
case 4 : { bma1=bma1 | 0x08;
break; }
case 5 : { bma1=bma1 | 0x04;
break; }
case 6 : { bma1=bma1 | 0x02;
break; }
case 7 : { bma1=bma1 | 0x01;
break; }
case 8 : { bma2=bma2 | 0x80;
break; }
case 9 : { bma2=bma2 | 0x40;
break; }
case 10: { bma2=bma2 | 0x20;
break; }
case 11: { bma2=bma2 | 0x10;
break; }
case 12: { bma2=bma2 | 0x08;
break; }
case 13: { bma2=bma2 | 0x04;
break; }
case 14: { bma2=bma2 | 0x02;
break; }
case 15: { bma2=bma2 | 0x01;
break; }
case 16: { bma3=bma3 | 0x80;
break; }
case 17: { bma3=bma3 | 0x40;
break; }
case 18: { bma3=bma3 | 0x20;
break; }
case 19: { bma3=bma3 | 0x10;
break; }
case 20: { bma4=bma4 | 0x08;
break; }// 按鍵狀態第1位
case 21: { bma4=bma4 | 0x04;
break; }
case 22: { bma4=bma4 | 0x02;
break; }
case 23: { bma4=bma4 | 0x01;
if(!rf_ok1)
{
mma1=bma1;
mma2=bma2;
mma3=bma3;
mma4=bma4;
rf_ok1=1;
tb_ok=0;
s=1300;
}
else
{
mmb1=bma1;
mmb2=bma2;
mmb3=bma3;
mmb4=bma4;
rf_ok2=1;
tb_ok=0;
break;
}
}
}
ma_x++;
}
else {
ma_x=0;tb_ok=0;bma1=0;bma2=0;bma3=0;bma4=0;hh_w=0;ll_w=0;
}
last_state=1;
}
if(rf_ok1)
{
s--;
if(!s)rf_ok1=0;
if(rf_ok2)
{
if((mma1==mmb1)&&(mma2==mmb2&&(mma3==mmb3)&&(mma4==mmb4)))
{
rf_ok=1;
rf_ok1=0;
rf_ok2=0;
}
else
{
rf_ok=0;
rf_ok1=0;
rf_ok2=0;
}
}
}
if((rf_ok))
{
rf_ok=0;
rf_data[0]=mma1;
rf_data[1]=mma2;
rf_data[2]=mma2;
rf_data[3]=mma3;
decode_ok=1;
}
}
作者:
水深藍
時間:
2019-8-18 23:02
小剛的故事 發表于 2019-8-16 10:13
用定時器測量就可以啊,查詢電平變化時定時器的計數值
#include <reg52.H>
typedef unsigned int uint ;
typedef unsigned char uchar ;
sbit RF=P3^2;
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
uchar mma1,mma2,mma3,mma4; //第一次遙控編碼
uchar rf_ok1; //第一次遙控編碼賦值成功
uchar mmb1,mmb2,mmb3,mmb4; //第二次遙控編碼
uchar rf_ok2; //第二次遙控編碼賦值成功
uchar bma1,bma2,bma3,bma4;//臨時遙控編碼
uchar last_state; //上一個編碼狀態,0為低,1為高
uint hh_w=0,ll_w=0; //高低電平寬度初始化
uchar tb_ok; //同步碼標志位,置1表示已經收到同步碼,置0表示未收到同步碼
uchar rf_data[4]; //最后收到的遙控編碼
uchar ma_x; //接收到第幾位編碼
uchar s; //收到第一個碼和第二個碼之間不能超過S個周期
uchar rf_ok;
uchar decode_ok;
void ledinit();
void ex0init();
void ledinit()
{
led1=1;
led2=1;
led3=1;
led4=1;
}
void main()
{
ledinit();
ex0init();
TMOD=0X01;
TH0=0X00;
TL0=0X00;
while(1)
{
if(decode_ok==1)
{
switch(rf_data[3])
{
case 0xc8:led1=0;break;
case 0xc4:led2=0;break;
case 0xc2:led3=0;break;
case 0xc1:led4=0;break;
}
}
}
void ex0init()
{
EX0=1;
IT0=1;
EA=1;
}
void ex0() interrupt 0
{
uchar rf_tmp=0;
EX0=0;
TH0=0;
TL0=0;
TR0=1;
if(RF==1)
{
TR0=0;
hh_w=TH0*256+TL0;
TH0=0;
TL0=0;
TR0=1;
}
else
{
TR0=0;
ll_w=TH0*256+TL0;
last_state=0;
}
if(!last_state)
{
if(((hh_w>=300)&&(hh_w<=400))&&((ll_w>=10000)&&(ll_w<=10500)))
{
tb_ok=1;
ma_x=0;
bma1=0;bma2=0;bma3=0;bma4=0;
TH0=0;
TL0=0;
TR0=1;
if(RF==0)
{
TR0=0;
ll_w=TH0*256+TL0;
last_state=0;
}
}
else if ((tb_ok)&&(ll_w>=900)&&(ll_w<1000))
{
ma_x++;
if(ma_x>23)
{
if(!rf_ok1)
{
mma1=bma1;
mma2=bma2;
mma3=bma3;
mma4=bma4;
rf_ok1=1;
tb_ok=0;
s=1300;
}
else{
mmb1=bma1;
mmb2=bma2;
mmb3=bma3;
mmb4=bma4;
rf_ok2=1;
tb_ok=0;
TH0=0;
TL0=0;
TR0=1;
if(RF==0)
{
TR0=0;
ll_w=TH0*256+TL0;
last_state=0;
}
}
}
}
else if((tb_ok)&&((ll_w>=300)&&( ll_w<=400)))
{
switch(ma_x)
{
case 0 : { bma1=bma1 | 0x80;
break; } //遙控編碼第1位
case 1 : { bma1=bma1 | 0x40;
break; }
case 2 : { bma1=bma1 | 0x20;
break; }
case 3 : { bma1=bma1 | 0x10;
break; }
case 4 : { bma1=bma1 | 0x08;
break; }
case 5 : { bma1=bma1 | 0x04;
break; }
case 6 : { bma1=bma1 | 0x02;
break; }
case 7 : { bma1=bma1 | 0x01;
break; }
case 8 : { bma2=bma2 | 0x80;
break; }
case 9 : { bma2=bma2 | 0x40;
break; }
case 10: { bma2=bma2 | 0x20;
break; }
case 11: { bma2=bma2 | 0x10;
break; }
case 12: { bma2=bma2 | 0x08;
break; }
case 13: { bma2=bma2 | 0x04;
break; }
case 14: { bma2=bma2 | 0x02;
break; }
case 15: { bma2=bma2 | 0x01;
break; }
case 16: { bma3=bma3 | 0x80;
break; }
case 17: { bma3=bma3 | 0x40;
break; }
case 18: { bma3=bma3 | 0x20;
break; }
case 19: { bma3=bma3 | 0x10;
break; }
case 20: { bma4=bma4 | 0x08;
break; }// 按鍵狀態第1位
case 21: { bma4=bma4 | 0x04;
break; }
case 22: { bma4=bma4 | 0x02;
break; }
case 23: { bma4=bma4 | 0x01;
if(!rf_ok1)
{
mma1=bma1;
mma2=bma2;
mma3=bma3;
mma4=bma4;
rf_ok1=1;
tb_ok=0;
s=1300;
}
else
{
mmb1=bma1;
mmb2=bma2;
mmb3=bma3;
mmb4=bma4;
rf_ok2=1;
tb_ok=0;
break;
}
}
}
ma_x++;
}
else {
ma_x=0;tb_ok=0;bma1=0;bma2=0;bma3=0;bma4=0;hh_w=0;ll_w=0;
}
last_state=1;
}
if(rf_ok1)
{
s--;
if(!s)rf_ok1=0;
if(rf_ok2)
{
if((mma1==mmb1)&&(mma2==mmb2&&(mma3==mmb3)&&(mma4==mmb4)))
{
rf_ok=1;
rf_ok1=0;
rf_ok2=0;
}
else
{
rf_ok=0;
rf_ok1=0;
rf_ok2=0;
}
}
}
if((rf_ok))
{
rf_ok=0;
rf_data[0]=mma1;
rf_data[1]=mma2;
rf_data[2]=mma2;
rf_data[3]=mma3;
decode_ok=1;
}
}
作者:
xdy20151225
時間:
2025-4-11 16:46
感謝各位大神!謝謝
作者:
H688BB
時間:
2025-4-15 22:24
#include "stc8g.h"
INT0 BIT P3.2
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0ISR
ORG 0100H
INT0ISR:
CLR TR0
JB INT0,RISING ;判斷上升沿和下降沿
;CPL P1.0 ;測試端口 下降沿
MOV R1,TH0
MOV R2 ,TL0
MOV TL0,#0
MOV TH0,#0
SETB TR0
;CALL UP_SEND ;發送高電平脈沖寬度
MOV SBUF,#0AAH
JNB TI,$ ;發送完成標志
CLR TI
MOV SBUF,R1
JNB TI,$ ;發送完成標志
CLR TI
MOV SBUF,R2
JNB TI,$ ;發送完成標志
CLR TI
RETI
RISING: ;CPL P1.1 ;測試端口 上升沿
MOV R1,TH0
MOV R2,TL0
MOV TL0,#0
MOV TH0,#0
SETB TR0
;CALL DOWN_SEND ;發送低電平脈沖寬度
MOV SBUF,#0BBH
JNB TI,$ ;發送完成標志
CLR TI
MOV SBUF,R1
JNB TI,$ ;發送完成標志
CLR TI
MOV SBUF,R2
JNB TI,$ ;發送完成標志
CLR TI
RETI
;=============================
MAIN:
MOV SP, #5FH
MOV P1M0, #00H
MOV P1M1, #00H
MOV P3M0, #00H
MOV P3M1, #00H
MOV P5M0, #00H
MOV P5M1, #00H
UARTINIT: ;230400bps@11.0592MHz
MOV SCON,#50H ;8位數據,可變波特率
ORL AUXR,#01H ;串口1選擇定時器2為波特率發生器
ORL AUXR,#04H ;定時器時鐘1T模式
MOV T2L,#0F4H ;設置定時初始值
MOV T2H,#0FFH ;設置定時初始值
ORL AUXR,#10H ;定時器2開始計時
ANL AUXR, #00111111B
MOV TMOD,#00010001B
MOV TCON,#00000000B
MOV TL0,#0
MOV TH0,#0
CLR IT0 ;使能 INT0 上升沿和下降沿中斷
SETB EX0 ;使能 INT0 中斷
SETB EA
TEST:
DELAY1MS: ;@22.1184MHz
// NOP
// NOP
// PUSH 30H
// PUSH 31H
// MOV 30H,#29
// MOV 31H,#181
//NEXT:
// DJNZ 31H,NEXT
// DJNZ 30H,NEXT
// POP 31H
// POP 30H
//MOV SBUF,#0AAH
// JNB TI,$ ;發送完成標志
// CLR TI
JMP TEST
UP_SEND:
MOV SBUF,#0AAH
JNB TI,$ ;發送完成標志
CLR TI
MOV SBUF,R1
JNB TI,$ ;發送完成標志
CLR TI
MOV SBUF,R2
JNB TI,$ ;發送完成標志
CLR TI
RET
END
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美日韩久
|
色综合久久久
|
在线色
|
涩在线
|
久久久涩
|
国产99久久久国产精品
|
a欧美
|
在线播放中文
|
国产精品中文
|
国产视频91在线
|
999国产精品视频
|
第一区在线观看免费国语入口
|
国产欧美日韩一区二区三区在线观看
|
日韩精品视频在线免费观看
|
亚洲欧美激情国产综合久久久
|
免费黄色成人
|
一级片在线免费播放
|
最新国产精品
|
久久综合欧美
|
亚洲精品久久久9婷婷中文字幕
|
一道本不卡视频
|
国产精品99999999
|
欧美日韩a
|
午夜免费福利电影
|
精品欧美一区二区中文字幕视频
|
色综合久久久久
|
91精品国产综合久久久久久丝袜
|
国产精品五月天
|
一区视频在线
|
国产麻豆一区二区三区
|
色综合99
|
亚洲国产一区二区三区
|
成人网视频
|
亚洲午夜电影
|
欧美日韩亚洲一区
|
成人在线视频观看
|
亚洲一一在线
|
狼色网
|
怡红院成人在线视频
|
日本一区二区三区四区
|
国产成人午夜高潮毛片
|