⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nrf905_temperature.lis

📁 ADC采集温度数据通过nrf905发送出去
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -