⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hptv.s

📁 MCU控制程序
💻 S
📖 第 1 页 / 共 5 页
字号:
; 
; #pragma interrupt_handler int0_isr:2
; void int0_isr(void)
; {
	.dbline 963
;  //external interupt on INT0
; 
; // if(BTvState)                		 	   		//是否允许进行遥控检测																				
; // {
;   	if(BHasReceiveNec==0)
	lds R2,_BHasReceiveNec
	tst R2
	brne L134
	.dbline 964
; 	{
	.dbline 965
; 		BNecFallEdge=1;                             //有下降沿启动定时计数
	ldi R24,1
	sts _BNecFallEdge,R24
	.dbline 966
; 		if(TimeNecFallEdge<=5)                      //判断是否为起始位 
	ldi R24,5
	lds R2,_TimeNecFallEdge
	cp R24,R2
	brlo L136
	.dbline 967
; 		{
	.dbline 968
;     	 	goto int0end;                           //检测到起始位
	xjmp L138
L136:
	.dbline 970
; 		}
; 		RTimeNecFallEdge=TimeNecFallEdge;           //读取时间间隔
	lds R2,_TimeNecFallEdge
	sts _RTimeNecFallEdge,R2
	.dbline 971
; 		TimeNecFallEdge=0;
	clr R2
	sts _TimeNecFallEdge,R2
	.dbline 972
; 		Nec_Receive();
	xcall _Nec_Receive
	.dbline 973
; 	}
	xjmp L135
L134:
	.dbline 975
; 	else
; 	{
	.dbline 976
; 	   RNecRepeatCodeNum=NecRepeatCodeNum;
	lds R2,_NecRepeatCodeNum
	lds R3,_NecRepeatCodeNum+1
	sts _RNecRepeatCodeNum+1,R3
	sts _RNecRepeatCodeNum,R2
	.dbline 977
; 	   NecRepeatCodeNum=0;
	clr R2
	clr R3
	sts _NecRepeatCodeNum+1,R3
	sts _NecRepeatCodeNum,R2
	.dbline 978
; 	   RepeatReceive();
	xcall _RepeatReceive
	.dbline 979
; 	}   
L135:
L138:
	.dbline 1008
; // }
; 
; /* 
;  if(BTvState)                		 	   		//是否允许进行遥控检测																				
;  {
;   	if(BHasReceiveNec==0)
; 	{
; 		BNecFallEdge=1;                             //有下降沿启动定时计数
; 		if(BTheFirstFallEdge==0)                      //判断是否为第一个下降沿,做为起始时间基准 
; 		{
;     	 	BTheFirstFallEdge=1;
; 			TimeNecFallEdge=0;
; 			goto int0end;                           //检测到起始位
; 		}
; 		RTimeNecFallEdge=TimeNecFallEdge;           //读取时间间隔
; 		UDR=TimeNecFallEdge;
; 		TimeNecFallEdge=0;
; //		Nec_Receive();
; 	}
; 	else
; 	{
; 	   RNecRepeatCodeNum=NecRepeatCodeNum;
; 	   NecRepeatCodeNum=0;
; 	   RepeatReceive();
; 	}   
;  }
; */ 
;  
; int0end: ;
	.dbline -2
L133:
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e key_powercl _key_powercl fV
	.even
_key_powercl::
	.dbline -1
	.dbline 1018
; }
; 
; /**********************************************/
; /*#######################################################*/
; //读写e2prom  函数 EEPROMread(addr)
; //                 EEPROMwrite(addr,value)
; //直接使用即可
; /*######################################################*/
; void key_powercl(void)
; {
	.dbline 1019
;     UDR=0x66;
	ldi R24,102
	out 0xc,R24
	.dbline 1020
; 	if(power_num==0)
	lds R2,_power_num
	tst R2
	breq X4
	xjmp L140
X4:
	.dbline 1021
; 	{
	.dbline 1022
; 	   if(System_State==standby)  //启动8秒检测,是否为进入工厂状态
	lds R2,_System_State
	tst R2
	brne L150
	.dbline 1023
; 	   {
L144:
	.dbline 1024
L145:
	.dbline 1024
; 	         while(!(UCSRA&(1<<UDRE)));
	sbis 0xb,5
	rjmp L144
	.dbline 1025
; 			 UDR=0x67;
	ldi R24,103
	out 0xc,R24
	.dbline 1027
; 			                            //开机不用申请发送
; 	         if(fac_state==FAC_OPEN)    //是否为工厂状态,如是则开机
	lds R2,_fac_state
	tst R2
	brne L147
	.dbline 1028
;              {
	.dbline 1029
;                open_machine();
	xcall _open_machine
	.dbline 1030
; 			   PORTB&=~(1<<EDID_RWEN);  //打开i2c参数使能
	cbi 0x18,7
	.dbline 1031
;              }
	xjmp L143
L147:
	.dbline 1033
; 			 else
; 			 {
	.dbline 1034
; 		      s8_state=1;  
	ldi R24,1
	sts _s8_state,R24
	.dbline 1035
; 		      power_key_open_enable=1;//只执行一次开机代码 ,开机见主程序
	sts _power_key_open_enable,R24
	.dbline 1036
; 			  Open_Panel_flag=1;
	sts _Open_Panel_flag,R24
	.dbline 1037
; 			 }
	.dbline 1038
; 	   }
	xjmp L143
X3:
	.dbline 1040
; 	   else                        //按键关机
; 	   {
L149:
	.dbline 1041
L150:
	.dbline 1041
; 	     while(!(UCSRA&(1<<UDRE)));
	sbis 0xb,5
	rjmp L149
	.dbline 1042
; 		 UDR=0x68;
	ldi R24,104
	out 0xc,R24
	.dbline 1044
; 		 
; 		 if(System_State==working)
	lds R24,_System_State
	cpi R24,3
	brne L152
	.dbline 1045
; 		 {
L154:
	.dbline 1046
L155:
	.dbline 1046
; 		 		 while(!(UCSRA&(1<<UDRE)));
	sbis 0xb,5
	rjmp L154
	.dbline 1047
; 				 UDR=0x69;
	ldi R24,105
	out 0xc,R24
	.dbline 1048
; 				 if(fac_state==FAC_OPEN)              
	lds R2,_fac_state
	tst R2
	brne L157
	.dbline 1049
; 				 {
	.dbline 1050
; 					  fac_state=FAC_CLOSE;                      //非工厂状态 
	ldi R24,255
	sts _fac_state,R24
	.dbline 1051
; 					  PORTB|=(1<<EDID_RWEN);  //关闭i2c参数读写使能 
	sbi 0x18,7
	.dbline 1052
; 					  EEPROMwrite(0x80,fac_state);         //擦除工厂状态
	mov R18,R24
	ldi R16,128
	ldi R17,0
	xcall _EEPROMwrite
	.dbline 1053
; 				 }
L157:
	.dbline 1056
; 	   
; 	    //power_on_close_enable=1;  //按键关机 //借用power_on关机
; 				Powerdown_signal=1;
	ldi R24,1
	sts _Powerdown_signal,R24
	.dbline 1057
; 		  }
	xjmp L153
L152:
	.dbline 1059
; 		  else
; 		  {
	.dbline 1060
; 		     key|=0x80;
	lds R24,_key
	ori R24,128
	sts _key,R24
L159:
	.dbline 1061
L160:
	.dbline 1061
; 			 while(!(UCSRA&(1<<UDRE)));
	sbis 0xb,5
	rjmp L159
	.dbline 1062
; 			 UDR=0x70;
	ldi R24,112
	out 0xc,R24
	.dbline 1063
; 		  }
L153:
	.dbline 1065
; 		  	  
; 	   }
L143:
	.dbline 1066
; 	}
L140:
	.dbline 1067
; 	if((s8_state==1)&&(key_open==1))
	lds R24,_s8_state
	cpi R24,1
	brne L162
	lds R24,_key_open
	cpi R24,1
	brne L162
	.dbline 1068
; 	{
	.dbline 1069
; 	  power_num++;
	lds R24,_power_num
	subi R24,255    ; addi 1
	sts _power_num,R24
	.dbline 1070
; 	}
	xjmp L163
L162:
	.dbline 1072
; 	else
; 	{
	.dbline 1073
; 	    power_num=0;
	clr R2
	sts _power_num,R2
	.dbline 1074
; 	}	
L163:
	.dbline 1076
; 	
; 	if((power_num==10)&&(s8_state))//    连续按键5s之后打开工厂状态
	lds R24,_power_num
	cpi R24,10
	brne L164
	lds R2,_s8_state
	tst R2
	breq L164
	.dbline 1077
; 	{
	.dbline 1078
; 	   fac_state=FAC_OPEN;                   //打开工厂状态
	clr R2
	sts _fac_state,R2
L166:
	.dbline 1079
L167:
	.dbline 1079
	sbis 0xb,5
	rjmp L166
	.dbline 1080
	ldi R24,170
	out 0xc,R24
	.dbline 1081
	clr R2
	sts _s8_state,R2
	.dbline 1082
	lds R18,_fac_state
	ldi R16,128
	ldi R17,0
	xcall _EEPROMwrite
	.dbline 1083
	ldi R24,1
	sts _power_on_close_enable,R24
	.dbline 1084
L164:
	.dbline -2
L139:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e key_cl _key_cl fV
;          key_8 -> R20,R21
;              i -> R20
	.even
_key_cl::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 1113
; 	   while(!(UCSRA&(1<<UDRE)));
; 	   UDR=0xAA;
; 	   s8_state=0; 					 		 //0为工厂状态,芯片出厂默认为非工场状态
; 	   EEPROMwrite(0x80,fac_state);         //写入工厂状态
; 	   power_on_close_enable=1;             //之后关机
; 	}
; 	
;    
; }
; /*####################按键处理函数,预留7个按键请在此写入功能
; void key_menu(void)       //menu键处理函数
; {
; }
; void key_volh(void)       //volh
; {
; }
; void key_voll(void)       //voll
; {
; }
; void key_chh(void)        //chh
; {
; }
; void key_chl(void)        //chl
; {
; }
; void key_source(void)     //source
; {
; }
; void key_enter(void)      //enter
; {
; }**/
; //###############################################################
; //-------------键码范围识别-------------------------
; void key_cl(uchar i)
; {
	.dbline 1116
; 
;   unsigned int key_8;
;   if((i>KEYPOWER_MIN)&&(i<KEYPOWER_MAX))
	clr R2
	cp R2,R20
	brsh L170
	cpi R20,32
	brsh L170
	.dbline 1117
;   {
	.dbline 1118
;    KeyResult=KEY_POWER;
	ldi R24,64
	sts _KeyResult,R24
	.dbline 1121
; //      UDR=i;
; 	//UDR=key;           //测试
; 	key_powercl();
	xcall _key_powercl
	.dbline 1122
; 	goto keycl;
	xjmp L172
L170:
	.dbline 1125
;   }
;   
;   if((i>KEYMENU_MIN)&&(i<KEYMENU_MAX))
	ldi R24,128
	cp R24,R20
	brsh L173
	cpi R20,162
	brsh L173
	.dbline 1126
;   {
	.dbline 1127
;     KeyResult=KEY_MENU;
	ldi R24,1
	sts _KeyResult,R24
	.dbline 1131
; //	   UDR=i;
; 	//UDR=key;
; 	//key_menu();
; 	goto keycl; 
	xjmp L172
L173:
	.dbline 1133
;   }
;   if((i>KEYVOLH_MIN)&&(i<KEYVOLH_MAX))
	ldi R24,195
	cp R24,R20
	brsh L175
	cpi R20,219
	brsh L175
	.dbline 1134
;   {
	.dbline 1136
;    // key_volh();
;     KeyResult=KEY_VOLH;
	ldi R24,2
	sts _KeyResult,R24
	.dbline 1138
; //	UDR=i;
; 	goto keycl;
	xjmp L172
L175:
	.dbline 1140
;   }
;   if((i>KEYVOLL_MIN)&&(i<KEYVOLL_MAX))
	ldi R24,104
	cp R24,R20
	brsh L177
	cpi R20,128
	brsh L177
	.dbline 1141
;   {
	.dbline 1143
;    // key_volh();
;     KeyResult=KEY_VOLL;
	ldi R24,4
	sts _KeyResult,R24
	.dbline 1145
; //	UDR=i;
; 	goto keycl;
	xjmp L172
L177:
	.dbline 1147
;   }
;   if((i>KEYCHH_MIN)&&(i<KEYCHH_MAX))
	ldi R24,74
	cp R24,R20
	brsh L179
	cpi R20,98
	brsh L179
	.dbline 1148
;   {
	.dbline 1150
;     //  key_chh();
;     KeyResult=KEY_CHH;
	ldi R24,8
	sts _KeyResult,R24
	.dbline 1152
; //	UDR=i;
; 	goto keycl;
	xjmp L172
L179:
	.dbline 1154
;   }
;   if((i>KEYCHL_MIN)&&(i<KEYCHL_MAX))
	ldi R24,40
	cp R24,R20
	brsh L181
	cpi R20,66
	brsh L181
	.dbline 1155
;   {
	.dbline 1157
;     //  key_chl();
;     KeyResult=KEY_CHL;
	ldi R24,16
	sts _KeyResult,R24
	.dbline 1159
; //	UDR=i;
; 	goto keycl;
	xjmp L172
L181:
	.dbline 1161
;   }
;   if((i>KEYSOURCE_MIN)&&(i<KEYSOURCE_MAX))
	ldi R24,168
	cp R24,R20
	brsh L183
	cpi R20,191
	brsh L183
	.dbline 1162
;   {
	.dbline 1164
;     //  key_source();
;     KeyResult=KEY_SOURCE;
	ldi R24,32
	sts _KeyResult,R24
	.dbline 1166
; //	   UDR=i;
; 	goto keycl;
	xjmp L172
L183:
	.dbline 1169
;   }
; 
;   KeyResult=0;
	clr R2
	sts _KeyResult,R2
L172:
	.dbline 1170
;   keycl:;
	.dbline 1171
;   if(System_State==working)
	lds R24,_System_State
	cpi R24,3
	brne L185
	.dbline 1172
;   {
	.dbline 1173
;     if(KeyResult!=0)
	lds R2,_KeyResult
	tst R2
	breq L187
	.dbline 1174
;   	{
	.dbline 1175
;       key_8=(key&(0x80));
	lds R20,_key
	clr R21
	andi R20,128
	andi R21,0
	.dbline 1176
; 	  KeyResult|=key_8;
	clr R3
	or R2,R20
	or R3,R21
	sts _KeyResult,R2
	.dbline 1177
; 	  key=KeyResult;
	sts _key,R2
	.dbline 1178
; 	  i2c_public|=(1<<6);  //准备i2c发送
	lds R24,_i2c_public
	ori R24,64
	sts _i2c_public,R24
	.dbline 1179
;   	}
L187:
	.dbline 1180
L185:
	.dbline -2
L169:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r key_8 20 i
	.dbsym r i 20 c
	.dbend
	.dbfunc e adc_cl _adc_cl fV
;        adc_sun -> R20,R21
;     adc_maxmin -> R12
;              j -> R22
;              i -> R10
	.even
_adc_cl::
	xcall push_gset4
	.dbline -1
	.dbline 1184
;   }			  
; }
; 
; void ad

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -