📄 hptv.lis
字号:
.module hptv.c
.area data(ram, con, rel)
0000 _adc_jg::
0000 .blkb 2
.area idata
0000 0000 .byte 0,0
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 0000 .byte 0,0
.area data(ram, con, rel)
0004 .blkb 1
.area idata
0004 00 .byte 0
.area data(ram, con, rel)
0005 .dbfile G:\McuControl\hptv.c
0005 .dbsym e adc_jg _adc_jg A[5:5]c
.area lit(rom, con, rel)
0000 _uart_command::
0000 504F .byte 'P,'O
0002 5752 .byte 'W,'R
0004 .dbsym e uart_command _uart_command A[4:4]kc
.area text(rom, con, rel)
0000 .dbfile G:\McuControl\hptv.c
0000 .dbfunc e Clear_Timer_Close_Machine _Clear_Timer_Close_Machine fV
.even
0000 _Clear_Timer_Close_Machine::
0000 0E940000 xcall push_gset2
0004 .dbline -1
0004 .dbline 279
0004 ; //ICC-AVR application builder : 2006-8-5 21:56:00
0004 ; // Target : M16
0004 ; // Crystal: 7.3728Mhz
0004 ;
0004 ; #include <iom16v.h>
0004 ; #include <macros.h>
0004 ; #include <eeprom.h>
0004 ; //#include "necdecode.h"
0004 ; //#include "rc5.c"
0004 ; #include "i2c.h"
0004 ; #include "hptvstruct.h"
0004 ; typedef unsigned char uchar;
0004 ; typedef unsigned int uint;
0004 ; /********************************************
0004 ; //定义宏
0004 ; //设置计数器各种功能时间值
0004 ; //关机后,2s 后响应开机信号 0.05*40=2s
0004 ; //开机后,20s 后响应关机信号 0.05*400=20s
0004 ; //设置pwrbt=1 / 0 时间值 1ms*10=10ms 10+5=15ms
0004 ; //设置rest and rest_l 开机时间值 0.05s*24=1.2s 0.05s*28=1.4s
0004 ; //设置rest and rest_l 关机时间值 1ms*50=50ms 1ms*80=80s
0004 ; //设置rly_on 关机时间值 1ms*200=200ms
0004 ; //设置vs_on 开机时间值 1ms*20=20ms
0004 ; //设置vs_on 关机时间值 1ms*220=220ms
0004 ; //设置开机后pa0从低到高延迟时间值 0.05s*40=2s
0004 ; //设置开机后poer重置延迟时间值 0.05s*12=0.6s
0004 ; //设置power_key donwn时间值 1ms*20=20ms
0004 ; //设置power_on时间值 1ms*200=200s
0004 ; //设置rc5码全部bit长度以及第一、二开始位bit结束位置
0004 ; *********************************************/
0004 ; #define close_to_open_time 40
0004 ; #define open_to_close_time 60 //3s
0004 ; #define pwrbt_high_time 10
0004 ; #define pwrbt_low_time 15
0004 ; #define reset_open_time 28
0004 ; #define reset_l_open_time 28
0004 ; #define reset_close_time 50
0004 ; #define reset_l_close_time 80
0004 ; #define rly_on_time 200
0004 ; #define vs_on_open_time 20
0004 ; #define vs_on_close_time 220
0004 ; #define pa0_l_open_delay 40
0004 ; #define port_open_machine_delaytime 12
0004 ; #define power_key_down_time 50
0004 ; #define power_on_down_time 50
0004 ;
0004 ; #define ADC_2 2 //ad通道号
0004 ; //按键状态
0004 ; #define KEY_POWER 0x40
0004 ; //#define KEY_ENTER 1
0004 ; #define KEY_SOURCE 0x20
0004 ; #define KEY_CHL 0x10
0004 ; #define KEY_CHH 0x08
0004 ; #define KEY_VOLL 0x04
0004 ; #define KEY_VOLH 0x02
0004 ; #define KEY_MENU 0x01
0004 ;
0004 ;
0004 ; #define KEY_TIME 200 //连续按键处理时间间隔500ms,可更改
0004 ; // 联动power_num
0004 ;
0004 ;
0004 ; #define KEYMENU_MIN 0x80
0004 ; #define KEYMENU_MAX 0xa2
0004 ; #define KEYPOWER_MIN 0x00
0004 ; #define KEYPOWER_MAX 0x20
0004 ;
0004 ; //#define KEYENTER_MIN ((256/3.3)*2.29)-5
0004 ; //#define KEYENTER_MAX ((256/3.3)*2.29)+5
0004 ; #define KEYCHL_MIN 0x28
0004 ; #define KEYCHL_MAX 0x42
0004 ;
0004 ; #define KEYCHH_MIN 0x4a
0004 ; #define KEYCHH_MAX 0x62
0004 ;
0004 ; #define KEYVOLL_MIN 0x68
0004 ; #define KEYVOLL_MAX 0x80
0004 ;
0004 ; #define KEYVOLH_MIN 0xc3
0004 ; #define KEYVOLH_MAX 0xdb
0004 ;
0004 ; #define KEYSOURCE_MIN 0xa8
0004 ; #define KEYSOURCE_MAX 0xbf
0004 ;
0004 ; #define FAC_OPEN 0x00
0004 ; #define FAC_CLOSE 0xff
0004 ;
0004 ;
0004 ;
0004 ; #define IRDA_WAIT 250 //红外按键第一次击键后关闭时长(单位ms)
0004 ;
0004 ; #define I2C_SEQ 100 //I2C脉宽申请宽度
0004 ;
0004 ; #define HPD123 6
0004 ; #define SPDIF_SW 4
0004 ; #define A_MUTE 0
0004 ; #define RS232_SW1 6
0004 ; #define RS232_SW2 7
0004 ;
0004 ; #define EDID_RWEN 7
0004 ;
0004 ; //#define rc5_bit_length 215
0004 ; //#define rc5_startbit_1_length 8
0004 ; //#define rc5_startbit_2_length 24
0004 ; /*********************************************
0004 ; //定义变量(按行归类解释)
0004 ; //定义计数器计数值,初始值为0,意义对应宏定义 (第1--7行)
0004 ; //定义关机到开机和开机到关机状态,当值为1时,表示处于20s和2s计数过程,不可进行相应的关机和开机(8行)
0004 ; //定义开关机动作开始,可以告诉计数器计数开始 (第9行)
0004 ; //定义开机和关机使能状态(10行)
0004 ; //定义开机和关机控制信号使能状态(11--12行)
0004 ; //rc5码各对应变量(13--18行)
0004 ; *********************************************/
0004 ; unsigned char close_to_open_count;
0004 ; unsigned int open_to_close_count;
0004 ; unsigned char pwrbt_count;
0004 ; unsigned char reset_open_count,reset_close_count;
0004 ; unsigned char rly_on_count;
0004 ; unsigned char vs_on_open_count,vs_on_close_count;
0004 ; unsigned char power_key_down_count,power_key_on_count;
0004 ; unsigned char power_on_on_count,power_on_down_count;
0004 ; unsigned char close_to_open_station,open_to_close_station; //用于开关机转换等待时间计数
0004 ; unsigned char machine_open_start,machine_close_start; //开关机开始时给计数器开始使能
0004 ; unsigned char close_machine_enable,open_machine_enable;
0004 ;
0004 ; uchar power_down_count; //掉电检测时间计数器
0004 ; uchar power_check_up; //掉电检测关机后重新开机标志
0004 ; unsigned char adc_jg[5]={0,0,0,0,0};
0004 ; unsigned char adc_rel; //ad转换结果
0004 ; unsigned char adc_num; //累计5次ad次数后算转换平均值
0004 ; uchar key_jg[3]; //累计3次结果相同则按键值有效
0004 ; uchar key_num; //按键累计
0004 ; uchar key,key_open; //键值,按键打开标志
0004 ; uchar time0_num,time1_num; //
0004 ; uchar time0_b,time1_b; //time0标志
0004 ; uchar timer1_b; //time1标志
0004 ; uchar time1s_num,time1s_b; //1s计数
0004 ; uchar timer_s; //当前9s内的s数
0004 ; uchar OpenTime_b; //开机时间判断
0004 ; uchar CloseTime_b; //关机时间判断
0004 ; uchar opentime_min;
0004 ; uchar closetime_min;
0004 ; uchar key_b; //按键处理标志
0004 ; uint keycl_num; //按键处理时间间隔
0004 ; uchar command_2d; //2d命令判断
0004 ;
0004 ; uchar fac_state; //工厂状态,需在e2prom中保存
0004 ; uchar power_num; //power键8s计时 KEY_TIME*16 (500*16)次
0004 ; uchar s8_state; //8s工厂状态检测
0004 ; uchar pb_state; //b口状态
0004 ; uchar pb_num,pbcheck_num; //pb检测时间计时,状态变化确认计时
0004 ; uchar iocheck_num; //
0004 ; uchar u0check_num; //串口0数据超时检测计时
0004 ; uchar uart0_b,uart0_num; //启动超时检测
0004 ; const uchar uart_command[4]={'P','O','W','R'};
0004 ; uchar uart0_buffer[5];
0004 ; uchar i2cexint_num,i2c_b; //
0004 ; uchar i2c_command;
0004 ; //uchar irda_num; //
0004 ; uchar set_time; //设置时间标志
0004 ; uchar STATE;
0004 ;
0004 ; unsigned char CloseTimeMin_b;
0004 ;
0004 ; struct T
0004 ; {
0004 ; unsigned long TL;
0004 ; unsigned int TH;
0004 ; };
0004 ; union OTime
0004 ; {
0004 ; unsigned long Ontime; //开机时间
0004 ; char OBit[4];
0004 ; }OpenTime;
0004 ; union CTime //关机时间
0004 ; {
0004 ; unsigned long Cstime;
0004 ; char CBit[4];
0004 ; }CloseTime;
0004 ; union TimeValume //时间参数
0004 ; {
0004 ; struct T VS;
0004 ; char CBit[6];
0004 ; }Time;
0004 ; //TimeValume Time;
0004 ; //外部函数声明
0004 ; extern void i2cSetSlaveReceiveHandler(void (*i2cSlaveRx_func)(unsigned char receiveDataLength, unsigned char* recieveData));
0004 ; extern void i2cSetSlaveTransmitHandler(unsigned char (*i2cSlaveTx_func)(unsigned char transmitDataLengthMax, unsigned char* transmitData));
0004 ; //从函数声明
0004 ; extern void i2cSlaveReceiveService(unsigned char receiveDataLength, unsigned char* receiveData);
0004 ; //从函数声明
0004 ; extern unsigned char i2cSlaveTransmitService(unsigned char transmitDataLengthMax, unsigned char* transmitData);
0004 ; extern void i2cInit(void);
0004 ; //extern void i2cSetLocalDeviceAddr(unsigned char deviceAddr);
0004 ;
0004 ; //################################################
0004 ;
0004 ; //NEC码解码部分变量声明-从此开始
0004 ; extern unsigned char BTheFirstFallEdge; //为0时说明为接收到第一个下降沿或接受到第一个;为1时认为已接收到了第一个或大于1个下降沿;做为起始时间基准
0004 ; extern unsigned char BReceiveStart; //开始接收数据标志
0004 ; extern unsigned char BNecFallEdge; //是否有下降边沿
0004 ; extern unsigned char TimeNecFallEdge; //下降边沿时间长度
0004 ; extern unsigned char RTimeNecFallEdge; //下降边沿时间长度结果保存
0004 ; extern unsigned char BNecStartBit; //是否有起始位
0004 ; extern unsigned char NecData[4]; //红外数据
0004 ; extern unsigned int NecDecodeNum; //红外数据位个数指针
0004 ; extern unsigned int i;
0004 ; extern unsigned char BHasReceiveNec; //已收到一个NEC码 为进行接收重复码做准备
0004 ; extern unsigned char BPowerButton; //有开机按键
0004 ; extern unsigned int NecRepeatCodeNum; //重复码与上一个NEC码时间间隔计数变量和重复码本身长度计数变量
0004 ; extern unsigned int RNecRepeatCodeNum;//重复码计数结果保存
0004 ;
0004 ; extern unsigned char BNecRepeat; //重复码标志,置1为收到重复码
0004 ; extern unsigned char ResultNec;
0004 ; extern unsigned char RepeatCountFlag; //为0时为还已收到了一个NEC码还未收到一次重复码,为1时为收到至少一个重复码
0004 ; extern unsigned char BRepeatStar; //Repeat开始标志
0004 ; extern unsigned char tv_state; //机器状态位
0004 ; extern unsigned char irda_num,irda_b;
0004 ; extern unsigned char i2c_public; //i2c使用权检测
0004 ; extern unsigned char irda_data; //预发送数据
0004 ;
0004 ; extern unsigned char power_key_open_enable;//
0004 ; extern unsigned char power_on_close_enable;//
0004 ;
0004 ; //NEC码解码部分变量声明-到此结束
0004 ; //NEC码解码部分外部函数声明-从此开始
0004 ; //extern void Head_Reset_Nec_receive();
0004 ; //extern void Nec_data_deal_fun(void);
0004 ; //extern void Deal_Repeat();
0004 ; //extern void Nec_Decode();
0004 ; extern void RepeatReceive(void);
0004 ; extern void Nec_Receive(void);
0004 ; extern void IR_var_init(void);
0004 ; //NEC码解码部分外部函数声明-到此结束
0004 ;
0004 ; extern unsigned char I2cSendData[I2C_SEND_DATA_BUFFER_SIZE];
0004 ; extern unsigned char I2cSendDataIndex;
0004 ; extern unsigned char I2cSendDataLength;
0004 ;
0004 ; extern unsigned char I2cReceiveData[I2C_RECEIVE_DATA_BUFFER_SIZE];
0004 ; extern unsigned char I2cReceiveDataIndex;
0004 ; extern unsigned char I2cReceiveDataLength;
0004 ;
0004 ; extern unsigned char i2creceive_b; //接收到命令
0004 ; extern unsigned char i2creadtime_b; //
0004 ;
0004 ;
0004 ; extern volatile unsigned char Powerdown_signal;
0004 ; unsigned char Powerdown_time;
0004 ; unsigned char Panel_Open_delay_Signal;
0004 ; unsigned char Panel_Open_delay_Time;
0004 ; unsigned char KeyResult;
0004 ; unsigned char Open_Panel_time;
0004 ; unsigned char Open_Panel_flag;
0004 ;
0004 ;
0004 ;
0004 ; /*
0004 ; typedef enum _TVstate
0004 ; {
0004 ; standby,
0004 ; booting,
0004 ; delaying,
0004 ; working,
0004 ; halting
0004 ; }TVstate_t;
0004 ; */
0004 ;
0004 ; volatile TVstate_t System_State;
0004 ;
0004 ;
0004 ;
0004 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -