📄 iremote_ir.s
字号:
; temp1=time_10ms;
std y+4,R2
.dbline 110
; if((PINB&0x08)==0){
sbic 0x16,3
rjmp L51
X12:
.dbline 110
.dbline 111
; temp2++;
ldd R0,y+5
inc R0
std y+5,R0
.dbline 112
; }
L51:
.dbline 113
; }
L49:
.dbline 114
; }while(time_10ms<10);
L47:
.dbline 114
lds R24,_time_10ms
cpi R24,10
brlo L46
X13:
.dbline 115
; User_ID[0]=EEPROM_read(0x10);
ldi R16,16
rcall _EEPROM_read
sts _User_ID,R16
.dbline 116
; User_ID[1]=EEPROM_read(0x11);
ldi R16,17
rcall _EEPROM_read
sts _User_ID+1,R16
.dbline 117
; User_ID[2]=EEPROM_read(0x12);
ldi R16,18
rcall _EEPROM_read
mov R10,R16
sts _User_ID+2,R10
.dbline 118
; User_ID[3]=EEPROM_read(0x13);
ldi R16,19
rcall _EEPROM_read
mov R10,R16
sts _User_ID+3,R10
.dbline 119
; User_ID[4]=EEPROM_read(0x14);
ldi R16,20
rcall _EEPROM_read
mov R10,R16
sts _User_ID+4,R10
.dbline 120
; User_ID[5]=EEPROM_read(0x15);
ldi R16,21
rcall _EEPROM_read
mov R10,R16
sts _User_ID+5,R10
.dbline 121
; EEPROM_read(0x38);
ldi R16,56
rcall _EEPROM_read
.dbline 122
; EEPROM_read(0x39);
ldi R16,57
rcall _EEPROM_read
.dbline 123
; if(temp2>5){
ldi R24,5
ldd R0,y+5
cp R24,R0
brlo X25
rjmp L58
X25:
X14:
.dbline 123
.dbline 124
; temp3=User_ID[2];
lds R12,_User_ID+2
clr R13
.dbline 125
; temp3<<=8;
mov R13,R12
clr R12
.dbline 126
; temp3|=User_ID[3];
lds R2,_User_ID+3
clr R3
or R12,R2
or R13,R3
.dbline 127
; temp4=User_ID[4];
lds R14,_User_ID+4
clr R15
.dbline 128
; temp4<<=8;
mov R15,R14
clr R14
.dbline 129
; temp4|=User_ID[5];
lds R2,_User_ID+5
clr R3
or R14,R2
or R15,R3
.dbline 130
; ID=temp3;
mov R2,R12
mov R3,R13
clr R4
clr R5
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 131
; ID<<=16;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
mov R4,R2
mov R5,R3
clr R2
clr R3
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 132
; ID|=temp4;
mov R2,R14
mov R3,R15
clr R4
clr R5
ldd R6,y+0
ldd R7,y+1
ldd R8,y+2
ldd R9,y+3
or R6,R2
or R7,R3
or R8,R4
or R9,R5
std y+0,R6
std y+1,R7
std y+2,R8
std y+3,R9
.dbline 133
; time_10ms=0;temp1=0;temp2=0;temp5=0;
clr R2
sts _time_10ms,R2
.dbline 133
clr R0
std y+4,R0
.dbline 133
std y+5,R0
.dbline 133
clr R10
L64:
.dbline 134
; do{
.dbline 135
; WDR();
wdr
.dbline 136
; if(temp1!=time_10ms){
lds R2,_time_10ms
ldd R0,y+4
cp R0,R2
breq L67
X15:
.dbline 136
.dbline 137
; temp1=time_10ms;
std y+4,R2
.dbline 138
; if((PINB&0x08)==0){
sbic 0x16,3
rjmp L69
X16:
.dbline 138
.dbline 139
; time_10ms=0;
clr R2
sts _time_10ms,R2
.dbline 140
; temp2++;temp5=0;
ldd R0,y+5
inc R0
std y+5,R0
.dbline 140
clr R10
.dbline 141
; if(temp2>150)temp2=200;
ldi R24,150
cp R24,R0
brsh L70
X17:
.dbline 141
ldi R24,200
std y+5,R24
.dbline 142
; }
rjmp L70
L69:
.dbline 143
; else{
.dbline 144
; temp5++;
inc R10
.dbline 145
; if(temp5>10)break;
ldi R24,10
cp R24,R10
brsh L73
X18:
.dbline 145
rjmp L66
L73:
.dbline 146
; }
L70:
.dbline 147
; }
L67:
.dbline 148
; User_ID[2]++;
lds R24,_User_ID+2
subi R24,255 ; addi 1
sts _User_ID+2,R24
.dbline 149
; ID++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 150
; }while(time_10ms<200);
L65:
.dbline 150
lds R24,_time_10ms
cpi R24,200
brlo L64
X19:
L66:
.dbline 151
; TCCR0B=0;
clr R2
out 0x33,R2
.dbline 152
; TIMSK0=0;
out 0x39,R2
.dbline 153
; CLI();
cli
.dbline 154
; if(temp2>150){
ldi R24,150
ldd R0,y+5
cp R24,R0
brlo X26
rjmp L100
X26:
X20:
.dbline 154
.dbline 155
; temp4=ID;
ldd R14,y+0
ldd R15,y+1
.dbline 156
; temp3=ID>>16;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
mov R12,R4
mov R13,R5
.dbline 157
; User_ID[3]=temp3;
sts _User_ID+3,R12
.dbline 158
; User_ID[2]=(temp3>>8)+User_ID[2];
lds R2,_User_ID+2
clr R3
mov R4,R12
mov R5,R13
mov R4,R5
clr R5
add R4,R2
adc R5,R3
sts _User_ID+2,R4
.dbline 159
; User_ID[5]=temp4;
sts _User_ID+5,R14
.dbline 160
; User_ID[4]=temp4>>8;
mov R2,R14
mov R3,R15
mov R2,R3
clr R3
sts _User_ID+4,R2
.dbline 161
; if(pw_off_ram!=0xaa){
lds R24,_pw_off_ram
cpi R24,170
brne X27
rjmp L100
X27:
X21:
.dbline 161
.dbline 162
; EEPROM_write(0x12,User_ID[2]);
mov R18,R4
ldi R16,18
rcall _EEPROM_write
.dbline 163
; EEPROM_write(0x13,User_ID[3]);
lds R18,_User_ID+3
ldi R16,19
rcall _EEPROM_write
.dbline 164
; EEPROM_write(0x14,User_ID[4]);
lds R18,_User_ID+4
ldi R16,20
rcall _EEPROM_write
.dbline 165
; EEPROM_write(0x15,User_ID[5]);
lds R18,_User_ID+5
ldi R16,21
rcall _EEPROM_write
.dbline 166
; EEPROM_write(0x38,0x55);
ldi R18,85
ldi R16,56
rcall _EEPROM_write
.dbline 167
; EEPROM_write(0x39,0xaa);
ldi R18,170
ldi R16,57
rcall _EEPROM_write
.dbline 168
; temp2=0;
clr R0
std y+5,R0
.dbline 169
; for(temp1=0;temp1<6;temp1++){
std y+4,R0
rjmp L92
L89:
.dbline 169
.dbline 170
; temp2+=User_ID[temp1];
ldi R24,<_User_ID
ldi R25,>_User_ID
ldd R30,y+4
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R0,y+5
add R0,R2
std y+5,R0
.dbline 171
; }
L90:
.dbline 169
ldd R0,y+4
inc R0
std y+4,R0
L92:
.dbline 169
ldd R24,y+4
cpi R24,6
brlo L89
X22:
.dbline 172
; User_ID[6]=temp2;
ldd R0,y+5
sts _User_ID+6,R0
.dbline 173
; send_code();
rcall _send_code
.dbline 174
; }
.dbline 175
; }
.dbline 176
; }
rjmp L100
L58:
.dbline 177
; else{
.dbline 178
; TCCR0B=0;
clr R2
out 0x33,R2
.dbline 179
; TIMSK0=0;
out 0x39,R2
.dbline 180
; CLI();
cli
.dbline 181
; temp2=0;
clr R0
std y+5,R0
.dbline 182
; for(temp1=0;temp1<6;temp1++){
std y+4,R0
rjmp L97
L94:
.dbline 182
.dbline 183
; temp2+=User_ID[temp1];
ldi R24,<_User_ID
ldi R25,>_User_ID
ldd R30,y+4
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R0,y+5
add R0,R2
std y+5,R0
.dbline 184
; }
L95:
.dbline 182
ldd R0,y+4
inc R0
std y+4,R0
L97:
.dbline 182
ldd R24,y+4
cpi R24,6
brlo L94
X23:
.dbline 185
; User_ID[6]=temp2;
ldd R0,y+5
sts _User_ID+6,R0
.dbline 186
; send_code();
rcall _send_code
.dbline 187
; }
rjmp L100
L99:
.dbline 188
; while(1){
.dbline 189
; pw_off_ram=0xaa;//写入防重复RESET误写码
ldi R24,170
sts _pw_off_ram,R24
.dbline 190
; PW_OFF;
cbi 0x18,4
.dbline 191
; }
L100:
.dbline 188
rjmp L99
X24:
.dbline -2
L42:
.dbline 0 ; func end
adiw R28,6
ret
.dbsym r temp4 14 i
.dbsym r temp3 12 i
.dbsym r temp5 10 c
.dbsym l ID 0 l
.dbsym l temp2 5 c
.dbsym l temp1 4 c
.dbend
.area bss(ram, con, rel)
.dbfile F:\iRemote_IR\iRemote_IR.c
_pw_off_ram::
.blkb 1
.dbsym e pw_off_ram _pw_off_ram c
_User_ID::
.blkb 7
.dbsym e User_ID _User_ID A[7:7]c
_time_10ms::
.blkb 1
.dbsym e time_10ms _time_10ms c
; }
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -