📄 nrf905_temperature.lis
字号:
01EC 2224 clr R2
01EE 80E0 ldi R24,<_data
01F0 90E0 ldi R25,>_data
01F2 E42F mov R30,R20
01F4 FF27 clr R31
01F6 E80F add R30,R24
01F8 F91F adc R31,R25
01FA A080 ldd R10,z+0
01FC BB24 clr R11
01FE A20C add R10,R2
0200 B31C adc R11,R3
0202 .dbline 356
0202 ;
0202 ; alarmno = i;
0202 40937B00 sts _alarmno,R20
0206 .dbline 358
0206 ;
0206 ; if(temp < limit[i][2]) {
0206 86E0 ldi R24,6
0208 849F mul R24,R20
020A F001 movw R30,R0
020C 80E0 ldi R24,<_limit+4
020E 90E0 ldi R25,>_limit+4
0210 E80F add R30,R24
0212 F91F adc R31,R25
0214 2080 ldd R2,z+0
0216 3180 ldd R3,z+1
0218 A214 cp R10,R2
021A B304 cpc R11,R3
021C 48F4 brsh L86
021E X18:
021E .dbline 358
021E .dbline 360
021E ;
021E ; alarm_flag[i] = 3;
021E 80E0 ldi R24,<_alarm_flag
0220 90E0 ldi R25,>_alarm_flag
0222 E42F mov R30,R20
0224 FF27 clr R31
0226 E80F add R30,R24
0228 F91F adc R31,R25
022A 83E0 ldi R24,3
022C 8083 std z+0,R24
022E .dbline 361
022E ; }
022E 32C0 rjmp L87
0230 L86:
0230 .dbline 362
0230 ; else {
0230 .dbline 363
0230 ; if(temp < limit[i][1]) {
0230 86E0 ldi R24,6
0232 849F mul R24,R20
0234 F001 movw R30,R0
0236 80E0 ldi R24,<_limit+2
0238 90E0 ldi R25,>_limit+2
023A E80F add R30,R24
023C F91F adc R31,R25
023E 2080 ldd R2,z+0
0240 3180 ldd R3,z+1
0242 A214 cp R10,R2
0244 B304 cpc R11,R3
0246 48F4 brsh L89
0248 X19:
0248 .dbline 363
0248 .dbline 365
0248 ;
0248 ; alarm_flag[i] = 2;
0248 80E0 ldi R24,<_alarm_flag
024A 90E0 ldi R25,>_alarm_flag
024C E42F mov R30,R20
024E FF27 clr R31
0250 E80F add R30,R24
0252 F91F adc R31,R25
0254 82E0 ldi R24,2
0256 8083 std z+0,R24
0258 .dbline 366
0258 ; }
0258 1DC0 rjmp L90
025A L89:
025A .dbline 367
025A ; else {
025A .dbline 368
025A ; if(temp < limit[i][0]) {
025A 86E0 ldi R24,6
025C 849F mul R24,R20
025E F001 movw R30,R0
0260 80E0 ldi R24,<_limit
0262 90E0 ldi R25,>_limit
0264 E80F add R30,R24
0266 F91F adc R31,R25
0268 2080 ldd R2,z+0
026A 3180 ldd R3,z+1
026C A214 cp R10,R2
026E B304 cpc R11,R3
0270 48F4 brsh L92
0272 X20:
0272 .dbline 368
0272 .dbline 370
0272 ;
0272 ; alarm_flag[i] = 1;
0272 80E0 ldi R24,<_alarm_flag
0274 90E0 ldi R25,>_alarm_flag
0276 E42F mov R30,R20
0278 FF27 clr R31
027A E80F add R30,R24
027C F91F adc R31,R25
027E 81E0 ldi R24,1
0280 8083 std z+0,R24
0282 .dbline 371
0282 ; }
0282 08C0 rjmp L93
0284 L92:
0284 .dbline 372
0284 ; else{
0284 .dbline 373
0284 ; alarm_flag[i] = 0;
0284 80E0 ldi R24,<_alarm_flag
0286 90E0 ldi R25,>_alarm_flag
0288 E42F mov R30,R20
028A FF27 clr R31
028C E80F add R30,R24
028E F91F adc R31,R25
0290 2224 clr R2
0292 2082 std z+0,R2
0294 .dbline 374
0294 ; }
0294 L93:
0294 .dbline 375
0294 ; }
0294 L90:
0294 .dbline 376
0294 ; }
0294 L87:
0294 .dbline 378
0294 ;
0294 ; if(alarm_flag[i] != Alarm_flag_prev[i]) {
0294 80E0 ldi R24,<_Alarm_flag_prev
0296 90E0 ldi R25,>_Alarm_flag_prev
0298 E42F mov R30,R20
029A FF27 clr R31
029C EE0F lsl R30
029E FF1F rol R31
02A0 E80F add R30,R24
02A2 F91F adc R31,R25
02A4 2080 ldd R2,z+0
02A6 3180 ldd R3,z+1
02A8 80E0 ldi R24,<_alarm_flag
02AA 90E0 ldi R25,>_alarm_flag
02AC E42F mov R30,R20
02AE FF27 clr R31
02B0 E80F add R30,R24
02B2 F91F adc R31,R25
02B4 4080 ldd R4,z+0
02B6 5524 clr R5
02B8 4214 cp R4,R2
02BA 5304 cpc R5,R3
02BC A9F0 breq L94
02BE X21:
02BE .dbline 378
02BE .dbline 379
02BE ; SendGram(CMD_RETDATA);
02BE 01E0 ldi R16,1
02C0 A9D4 rcall _SendGram
02C2 .dbline 380
02C2 ; Alarm_flag_prev[i] = alarm_flag[i];
02C2 80E0 ldi R24,<_alarm_flag
02C4 90E0 ldi R25,>_alarm_flag
02C6 E42F mov R30,R20
02C8 FF27 clr R31
02CA E80F add R30,R24
02CC F91F adc R31,R25
02CE 2080 ldd R2,z+0
02D0 3324 clr R3
02D2 80E0 ldi R24,<_Alarm_flag_prev
02D4 90E0 ldi R25,>_Alarm_flag_prev
02D6 E42F mov R30,R20
02D8 FF27 clr R31
02DA EE0F lsl R30
02DC FF1F rol R31
02DE E80F add R30,R24
02E0 F91F adc R31,R25
02E2 3182 std z+1,R3
02E4 2082 std z+0,R2
02E6 .dbline 381
02E6 ; return ;
02E6 06C0 rjmp L78
02E8 L94:
02E8 .dbline 383
02E8 ; }
02E8 ; }
02E8 L80:
02E8 .dbline 351
02E8 4395 inc R20
02EA L82:
02EA .dbline 351
02EA 20900100 lds R2,_num
02EE 4215 cp R20,R2
02F0 08F4 brsh X23
02F2 70CF rjmp L79
02F4 X23:
02F4 X22:
02F4 .dbline -2
02F4 L78:
02F4 .dbline 0 ; func end
02F4 00C0 rjmp pop_xgset300C
02F6 .dbsym l j 1 c
02F6 .dbsym r temp 10 i
02F6 .dbsym r i 20 c
02F6 .dbend
.area vector(rom, abs)
.org 28
001C 7BC1 rjmp _adc_isr
.area text(rom, con, rel)
02F6 .dbfile E:\变电站测温\测温模块\nrf905_temperature.c
02F6 .dbfunc e adc_isr _adc_isr fV
.even
02F6 _adc_isr::
02F6 1A92 st -y,R1
02F8 2A92 st -y,R2
02FA 3A92 st -y,R3
02FC 4A92 st -y,R4
02FE 5A92 st -y,R5
0300 8A93 st -y,R24
0302 9A93 st -y,R25
0304 AA93 st -y,R26
0306 EA93 st -y,R30
0308 FA93 st -y,R31
030A 1FB6 in R1,0x3f
030C 1A92 st -y,R1
030E .dbline -1
030E .dbline 389
030E ; }
030E ; /////////////////////////////////////////////////////////////////////////////////
030E ; //ADC完成中断
030E ; #pragma interrupt_handler adc_isr:iv_ADC
030E ; void adc_isr(void)
030E ; {
030E .dbline 399
030E ;
030E ; /*
030E ; uart_TxChar(0xeb);
030E ; uart_TxChar(0x90);
030E ; uart_TxChar(adc_mul);
030E ; uart_TxChar(ADMUX);
030E ; uart_TxChar(ADCL);
030E ; uart_TxChar(ADCH);
030E ; */
030E ; data[adc_mux*2] = ADCL;
030E 80E0 ldi R24,<_data
0310 90E0 ldi R25,>_data
0312 E091D800 lds R30,_adc_mux
0316 F091D900 lds R31,_adc_mux+1
031A EE0F lsl R30
031C FF1F rol R31
031E E80F add R30,R24
0320 F91F adc R31,R25
0322 24B0 in R2,0x4
0324 2082 std z+0,R2
0326 .dbline 400
0326 ; data[adc_mux*2+1] = ADCH;
0326 E091D800 lds R30,_adc_mux
032A F091D900 lds R31,_adc_mux+1
032E EE0F lsl R30
0330 FF1F rol R31
0332 3196 adiw R30,1
0334 E80F add R30,R24
0336 F91F adc R31,R25
0338 25B0 in R2,0x5
033A 2082 std z+0,R2
033C .dbline 402
033C ;
033C ; adc_val = (data[adc_mux*2+1]<<8)|data[adc_mux*2];
033C 2090D800 lds R2,_adc_mux
0340 3090D900 lds R3,_adc_mux+1
0344 220C lsl R2
0346 331C rol R3
0348 2101 movw R4,R2
034A F101 movw R30,R2
034C E80F add R30,R24
034E F91F adc R31,R25
0350 2080 ldd R2,z+0
0352 F201 movw R30,R4
0354 3196 adiw R30,1
0356 E80F add R30,R24
0358 F91F adc R31,R25
035A 3080 ldd R3,z+0
035C 3092DB00 sts _adc_val+1,R3
0360 2092DA00 sts _adc_val,R2
0364 .dbline 404
0364 ;
0364 ; ++adc_mux;
0364 8091D800 lds R24,_adc_mux
0368 9091D900 lds R25,_adc_mux+1
036C 0196 adiw R24,1
036E 9093D900 sts _adc_mux+1,R25
0372 8093D800 sts _adc_mux,R24
0376 .dbline 406
0376 ;
0376 ; if(num > 4) {
0376 84E0 ldi R24,4
0378 20900100 lds R2,_num
037C 8215 cp R24,R2
037E F8F4 brsh L97
0380 X24:
0380 .dbline 406
0380 .dbline 407
0380 ; if(adc_mux == 4) adc_mux = adc_mux+2;
0380 8091D800 lds R24,_adc_mux
0384 9091D900 lds R25,_adc_mux+1
0388 8430 cpi R24,4
038A E0E0 ldi R30,0
038C 9E07 cpc R25,R30
038E 29F4 brne L99
0390 X25:
0390 .dbline 407
0390 0296 adiw R24,2
0392 9093D900 sts _adc_mux+1,R25
0396 8093D800 sts _adc_mux,R24
039A L99:
039A .dbline 408
039A ; if(adc_mux > (num+1)) adc_mux = 0;
039A 80910100 lds R24,_num
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -