/****************************************************************************
【文 件 名 称】IOMOD.C
【功 能 描 述】输入输出程序
【程 序 版 本】1.0
****************************************************************************/
//***************************************************************************
#include <REG2051.H>
#include "INC\SM89516A.H"
#include "INC\DECLARE.H"
#include "INC\EXTERN.H"
#include "INC\24C16.H"
#include "INC\V24INT.H"
#include <intrins.h>
//***************************************************************************
//***************************************************************************/
/****************************************************************************
名称: Int0_Interrupt
参数: 无
返回值: 无
描述:
创建日期:
修改日期:
****************************************************************************/
/*void x0_interrupt() interrupt X0_VECT using X0_REG_BANK
{
} ?*/
/****************************************************************************
名称: Int0_Interrupt
参数: 无
返回值: 无
描述:
创建日期:
修改日期:
****************************************************************************/
/*void x1_interrupt() interrupt X1_VECT using X1_REG_BANK
{
} */
/****************************************************************************
函数名 :Delay_10
函数参数 :
返回值 :
功能描述 :
创建日期 :
修改日期 :
****************************************************************************/
void Delay_Nms(WORD n)
{
WORD i,j;
for(j=0;j< n;j++)
{
for(i=0;i<220;i++);
//Watchdog_Reset();
}
}
/****************************************************************************
函数名 : Get_Sp_Byte1
函数参数 : addr
返回值 :
功能描述 :
创建日期 :
修改日期 :
****************************************************************************/
BYTE Get_SP_Byte1(BYTE addr)
{
BYTE temp1,temp2,temp3;
temp1 = Get_SP_Byte(TX_NVRAM_SLAV_ADDR1,addr );
temp2 = Get_SP_Byte(TX_NVRAM_SLAV_ADDR1,addr+80 );
temp3 = Get_SP_Byte(TX_NVRAM_SLAV_ADDR1,addr+160);
if((temp1==temp2)&&(temp1==temp3))
{
return temp1;
}
else
{
if(temp1==temp2)
{
EEPROM_ENB;
Delay_Nms(3);
Save_SP_Byte(TX_NVRAM_SLAV_ADDR1,addr+160,temp1);
EEPROM_DIS;
return temp1;
}
else if(temp1==temp3)
{
EEPROM_ENB;
Delay_Nms(3);
Save_SP_Byte(TX_NVRAM_SLAV_ADDR1,addr + 80,temp1);
EEPROM_DIS;
return temp1;
}
else if(temp2==temp3)
{
EEPROM_ENB;
Delay_Nms(3);
Save_SP_Byte(TX_NVRAM_SLAV_ADDR1,addr ,temp2);
EEPROM_DIS;
return temp2;
}
else
{
return 0xFF;
}
}
}
/****************************************************************************
函数名 : Save_SP_Byte1
函数参数 :
返回值 :
功能描述 :
创建日期 :
修改日期 :
****************************************************************************/
void Save_SP_Byte1(BYTE addr,BYTE val)
{
Save_SP_Byte(TX_NVRAM_SLAV_ADDR1,addr ,val);
Save_SP_Byte(TX_NVRAM_SLAV_ADDR1,addr+80 ,val);
Save_SP_Byte(TX_NVRAM_SLAV_ADDR1,addr+160,val);
}
/****************************************************************************
函数名 : Write_Code
函数参数 :
返回值 :
功能描述 :
创建日期 :
修改日期 :
****************************************************************************/
void Write_Code()
{
BYTE temp_addr;
//遥控器学习
if ((Work_Mode > 0) && (Work_Mode < 21))
{
temp_addr = (Work_Mode-1) *3 + YK1_SP;
EEPROM_ENB;
Delay_Nms(3);
Save_SP_Byte1(temp_addr ,Receive_Code[0]);
Save_SP_Byte1(temp_addr+1,Receive_Code[1]);
Save_SP_Byte1(temp_addr+2,Receive_Code[2]);
EEPROM_DIS;
if((Get_SP_Byte1(temp_addr)==Receive_Code[0]))
{
Send_Str("**81");
Send_Byte((Work_Mode)/10+ '0');
Send_Byte((Work_Mode)%10+ '0');
Send_Byte(0x0D);
Send_Byte(0x0A);
}
}
}
/****************************************************************************
函数名 : Analyse_Code
函数参数 : **911(05-20)
返回值 :
功能描述 :
创建日期 :
修改日期 :
****************************************************************************/
void Analyse_Code()
{
BYTE i,code_num[3];
if((Receive_Code[0] == 0xff)
&&(Receive_Code[1] == 0xff)
&&(Receive_Code[2] == 0xff))
{
;
}else{
for(i=0;i<5;i++)
{
code_num[0]= Get_SP_Byte1(YK1_SP+i*3 );
code_num[1]= Get_SP_Byte1(YK1_SP+i*3+1);
if((Receive_Code[0] == code_num[0])
&& (Receive_Code[1] == code_num[1]))
{
if((Receive_Code[2]== 0xC0)||(Receive_Code[2]== 0x30)
||(Receive_Code[2]== 0x0C)||(Receive_Code[2]== 0x03))
{
Send_Str("**93");
if (Receive_Code[2]== 0xC0) Send_Byte('1');
if (Receive_Code[2]== 0x30) Send_Byte('2');
if (Receive_Code[2]== 0x0C) Send_Byte('3');
if (Receive_Code[2]== 0x03) Send_Byte('4');
Send_Str("\r\n");
Delay_Nms(400);
return;
}
}
}
for(i=5;i<20;i++)
{
code_num[0]= Get_SP_Byte1(YK1_SP+i*3 );
code_num[1]= Get_SP_Byte1(YK1_SP+i*3+1);
code_num[2]= Get_SP_Byte1(YK1_SP+i*3+2);
if((Receive_Code[0] == code_num[0])
&& (Receive_Code[1] == code_num[1])
&& (Receive_Code[2] == code_num[2]))
{
Send_Str("**91");
Send_Byte((i-4)/10+'0');
Send_Byte((i-4)%10+'0');
Send_Str("\r\n");
Delay_Nms(600);
return;
}
}
}
}
/****************************************************************************
函数名 :Get_All_Data
函数参数 :
返回值 :
功能描述 :
创建日期 :
修改日期 :
****************************************************************************/
/*void Get_All_Data()
{
BYTE i;
for(i=0;i<255;i++)
{
Send_Byte(Get_SP_Byte(TX_NVRAM_SLAV_ADDR1,i));
}
}*/
/****************************************************************************
函数名 :Handle_Mcu1_Data
函数参数 :
返回值 :
功能描述 : *#81(01-20)学习编码,*#820总清,*#82(01-20)清除,*#886退出学习模式,
创建日期 :
修改日期 :
****************************************************************************/
void Handle_Mcu1_Data()
{
BYTE i,temp_addr,temp;
if(Data_Rec_Temp[3]=='1')
{
temp =(Data_Rec_Temp[4]-'0')*10 + (Data_Rec_Temp[5]-'0');
if (temp<21)Work_Mode = temp;
}
if(Data_Rec_Temp[3]=='2')
{
temp = (Data_Rec_Temp[4]-'0')*10 + (Data_Rec_Temp[5]-'0');
if (temp==0)
{
if(Data_Rec_Temp[6]=='1')
{
EEPROM_ENB;
Delay_Nms(3);
for(i=0;i<15;i++)
{
Save_SP_Byte1(YK1_SP+i,0xFF);
}
EEPROM_DIS;
Send_Str("**82001\r\n");
}
if(Data_Rec_Temp[6]=='2')
{
EEPROM_ENB;
Delay_Nms(3);
for(i=15;i<60;i++)
{
Save_SP_Byte1(YK1_SP+i,0xFF);
}
EEPROM_DIS;
Send_Str("**82002\r\n");
}
}
else if(temp<21)
{
temp_addr = (temp-1)*3 + YK1_SP;
EEPROM_ENB;
Delay_Nms(3);
Save_SP_Byte1(temp_addr+0,0xFF);
Save_SP_Byte1(temp_addr+1,0xFF);
Save_SP_Byte1(temp_addr+2,0xFF);
EEPROM_DIS;
Send_Str("**82");
Send_Byte(Data_Rec_Temp[4]);
Send_Byte(Data_Rec_Temp[5]);
Send_Str("\r\n");
}
}
if((Data_Rec_Temp[3]=='8')&&(Data_Rec_Temp[4]=='6')) Work_Mode = 0;
}
nihao.zip_pt2272代替芯片
版权申诉
78 浏览量
2022-09-22
21:42:09
上传
评论
收藏 55KB ZIP 举报
我虽横行却不霸道
- 粉丝: 75
- 资源: 1万+
最新资源
- Python 程序语言设计模式思路-行为型模式:策略模式:将算法封装成独立的类,并使它们可以互相替换及支付模式数据压缩
- main.py
- Last Loaded Test.DBK
- Screenshot_20240520_163011.jpg
- ubuntu-python3-whisper-tornado docker镜像 Dockerfile
- ubuntu-python3-whisper-tornado docker镜像07
- 新录音 8.m4a
- ubuntu-python3-whisper-tornado docker镜像
- ubuntu-python3-whisper-tornado docker镜像
- ubuntu-python3-whisper-tornado docker镜像09
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈