📄 hptv.s
字号:
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 + -