📄 main.s
字号:
.dbline 222
; {
.dbline 223
; CLR_RLY1;
cbi 0x1b,1
.dbline 224
; CLR_RLY2;
cbi 0x1b,0
.dbline 225
; }
L38:
L37:
L35:
.dbline 226
; }
L32:
.dbline 227
L30:
.dbline -2
L27:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 233
; }
; }
;
;
;
; void main(void)
; {
.dbline 234
; init_devices();
rcall _init_devices
.dbline 236
;
; SET_LED1;
sbi 0x18,5
rjmp L43
L42:
.dbline 239
;
; while(1)
; {
.dbline 240
; if(flag_4ms)
lds R2,_flag_4ms
tst R2
breq L45
.dbline 241
; {
.dbline 242
; flag_4ms = 0;
clr R2
sts _flag_4ms,R2
.dbline 243
; asm("WDR");
WDR
.dbline 244
; Remote_set();
rcall _Remote_set
.dbline 245
; key_scan();
rcall _key_scan
.dbline 246
; }
L45:
.dbline 247
L43:
.dbline 238
rjmp L42
X1:
.dbline -2
L41:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 2
rjmp _int0_isr
.area text(rom, con, rel)
.dbfile I:\REDFOX~1\Remote\main.c
.dbfunc e int0_isr _int0_isr fV
; temp -> R16
; i -> R16,R17
.even
_int0_isr::
st -y,R2
st -y,R3
st -y,R4
st -y,R16
st -y,R17
st -y,R24
st -y,R25
in R2,0x3f
st -y,R2
.dbline -1
.dbline 254
; }
; }
;
;
;
; #pragma interrupt_handler int0_isr:2
; void int0_isr(void)
; {
.dbline 258
; uchar temp;
; uint i;
;
; if(!start)
lds R2,_start
tst R2
breq X2
rjmp L48
X2:
.dbline 259
; {
.dbline 260
; if(MCUCR==0x02)
in R24,0x35
cpi R24,2
brne L50
.dbline 261
; {
.dbline 262
; MCUCR = 0x03;
ldi R24,3
out 0x35,R24
.dbline 263
; TCNT1 = 0x00;
clr R2
out 0x2e,R2
.dbline 264
; timeH = 0x00;
sts _timeH,R2
.dbline 265
; timeL = 0x00;
sts _timeL,R2
.dbline 266
; TCCR1B = 0x05;
ldi R24,5
out 0x2f,R24
.dbline 268
;
; }
rjmp L49
L50:
.dbline 269
; else if(MCUCR==0x03)
in R24,0x35
cpi R24,3
breq X3
rjmp L49
X3:
.dbline 270
; {
.dbline 271
; TCCR1B = 0x00;
clr R2
out 0x2f,R2
.dbline 272
; MCUCR = 0x02;
ldi R24,2
out 0x35,R24
.dbline 274
;
; i = timeH*256 + TCNT1;
in R2,0x2e
lds R3,_timeH
mov R17,R3
mov R16,R2
.dbline 275
; if(i>1620 && timeH<1800) // 同步头
ldi R24,1620
ldi R25,6
cp R24,R16
cpc R25,R17
brlo X4
rjmp L49
X4:
mov R24,R3
cpi R24,8
brlt X5
rjmp L49
X5:
.dbline 276
; {
.dbline 277
; start = 1;
ldi R24,1
sts _start,R24
.dbline 278
; TCNT1 = 0x00;
clr R2
out 0x2e,R2
.dbline 279
; timeH = 0x00;
sts _timeH,R2
.dbline 280
; timeL = 0x00;
sts _timeL,R2
.dbline 281
; TCCR1B = 0x05;
ldi R24,5
out 0x2f,R24
.dbline 283
;
; bits = 0;
sts _bits,R2
.dbline 284
; addrL = 0;
sts _addrL,R2
.dbline 285
; addrH = 0;
sts _addrH,R2
.dbline 286
; datas = 0;
sts _datas,R2
.dbline 287
; flag = 0;
sts _flag,R2
.dbline 288
; }
.dbline 289
; }
.dbline 290
; }
rjmp L49
L48:
.dbline 292
; else
; {
.dbline 293
; if(MCUCR==0x02) // 下降沿读时间
in R24,0x35
cpi R24,2
breq X6
rjmp L56
X6:
.dbline 294
; {
.dbline 295
; TCCR1B = 0x00;
clr R2
out 0x2f,R2
.dbline 296
; MCUCR = 0x03;
ldi R24,3
out 0x35,R24
.dbline 297
; if(timeH>0) start = 0; // 超时
lds R3,_timeH
cp R2,R3
brsh L58
.dbline 297
sts _start,R2
rjmp L57
L58:
.dbline 299
; else
; {
.dbline 300
; timeL = TCNT1;
in R2,0x2e
sts _timeL,R2
.dbline 301
; if(timeL>40 && timeL<60) temp = 0x00;
ldi R24,40
cp R24,R2
brsh L60
mov R24,R2
cpi R24,60
brsh L60
.dbline 301
clr R16
rjmp L61
L60:
.dbline 302
; else if(timeL>150 && timeL<170) temp = 0x80;
ldi R24,150
lds R2,_timeL
cp R24,R2
brsh L62
mov R24,R2
cpi R24,170
brsh L62
.dbline 302
ldi R16,128
L62:
L61:
.dbline 304
;
; if(flag==0) // 地址低位
lds R2,_flag
tst R2
brne L64
.dbline 305
; {
.dbline 306
; addrL >>= 1;
lds R2,_addrL
lsr R2
sts _addrL,R2
.dbline 307
; addrL |= temp;
or R2,R16
sts _addrL,R2
.dbline 308
; }
rjmp L65
L64:
.dbline 309
; else if(flag==1) // 地址高位
lds R24,_flag
cpi R24,1
brne L66
.dbline 310
; {
.dbline 311
; addrH >>= 1;
lds R2,_addrH
lsr R2
sts _addrH,R2
.dbline 312
; addrH |= temp;
or R2,R16
sts _addrH,R2
.dbline 313
; }
rjmp L67
L66:
.dbline 314
; else if(flag==2) // 数据
lds R24,_flag
cpi R24,2
brne L68
.dbline 315
; {
.dbline 316
; datas >>= 1;
lds R2,_datas
lsr R2
sts _datas,R2
.dbline 317
; datas |= temp;
or R2,R16
sts _datas,R2
.dbline 318
; }
L68:
L67:
L65:
.dbline 320
;
; bits ++;
lds R24,_bits
subi R24,255 ; addi 1
sts _bits,R24
.dbline 321
; if(bits==8) flag = 1;
cpi R24,8
brne L70
.dbline 321
ldi R24,1
sts _flag,R24
rjmp L57
L70:
.dbline 322
; else if(bits==16) flag = 2;
lds R24,_bits
cpi R24,16
brne L72
.dbline 322
ldi R24,2
sts _flag,R24
rjmp L57
L72:
.dbline 323
; else if(bits>=24)
lds R24,_bits
cpi R24,24
brlo L57
.dbline 324
; {
.dbline 325
; start = 0;
clr R2
sts _start,R2
.dbline 326
; rxd_flag = 1;
ldi R24,1
sts _rxd_flag,R24
.dbline 327
; rxd_data = datas;
lds R2,_datas
sts _rxd_data,R2
.dbline 328
; addr = addrH*256 + addrL;
lds R2,_addrL
lds R3,_addrH
sts _addr+1,R3
sts _addr,R2
.dbline 329
; }
.dbline 330
; }
.dbline 331
; }
rjmp L57
L56:
.dbline 332
; else if(MCUCR==0x03) // 上升沿开始计时
in R24,0x35
cpi R24,3
brne L76
.dbline 333
; {
.dbline 334
; MCUCR = 0x02;
ldi R24,2
out 0x35,R24
.dbline 336
;
; TCNT1 = 0x00;
clr R2
out 0x2e,R2
.dbline 337
; timeH = 0x00;
sts _timeH,R2
.dbline 338
; timeL = 0x00;
sts _timeL,R2
.dbline 339
; TCCR1B = 0x05;
ldi R24,5
out 0x2f,R24
.dbline 340
; }
L76:
L57:
.dbline 341
L49:
.dbline -2
L47:
ld R2,y+
out 0x3f,R2
ld R25,y+
ld R24,y+
ld R17,y+
ld R16,y+
ld R4,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbsym r temp 16 c
.dbsym r i 16 i
.dbend
.area vector(rom, abs)
.org 10
rjmp _timer1_ovf_isr
.area text(rom, con, rel)
.dbfile I:\REDFOX~1\Remote\main.c
.dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
_timer1_ovf_isr::
st -y,R2
st -y,R24
st -y,R25
in R2,0x3f
st -y,R2
.dbline -1
.dbline 349
; }
; }
;
;
;
;
; #pragma interrupt_handler timer1_ovf_isr:6
; void timer1_ovf_isr(void)
; {
.dbline 350
; TCNT1 = 0x00; //reload counter
clr R2
out 0x2e,R2
.dbline 351
; timeH ++;
lds R24,_timeH
subi R24,255 ; addi 1
sts _timeH,R24
.dbline -2
L78:
ld R2,y+
out 0x3f,R2
ld R25,y+
ld R24,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.area vector(rom, abs)
.org 12
rjmp _timer0_ovf_isr
.area text(rom, con, rel)
.dbfile I:\REDFOX~1\Remote\main.c
.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
_timer0_ovf_isr::
st -y,R24
in R24,0x3f
st -y,R24
.dbline -1
.dbline 358
; }
;
;
;
; #pragma interrupt_handler timer0_ovf_isr:7
; void timer0_ovf_isr(void)
; {
.dbline 359
; TCNT0 = 0x83; //reload counter value
ldi R24,131
out 0x32,R24
.dbline 361
;
; flag_4ms = 1;
ldi R24,1
sts _flag_4ms,R24
.dbline -2
L79:
ld R24,y+
out 0x3f,R24
ld R24,y+
.dbline 0 ; func end
reti
.dbend
.area bss(ram, con, rel)
.dbfile I:\REDFOX~1\Remote\main.c
_rxd_data::
.blkb 1
.dbsym e rxd_data _rxd_data c
_addr::
.blkb 2
.dbsym e addr _addr i
_addrL::
.blkb 1
.dbsym e addrL _addrL c
_addrH::
.blkb 1
.dbsym e addrH _addrH c
_datas::
.blkb 1
.dbsym e datas _datas c
_timeL::
.blkb 1
.dbsym e timeL _timeL c
_timeH::
.blkb 1
.dbsym e timeH _timeH c
_bits::
.blkb 1
.dbsym e bits _bits c
_start::
.blkb 1
.dbsym e start _start c
_rxd_flag::
.blkb 1
.dbsym e rxd_flag _rxd_flag c
_flag::
.blkb 1
.dbsym e flag _flag c
_key2::
.blkb 2
.dbsym e key2 _key2 i
_key1::
.blkb 2
.dbsym e key1 _key1 i
_key::
.blkb 2
.dbsym e key _key i
_led_time::
.blkb 1
.dbsym e led_time _led_time c
_flag_4ms::
.blkb 1
.dbsym e flag_4ms _flag_4ms c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -