久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
用STC15W408AS的PCA模塊編寫的NEC編碼紅外遙控器程序
[打印本頁]
作者:
YHF1996
時(shí)間:
2019-7-14 22:07
標(biāo)題:
用STC15W408AS的PCA模塊編寫的NEC編碼紅外遙控器程序
/*******標(biāo)準(zhǔn)NEC編碼遙控器*********/
/*采用PCA高速脈沖輸出實(shí)現(xiàn)脈沖調(diào)制*/
/******紅外載波信號頻率38KHz******/
/*******YUAN HUA FEI*******/
#include<STC15W408AS.h>
#define uchar unsigned char
#define uint unsigned int
#define TOG0_OPEN 0X04//PCA翻轉(zhuǎn)控制位開
#define TOG0_CLOSE 0XFB//PCA翻轉(zhuǎn)控制位關(guān)
#define KEY P1 //矩陣鍵盤在P1口,P10~P15
sbit Ir = P3^7; //脈沖信號輸出端口
uchar xdata CODEA=0X28;//用戶碼1
uchar xdata CODEB=0X04;//用戶碼2
uint xdata TS =0; //中斷計(jì)數(shù)
uchar xdata Keycode; //存放讀取到的鍵值
void delayms(uint ms)
{
uchar x,y;
for(ms;ms>0;ms--)
for(x=250;x>0;x--)
for(y=12;y>0;y--);
}
void Init_PCA() //初始化PCA
{
CMOD = 0x02; //設(shè)置PCA時(shí)鐘源為系統(tǒng)時(shí)鐘SYSclk/2
CCON = 0; //初始化PCA控制寄存器
CCAPM2 = 0X4D;//高速脈沖輸出模式
CL = 0;
CH = 0; //當(dāng)計(jì)數(shù)器值等于PCA寄存器值產(chǎn)生中斷一次
CCAP2L =0X8A; //設(shè)置PCA寄存器初值
CCAP2H =0X00;
CR = 0; //PCA定時(shí)器關(guān)閉工作
EA = 1;
}
void PCA_INT() interrupt 7 using 1
{
TS++;
CCF2 = 0;//清中斷標(biāo)志
CL = 0; //復(fù)位PCA計(jì)數(shù)器
CH = 0;
}
void Infrared(uchar dat)
{
uchar xdata m,n;
uchar xdata user_code;//用戶碼
uchar xdata data_code;//數(shù)據(jù)碼
CR = 1;
CCAPM2 |=TOG0_OPEN;//允許脈沖輸出脈沖
while(TS<687);//9ms脈沖
TS = 0;
CCAPM2 &=TOG0_CLOSE;//關(guān)閉脈沖輸出脈沖
Ir = 0;
while(TS<343);//4.5ms低電平
TS = 0;
for(m=0;m<2;m++)
{
if(m==0)user_code=CODEA;//用戶碼1
else user_code=CODEB;//用戶碼2
for(n=0;n<8;n++)//從最低位依次發(fā)送
{
if(user_code &0X01)
{
CCAPM2 |=TOG0_OPEN;//允許翻轉(zhuǎn)輸出脈沖
while(TS<43);//0.56ms脈沖
TS = 0;
CCAPM2 &=TOG0_CLOSE;//關(guān)閉翻轉(zhuǎn)輸出脈沖
Ir = 0;
while(TS<129);//1.69ms低電平
TS = 0;
}
else
{
CCAPM2 |=TOG0_OPEN;//允許翻轉(zhuǎn)輸出脈沖
while(TS<43);//0.56ms脈沖
TS = 0;
CCAPM2 &=TOG0_CLOSE;//關(guān)閉翻轉(zhuǎn)輸出脈沖
Ir = 0;
while(TS<43);//0.565ms低電平
TS = 0;
}
user_code >>=1;
}
}
for(m=0;m<2;m++)
{
if(m==0)data_code= dat;//數(shù)據(jù)碼
else data_code=~dat;//數(shù)據(jù)碼反碼
for(n=0;n<8;n++)//從最低位依次發(fā)送
{
if(data_code &0X01)
{
CCAPM2 |=TOG0_OPEN;//允許翻轉(zhuǎn)輸出
while(TS<43);//0.56ms脈沖
TS = 0;
CCAPM2 &=TOG0_CLOSE;//關(guān)閉翻轉(zhuǎn)輸出
Ir = 0;
while(TS<129);//1.69ms低電平
TS = 0;
}
else
{
CCAPM2 |=TOG0_OPEN;//允許翻轉(zhuǎn)輸出
while(TS<43);//0.56ms脈沖
TS = 0;
CCAPM2 &=TOG0_CLOSE;//關(guān)閉翻轉(zhuǎn)輸出
Ir = 0;
while(TS<43);//0.565ms低電平
TS = 0;
}
data_code >>=1;
}
}
CCAPM2 &=TOG0_CLOSE;//關(guān)閉脈沖輸出
CR = 0;Ir = 0;
}
void Key_code() //4X2矩陣鍵盤
{
char n=0;//按鍵釋放時(shí)間,連按操作時(shí)可一直按著
KEY=0X3C;//先設(shè)置列輸出低電平
if(KEY!=0X3C) //判斷是否有按鍵按下
{
delayms(10);//延時(shí)消除按鍵抖動
if(KEY!=0X3C)//再次檢測鍵盤是否按下
{
switch(KEY)//獲取鍵碼行值
{
case(0X38): Keycode=1;break;//第1行
case(0X34): Keycode=2;break;//第2行
case(0X2C): Keycode=3;break;//第3行
case(0X1C): Keycode=4;break;//第4行
}
}
KEY=0X03;//設(shè)置行輸出低電平
delayms(1);//延時(shí)等待I/O口翻轉(zhuǎn)再檢測
if(KEY!=0X03)//再次檢測鍵盤是否按下
{
switch(KEY)//將行值與列值相加得到鍵碼
{
case(0X02):Keycode+=0;break;//第1列
case(0X01):Keycode+=4;break;//第2列
}
}
while((n<50)&&(KEY=0X03))//等待按鍵釋放或計(jì)時(shí)退出
{
delayms(5);
n++;
}
Infrared(Keycode);//發(fā)送鍵碼 數(shù)據(jù)
}
}
void main()
{
P3M0 = 0X80;//將P37設(shè)置為推挽輸出模式
P3M1 = 0X00;
Init_PCA();
while(1)
{
Key_code();
}
}
作者:
yinqing452
時(shí)間:
2019-8-30 21:04
樓主,這個(gè)程序您有測試過嗎?
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产综合精品一区二区三区
|
国产久
|
成人在线免费网站
|
亚洲国产网址
|
www国产成人免费观看视频,深夜成人网
|
成人在线播放网址
|
毛片一级片
|
日本a∨精品中文字幕在线 亚洲91视频
|
欧美日韩在线精品
|
欧美h版
|
午夜在线精品
|
一级黄a视频
|
国产线视频精品免费观看视频
|
91在线视频观看
|
亚洲国产一区二区三区,
|
日韩精品一二三区
|
99re热精品视频
|
日本涩涩视频
|
天堂综合网
|
国产成人精品一区二区在线
|
成人免费在线小视频
|
精品久久国产
|
综合久久综合久久
|
国产精品久久久久久久久久
|
欧美精品欧美精品系列
|
欧美久久一区二区
|
午夜免费
|
麻豆91av
|
免费观看国产视频在线
|
99爱在线观看
|
精品日韩在线
|
日韩在线视频一区
|
天堂久久天堂综合色
|
91人人澡人人爽
|
欧美日韩精品影院
|
国产精品久久网
|
日本免费一区二区三区四区
|
视频在线亚洲
|
午夜精品久久久
|
欧美性生交大片免费
|
国产a级毛毛片
|