帮我看看下面红外编码的程序 问题1:我感觉我的程序写的思路没错,编译也能通过,但是执行的时候不是按照code2的数据来发射的,好像是频闪,频率较低? 问题2:数组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};//作为试验数据,使用时写成一定宽度的高低电平
sent(float code1[])//发送红外线的函数 {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){}//直到定时计数器停止时才继续运行 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()); } }
|