- 积分
- 575
- 在线时间
- 820 小时
- 最后登录
- 2024-5-31
- 阅读权限
- 50
- 精华
- 0
- UID
- 3264
- 帖子
- 496
- 精华
- 0
- 经验
- 575 点
- 金钱
- 512 ¥
- 注册时间
- 2005-3-5
|
楼主 |
发表于 2024-2-29 10:19
|
显示全部楼层
map1.h代码:
#ifndef __MAP1_H__
#define __MAP1_H__
//========================================================================
// 函数: void delay_ms(u16 ms)
// 描述: 延时函数。
// 参数: ms,要延时的ms数, 自动适应主时钟.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 备注:
//========================================================================
void delay_ms(u16 ms)
{
u16 i;
do{
i=FOSC/10000;
while(--i); //10T per loop
}while(--ms);
}
//LED闪烁一下,表示接收到遥控信号
void Led_shanshuo()
{
LED1=1;
delay_ms(20);
LED1=0;
}
//开机
void Kaiji()
{
u8 y;
LED1=0;
delay_ms(20);
LED1=1;
J_power=0; //打开主电源
delay_ms(200);
c_vol=IapReadByte(IAP_ADDRESS); //读取音量值
if(c_vol==0x00||c_vol==0xff)c_vol=0x7a; //如果读取到的音量值有误,则设为适中音量值0x7a(-35dB)
if(c_vol>0x8e)c_vol=0x8e; //如果上次保存的音量值大于0x8e(-25dB),则开机音量值设为0x8e
delay_ms(100);
y=IapReadByte(IAP_ADDRESS+1); //读取音源值
if(y==0x00){J_yinyuan=0;}else{J_yinyuan=1;} //切换音源
delay_ms(1000); //延时1000毫秒,等待主控板、功放板上电稳定
J_shuchu=0; //音频输出OK
Vol_danchu(); //音量淡出
b_kaiji=1; //开机标识
LED1=0;
}
//关机
void Guanji()
{
u8 y;
Led_shanshuo();
IapEraseSector(IAP_ADDRESS);//擦除扇区
delay_ms(100);
IapProgramByte(IAP_ADDRESS,c_vol);//写音量值
delay_ms(100);
if(J_yinyuan==1){y=0x01;}else{y=0x00;}
IapProgramByte(IAP_ADDRESS+1,y);//写音源值
delay_ms(100);
Vol_danru();
J_shuchu=1;
J_yinyuan=1;
J_power=1;
b_kaiji=0;
b_ledhuxi=0;
LED1=1;
}
//红外信号控制
void Ir_kongzhi()
{
EX0=0;
b_irflag=0;
switch(c_ircode[2]) //判断红外遥控码值
{
case 0x57: //电源开关
if(b_kaiji){Guanji();}else{Kaiji();}
break;
case 0x8a: //静音
if(b_kaiji){Led_shanshuo();Vol_mute();}
break;
case 0x5d: //按键-
if(b_kaiji&&b_jingyin==0){Vol_down();Led_shanshuo();}
break;
case 0xff: //按键+
if(b_kaiji&&b_jingyin==0){Vol_up();Led_shanshuo();}
break;
case 0x16: //切换音源
if(b_kaiji){J_yinyuan=~J_yinyuan;Led_shanshuo();}
break;
default:
break;
}
EX0=1;
}
#endif |
|