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

📄 ptr8000.lis

📁 本文档是从MCS51向AVR的快速转换的说明文档.
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -