久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
紅外遙控程序
[打印本頁]
作者:
forgetname
時間:
2015-7-15 15:17
標題:
紅外遙控程序
希望對新手有用,里面有幾個疑問請高手指點
///** STC15F104不需要外部晶振8管腳VCC/GND/P3.0-P3.5 **///
///** 四個元件實現NEC協議紅外遙控的發射(STC15F104、按鍵開關、紅外發射管、限流電阻) 還有4個IO口可以利用 **///
///** 程序燒寫時選運行頻率12M **///
///** P3.3接按鍵開關與GND鏈接 **///
///** P3.5接紅外發射管負極,紅外發射管正極接+5,注意串接限流電阻 **///
//本程序主體不是自己寫的,主體部分來源與admin 在2009-11-1 02:26:38 發布的紅外發射實驗
//***http://www.zg4o1577.cn/bbs/dpj-2820-1.html****////
///*** 有的地方不了解就按自己的意識修改了一下
///1、是不是應該13um中斷一次,換一次電平??????????????
///2、SendIRdata函數中 endcount原始賦值看不懂
///上學時接觸幾天C語言(沒過級,英語太差)、自學的51,
///請教高手指點
///請教高手指點
#include <STC15F104E.h>
static bit OP; //紅外發射管的亮滅
static unsigned int count; //延時計數器
static unsigned int endcount; //終止延時計數
static unsigned char flag; //紅外發送標志
char iraddr1; //十六位地址的第一個字節
char iraddr2; //十六位地址的第二個字節
void SendIRdata(char p_irdata);
void delay();
void main(void)
{
///****變量初始化******///
count = 0; //延時計數器初始化
flag = 0; //紅外發送標志初始化
OP = 1; //紅外發射管的亮滅初始化
P35 = 1; //紅外發射io口初始化
//***中斷初始設置***//
EA = 1; //允許CPU中斷
TMOD = 0x11; //設定時器0和1為16位模式1
ET0 = 1; //定時器0中斷允許
TH0 = 0xFF; //設定時值0為38K 也就是每隔26us中斷一次 TH0 = 0xFF; ????是不是應該13um換一次電平
TL0 = 0xf2; // TL0 = 0xE5;
TR0 = 1; //開始計數
///***地址初始化****///
iraddr1=0x00; //第一字節
iraddr2=0xfd; //第二字節
/**進入主程序循環**/
do{
delay();
if(P33==0)
{SendIRdata(0x16);}// 在此填入發射數據
}while(1);
}
/*****定時器0中斷處理 ***/
void timeint(void) interrupt 1
{
TH0=0xFF;
TL0=0xf2; //設定時值為38K 也就是每隔26us中斷一次 ????是不是應該13um換一次電平
count++;
if (flag==1)
{
OP=~OP;
}
else
{
OP = 1;
}
P35 = OP;
}
//**數據傳輸函數**//
void SendIRdata(char p_irdata)
{
/*聲明變量*/
int i;
char irdata=p_irdata;
/*發送9ms的起始碼*/
endcount=692; /// endcount=223 223*26=5798 ?????????????????
flag=1;
count=0;
do{}while(count<endcount);
/*發送4.5ms的結果碼 */
endcount=346;
flag=0;
count=0;
do{}while(count<endcount);
/******發送十六位地址的前八位********/
irdata=iraddr1;
for(i=0;i<8;i++)
{
endcount=43; //先發送0.56ms的38KHZ紅外波(即編碼中0.56ms的低電平)
flag=1;
count=0;
do{}while(count<endcount); //停止發送紅外信號(即編碼中的高電平)
if(irdata-(irdata/2)*2) //判斷二進制數個位為1還是0
{
endcount=130; //1為寬的高電平
}
else
{
endcount=43; //0為窄的高電平
}
flag=0;
count=0;
do{}while(count<endcount);
irdata=irdata>>1;
}
/**********發送十六位地址的后八位*********/
irdata=iraddr2;
for(i=0;i<8;i++)
{
endcount=43;
flag=1;
count=0;
do{}while(count<endcount);
if(irdata-(irdata/2)*2)
{
endcount=130;
}
else
{
endcount=43;
}
flag=0;
count=0;
do{}while(count<endcount);
irdata=irdata>>1;
}
////*****發送八位數據*****/////
irdata=p_irdata;
for(i=0;i<8;i++)
{
endcount=43;
flag=1;
count=0;
do{}while(count<endcount);
if(irdata-(irdata/2)*2)
{
endcount=130;
}
else
{
endcount=43;
}
flag=0;
count=0;
do{}while(count<endcount);
irdata=irdata>>1;
}
/******發送八位數據的反碼******/
irdata=~p_irdata;
for(i=0;i<8;i++)
{
endcount=43;
flag=1;
count=0;
do{}while(count<endcount);
if(irdata-(irdata/2)*2)
{
endcount=130;
}
else
{
endcount=43;
}
flag=0;
count=0;
do{}while(count<endcount);
irdata=irdata>>1;
}
endcount=43;
flag=1;
count=0;
do{}while(count<endcount);
flag=0;
}
///****延時函數***////
void delay()
{
int i,j;
for(i=0;i<400;i++)
{
for(j=0;j<100;j++)
{
}
}
}
復制代碼
作者:
▓逍〓遙◆
時間:
2015-11-4 11:31
學習了,頂。。。。
作者:
ylll75
時間:
2016-7-19 13:03
正在學習,謝謝了!
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
精品自拍视频在线观看
|
日本不卡一二三
|
日韩精品一区二区三区在线播放
|
中文日本在线
|
色就是色欧美
|
一区二区三区精品在线视频
|
欧美一级毛片在线播放
|
精品久久影院
|
久久99国产精品
|
精品91久久
|
99re在线视频免费观看
|
啪啪精品
|
爱爱综合网
|
色婷婷综合久久久久中文一区二区
|
亚洲经典一区
|
一区二区三区国产好的精
|
人人人艹
|
国产精品91久久久久久
|
日韩和的一区二区
|
婷婷在线网站
|
九九久久久
|
五月免费视频
|
日本久久一区二区三区
|
午夜在线视频一区二区三区
|
色资源在线
|
激情欧美日韩一区二区
|
在线婷婷
|
欧洲一区二区三区
|
日韩视频一区二区在线
|
www.99精品
|
欧美一级欧美一级在线播放
|
日韩毛片免费视频
|
午夜精品网站
|
国产成人久久精品一区二区三区
|
在线看一区二区三区
|
国产高清视频
|
免费在线色
|
成人高清在线视频
|
久久久久国产一区二区三区四区
|
亚洲一区二区三区在线播放
|
日韩欧美在线播放
|