📄 210.lis
字号:
01A4 ; i -> R20
01A4 ; j -> R10
01A4 ; dataf -> R22,R23
.even
01A4 _rf::
01A4 00D0 rcall push_gset3
01A6 602F mov R22,R16
01A8 712F mov R23,R17
01AA .dbline -1
01AA .dbline 196
01AA ; }
01AA ; //发送数据
01AA ; void rf (unsigned char *dataf)
01AA ; {
01AA .dbline 199
01AA ; unsigned char i;
01AA ; unsigned char j;
01AA ; RF_ON; //起始位
01AA C29A sbi 0x18,2
01AC .dbline 200
01AC ; del(350);
01AC 0EE5 ldi R16,350
01AE 11E0 ldi R17,1
01B0 45DF rcall _del
01B2 .dbline 201
01B2 ; for(i=0;i<3;i++)
01B2 4427 clr R20
01B4 1BC0 rjmp L58
01B6 L55:
01B6 .dbline 202
01B6 ; { for(j=0;j<8;j++)
01B6 .dbline 202
01B6 AA24 clr R10
01B8 13C0 rjmp L62
01BA L59:
01BA .dbline 203
01BA ; {
01BA .dbline 204
01BA ; if(*dataf & (0x80>>j)) //如果该位为1
01BA 2A2D mov R18,R10
01BC 3327 clr R19
01BE 00E8 ldi R16,128
01C0 10E0 ldi R17,0
01C2 00D0 rcall asr16
01C4 E62F mov R30,R22
01C6 F72F mov R31,R23
01C8 2080 ldd R2,z+0
01CA 3324 clr R3
01CC 2022 and R2,R16
01CE 3122 and R3,R17
01D0 2220 tst R2
01D2 11F4 brne X1
01D4 3320 tst R3
01D6 11F0 breq L63
01D8 X1:
01D8 .dbline 205
01D8 ; data_1();
01D8 D3DF rcall _data_1
01DA 01C0 rjmp L64
01DC L63:
01DC .dbline 206
01DC ; else data_0();
01DC DADF rcall _data_0
01DE L64:
01DE .dbline 207
01DE L60:
01DE .dbline 202
01DE A394 inc R10
01E0 L62:
01E0 .dbline 202
01E0 8A2D mov R24,R10
01E2 8830 cpi R24,8
01E4 50F3 brlo L59
01E6 .dbline 208
01E6 6F5F subi R22,255 ; offset = 1
01E8 7F4F sbci R23,255
01EA .dbline 209
01EA L56:
01EA .dbline 201
01EA 4395 inc R20
01EC L58:
01EC .dbline 201
01EC 4330 cpi R20,3
01EE 18F3 brlo L55
01F0 .dbline 210
01F0 ; }
01F0 ; dataf++;
01F0 ; }
01F0 ; RF_OFF;
01F0 C298 cbi 0x18,2
01F2 .dbline -2
01F2 L54:
01F2 00D0 rcall pop_gset3
01F4 .dbline 0 ; func end
01F4 0895 ret
01F6 .dbsym r i 20 c
01F6 .dbsym r j 10 c
01F6 .dbsym r dataf 22 pc
01F6 .dbend
.area vector(rom, abs)
.org 4
0004 FBC0 rjmp _PCINT0_ovf_isr
.area text(rom, con, rel)
01F6 .dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
01F6 .dbfunc e PCINT0_ovf_isr _PCINT0_ovf_isr fV
.even
01F6 _PCINT0_ovf_isr::
01F6 0A92 st -y,R0
01F8 0FB6 in R0,0x3f
01FA 0A92 st -y,R0
01FC .dbline -1
01FC .dbline 215
01FC ; }
01FC ;
01FC ; #pragma interrupt_handler PCINT0_ovf_isr:03
01FC ; void PCINT0_ovf_isr(void) //中断程序
01FC ; {
01FC .dbline 216
01FC ; NOP();
01FC 0000 nop
01FE .dbline -2
01FE L65:
01FE 0990 ld R0,y+
0200 0FBE out 0x3f,R0
0202 0990 ld R0,y+
0204 .dbline 0 ; func end
0204 1895 reti
0206 .dbend
0206 .dbfunc e main _main fV
0206 ; i -> R20
.even
0206 _main::
0206 .dbline -1
0206 .dbline 220
0206 ; }
0206 ; //主函数!不用解释了
0206 ; void main()
0206 ; {
0206 .dbline 224
0206 ;
0206 ; unsigned char i;
0206 ; //以下初始化硬件
0206 ; port_init(); //端口初始化
0206 FCDE rcall _port_init
0208 .dbline 225
0208 ; adc_init();
0208 00DF rcall _adc_init
020A .dbline 227
020A ; // watchdog_init();//初始化看门狗
020A ; SEI(); //re-enable interrupts
020A 7894 sei
020C .dbline 228
020C ; GetADC();
020C 38DF rcall _GetADC
020E .dbline 229
020E ; delay(10);
020E 0AE0 ldi R16,10
0210 10E0 ldi R17,0
0212 26DF rcall _delay
0214 3EC0 rjmp L68
0216 L67:
0216 .dbline 231
0216 ; while(1)
0216 ; {
0216 .dbline 232
0216 ; if((!(PINB&0x08))||(!(PINB&0x01)))
0216 B39B sbis 0x16,3
0218 02C0 rjmp L72
021A B099 sbic 0x16,0
021C 1BC0 rjmp L70
021E L72:
021E .dbline 233
021E ; {
021E .dbline 234
021E ; WDR();
021E A895 wdr
0220 .dbline 235
0220 ; EN_ON;
0220 C19A sbi 0x18,1
0222 .dbline 236
0222 ; addr_f();
0222 86DF rcall _addr_f
0224 .dbline 237
0224 ; for(i=0;i<50;i++)
0224 4427 clr R20
0226 13C0 rjmp L76
0228 L73:
0228 .dbline 238
0228 .dbline 239
0228 20900300 lds R2,_data
022C 20920000 sts _dataf,R2
0230 .dbline 240
0230 20900400 lds R2,_data+1
0234 20920100 sts _dataf+1,R2
0238 .dbline 241
0238 20900500 lds R2,_data+2
023C 20920200 sts _dataf+2,R2
0240 .dbline 242
0240 00E0 ldi R16,<_dataf
0242 10E0 ldi R17,>_dataf
0244 AFDF rcall _rf
0246 .dbline 243
0246 03E0 ldi R16,3
0248 10E0 ldi R17,0
024A 0ADF rcall _delay
024C .dbline 244
024C L74:
024C .dbline 237
024C 4395 inc R20
024E L76:
024E .dbline 237
024E 4233 cpi R20,50
0250 58F3 brlo L73
0252 .dbline 245
0252 ; {
0252 ; dataf[0]=data[0];
0252 ; dataf[1]=data[1];
0252 ; dataf[2]=data[2];
0252 ; rf(dataf);
0252 ; delay(3);
0252 ; }
0252 ; EN_OFF;
0252 C198 cbi 0x18,1
0254 .dbline 246
0254 ; }
0254 L70:
0254 .dbline 247
0254 ; GIMSK|=(1<<PCIE);
0254 8BB7 in R24,0x3b
0256 8062 ori R24,32
0258 8BBF out 0x3b,R24
025A .dbline 248
025A ; PCMSK|=(1<<PCINT0);
025A A89A sbi 0x15,0
025C .dbline 249
025C ; PCMSK|=(1<<PCINT3);
025C AB9A sbi 0x15,3
025E .dbline 250
025E ; ADCSRA=0;
025E 2224 clr R2
0260 26B8 out 0x6,R2
0262 .dbline 251
0262 ; MCUCR |= BIT(SM1);
0262 85B7 in R24,0x35
0264 8061 ori R24,16
0266 85BF out 0x35,R24
0268 .dbline 253
0268 ;
0268 ; MCUCR |= BIT(SE);
0268 85B7 in R24,0x35
026A 8062 ori R24,32
026C 85BF out 0x35,R24
026E .dbline 255
026E ;
026E ; asm("sleep\n"); //进入睡眠状态
026E 8895 sleep
0270
0270 .dbline 256
0270 ; NOP();
0270 0000 nop
0272 .dbline 257
0272 ; MCUCR=0;
0272 25BE out 0x35,R2
0274 .dbline 258
0274 ; delay(2);
0274 02E0 ldi R16,2
0276 10E0 ldi R17,0
0278 F3DE rcall _delay
027A .dbline 259
027A ; if(!(PINB&0x08)) PINBS=1;
027A B399 sbic 0x16,3
027C 04C0 rjmp L81
027E .dbline 259
027E 81E0 ldi R24,1
0280 80930800 sts _PINBS,R24
0284 03C0 rjmp L82
0286 L81:
0286 .dbline 260
0286 ; else PINBS=0;
0286 2224 clr R2
0288 20920800 sts _PINBS,R2
028C L82:
028C .dbline 261
028C 2224 clr R2
028E 2BBE out 0x3b,R2
0290 .dbline 262
0290 BCDE rcall _adc_init
0292 .dbline 263
0292 L68:
0292 .dbline 230
0292 C1CF rjmp L67
0294 X2:
0294 .dbline -2
0294 L66:
0294 .dbline 0 ; func end
0294 0895 ret
0296 .dbsym r i 20 c
0296 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
0000 _dataf::
0000 .blkb 3
0003 .dbsym e dataf _dataf A[3:3]c
0003 _data::
0003 .blkb 3
0006 .dbsym e data _data A[3:3]c
0006 _DECODER_CODE0::
0006 .blkb 1
0007 .dbsym e DECODER_CODE0 _DECODER_CODE0 c
0007 _DECODER_CODE1::
0007 .blkb 1
0008 .dbsym e DECODER_CODE1 _DECODER_CODE1 c
0008 _PINBS::
0008 .blkb 1
0009 .dbsym e PINBS _PINBS c
0009 _flagl::
0009 .blkb 1
000A .dbsym e flagl _flagl c
000A _j::
000A .blkb 1
000B .dbsym e j _j c
000B _i::
000B .blkb 1
000C .dbsym e i _i c
000C _crc::
000C .blkb 1
000D .dbsym e crc _crc c
000D _aa::
000D .blkb 2
000F .dbsym e aa _aa i
000F _ai::
000F .blkb 2
0011 .dbsym e ai _ai i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -