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

📄 ptr4000.lis

📁 本附件是基于nrf2401的无线收发模块代码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00EE           ;  timer1_init();
 00EE C8DF              xcall _timer1_init
 00F0                   .dbline 131
 00F0           ;  spi_init();
 00F0 E8DF              xcall _spi_init
 00F2                   .dbline 132
 00F2           ;  uart0_init();
 00F2 EFDF              xcall _uart0_init
 00F4                   .dbline 134
 00F4           ; 
 00F4           ;  MCUCR = 0x00;
 00F4 2224              clr R2
 00F6 25BE              out 0x35,R2
 00F8                   .dbline 135
 00F8           ;  GICR  = 0x00;
 00F8 2BBE              out 0x3b,R2
 00FA                   .dbline 136
 00FA           ;  TIMSK = 0x05; //timer interrupt sources
 00FA 85E0              ldi R24,5
 00FC 89BF              out 0x39,R24
 00FE                   .dbline 137
 00FE           ;  SEI(); //re-enable interrupts
 00FE 7894              sei
 0100                   .dbline -2
 0100           L13:
 0100                   .dbline 0 ; func end
 0100 0895              ret
 0102                   .dbend
 0102                   .dbfunc e main _main fV
                        .even
 0102           _main::
 0102                   .dbline -1
 0102                   .dbline 142
 0102           ;  //all peripherals are now initialized
 0102           ; }
 0102           ; 
 0102           ; void main()
 0102           ; {
 0102                   .dbline 143
 0102           ;    init_devices();
 0102 F2DF              xcall _init_devices
 0104                   .dbline 144
 0104           ;    SystemIni();
 0104 5AD0              xcall _SystemIni
 0106                   .dbline 145
 0106           ;    nrf2401A_Init();
 0106 0E940000          xcall _nrf2401A_Init
 010A 0EC0              xjmp L16
 010C           L15:
 010C                   .dbline 148
 010C           ; 
 010C           ;    while (1)
 010C           ;    {  
 010C                   .dbline 149
 010C           ;       if (bTimer) TimerFunc();
 010C 20900300          lds R2,_bTimer
 0110 2220              tst R2
 0112 09F0              breq L18
 0114                   .dbline 149
 0114 47D0              xcall _TimerFunc
 0116           L18:
 0116                   .dbline 151
 0116           ;         #ifdef MASTER
 0116           ;           if (bRfSend)
 0116 20900200          lds R2,_bRfSend
 011A 2220              tst R2
 011C 21F0              breq L20
 011E                   .dbline 152
 011E           ;               { bRfSend=0;
 011E                   .dbline 152
 011E 2224              clr R2
 0120 20920200          sts _bRfSend,R2
 0124                   .dbline 153
 0124           ;                 RfSendProc();//发送测试
 0124 25D0              xcall _RfSendProc
 0126                   .dbline 154
 0126           ;               }
 0126           L20:
 0126                   .dbline 158
 0126 02D0              xcall _RfRecvProc
 0128                   .dbline 160
 0128           L16:
 0128                   .dbline 147
 0128 F1CF              xjmp L15
 012A           X0:
 012A                   .dbline 160
 012A           ;         #endif
 012A           ;         
 012A           ;         //#ifndef MASTER
 012A           ;         RfRecvProc();//接收处理
 012A           ;         //#endif
 012A           ;    };
 012A                   .dbline -2
 012A           L14:
 012A                   .dbline 0 ; func end
 012A 0895              ret
 012C                   .dbend
 012C                   .dbfunc e RfRecvProc _RfRecvProc fV
 012C           ;              i -> R20
                        .even
 012C           _RfRecvProc::
 012C 0E940000          xcall push_gset1
 0130                   .dbline -1
 0130                   .dbline 165
 0130           ; }
 0130           ; 
 0130           ; //接收处理
 0130           ; void RfRecvProc()
 0130           ; {uchar i;
 0130                   .dbline 167
 0130           ;   
 0130           ;    if ((PINA&(1<<DR2))==0) return;//DR=1时表示数据接收对而且Crc正确
 0130 CB99              sbic 0x19,3
 0132 01C0              rjmp L23
 0134                   .dbline 167
 0134 1AC0              xjmp L22
 0136           L23:
 0136                   .dbline 170
 0136           ;    
 0136           ;    //已经接收到数据
 0136           ;    nrf2401A_ReadData();//读出...
 0136 0E940000          xcall _nrf2401A_ReadData
 013A                   .dbline 171
 013A           ;    for (i=0;i<10;i++)
 013A 4427              clr R20
 013C 0DC0              xjmp L28
 013E           L25:
 013E                   .dbline 172
 013E           ;    { if (RxBuf[i]!=(i+i)) 
 013E                   .dbline 172
 013E 242E              mov R2,R20
 0140 240E              add R2,R20
 0142 80E0              ldi R24,<_RxBuf
 0144 90E0              ldi R25,>_RxBuf
 0146 E42F              mov R30,R20
 0148 FF27              clr R31
 014A E80F              add R30,R24
 014C F91F              adc R31,R25
 014E 3080              ldd R3,z+0
 0150 3214              cp R3,R2
 0152 09F0              breq L29
 0154                   .dbline 173
 0154           ;         return;
 0154 0AC0              xjmp L22
 0156           L29:
 0156                   .dbline 174
 0156           L26:
 0156                   .dbline 171
 0156 4395              inc R20
 0158           L28:
 0158                   .dbline 171
 0158 4A30              cpi R20,10
 015A 88F3              brlo L25
 015C                   .dbline 177
 015C           ;    }
 015C           ;    
 015C           ;    //数据接收正确...灯指示
 015C           ;    CPL(PORTD,LED);
 015C 80E8              ldi R24,128
 015E 90E0              ldi R25,0
 0160 22B2              in R2,0x12
 0162 3324              clr R3
 0164 2826              eor R2,R24
 0166 3926              eor R3,R25
 0168 22BA              out 0x12,R2
 016A                   .dbline -2
 016A           L22:
 016A 0E940000          xcall pop_gset1
 016E                   .dbline 0 ; func end
 016E 0895              ret
 0170                   .dbsym r i 20 c
 0170                   .dbend
 0170                   .dbfunc e RfSendProc _RfSendProc fV
 0170           ;              i -> R20
                        .even
 0170           _RfSendProc::
 0170 0E940000          xcall push_gset1
 0174                   .dbline -1
 0174                   .dbline 188
 0174           ;    
 0174           ;    //从机回送数据包,这样双方都能指示是否收到有效数据包
 0174           ;    #ifndef MASTER
 0174           ;      DelayMs(5);
 0174           ;      RfSendProc();
 0174           ;    #endif
 0174           ; }
 0174           ; 
 0174           ; //发送测试
 0174           ; void RfSendProc()
 0174           ; {uchar i;
 0174                   .dbline 189
 0174 4427              clr R20
 0176 0AC0              xjmp L35
 0178           L32:
 0178                   .dbline 189
 0178 242E              mov R2,R20
 017A 240E              add R2,R20
 017C 80E0              ldi R24,<_TxBuf
 017E 90E0              ldi R25,>_TxBuf
 0180 E42F              mov R30,R20
 0182 FF27              clr R31
 0184 E80F              add R30,R24
 0186 F91F              adc R31,R25
 0188 2082              std z+0,R2
 018A           L33:
 018A                   .dbline 189
 018A 4395              inc R20
 018C           L35:
 018C                   .dbline 189
 018C           ;    for (i=0;i<32;i++) TxBuf[i]=i+i;
 018C 4032              cpi R20,32
 018E A0F3              brlo L32
 0190                   .dbline 190
 0190           ;    nrf2401A_SendData();//发送测试数据
 0190 0E940000          xcall _nrf2401A_SendData
 0194                   .dbline 191
 0194           ;    DelayMs(5);//必须,马上转回RxMode的话数据发不出
 0194 05E0              ldi R16,5
 0196 10E0              ldi R17,0
 0198 17D0              xcall _DelayMs
 019A                   .dbline 192
 019A           ;    nrf2401A_RxOn();//重新回到接收状态
 019A 0E940000          xcall _nrf2401A_RxOn
 019E                   .dbline -2
 019E           L31:
 019E 0E940000          xcall pop_gset1
 01A2                   .dbline 0 ; func end
 01A2 0895              ret
 01A4                   .dbsym r i 20 c
 01A4                   .dbend
 01A4                   .dbfunc e TimerFunc _TimerFunc fV
                        .even
 01A4           _TimerFunc::
 01A4                   .dbline -1
 01A4                   .dbline 197
 01A4           ; 
 01A4           ; }
 01A4           ; 
 01A4           ; void TimerFunc()
 01A4           ; {
 01A4                   .dbline 198
 01A4           ;    bTimer=0;
 01A4 2224              clr R2
 01A6 20920300          sts _bTimer,R2
 01AA                   .dbline 201
 01AA           ;    //WDR();//clear WDT
 01AA           ;    
 01AA           ;    CPL(PORTD,LED);
 01AA 80E8              ldi R24,128
 01AC 90E0              ldi R25,0
 01AE 22B2              in R2,0x12
 01B0 3324              clr R3
 01B2 2826              eor R2,R24
 01B4 3926              eor R3,R25
 01B6 22BA              out 0x12,R2
 01B8                   .dbline -2
 01B8           L36:
 01B8                   .dbline 0 ; func end
 01B8 0895              ret
 01BA                   .dbend
 01BA                   .dbfunc e SystemIni _SystemIni fV
                        .even
 01BA           _SystemIni::
 01BA                   .dbline -1
 01BA                   .dbline 206
 01BA           ;    //SPDR=66;
 01BA           ; }
 01BA           ; 
 01BA           ; void SystemIni()
 01BA           ; {
 01BA                   .dbline 207
 01BA           ;   T0Cnt=T0N;
 01BA 89E1              ldi R24,25
 01BC 80930100          sts _T0Cnt,R24
 01C0                   .dbline 208
 01C0           ;   RfCnt=RFTN;
 01C0 8AE0              ldi R24,10
 01C2 80930000          sts _RfCnt,R24
 01C6                   .dbline -2
 01C6           L37:
 01C6                   .dbline 0 ; func end
 01C6 0895              ret
 01C8                   .dbend
 01C8                   .dbfunc e DelayMs _DelayMs fV
 01C8           ;              i -> R20
 01C8           ;             ms -> R22
                        .even
 01C8           _DelayMs::
 01C8 0E940000          xcall push_gset2
 01CC 602F              mov R22,R16
 01CE                   .dbline -1
 01CE                   .dbline 212
 01CE           ; }
 01CE           ; 
 01CE           ; void DelayMs(uchar ms)
 01CE           ; {char i;
 01CE                   .dbline 213
 01CE           ; for (i=0;i<ms;i++)
 01CE 4427              clr R20
 01D0 04C0              xjmp L42
 01D2           L39:
 01D2                   .dbline 214
 01D2                   .dbline 214
 01D2 08EE              ldi R16,1000
 01D4 13E0              ldi R17,3
 01D6 06D0              xcall _DelayUs
 01D8                   .dbline 215
 01D8           L40:
 01D8                   .dbline 213
 01D8 4395              inc R20
 01DA           L42:
 01DA                   .dbline 213
 01DA 4617              cp R20,R22
 01DC D0F3              brlo L39
 01DE                   .dbline 216
 01DE           ;   {DelayUs(1000);
 01DE           ;   }
 01DE           ;   return;
 01DE                   .dbline -2
 01DE           L38:
 01DE 0E940000          xcall pop_gset2
 01E2                   .dbline 0 ; func end
 01E2 0895              ret
 01E4                   .dbsym r i 20 c
 01E4                   .dbsym r ms 22 c
 01E4                   .dbend
 01E4                   .dbfunc e DelayUs _DelayUs fV
 01E4           ;              i -> R20,R21
 01E4           ;             us -> R16,R17
                        .even
 01E4           _DelayUs::
 01E4 0E940000          xcall push_gset1
 01E8                   .dbline -1
 01E8                   .dbline 220
 01E8           ; }
 01E8           ; 
 01E8           ; void DelayUs(uint us)
 01E8           ; {uint i;
 01E8                   .dbline 221
 01E8           ;   for (i=0;i<us;i++)
 01E8 4427              clr R20
 01EA 5527              clr R21
 01EC 08C0              xjmp L47
 01EE           L44:
 01EE                   .dbline 222
 01EE                   .dbline 222
 01EE 0000              nop
 01F0                   .dbline 222
 01F0 0000              nop
 01F2                   .dbline 222
 01F2 0000              nop
 01F4                   .dbline 222
 01F4 0000              nop
 01F6                   .dbline 222
 01F6 0000              nop
 01F8                   .dbline 222
 01F8 0000              nop
 01FA                   .dbline 223
 01FA           L45:
 01FA                   .dbline 221
 01FA 4F5F              subi R20,255  ; offset = 1
 01FC 5F4F              sbci R21,255
 01FE           L47:
 01FE                   .dbline 221
 01FE 4017              cp R20,R16
 0200 5107              cpc R21,R17
 0202 A8F3              brlo L44
 0204                   .dbline -2
 0204           L43:
 0204 0E940000          xcall pop_gset1
 0208                   .dbline 0 ; func end
 0208 0895              ret
 020A                   .dbsym r i 20 i
 020A                   .dbsym r us 16 i
 020A                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\IccAvr\Pei\PTR4000\PTR4000.C
 0000           _RfCnt::
 0000                   .blkb 1
 0001                   .dbsym e RfCnt _RfCnt c
 0001           _T0Cnt::
 0001                   .blkb 1
 0002                   .dbsym e T0Cnt _T0Cnt c
 0002           _bRfSend::
 0002                   .blkb 1
 0003                   .dbsym e bRfSend _bRfSend c
 0003           _bTimer::
 0003                   .blkb 1
 0004                   .dbsym e bTimer _bTimer c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -