📄 ptr4000.lis
字号:
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 + -