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

📄 hptv.s

📁 MCU控制程序
💻 S
📖 第 1 页 / 共 5 页
字号:
	tst R2
	breq L92
	.dbline 762
;  {
	.dbline 763
;    keycl_num++;
	lds R24,_keycl_num
	lds R25,_keycl_num+1
	adiw R24,1
	sts _keycl_num+1,R25
	sts _keycl_num,R24
	.dbline 764
;  }
L92:
	.dbline 765
;  if(irda_b)       //红外键处理
	lds R2,_irda_b
	tst R2
	breq L94
	.dbline 766
;  {
	.dbline 767
;     irda_num++;
	lds R24,_irda_num
	subi R24,255    ; addi 1
	sts _irda_num,R24
	.dbline 768
; 	if(irda_num>IRDA_WAIT)
	ldi R24,250
	lds R2,_irda_num
	cp R24,R2
	brsh L96
	.dbline 769
; 	{
	.dbline 770
; 	  TCCR2=0x02;
	ldi R24,2
	out 0x25,R24
	.dbline 771
; 	  irda_b=0;
	clr R2
	sts _irda_b,R2
	.dbline 772
; 	  irda_num=0;
	sts _irda_num,R2
	.dbline 773
; 	}
L96:
	.dbline 774
L94:
	.dbline -2
L89:
	ld R2,y+
	out 0x3f,R2
	ld R25,y+
	ld R24,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e time1_cl _time1_cl fV
	.even
_time1_cl::
	.dbline -1
	.dbline 780
;  } 
;  // WDR();
; // TCNT0 = 0x8D; //reload counter value
; }
; //##########################原time1定时器代码
; void time1_cl(void)
; {
	.dbline 781
;     if(machine_open_start==3)                       //开机进入第三阶段reset开始
	lds R24,_machine_open_start
	cpi R24,3
	breq X2
	xjmp L99
X2:
	.dbline 782
;    {  
	.dbline 783
; 	  if(reset_open_count>=port_open_machine_delaytime)//call port_open_machine_set
	lds R24,_reset_open_count
	cpi R24,12
	brlo L101
	.dbline 784
; 	    {
	.dbline 785
; 		   port_open_machine_set();              //delay 0.6s reset port
	xcall _port_open_machine_set
	.dbline 786
; 		}
L101:
	.dbline 787
; 	  if(reset_open_count>=0&&reset_open_count<reset_open_time)
	lds R24,_reset_open_count
	cpi R24,0
	brlo L103
	cpi R24,28
	brsh L103
	.dbline 788
; 	    {
	.dbline 790
; 		   //PORTC|=0x30;                          //reset=1,reset_l=1
; 		   DDRC|=0x30;
	in R24,0x14
	ori R24,48
	out 0x14,R24
	.dbline 791
; 		   PORTC&=0xcf;                          //reset=0,reset_l=0
	in R24,0x15
	andi R24,207
	out 0x15,R24
	.dbline 792
; 		}
L103:
	.dbline 799
;      /* if(reset_open_count>=reset_open_time&&reset_open_count<reset_l_open_time)
; 	    {
; 		   PORTC|=0x10;
; 		   PORTC&=0xdf;                          //reset=0,reset_l=1
; 		}*/
; 		
; 	  if(reset_open_count>=reset_open_time&&reset_open_count<255)
	lds R24,_reset_open_count
	cpi R24,28
	brlo L105
	cpi R24,255
	brsh L105
	.dbline 800
; 	    {
	.dbline 802
; 		   //PORTC&=0xcf;                          //reset=0,reset_l=0
; 		   DDRC|=0x30;
	in R24,0x14
	ori R24,48
	out 0x14,R24
	.dbline 803
; 		   PORTC|=0x30;                          //reset=1,reset_l=1
	in R24,0x15
	ori R24,48
	out 0x15,R24
	.dbline 806
; //		   PORTD|=0x10;                          
; //		   PORTD&=0xdf;                          //指示灯
; 		   PORTA|=0x20;
	sbi 0x1b,5
	.dbline 807
; 		}
L105:
	.dbline 808
; 	  if(reset_open_count>=pa0_l_open_delay&&reset_open_count<=255)
	lds R24,_reset_open_count
	cpi R24,40
	brlo L107
	ldi R24,255
	lds R2,_reset_open_count
	cp R24,R2
	brlo L107
	.dbline 809
; 	    {
	.dbline 810
; 		   machine_open_start=0;
	clr R2
	sts _machine_open_start,R2
	.dbline 811
; 		   vs_on_open_count=0;
	sts _vs_on_open_count,R2
	.dbline 812
; 		   reset_open_count=0;                   //防止益处,出于稳定考虑,可以省略
	sts _reset_open_count,R2
	.dbline 813
; 		}
L107:
	.dbline 814
;       reset_open_count++;
	lds R24,_reset_open_count
	subi R24,255    ; addi 1
	sts _reset_open_count,R24
	.dbline 815
;       if((PINA&0x08)==0)//开机时掉电检测PA3脚,如持续10ms则执行关机,开机操作
	sbic 0x19,3
	rjmp L109
	.dbline 816
;         {
	.dbline 818
; //	        UDR=22;
; 			power_down_count++;
	lds R24,_power_down_count
	subi R24,255    ; addi 1
	sts _power_down_count,R24
	.dbline 819
; 	        if((power_down_count>=20)&&(machine_open_start==0))//10ms检测
	cpi R24,20
	brlo L111
	lds R2,_machine_open_start
	tst R2
	brne L111
	.dbline 820
; 	        {
	.dbline 821
; 		        power_down_count=0;
	clr R2
	sts _power_down_count,R2
	.dbline 823
; //				UDR=0x22;								   
; 	            power_on_close_enable=1;       //关机使能
	ldi R24,1
	sts _power_on_close_enable,R24
	.dbline 825
; 			
; 			    open_to_close_station=0;      //取消20s状态
	sts _open_to_close_station,R2
	.dbline 826
; 			    machine_open_start=0;         //清除10s限制
	sts _machine_open_start,R2
	.dbline 827
; 				close_machine_enable=1;       //立即关机,没有10s限制
	sts _close_machine_enable,R24
	.dbline 832
; 		     //   power_check_up=1;              //延时开机使能
; 			//power_check_down=1;            //立即关机,没有10s限制
; 			//open_machine();               //立即关机
; 			//UDR=0x33;//测试
; 	        }
L111:
	.dbline 833
; 		}	
L109:
	.dbline 834
;    }
L99:
	.dbline 837
;  ////////////////////////////////////////////////////////////  
;                                                  //counting the time during opening the machine
;  if(open_to_close_station>=1)  
	lds R24,_open_to_close_station
	cpi R24,1
	brlo L113
	.dbline 838
;    { 
	.dbline 839
;      if(open_to_close_count>=open_to_close_time) //>2s
	lds R24,_open_to_close_count
	lds R25,_open_to_close_count+1
	cpi R24,60
	ldi R30,0
	cpc R25,R30
	brlo L115
	.dbline 840
; 	    {
	.dbline 841
; 		   close_machine_enable=1;               //close machine enable
	ldi R24,1
	sts _close_machine_enable,R24
	.dbline 842
; 		   PORTD&= 0xdf;   //pin14  pd5=0
	in R24,0x12
	andi R24,223
	out 0x12,R24
	.dbline 843
;            PORTD|= 0x10;   //pin13  pd4=1		   										 
	sbi 0x12,4
	.dbline 845
; 		  // start_iocheck();                      //10s后第一次检测io口状态
; 		}
	xjmp L116
L115:
	.dbline 847
; 	 else
; 	    {
	.dbline 848
; 		   close_machine_enable=0;               //if <20s then you can not close the machine
	clr R2
	sts _close_machine_enable,R2
	.dbline 849
; 		}
L116:
	.dbline 850
;      open_to_close_count++;
	lds R24,_open_to_close_count
	lds R25,_open_to_close_count+1
	adiw R24,1
	sts _open_to_close_count+1,R25
	sts _open_to_close_count,R24
	.dbline 851
; 	 if(open_to_close_count>=(open_to_close_time+1))
	cpi R24,61
	ldi R30,0
	cpc R25,R30
	brlo L117
	.dbline 852
; 	    {
	.dbline 853
; 		   open_to_close_count=0;
	clr R2
	clr R3
	sts _open_to_close_count+1,R3
	sts _open_to_close_count,R2
	.dbline 854
; 		   open_to_close_station=0;             //防止益处,出于稳定考虑,可以省略
	sts _open_to_close_station,R2
	.dbline 855
; 		}
L117:
	.dbline 857
; 	 
;    }
L113:
	.dbline 860
;  //////////////////////////////////////////////////////////  
;                                                 //counting the time during closing the machine
;  if(close_to_open_station>=1)  
	lds R24,_close_to_open_station
	cpi R24,1
	brlo L119
	.dbline 861
;    {
	.dbline 862
;       if(close_to_open_count>=close_to_open_time&&close_to_open_count<255)//>2s
	lds R24,_close_to_open_count
	cpi R24,40
	brlo L121
	cpi R24,255
	brsh L121
	.dbline 863
; 	    {
	.dbline 864
; 		   open_machine_enable=1;               //open machine enable
	ldi R24,1
	sts _open_machine_enable,R24
	.dbline 865
; 		}
	xjmp L122
L121:
	.dbline 867
; 	 else
; 	    {
	.dbline 868
; 		   open_machine_enable=0;               //if <2s then you can not open the machine
	clr R2
	sts _open_machine_enable,R2
	.dbline 869
; 		}
L122:
	.dbline 870
;      close_to_open_count++;
	lds R24,_close_to_open_count
	subi R24,255    ; addi 1
	sts _close_to_open_count,R24
	.dbline 871
; 	 if(close_to_open_count>=(close_to_open_time+1)&&close_to_open_count<=255)
	cpi R24,41
	brlo L123
	ldi R24,255
	lds R2,_close_to_open_count
	cp R24,R2
	brlo L123
	.dbline 872
; 	    {
	.dbline 873
; 		   open_to_close_count=0;
	clr R2
	clr R3
	sts _open_to_close_count+1,R3
	sts _open_to_close_count,R2
	.dbline 874
; 		   close_to_open_station=0;             //防止益处,出于稳定考虑,可以省略
	sts _close_to_open_station,R2
	.dbline 875
; 		}
L123:
	.dbline 876
;    }
L119:
	.dbline 877
;  WDR();
	wdr
	.dbline -2
L98:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer1_init _timer1_init fV
	.even
_timer1_init::
	.dbline -1
	.dbline 889
; }
; //ICC-AVR application builder : 2006-10-11 下午 02:37:20
; // Target : M16
; // Crystal: 7.3728Mhz
; 
; 
; //TIMER1 initialize - prescale:1024
; // WGM: 0) Normal, TOP=0xFFFF
; // desired value: 9Sec
; // actual value:  9.000Sec (0.0%)
; void timer1_init(void)
; {
	.dbline 890
;  TCCR1B = 0x00; //stop
	clr R2
	out 0x2e,R2
	.dbline 891
;  TCNT1H = 0x02; //setup
	ldi R24,2
	out 0x2d,R24
	.dbline 892
;  TCNT1L = 0xE1;
	ldi R24,225
	out 0x2c,R24
	.dbline 893
;  OCR1AH = 0xFD;
	ldi R24,253
	out 0x2b,R24
	.dbline 894
;  OCR1AL = 0x1F;
	ldi R24,31
	out 0x2a,R24
	.dbline 895
;  OCR1BH = 0xFD;
	ldi R24,253
	out 0x29,R24
	.dbline 896
;  OCR1BL = 0x1F;
	ldi R24,31
	out 0x28,R24
	.dbline 897
;  ICR1H  = 0xFD;
	ldi R24,253
	out 0x27,R24
	.dbline 898
;  ICR1L  = 0x1F;
	ldi R24,31
	out 0x26,R24
	.dbline 899
;  TCCR1A = 0x00;
	out 0x2f,R2
	.dbline 900
;  TCCR1B = 0x05; //start Timer
	ldi R24,5
	out 0x2e,R24
	.dbline -2
L125:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 32
	jmp _timer1_ovf_isr
	.area text(rom, con, rel)
	.dbfile G:\McuControl\hptv.c
	.dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
	.even
_timer1_ovf_isr::
	st -y,R24
	in R24,0x3f
	st -y,R24
	.dbline -1
	.dbline 905
; }
; 
; #pragma interrupt_handler timer1_ovf_isr:9
; void timer1_ovf_isr(void)
; {
	.dbline 907
;  //TIMER1 has overflowed
;  TCNT1H = 0x02; //reload counter high value
	ldi R24,2
	out 0x2d,R24
	.dbline 908
;  TCNT1L = 0xE1; //reload counter low value
	ldi R24,225
	out 0x2c,R24
	.dbline 909
;  timer1_b=1;    //9秒计数
	ldi R24,1
	sts _timer1_b,R24
	.dbline -2
L126:
	ld R24,y+
	out 0x3f,R24
	ld R24,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e timer2_init _timer2_init fV
	.even
_timer2_init::
	.dbline -1
	.dbline 915
; }
; 
; 
; //For NEC Code
; void timer2_init(void)
; {
	.dbline 916
;  TCCR2 = 0x00; //stop
	clr R2
	out 0x25,R2
	.dbline 917
;  ASSR  = 0x00; //set async mode
	out 0x22,R2
	.dbline 918
;  TCNT2 = 0xA2; //setup
	ldi R24,162
	out 0x24,R24
	.dbline 919
;  OCR2  = 0x5E;
	ldi R24,94
	out 0x23,R24
	.dbline 920
;  TCCR2 = 0x02; //start
	ldi R24,2
	out 0x25,R24
	.dbline -2
L127:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 16
	jmp _timer2_ovf_isr
	.area text(rom, con, rel)
	.dbfile G:\McuControl\hptv.c
	.dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
	.even
_timer2_ovf_isr::
	st -y,R24
	st -y,R25
	in R24,0x3f
	st -y,R24
	.dbline -1
	.dbline 942
; }
; 
; //For RC5 Code
; /*#pragma interrupt_handler timer2_ovf_isr:5
; void timer2_ovf_isr(void)
; {
;  WDR();
;  TCNT2 = 0xCD; //reload counter value
;  ///////////////////////////////
;  rc5_read();
;  WDR();
;  if(irda_b)//收到红外键后关闭250ms
;  {TCCR2=0;
;  }
; // TCNT2 = 0xCD; //reload counter value
; }
; */
; 
; //For NEC Code
; #pragma interrupt_handler timer2_ovf_isr:5
; void timer2_ovf_isr(void)
; {
	.dbline 943
;  TCNT2 = 0xA2; //reload counter value
	ldi R24,162
	out 0x24,R24
	.dbline 945
;  
;  if(BNecFallEdge==1)
	lds R24,_BNecFallEdge
	cpi R24,1
	brne L129
	.dbline 946
;  {
	.dbline 947
;   	TimeNecFallEdge++;
	lds R24,_TimeNecFallEdge
	subi R24,255    ; addi 1
	sts _TimeNecFallEdge,R24
	.dbline 948
;  }
L129:
	.dbline 949
	lds R24,_BHasReceiveNec
	cpi R24,1
	brne L131
	.dbline 950
	.dbline 951
	lds R24,_NecRepeatCodeNum
	lds R25,_NecRepeatCodeNum+1
	adiw R24,1
	sts _NecRepeatCodeNum+1,R25
	sts _NecRepeatCodeNum,R24
	.dbline 952
L131:
	.dbline -2
L128:
	ld R24,y+
	out 0x3f,R24
	ld R25,y+
	ld R24,y+
	.dbline 0 ; func end
	reti
	.dbend
	.area vector(rom, abs)
	.org 4
	jmp _int0_isr
	.area text(rom, con, rel)
	.dbfile G:\McuControl\hptv.c
	.dbfunc e int0_isr _int0_isr fV
	.even
_int0_isr::
	xcall push_lset
	.dbline -1
	.dbline 958
;  if(BHasReceiveNec==1)
;  {
;     NecRepeatCodeNum++;
;  }
; }
; 

⌨️ 快捷键说明

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