欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機學習型紅外遙控開關程序 用Keil uVision 4編譯 什么不能通過?
[打印本頁]
作者:
ll13536121668
時間:
2020-10-18 11:04
標題:
單片機學習型紅外遙控開關程序 用Keil uVision 4編譯 什么不能通過?
那位師博能把這個學習型紅外遙控開關,用Keil uVision 4編譯 通過生成hex代碼 修改好用壓縮包上傳,謝謝
#include<AT89X51.H> //裝入AT89X51頭文件
#include<ir.h> //裝入紅外解碼程序
#include<24c02.H> //裝入24c02讀寫程序
sbit key=P1^0; //定義按鍵IO
sbit led=P0^0; //定義指示led
sbit rel=P0^1; //定義輸出控制腳
unsigned char kaver; //定義kaver為輸出口狀態緩存
unsigned char iccdate,irdate; //定義24c02數據和解碼數據
//延時10ms函數,用于開關消抖等
delay10ms()
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
//學習紅外解碼并寫入24c02的函數
study()
{
IR_IN();
irdate=IRCOM[3];
iccdate=ReadIIC(W_cmd,0x00,R_cmd);
if(irdate!=iccdate) //只在解碼結果與讀取結果不同時寫入24C02
{
if(irdate!=0) //防止沒有接收到紅外信號,IRCOM[3]置零時,誤寫入0
{
WP=0;
WriIIC(W_cmd,0x00,irdate);
delay10ms();
WP=1;
led=0;
while(key==0); //學習成功等待按鍵釋放,led停止閃動作為指示
}
}
}
//進入學習狀態時的led閃動函數
flash()
{
unsigned char i;
while(key==0)
{
led=~led;
for(i=50;i>0;i--)
study();
}
}
//按鍵模式識別函數
keymod()
{
unsigned char m=0;
while(key==0) //如果按鍵按下,開始對按鍵時間進行計數
{
delay10ms(); //計數時間延時
m++;
delay10ms(); //計數時間延時
if(m>=90) //如果計數次數大于90次,等于按鍵按下時間大于約5秒后,進入led閃動學習模式
{
m=0;
flash();
}
}
if(m<90) //如果計數次數小于90,則按鍵作為開關使用
{
m=0;
kaver=~kaver;
}
}
////////////////////主函數////////////////////////////////////
main()
{
WP=1; //24c02寫保護
while(1)
{
IRCOM[3]=0;
IR_IN(); // 讀4字節32位按鍵編碼 ,前16位用戶碼為IRCOM[1]+IRCOM[2],8位鍵值碼為IRCOM[3]
irdate=IRCOM[3]; //8位鍵值反碼為IRCOM[4] 這里只調用 IRCOM[3]鍵值碼作為數據碼
iccdate=ReadIIC(W_cmd,0x00,R_cmd);
if(irdate==iccdate) //如果解碼結果與24C讀取碼相同,kaver翻轉一次
{
irdate=0;
kaver=~kaver;
}
if(key==0)
keymod();
rel=~kaver;
led=kaver;
}
}
學習型紅外遙控開關.rar
2020-10-18 11:03 上傳
點擊文件名下載附件
18.93 KB, 下載次數: 12
作者:
累不死的狗
時間:
2020-10-19 20:32
你這東西多半是抄的吧,里面的變量名都不一樣,要想學就好好學,別總學人家復制粘貼,復制粘貼也得復制全了不是?
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1