📄 ptr8000.lis
字号:
00EA 8ADF xcall _port_init
00EC .dbline 131
00EC ; timer0_init();
00EC 99DF xcall _timer0_init
00EE .dbline 132
00EE ; timer1_init();
00EE C8DF xcall _timer1_init
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 57D0 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 .dbline 151
0114 44D0 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 .dbline 154
011E ; { bRfSend=0;
011E .dbline 154
011E 2224 clr R2
0120 20920200 sts _bRfSend,R2
0124 .dbline 155
0124 ; RfSendProc();//发送测试
0124 25D0 xcall _RfSendProc
0126 .dbline 156
0126 ; }
0126 L20:
0126 .dbline 159
0126 02D0 xcall _RfRecvProc
0128 .dbline 160
0128 L16:
0128 .dbline 149
0128 F1CF xjmp L15
012A X0:
012A .dbline 160
012A ; #endif
012A ;
012A ; RfRecvProc();//接收处理
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 169
0130 ;
0130 ; //if ((PIND&(1<<AM))==0) return;//一般先AM=1指示地址匹配对
0130 ;
0130 ; if ((PIND&(1<<DR))==0) return;//DR=1时表示数据接收对而且Crc正确
0130 8499 sbic 0x10,4
0132 01C0 rjmp L23
0134 .dbline 169
0134 1AC0 xjmp L22
0136 L23:
0136 .dbline 172
0136 ;
0136 ; //已经接收到数据
0136 ; nrf905_ReadData();//读出...
0136 0E940000 xcall _nrf905_ReadData
013A .dbline 173
013A ; for (i=0;i<32;i++)
013A 4427 clr R20
013C 0DC0 xjmp L28
013E L25:
013E .dbline 174
013E ; { if (RxBuf[i]!=(i+i))
013E .dbline 174
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 175
0154 ; return;
0154 0AC0 xjmp L22
0156 L29:
0156 .dbline 176
0156 L26:
0156 .dbline 173
0156 4395 inc R20
0158 L28:
0158 .dbline 173
0158 4032 cpi R20,32
015A 88F3 brlo L25
015C .dbline 179
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 189
0174 ;
0174 ; //从机回送数据包,这样双方都能指示是否收到有效数据包
0174 ; #ifndef MASTER
0174 ; RfSendProc();
0174 ; #endif
0174 ; }
0174 ;
0174 ; //发送测试
0174 ; void RfSendProc()
0174 ; {uchar i;
0174 .dbline 190
0174 4427 clr R20
0176 0AC0 xjmp L35
0178 L32:
0178 .dbline 190
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 190
018A 4395 inc R20
018C L35:
018C .dbline 190
018C ; for (i=0;i<32;i++) TxBuf[i]=i+i;
018C 4032 cpi R20,32
018E A0F3 brlo L32
0190 .dbline 191
0190 ; nrf905_SendData();//发送测试数据
0190 0E940000 xcall _nrf905_SendData
0194 .dbline 192
0194 ; nrf905_RxOn();//重新回到接收状态
0194 0E940000 xcall _nrf905_RxOn
0198 .dbline -2
0198 L31:
0198 0E940000 xcall pop_gset1
019C .dbline 0 ; func end
019C 0895 ret
019E .dbsym r i 20 c
019E .dbend
019E .dbfunc e TimerFunc _TimerFunc fV
.even
019E _TimerFunc::
019E .dbline -1
019E .dbline 196
019E ; }
019E ;
019E ; void TimerFunc()
019E ; {
019E .dbline 197
019E ; bTimer=0;
019E 2224 clr R2
01A0 20920300 sts _bTimer,R2
01A4 .dbline 200
01A4 ; //WDR();//clear WDT
01A4 ;
01A4 ; CPL(PORTD,LED);
01A4 80E8 ldi R24,128
01A6 90E0 ldi R25,0
01A8 22B2 in R2,0x12
01AA 3324 clr R3
01AC 2826 eor R2,R24
01AE 3926 eor R3,R25
01B0 22BA out 0x12,R2
01B2 .dbline -2
01B2 L36:
01B2 .dbline 0 ; func end
01B2 0895 ret
01B4 .dbend
01B4 .dbfunc e SystemIni _SystemIni fV
.even
01B4 _SystemIni::
01B4 .dbline -1
01B4 .dbline 205
01B4 ; //SPDR=66;
01B4 ; }
01B4 ;
01B4 ; void SystemIni()
01B4 ; {
01B4 .dbline 206
01B4 ; T0Cnt=T0N;
01B4 89E1 ldi R24,25
01B6 80930100 sts _T0Cnt,R24
01BA .dbline 207
01BA ; RfCnt=RFTN;
01BA 8AE0 ldi R24,10
01BC 80930000 sts _RfCnt,R24
01C0 .dbline -2
01C0 L37:
01C0 .dbline 0 ; func end
01C0 0895 ret
01C2 .dbend
01C2 .dbfunc e DelayMs _DelayMs fV
01C2 ; i -> R20
01C2 ; ms -> R22
.even
01C2 _DelayMs::
01C2 0E940000 xcall push_gset2
01C6 602F mov R22,R16
01C8 .dbline -1
01C8 .dbline 211
01C8 ; }
01C8 ;
01C8 ; void DelayMs(uchar ms)
01C8 ; {char i;
01C8 .dbline 212
01C8 ; for (i=0;i<ms;i++)
01C8 4427 clr R20
01CA 04C0 xjmp L42
01CC L39:
01CC .dbline 213
01CC .dbline 213
01CC 08EE ldi R16,1000
01CE 13E0 ldi R17,3
01D0 06D0 xcall _DelayUs
01D2 .dbline 214
01D2 L40:
01D2 .dbline 212
01D2 4395 inc R20
01D4 L42:
01D4 .dbline 212
01D4 4617 cp R20,R22
01D6 D0F3 brlo L39
01D8 .dbline 215
01D8 ; {DelayUs(1000);
01D8 ; }
01D8 ; return;
01D8 .dbline -2
01D8 L38:
01D8 0E940000 xcall pop_gset2
01DC .dbline 0 ; func end
01DC 0895 ret
01DE .dbsym r i 20 c
01DE .dbsym r ms 22 c
01DE .dbend
01DE .dbfunc e DelayUs _DelayUs fV
01DE ; i -> R20,R21
01DE ; us -> R16,R17
.even
01DE _DelayUs::
01DE 0E940000 xcall push_gset1
01E2 .dbline -1
01E2 .dbline 219
01E2 ; }
01E2 ;
01E2 ; void DelayUs(uint us)
01E2 ; {uint i;
01E2 .dbline 220
01E2 ; for (i=0;i<us;i++)
01E2 4427 clr R20
01E4 5527 clr R21
01E6 08C0 xjmp L47
01E8 L44:
01E8 .dbline 221
01E8 .dbline 221
01E8 0000 nop
01EA .dbline 221
01EA 0000 nop
01EC .dbline 221
01EC 0000 nop
01EE .dbline 221
01EE 0000 nop
01F0 .dbline 221
01F0 0000 nop
01F2 .dbline 221
01F2 0000 nop
01F4 .dbline 222
01F4 L45:
01F4 .dbline 220
01F4 4F5F subi R20,255 ; offset = 1
01F6 5F4F sbci R21,255
01F8 L47:
01F8 .dbline 220
01F8 4017 cp R20,R16
01FA 5107 cpc R21,R17
01FC A8F3 brlo L44
01FE .dbline -2
01FE L43:
01FE 0E940000 xcall pop_gset1
0202 .dbline 0 ; func end
0202 0895 ret
0204 .dbsym r i 20 i
0204 .dbsym r us 16 i
0204 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\IccAvr\Pei\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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -