📄 ptr8000.lis
字号:
00F0 .dbline 133
00F0 ; spi_init();
00F0 E8DF xcall _spi_init
00F2 .dbline 134
00F2 ; uart0_init();
00F2 EFDF xcall _uart0_init
00F4 .dbline 136
00F4 ;
00F4 ; MCUCR = 0x00;
00F4 2224 clr R2
00F6 25BE out 0x35,R2
00F8 .dbline 137
00F8 ; GICR = 0x00;
00F8 2BBE out 0x3b,R2
00FA .dbline 138
00FA ; TIMSK = 0x05; //timer interrupt sources
00FA 85E0 ldi R24,5
00FC 89BF out 0x39,R24
00FE .dbline 139
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 144
0102 ; //all peripherals are now initialized
0102 ; }
0102 ;
0102 ; void main()
0102 ; {
0102 .dbline 145
0102 ; init_devices();
0102 F2DF xcall _init_devices
0104 .dbline 146
0104 ; SystemIni();
0104 53D0 xcall _SystemIni
0106 .dbline 147
0106 ; nrf905_Init();
0106 0E940000 xcall _nrf905_Init
010A 0EC0 xjmp L16
010C L15:
010C .dbline 150
010C ;
010C ; while (1)
010C ; {
010C .dbline 151
010C ; if (bTimer) TimerFunc();
010C 20900300 lds R2,_bTimer
0110 2220 tst R2
0112 09F0 breq L18
0114 X2:
0114 .dbline 151
0114 40D0 xcall _TimerFunc
0116 L18:
0116 .dbline 153
0116 ; #ifdef MASTER
0116 ; if (bRfSend)
0116 20900200 lds R2,_bRfSend
011A 2220 tst R2
011C 21F0 breq L20
011E X3:
011E .dbline 154
011E ; { bRfSend=0;
011E .dbline 154
011E 2224 clr R2
0120 20920200 sts _bRfSend,R2
0124 .dbline 155
0124 ; RfSendProc();//发送测试
0124 23D0 xcall _RfSendProc
0126 .dbline 156
0126 ; }
0126 L20:
0126 .dbline 159
0126 ; #endif
0126 ;
0126 ; RfRecvProc();//接收处理
0126 02D0 xcall _RfRecvProc
0128 .dbline 160
0128 ; };
0128 L16:
0128 .dbline 149
0128 F1CF xjmp L15
012A X4:
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 4A93 st -y,R20
012E .dbline -1
012E .dbline 165
012E ; }
012E ;
012E ; //接收处理
012E ; void RfRecvProc()
012E ; {uchar i;
012E .dbline 169
012E ;
012E ; //if ((PIND&(1<<AM))==0) return;//一般先AM=1指示地址匹配对
012E ;
012E ; if ((PIND&(1<<DR))==0) return;//DR=1时表示数据接收对而且Crc正确
012E 8499 sbic 0x10,4
0130 01C0 rjmp L23
0132 X5:
0132 .dbline 169
0132 1AC0 xjmp L22
0134 L23:
0134 .dbline 172
0134 ;
0134 ; //已经接收到数据
0134 ; nrf905_ReadData();//读出...
0134 0E940000 xcall _nrf905_ReadData
0138 .dbline 173
0138 ; for (i=0;i<32;i++)
0138 4427 clr R20
013A 0DC0 xjmp L28
013C L25:
013C .dbline 174
013C ; { if (RxBuf[i]!=(i+i))
013C .dbline 174
013C 242E mov R2,R20
013E 240E add R2,R20
0140 80E0 ldi R24,<_RxBuf
0142 90E0 ldi R25,>_RxBuf
0144 E42F mov R30,R20
0146 FF27 clr R31
0148 E80F add R30,R24
014A F91F adc R31,R25
014C 3080 ldd R3,z+0
014E 3214 cp R3,R2
0150 09F0 breq L29
0152 X6:
0152 .dbline 175
0152 ; return;
0152 0AC0 xjmp L22
0154 L29:
0154 .dbline 176
0154 ; }
0154 L26:
0154 .dbline 173
0154 4395 inc R20
0156 L28:
0156 .dbline 173
0156 4032 cpi R20,32
0158 88F3 brlo L25
015A X7:
015A .dbline 179
015A ;
015A ; //数据接收正确...灯指示
015A ; CPL(PORTD,LED);
015A 80E8 ldi R24,128
015C 90E0 ldi R25,0
015E 22B2 in R2,0x12
0160 3324 clr R3
0162 2826 eor R2,R24
0164 3926 eor R3,R25
0166 22BA out 0x12,R2
0168 .dbline -2
0168 L22:
0168 .dbline 0 ; func end
0168 4991 ld R20,y+
016A 0895 ret
016C .dbsym r i 20 c
016C .dbend
016C .dbfunc e RfSendProc _RfSendProc fV
016C ; i -> R20
.even
016C _RfSendProc::
016C 4A93 st -y,R20
016E .dbline -1
016E .dbline 189
016E ;
016E ; //从机回送数据包,这样双方都能指示是否收到有效数据包
016E ; #ifndef MASTER
016E ; RfSendProc();
016E ; #endif
016E ; }
016E ;
016E ; //发送测试
016E ; void RfSendProc()
016E ; {uchar i;
016E .dbline 190
016E ; for (i=0;i<32;i++) TxBuf[i]=i+i;
016E 4427 clr R20
0170 0AC0 xjmp L35
0172 L32:
0172 .dbline 190
0172 242E mov R2,R20
0174 240E add R2,R20
0176 80E0 ldi R24,<_TxBuf
0178 90E0 ldi R25,>_TxBuf
017A E42F mov R30,R20
017C FF27 clr R31
017E E80F add R30,R24
0180 F91F adc R31,R25
0182 2082 std z+0,R2
0184 L33:
0184 .dbline 190
0184 4395 inc R20
0186 L35:
0186 .dbline 190
0186 4032 cpi R20,32
0188 A0F3 brlo L32
018A X8:
018A .dbline 191
018A ; nrf905_SendData();//发送测试数据
018A 0E940000 xcall _nrf905_SendData
018E .dbline 192
018E ; nrf905_RxOn();//重新回到接收状态
018E 0E940000 xcall _nrf905_RxOn
0192 .dbline -2
0192 L31:
0192 .dbline 0 ; func end
0192 4991 ld R20,y+
0194 0895 ret
0196 .dbsym r i 20 c
0196 .dbend
0196 .dbfunc e TimerFunc _TimerFunc fV
.even
0196 _TimerFunc::
0196 .dbline -1
0196 .dbline 196
0196 ; }
0196 ;
0196 ; void TimerFunc()
0196 ; {
0196 .dbline 197
0196 ; bTimer=0;
0196 2224 clr R2
0198 20920300 sts _bTimer,R2
019C .dbline 200
019C ; //WDR();//clear WDT
019C ;
019C ; CPL(PORTD,LED);
019C 80E8 ldi R24,128
019E 90E0 ldi R25,0
01A0 22B2 in R2,0x12
01A2 3324 clr R3
01A4 2826 eor R2,R24
01A6 3926 eor R3,R25
01A8 22BA out 0x12,R2
01AA .dbline -2
01AA L36:
01AA .dbline 0 ; func end
01AA 0895 ret
01AC .dbend
01AC .dbfunc e SystemIni _SystemIni fV
.even
01AC _SystemIni::
01AC .dbline -1
01AC .dbline 205
01AC ; //SPDR=66;
01AC ; }
01AC ;
01AC ; void SystemIni()
01AC ; {
01AC .dbline 206
01AC ; T0Cnt=T0N;
01AC 89E1 ldi R24,25
01AE 80930100 sts _T0Cnt,R24
01B2 .dbline 207
01B2 ; RfCnt=RFTN;
01B2 8AE0 ldi R24,10
01B4 80930000 sts _RfCnt,R24
01B8 .dbline -2
01B8 L37:
01B8 .dbline 0 ; func end
01B8 0895 ret
01BA .dbend
01BA .dbfunc e DelayMs _DelayMs fV
01BA ; i -> R10
01BA ; ms -> R12
.even
01BA _DelayMs::
01BA AA92 st -y,R10
01BC CA92 st -y,R12
01BE C02E mov R12,R16
01C0 .dbline -1
01C0 .dbline 211
01C0 ; }
01C0 ;
01C0 ; void DelayMs(uchar ms)
01C0 ; {char i;
01C0 .dbline 212
01C0 ; for (i=0;i<ms;i++)
01C0 AA24 clr R10
01C2 04C0 xjmp L42
01C4 L39:
01C4 .dbline 213
01C4 ; {DelayUs(1000);
01C4 .dbline 213
01C4 08EE ldi R16,1000
01C6 13E0 ldi R17,3
01C8 06D0 xcall _DelayUs
01CA .dbline 214
01CA ; }
01CA L40:
01CA .dbline 212
01CA A394 inc R10
01CC L42:
01CC .dbline 212
01CC AC14 cp R10,R12
01CE D0F3 brlo L39
01D0 X9:
01D0 .dbline 215
01D0 ; return;
01D0 .dbline -2
01D0 L38:
01D0 .dbline 0 ; func end
01D0 C990 ld R12,y+
01D2 A990 ld R10,y+
01D4 0895 ret
01D6 .dbsym r i 10 c
01D6 .dbsym r ms 12 c
01D6 .dbend
01D6 .dbfunc e DelayUs _DelayUs fV
01D6 ; i -> R20,R21
01D6 ; us -> R16,R17
.even
01D6 _DelayUs::
01D6 4A93 st -y,R20
01D8 5A93 st -y,R21
01DA .dbline -1
01DA .dbline 219
01DA ; }
01DA ;
01DA ; void DelayUs(uint us)
01DA ; {uint i;
01DA .dbline 220
01DA ; for (i=0;i<us;i++)
01DA 4427 clr R20
01DC 5527 clr R21
01DE 08C0 xjmp L47
01E0 L44:
01E0 .dbline 221
01E0 ; {NOP();NOP();NOP();NOP();NOP();NOP();
01E0 .dbline 221
01E0 0000 nop
01E2 .dbline 221
01E2 0000 nop
01E4 .dbline 221
01E4 0000 nop
01E6 .dbline 221
01E6 0000 nop
01E8 .dbline 221
01E8 0000 nop
01EA .dbline 221
01EA 0000 nop
01EC .dbline 222
01EC ; }
01EC L45:
01EC .dbline 220
01EC 4F5F subi R20,255 ; offset = 1
01EE 5F4F sbci R21,255
01F0 L47:
01F0 .dbline 220
01F0 4017 cp R20,R16
01F2 5107 cpc R21,R17
01F4 A8F3 brlo L44
01F6 X10:
01F6 .dbline -2
01F6 L43:
01F6 .dbline 0 ; func end
01F6 5991 ld R21,y+
01F8 4991 ld R20,y+
01FA 0895 ret
01FC .dbsym r i 20 i
01FC .dbsym r us 16 i
01FC .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\无线通信\nRF905\ptr8000\PTR8000.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
0004 ; }
0004 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -