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

標題: 一個紅外實驗課程的問題,求指點迷津 [打印本頁]

作者: 朱三哥    時間: 2013-3-4 16:36
標題: 一個紅外實驗課程的問題,求指點迷津
// 主函數讀出 碼值,給P2口,驅動連接P2口的LED流水燈,看效果
//**********************************************************************
#include <reg51.h>
extern unsigned char datanum[4];
sbit red_line=P3^2;
void init_int0()             //中斷初始化,下降沿觸發方式
{
        EA=1;
        EX0=1;
        IT0=1;
}
void delay1(unsigned int i)
{
   unsigned char j;
   for(i;i>0;i--)
            for(j=100;j>0;j--);
}
void main()
{
        led_line=1;
        init_int0();
        while(1){
        P2=datanum[2];
        delay1(1000);
        }
}

//*******************************************************
中斷部分
1.辨別是開始嗎還是結束嗎
按鍵按下時,P3。2由高到低,觸發中斷,進入中斷程序。第一步 關閉中斷后,區分是引導嗎還是結束嗎,原理是,等待p3.2 口的電平為高,隔2.25ms后去檢測P3.2的電平,如果是高電平,則是開始嗎,進入碼值讀取部分,讀取完32個位后,等待9MS后,此時的P3.2為高電平 開中斷,歷程結束。
如果是低電平,則是結束嗎,跳過碼值讀取部分,等待9MS后,開中斷,歷程結束。
2.碼值讀取
   由于引導嗎讀取后,P3.2電平為低的時候,才進入讀取嗎部分。所以,這個時候只需等待P3.2再次為高電平,等待0.84 ms后 讀取P3.2的電平,為低則表示碼值為0,為高表示碼值為1,辨別完后,由
  于不知道是讀了1或者讀了0,一律等待P3.2的電平為低電平后再次讀取下一個位
//**************************************************************
#include <reg51.h>
sbit red_line=P3^2;
unsigned char i,j;
unsigned char datanum[4]={0,0,0,0};


void close_int0()
{
        EX0=0;
}

void init_xlat0(unsigned char high,unsigned char low)    //時鐘初始化的歷程
{
        TMOD=9;
        TH0=high;
        TL0=low;
        TF0=0;
        TR0=1;
}


unsigned char guide_wipe()                //引導嗎和結束嗎的分辨
{
        while(1){
          if(red_line==1){
                           init_xlat0(0xf7,0x35);
                                while(1){
                                        if(TF0==1){
                                                if(red_line==1)
                                                        return(1);
                                                 else
                                                   return(0);
                                        }
                           }
                }
         }
}

unsigned char dist_one_zero()     //1和0的分辨
{
          init_xlat0(0xfd,0xc7);
                while(1){
                        if(TF0==1){
                                if(red_line==1)
                                return(0x80);
                                else
                                return(0);       
                  }
                }
}
void delay(unsigned char a,unsigned char b)   //延時歷程
{
        init_xlat0(a,b);
    while(1){
                if(TF0==1)
                        break;
        }
}

void read_datenum_bit(unsigned char c)     //字節讀取歷程
{
        while(1){
                if(red_line==1){
                                        datanum[c]>>=1;
                                        datanum[c]|=dist_one_zero();
                                        break;
                }
  }
   while(1){
                   if(red_line==0)
                          break;       
        }
}
               

void into_in(void) interrupt 0    //中斷歷程
{
   close_int0();
        if(guide_wipe()==1){
                while(1){
                   if(red_line==0)
                          break;       
                }
           for(i=0;i<4;i++)
                        for(j=0;j<8;j++){       
                                  read_datenum_bit(i);       
                         }
        }
        delay(0xdc,0xd7);
        EX0=1;
}
       

問題:  程序運行不正常,起先P2口燈全亮后, 無論怎么按鍵,就是木有變化
         求邏輯上的改錯,,,,求 各位師兄指點迷津,跪求。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 中文字幕在线观看成人 | 日韩久久综合网 | 秋霞电影一区二区三区 | 亚洲一区二区精品视频在线观看 | 国产精品视频一区二区三区, | 国产乱码精品一区二区三区中文 | av天天操 | 日韩久久久久久 | 一级片在线视频 | 欧美电影大全 | 女同久久另类99精品国产 | 99精品99久久久久久宅男 | 国产欧美二区 | 天天操夜夜爽 | 日韩一区二区三区视频 | 国产精品伦一区二区三级视频 | 久久久久一区二区三区四区 | а天堂中文最新一区二区三区 | www国产成人免费观看视频,深夜成人网 | 欧美日韩国产一区二区三区 | 精品国产网 | 久久伦理电影 | 中文久久| 天天综合网永久 | 久久久国产精品 | 最新日韩欧美 | 国产亚洲精品久久久久久豆腐 | 国产一级电影在线观看 | 麻豆91精品91久久久 | 午夜精品一区二区三区在线视频 | 日本精品一区二区三区视频 | 欧美一区中文字幕 | 黑人精品欧美一区二区蜜桃 | 天天视频成人 | 亚洲国产高清免费 | 午夜二区| 三级国产三级在线 | a中文在线视频 | www.一级毛片 | 成人午夜精品 | 精品粉嫩aⅴ一区二区三区四区 |