幫我看看下面紅外編碼的程序
問(wèn)題1:我感覺(jué)我的程序?qū)懙乃悸窙](méi)錯(cuò),編譯也能通過(guò),但是執(zhí)行的時(shí)候不是按照code2的數(shù)據(jù)來(lái)發(fā)射的,好像是頻閃,頻率較低?
問(wèn)題2:數(shù)組code2[]的長(zhǎng)度只要長(zhǎng)到一定的程度,keil就會(huì)編譯錯(cuò)誤,但是我需要很長(zhǎng),怎么辦?
問(wèn)題3:TH0和TL0這樣賦值是否正確,為什么書(shū)上的是-XXX/256?
誰(shuí)能按照我的思路寫(xiě)一個(gè)紅外編碼的程序,感激不盡!!!
#include<reg51.h>
sbit led=P3^1;
float code2[]={1,2,5,1,2,3,4,5,6,7,8,9,2,5,1,2,3,4,5,6,7,8,9,2,5,1,2,3};//作為試驗(yàn)數(shù)據(jù),使用時(shí)寫(xiě)成一定寬度的高低電平
sent(float code1[])//發(fā)送紅外線的函數(shù)
{int i;
led=0;
for(i=0;i<30;i++);
TH0=(65536-code1*11059.2)/256;
TL0=(int)(65536-code1*11059.2)%256;
TR0=1;
while(TR0){}//直到定時(shí)計(jì)數(shù)器停止時(shí)才繼續(xù)運(yùn)行
led=1;
}
intsrv() interrupt 1 using 1
{
led=!led;
TR0=0;
}
init()//初始化
{
EA=1;
ET0=1;
TMOD=0x01;
TH0=0;
TL0=0;
TR0=0;
}
main()
{init();
while(1){
sent(code2());
}
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |