久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 紅外接收程序問題!!幫忙看看 [打印本頁]

作者: WISE620    時間: 2009-6-5 11:56
標題: 紅外接收程序問題!!幫忙看看

#include <reg52.h>
#include <lcd.h>
#include <epprom.h>

unsigned int temp_low_pulse1;
unsigned int temp_low_pulse0;
unsigned int temp_high_pulse1;
unsigned int temp_high_pulse0;
unsigned int count;
unsigned char write_enable;

sbit led8=P0^7;
sbit key=P0^0;
sbit key1=P0^1;
sbit key2=P0^2;


/*********      延時1S     ******************************************/
void delay_1s()
{
 unsigned int i,j;
 for(i=5;i>0;i--)
  for(j=110;j>0;j--);
}


void initial()
{
 EA=1; //開啟總中斷
 EX1=1; //開啟外部中斷1
 IT1=1; //外部中斷1為下降沿有效
 TMOD=0x19; //定時器1,2 方式為1,且T0 GATE位有效
 TH0=0x00;
 TL0=0x00;
 TH1=0x00;
 TL1=0x00;
 count=0;
}

void main()
{
 unsigned char temp,temp_ge,temp_shi,temp_bai,num_ge,num_shi,num_bai,num_qian;
 unsigned int  count_qian,count_bai,count_shi,count_ge,num;
 initial();
 init();
 lcd_int();


 num=0;
 while(1)
 {
  if(key==0)
  {

   num++;
   if(num==2048)
   num=0;
   while(!key);
  }
  if(key1==0)
  {
  

   if(num==0)
    num=2048;
     num--;
   while(!key1);
  }
 if(count>=2048)
  count=0;
 temp=read_add(num);
 temp_bai=temp/100;
 temp_shi=temp%100/10;
 temp_ge=temp%10;
 num_qian=num/1000; 
 num_bai=num%1000/100;
 num_shi=num%100/10;
 num_ge=num%10;
 count_qian=count/1000;
 count_bai=count%1000/100;
 count_shi=count%100/10;
 count_ge=count%10;
 
 write_com(0x80); 
 write_date(0x30+temp_bai);
 write_com(0x81); 
 write_date(0x30+temp_shi);
 write_com(0x82); 
 write_date(0x30+temp_ge);
 write_com(0x84); 
 write_date(0x30+num_qian);
 write_com(0x85); 
 write_date(0x30+num_bai);
 write_com(0x86); 
 write_date(0x30+num_shi);
 write_com(0x87); 
 write_date(0x30+num_ge);
 write_com(0x89); 
 write_date(0x30+count_qian);
 write_com(0x8a); 
 write_date(0x30+count_bai);
 write_com(0x8b); 
 write_date(0x30+count_shi);
 write_com(0x8c); 
 write_date(0x30+count_ge);
 if (write_enable==1)
 {
 write_add(count,5);   //將紅外信號的低電平的值寫入儲存器COUNT地址內
 delay_1s();
 write_add(count+1,6);   //將紅外信號的低電平的值寫入儲存器COUNT+1地址內 
 delay_1s();
 write_add(count+2,7);  //將紅外信號的高電平的值寫入儲存器COUNT+2地址內
 delay_1s();
 write_add(count+3,8);  //將紅外信號的高電平的值寫入儲存器COUNT+3地址內
 delay_1s();
 write_enable=0;
 }
 }


}

void int1() interrupt 2
{
 
  
    EX1=0;          //關外部中斷1
 TR0=0;          //關閉定時器0
 TR1=0;          //關閉定時器1
 temp_low_pulse1=TH1-TH0;     //將TH1減去TL0的值(即紅外信號的低電平)賦予temp_low_pulse1
 temp_low_pulse0=TL1-TL0;         //將TL1減去TL0的值(即紅外信號的低電平)賦予temp_low_pulse0
 temp_high_pulse1=TH0;      //將TH0值(即紅外信號的高電平值)賦予temp_high_pulse1
 temp_high_pulse0=TL0;      //將TL0值(即紅外信號的高電平值)賦予temp_high_pulse0
 write_enable=1;
 TH0=0x00;         //TH0清零
 TL0=0x00;         //TL0清零
 TH1=0x00;         //TH1清零
 TL1=0x00;         //TL1清零
 TR0=1;          //啟動定時器0
 TR1=1;          //啟動定時器1
 led8=!led8;
 count=count+4; 
 EX1=1;          //開外部中斷1
 

}

 

本人編寫了一個紅外接收的程序,紅外接收管接收端接單片機中斷1,接收的紅外波形以后,開啟T0,T1定時器,對紅外波形的高低電平及時,其中中斷下降沿開啟T1計時,電平升高后開啟T0計時,T1-T0的時間就是紅外波形的低電平時間,我利用AT24C16芯片保存定時時間,根據寫的程序,在兩次中斷間隙時間過短了,沒有足夠的時間寫進存儲芯片,怎么解決啊?

 


作者: WISE620    時間: 2009-6-10 11:34


作者: xldlovemch    時間: 2009-8-28 11:32
 頂一下,我也在弄紅外呢呵呵
作者: pzcaofang    時間: 2009-8-28 20:08
不知道你的問題解決了嗎  我前一段時間也謝了一個簡單的紅外程序  傳到http://sjcxlab.5d6d.com/thread-46-1-1.html  這里了  有興趣的可以去看一下~~~~




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产91av视频 | 亚洲久久久 | 中文字幕日韩视频 | 日日干日日射 | 国产精品久久久久久久久久久久久久久 | 精品国产一区二 | 三级视频在线播放 | 激情久久网| 91一级片 | 成人免费毛片aaaaaa片 | 国产精品2区 | 亚洲香蕉视频 | 免费观看成人 | 少妇xxxx69 | 亚洲精品视频免费在线观看 | 午夜高清| 一级片在线播放 | 夜夜嗨av一区二区三区网页 | 中文字幕在线免费播放 | 国产com | 亚洲精品免费在线观看 | 亚洲精品欧美 | 日韩在线视频免费观看 | xxxx亚洲 | 少妇高潮久久久久久潘金莲 | 黄色成年人视频 | 超碰在线中文字幕 | 成人综合婷婷国产精品久久 | 美女免费视频网站 | 久久国产一区二区三区 | 国产精品福利视频 | 国产在线播放av | 日韩在线中文 | 亚洲国产日韩欧美 | 国产1级片 | 中国特级毛片 | 韩国黄色网址 | 欧美一级黄色片 | 真实的国产乱xxxx在线 | 国产成人精品一区 | 免费av毛片 |