幫我看看下面紅外編碼的程序 問題1:我感覺我的程序?qū)懙乃悸窙]錯,編譯也能通過,但是執(zhí)行的時候不是按照code2的數(shù)據(jù)來發(fā)射的,好像是頻閃,頻率較低? 問題2:數(shù)組code2[]的長度只要長到一定的程度,keil就會編譯錯誤,但是我需要很長,怎么辦? 問題3:TH0和TL0這樣賦值是否正確,為什么書上的是-XXX/256? 誰能按照我的思路寫一個紅外編碼的程序,感激不盡!!!
#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};//作為試驗數(shù)據(jù),使用時寫成一定寬度的高低電平
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ù)器停止時才繼續(xù)運行 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()); } }
|