知識社群
登入
中文(台灣)
English(US)
Q&A
線上人數:
387
回首頁
最新活動
(34)
公佈欄
最新公告
近期課程
技術專欄
Android
嵌入式Linux
韌體設計
FPGA / Verilog
站上資源
線上教學
文件總覽
廠商徵才
專業論壇
(1315)
推廣成果
學員專題
Android I/O Workshop
Android 企業產訓專班
活動花絮
(58)
專班學員資訊平台
102年嵌入式軟韌體設計工程師養成班
102年JAVA程式設計班
102Linux網路工程師-LPI認證養成班
嵌入式Linux就業班第二梯次
嵌入式Linux就業班第三梯次
101年 Android設計班(2)
101年 Android設計班(1)
公告
艾鍗學院成立滿十週年了!十年一遇的超值回饋,獻給堅持學習的你~
(03-12)
【2019下半年課程行事曆】政府+企業雙重補助,AI人才養成計劃開跑
(07-10)
IT TRAINING 2019上半年最新技術培訓一覽
(03-13)
[
more
]
最新消息
文件分類
[
總覽
]
廠商徵才資訊
(215)
學員專題成果
(31)
研討會活動專區
(5)
Android 專欄
(19)
活動簡報檔
(2)
線上教學 Training Video
(24)
韌體設計相關
(17)
Embedded LInux 專欄
(54)
Raspberry Pi
(4)
FPGA/Verilog 專欄
(14)
小品文章
(37)
未分類文件
(28)
101年 Android 應用軟體設計班
(4)
基礎C程式&資料結構
(8)
嵌入式Linux就業班第二梯次
(20)
101年臺北市政府勞工局職業訓練中心-Android APP 軟體開發人才培訓就業班
(16)
102年Linux網路工程師-LPI認證養成班
(9)
102年JAVA程式設計班
(2)
102年嵌入式軟韌體設計工程師養成班
(6)
Access VBA
(5)
Excel VBA
(4)
產業訊息
(2)
PCB Layout
(7)
電子電路
(6)
專班文件區
嵌入式Linux就業班第三梯次
(13)
社群資訊
訪客: 3179477
文章: 557
討論: 1315
公告: 31
容量: 剩餘
2.4 GB
(4 GB)
閱讀權限: 開放
分類:
教育學習 / 軟體系統
版主: 艾鍗學院
副版主: 無
位置:
艾鍗學院 Blog
>
專業論壇
>
討論
RF資料傳輸疑問
(momo, 2012-09-01 17:01)
1樓
RF作資料傳輸
不用HT-12E HT-12D作編碼以及解碼
而用兩個8051來作編碼以及解碼的工作
以下是我用課本範例改的程式碼
可是卻一直試不出來
可以請大大幫我看看有什麼問題嗎?
發射端程式
#include <AT89X51.H>
typedef unsigned char tByte;
#define SYNC 0xAA// synchro signal
#define RADDR 0x44
void delayms(unsigned int time)
{
unsigned int n;
while(time>0)
{
n=120;
while(n>0) n--;
time--;
}
}
void send_byte(tByte const b)
{
SBUF = b;
while(!TI);
TI = 0;
}
void send_packs(tByte const radd, tByte const rcmd)
{
send_byte(SYNC);
send_byte(radd);
send_byte(rcmd);
send_byte((radd+rcmd)); // check sum
}
main()
{
PCON |= 0x00;
TMOD=0x20;
TH1=230;
TL1=230;
TR1=1;
SCON=0x40;
while(1)
{
TI=0;
send_packs(RADDR, P1);
while(TI==0);
delayms(100);
}
}
接收端程式
#include <AT89X51.H>
typedef unsigned char tByte;
#define SYNC 0xAA// synchro signal
#define RADDR 0x44
main()
{
PCON |= 0x00;
TMOD = 0X20;
TH1 = 230;
TL1 = 230;
TR1 = 1;
SCON = 0x70;
ES = 1;
EA = 1;
while(1)
{
RI = 0;
while(RI == 0);
}
}
tByte USART_vReceiveByte(void)
{
// Wait until a byte has been received
while(!RI);
RI = 0;
// Return received data
return SBUF;
}
void UART_ISR() interrupt 4
{
// a-lu remark: 2011.02.21
// No implemented SYNC check before receive the byte of RADDR
// Let's to wait and see the test result
//define variables
tByte raddress, cmd, chk;//transmitter address
// find TX or RX caused interrupt
if(TI)
{
// clear TI
TI = 0;
}
else
{
//receive destination address
raddress = USART_vReceiveByte();
//receive cmd
cmd = USART_vReceiveByte();
//receive checksum
chk = USART_vReceiveByte();
//compare received checksum with calculated
if(chk == (raddress+cmd))//if match perform operations
{
//if transmitter address match
if(raddress == RADDR)
{
if(cmd == 0xfe)
{
P1 = 0x3f;
}
else if(cmd == 0xfd)
{
P1 = 0xcf;
}
else if(cmd == 0xfb)
{
P1 = 0x0f;
}
else if(cmd == 0xf7)
{
P1 = 0xff;
}
}
}
}
}
(艾鍗學院,
service@ittraining.com.tw
, 2012-09-05 00:33)
2樓
就業班學員
何老師說已於課堂上回覆了
不用HT-12E HT-12D作編碼以及解碼
而用兩個8051來作編碼以及解碼的工作
以下是我用課本範例改的程式碼
可是卻一直試不出來
可以請大大幫我看看有什麼問題嗎?
發射端程式