📄 nrf905_temperature.lis
字号:
010C .dbline 284
010C ; for(j=0; j<MS_COUNT/1000;j++);
010C 6627 clr R22
010E 7727 clr R23
0110 02C0 rjmp L57
0112 L54:
0112 .dbline 284
0112 L55:
0112 .dbline 284
0112 6F5F subi R22,255 ; offset = 1
0114 7F4F sbci R23,255
0116 L57:
0116 .dbline 284
0116 80E0 ldi R24,0
0118 90E0 ldi R25,0
011A A0E0 ldi R26,0
011C B0E0 ldi R27,0
011E 1B01 movw R2,R22
0120 4424 clr R4
0122 5524 clr R5
0124 2816 cp R2,R24
0126 3906 cpc R3,R25
0128 4A06 cpc R4,R26
012A 5B06 cpc R5,R27
012C 94F3 brlt L54
012E X11:
012E L51:
012E .dbline 283
012E 4F5F subi R20,255 ; offset = 1
0130 5F4F sbci R21,255
0132 L53:
0132 .dbline 283
0132 4017 cp R20,R16
0134 5107 cpc R21,R17
0136 50F3 brlo L50
0138 X12:
0138 .dbline -2
0138 L49:
0138 .dbline 0 ; func end
0138 00C0 rjmp pop_xgsetF000
013A .dbsym r i 20 i
013A .dbsym r j 22 i
013A .dbsym r n 16 i
013A .dbend
013A .dbfunc e delay_s _delay_s fV
013A ; i -> R20,R21
013A ; n -> R10,R11
.even
013A _delay_s::
013A 00D0 rcall push_xgset300C
013C 5801 movw R10,R16
013E .dbline -1
013E .dbline 289
013E ; }
013E ;
013E ; /////////////////////////////////////////////////////////////
013E ; void delay_s(WORD n)
013E ; {
013E .dbline 291
013E ; WORD i;
013E ; for ( i=0; i<10*n; i++ ) ms(100);
013E 4427 clr R20
0140 5527 clr R21
0142 05C0 rjmp L62
0144 L59:
0144 .dbline 291
0144 04E6 ldi R16,100
0146 10E0 ldi R17,0
0148 C2DF rcall _ms
014A L60:
014A .dbline 291
014A 4F5F subi R20,255 ; offset = 1
014C 5F4F sbci R21,255
014E L62:
014E .dbline 291
014E 0AE0 ldi R16,10
0150 10E0 ldi R17,0
0152 9501 movw R18,R10
0154 00D0 rcall empy16s
0156 4017 cp R20,R16
0158 5107 cpc R21,R17
015A A0F3 brlo L59
015C X13:
015C .dbline -2
015C L58:
015C .dbline 0 ; func end
015C 00C0 rjmp pop_xgset300C
015E .dbsym r i 20 i
015E .dbsym r n 10 i
015E .dbend
015E .dbfunc e uart_init _uart_init fV
.even
015E _uart_init::
015E .dbline -1
015E .dbline 297
015E ; }
015E ;
015E ; /////////////////////////////////////////////////////////////
015E ; //UART口
015E ; void uart_init(void)
015E ; {
015E .dbline 298
015E ; UCSRB = 0x00; //设置波特率时关闭发送和接收
015E 2224 clr R2
0160 2AB8 out 0xa,R2
0162 .dbline 299
0162 ; UCSRA = 0x00;
0162 2BB8 out 0xb,R2
0164 .dbline 300
0164 ; UCSRC = (1<<UCSZ1)|(1<<UCSZ0); //8位数据+1位STOP位
0164 86E0 ldi R24,6
0166 80BD out 0x20,R24
0168 .dbline 301
0168 ; UBRRL=(fosc/16/baud-1)%256;
0168 83E0 ldi R24,3
016A 89B9 out 0x9,R24
016C .dbline 302
016C ; UBRRH=(fosc/16/baud-1)/256; //设置波特率
016C 20BC out 0x20,R2
016E .dbline 303
016E ; UCSRB =(1<<RXCIE)|(1<<RXEN)|(1<<TXEN); //允许发送和接收
016E 88E9 ldi R24,152
0170 8AB9 out 0xa,R24
0172 .dbline -2
0172 L63:
0172 .dbline 0 ; func end
0172 0895 ret
0174 .dbend
0174 .dbfunc e uart_RxChar _uart_RxChar fc
.even
0174 _uart_RxChar::
0174 .dbline -1
0174 .dbline 309
0174 ; }
0174 ;
0174 ; /////////////////////////////////////////////////////////////
0174 ; //URAT口
0174 ; BYTE uart_RxChar(void)
0174 ; {
0174 L65:
0174 .dbline 310
0174 ; while(!(UCSRA& (1<<RXC)));//判断是否接收到数据
0174 L66:
0174 .dbline 310
0174 5F9B sbis 0xb,7
0176 FECF rjmp L65
0178 X14:
0178 .dbline 311
0178 ; return UDR; //接收数据
0178 0CB1 in R16,0xc
017A .dbline -2
017A L64:
017A .dbline 0 ; func end
017A 0895 ret
017C .dbend
017C .dbfunc e uart_TxChar _uart_TxChar fV
017C ; c -> R16
.even
017C _uart_TxChar::
017C .dbline -1
017C .dbline 316
017C ; }
017C ;
017C ; /////////////////////////////////////////////////////////////
017C ; void uart_TxChar(BYTE c)
017C ; {
017C L69:
017C .dbline 317
017C ; while (!(UCSRA&(1<<UDRE)));//判断上次发送是否完成
017C L70:
017C .dbline 317
017C 5D9B sbis 0xb,5
017E FECF rjmp L69
0180 X15:
0180 .dbline 318
0180 ; UDR=c; //发送数据
0180 0CB9 out 0xc,R16
0182 .dbline -2
0182 L68:
0182 .dbline 0 ; func end
0182 0895 ret
0184 .dbsym r c 16 c
0184 .dbend
0184 .dbfunc e put_bytes _put_bytes fV
0184 ; i -> R20,R21
0184 ; len -> R10,R11
0184 ; buf -> R12,R13
.even
0184 _put_bytes::
0184 00D0 rcall push_xgset303C
0186 5901 movw R10,R18
0188 6801 movw R12,R16
018A .dbline -1
018A .dbline 323
018A ; }
018A ;
018A ; /////////////////////////////////////////////////////////////////////////////////
018A ; void put_bytes(BYTE *buf,int len)
018A ; {
018A .dbline 325
018A ; int i;
018A ; for ( i=0; i<len; i++ ) uart_TxChar(buf[i]);
018A 4427 clr R20
018C 5527 clr R21
018E 07C0 rjmp L76
0190 L73:
0190 .dbline 325
0190 FA01 movw R30,R20
0192 EC0D add R30,R12
0194 FD1D adc R31,R13
0196 0081 ldd R16,z+0
0198 F1DF rcall _uart_TxChar
019A L74:
019A .dbline 325
019A 4F5F subi R20,255 ; offset = 1
019C 5F4F sbci R21,255
019E L76:
019E .dbline 325
019E 4A15 cp R20,R10
01A0 5B05 cpc R21,R11
01A2 B4F3 brlt L73
01A4 X16:
01A4 .dbline -2
01A4 L72:
01A4 .dbline 0 ; func end
01A4 00C0 rjmp pop_xgset303C
01A6 .dbsym r i 20 I
01A6 .dbsym r len 10 I
01A6 .dbsym r buf 12 pc
01A6 .dbend
01A6 .dbfunc e adc_init _adc_init fV
.even
01A6 _adc_init::
01A6 .dbline -1
01A6 .dbline 331
01A6 ; }
01A6 ;
01A6 ; /////////////////////////////////////////////////////////////////////////////////
01A6 ; //ADC初始化
01A6 ; void adc_init(void)
01A6 ; {
01A6 .dbline 332
01A6 ; ADCSRA = 0x00;
01A6 2224 clr R2
01A8 26B8 out 0x6,R2
01AA .dbline 334
01AA ;
01AA ; ADMUX =(1<<REFS0)|(adc_mux&0x0F);
01AA 8091D800 lds R24,_adc_mux
01AE 9091D900 lds R25,_adc_mux+1
01B2 8F70 andi R24,15
01B4 9070 andi R25,0
01B6 8064 ori R24,64
01B8 87B9 out 0x7,R24
01BA .dbline 336
01BA ;
01BA ; ACSR =(1<<ACD);//关闭模拟比较器
01BA 80E8 ldi R24,128
01BC 88B9 out 0x8,R24
01BE .dbline 338
01BE ;
01BE ; ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0) ;//128分频
01BE 87EC ldi R24,199
01C0 86B9 out 0x6,R24
01C2 .dbline 340
01C2 ;
01C2 ; us(2);
01C2 02E0 ldi R16,2
01C4 10E0 ldi R17,0
01C6 9EDF rcall _us
01C8 .dbline 342
01C8 ;
01C8 ; ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0) ;//128分频
01C8 8FEC ldi R24,207
01CA 86B9 out 0x6,R24
01CC .dbline -2
01CC L77:
01CC .dbline 0 ; func end
01CC 0895 ret
01CE .dbend
01CE .dbfunc e AlarmPro _AlarmPro fV
01CE ; j -> <dead>
01CE ; temp -> R10,R11
01CE ; i -> R20
.even
01CE _AlarmPro::
01CE 00D0 rcall push_xgset300C
01D0 .dbline -1
01D0 .dbline 347
01D0 ;
01D0 ; }
01D0 ;
01D0 ; void AlarmPro(void)
01D0 ; {
01D0 .dbline 351
01D0 ; BYTE i,j;
01D0 ; WORD temp;
01D0 ;
01D0 ; for(i=0;i<num;i++){
01D0 4427 clr R20
01D2 8BC0 rjmp L82
01D4 L79:
01D4 .dbline 351
01D4 .dbline 353
01D4 ;
01D4 ; if(i == 4) i=i+2;
01D4 4430 cpi R20,4
01D6 09F4 brne L83
01D8 X17:
01D8 .dbline 353
01D8 4E5F subi R20,254 ; addi 2
01DA L83:
01DA .dbline 354
01DA ; temp = data[i]+(data[i+1]<<8);
01DA 80E0 ldi R24,<_data+1
01DC 90E0 ldi R25,>_data+1
01DE E42F mov R30,R20
01E0 FF27 clr R31
01E2 E80F add R30,R24
01E4 F91F adc R31,R25
01E6 2080 ldd R2,z+0
01E8 3324 clr R3
01EA 322C mov R3,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -