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

📄 master.lis

📁 这是用C编的nrf905的通讯程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 011E                   .dbline 133
 011E           ;    bTimer=0;
 011E 2224              clr R2
 0120 20920300          sts _bTimer,R2
 0124                   .dbline 136
 0124           ;    //WDR();//clear WDT
 0124           ;    
 0124           ;    CPL(PORTD,LED);
 0124 80E8              ldi R24,128
 0126 90E0              ldi R25,0
 0128 22B2              in R2,0x12
 012A 3324              clr R3
 012C 2826              eor R2,R24
 012E 3926              eor R3,R25
 0130 22BA              out 0x12,R2
 0132                   .dbline -2
 0132           L26:
 0132                   .dbline 0 ; func end
 0132 0895              ret
 0134                   .dbend
 0134                   .dbfunc e SystemIni _SystemIni fV
                        .even
 0134           _SystemIni::
 0134                   .dbline -1
 0134                   .dbline 141
 0134           ;    //SPDR=66;
 0134           ; }
 0134           ; 
 0134           ; void SystemIni()
 0134           ; {
 0134                   .dbline 142
 0134           ;   T0Cnt=T0N;
 0134 89E1              ldi R24,25
 0136 80930100          sts _T0Cnt,R24
 013A                   .dbline 143
 013A           ;   RfCnt=RFTN;
 013A 80930000          sts _RfCnt,R24
 013E                   .dbline -2
 013E           L27:
 013E                   .dbline 0 ; func end
 013E 0895              ret
 0140                   .dbend
 0140                   .dbfunc e DelayMs _DelayMs fV
 0140           ;              i -> R20
 0140           ;             ms -> R22
                        .even
 0140           _DelayMs::
 0140 0E940000          xcall push_gset2
 0144 602F              mov R22,R16
 0146                   .dbline -1
 0146                   .dbline 147
 0146           ; }
 0146           ; 
 0146           ; void DelayMs(uchar ms)
 0146           ; {char i;
 0146                   .dbline 148
 0146           ; for (i=0;i<ms;i++)
 0146 4427              clr R20
 0148 04C0              xjmp L32
 014A           L29:
 014A                   .dbline 149
 014A                   .dbline 149
 014A 08EE              ldi R16,1000
 014C 13E0              ldi R17,3
 014E 06D0              xcall _DelayUs
 0150                   .dbline 150
 0150           L30:
 0150                   .dbline 148
 0150 4395              inc R20
 0152           L32:
 0152                   .dbline 148
 0152 4617              cp R20,R22
 0154 D0F3              brlo L29
 0156                   .dbline 151
 0156           ;   {DelayUs(1000);
 0156           ;   }
 0156           ;   return;
 0156                   .dbline -2
 0156           L28:
 0156 0E940000          xcall pop_gset2
 015A                   .dbline 0 ; func end
 015A 0895              ret
 015C                   .dbsym r i 20 c
 015C                   .dbsym r ms 22 c
 015C                   .dbend
 015C                   .dbfunc e DelayUs _DelayUs fV
 015C           ;              i -> R20,R21
 015C           ;             us -> R16,R17
                        .even
 015C           _DelayUs::
 015C 0E940000          xcall push_gset1
 0160                   .dbline -1
 0160                   .dbline 155
 0160           ; }
 0160           ; 
 0160           ; void DelayUs(uint us)
 0160           ; {uint i;
 0160                   .dbline 156
 0160           ;   for (i=0;i<us;i++)
 0160 4427              clr R20
 0162 5527              clr R21
 0164 08C0              xjmp L37
 0166           L34:
 0166                   .dbline 157
 0166                   .dbline 157
 0166 0000              nop
 0168                   .dbline 157
 0168 0000              nop
 016A                   .dbline 157
 016A 0000              nop
 016C                   .dbline 157
 016C 0000              nop
 016E                   .dbline 157
 016E 0000              nop
 0170                   .dbline 157
 0170 0000              nop
 0172                   .dbline 158
 0172           L35:
 0172                   .dbline 156
 0172 4F5F              subi R20,255  ; offset = 1
 0174 5F4F              sbci R21,255
 0176           L37:
 0176                   .dbline 156
 0176 4017              cp R20,R16
 0178 5107              cpc R21,R17
 017A A8F3              brlo L34
 017C                   .dbline -2
 017C           L33:
 017C 0E940000          xcall pop_gset1
 0180                   .dbline 0 ; func end
 0180 0895              ret
 0182                   .dbsym r i 20 i
 0182                   .dbsym r us 16 i
 0182                   .dbend
                        .area vector(rom, abs)
                        .org 4
 0004 0C94C100          jmp _int0_isr
                        .area text(rom, con, rel)
 0182                   .dbfile C:\DOCUME~1\charon\MYDOCU~1\AVR\NRF905\master.C
 0182                   .dbfunc e int0_isr _int0_isr fV
 0182           ;              i -> <dead>
 0182           ;        key_buf -> R20
                        .even
 0182           _int0_isr::
 0182 0E940000          xcall push_lset
 0186 0E940000          xcall push_gset1
 018A                   .dbline -1
 018A                   .dbline 171
 018A           ;   {NOP();NOP();NOP();NOP();NOP();NOP();
 018A           ;   }
 018A           ; }
 018A           ; 
 018A           ; 
 018A           ; 
 018A           ; 
 018A           ; ////////////////////////////key interrupt/////////////////////////////////
 018A           ; 
 018A           ; 
 018A           ; 
 018A           ; #pragma interrupt_handler int0_isr:iv_INT0
 018A           ; 
 018A           ; void int0_isr(void)
 018A           ; {
 018A                   .dbline 172
 018A           ; uchar key_buf=16,i;
 018A 40E1              ldi R20,16
 018C                   .dbline 173
 018C           ; GICR=0x00; //关闭中断使能
 018C 2224              clr R2
 018E 2BBE              out 0x3b,R2
 0190                   .dbline 174
 0190           ; DDRA=0xf0; //行列反转读取键盘的值
 0190 80EF              ldi R24,240
 0192 8ABB              out 0x1a,R24
 0194                   .dbline 175
 0194           ; PORTA=0x0f;
 0194 8FE0              ldi R24,15
 0196 8BBB              out 0x1b,R24
 0198                   .dbline 176
 0198           ; if((~PINA)&0x01)
 0198 29B2              in R2,0x19
 019A 3324              clr R3
 019C 2094              com R2
 019E 3094              com R3
 01A0 20FE              sbrs R2,0
 01A2 02C0              rjmp L39
 01A4                   .dbline 177
 01A4           ; key_buf=0;
 01A4 4427              clr R20
 01A6 16C0              xjmp L40
 01A8           L39:
 01A8                   .dbline 178
 01A8           ; else if((~PINA)&0x02)
 01A8 29B2              in R2,0x19
 01AA 3324              clr R3
 01AC 2094              com R2
 01AE 3094              com R3
 01B0 21FE              sbrs R2,1
 01B2 02C0              rjmp L41
 01B4                   .dbline 179
 01B4           ; key_buf=1;
 01B4 41E0              ldi R20,1
 01B6 0EC0              xjmp L42
 01B8           L41:
 01B8                   .dbline 180
 01B8           ; else if((~PINA)&0x04)
 01B8 29B2              in R2,0x19
 01BA 3324              clr R3
 01BC 2094              com R2
 01BE 3094              com R3
 01C0 22FE              sbrs R2,2
 01C2 02C0              rjmp L43
 01C4                   .dbline 181
 01C4           ; key_buf=2;
 01C4 42E0              ldi R20,2
 01C6 06C0              xjmp L44
 01C8           L43:
 01C8                   .dbline 182
 01C8           ; else if((~PINA)&0x08)
 01C8 29B2              in R2,0x19
 01CA 3324              clr R3
 01CC 2094              com R2
 01CE 3094              com R3
 01D0 23FC              sbrc R2,3
 01D2                   .dbline 183
 01D2           ; key_buf=3;
 01D2 43E0              ldi R20,3
 01D4           L45:
 01D4           L44:
 01D4           L42:
 01D4           L40:
 01D4                   .dbline 184
 01D4           ; DDRA=0x0f;
 01D4 8FE0              ldi R24,15
 01D6 8ABB              out 0x1a,R24
 01D8                   .dbline 185
 01D8           ; PORTA=0xf0;
 01D8 80EF              ldi R24,240
 01DA 8BBB              out 0x1b,R24
 01DC                   .dbline 186
 01DC           ; DelayUs(4000);
 01DC 00EA              ldi R16,4000
 01DE 1FE0              ldi R17,15
 01E0 BDDF              xcall _DelayUs
 01E2                   .dbline 187
 01E2           ; if((~PINA)&0x10)
 01E2 29B2              in R2,0x19
 01E4 3324              clr R3
 01E6 2094              com R2
 01E8 3094              com R3
 01EA 24FE              sbrs R2,4
 01EC 01C0              rjmp L47
 01EE                   .dbline 188
 01EE           ; key_buf+=0;
 01EE 19C0              xjmp L48
 01F0           L47:
 01F0                   .dbline 189
 01F0           ; else if((~PINA)&0x20)
 01F0 29B2              in R2,0x19
 01F2 3324              clr R3
 01F4 2094              com R2
 01F6 3094              com R3
 01F8 25FE              sbrs R2,5
 01FA 02C0              rjmp L49
 01FC                   .dbline 190
 01FC           ; key_buf+=4;
 01FC 4C5F              subi R20,252    ; addi 4
 01FE 11C0              xjmp L50
 0200           L49:
 0200                   .dbline 191
 0200           ; else if((~PINA)&0x40)
 0200 29B2              in R2,0x19
 0202 3324              clr R3
 0204 2094              com R2
 0206 3094              com R3
 0208 26FE              sbrs R2,6
 020A 02C0              rjmp L51
 020C                   .dbline 192
 020C           ; key_buf+=8;
 020C 485F              subi R20,248    ; addi 8
 020E 09C0              xjmp L52
 0210           L51:
 0210                   .dbline 193
 0210           ; else if((~PINA)&0x80)
 0210 29B2              in R2,0x19
 0212 3324              clr R3
 0214 2094              com R2
 0216 3094              com R3
 0218 27FE              sbrs R2,7
 021A 02C0              rjmp L53
 021C                   .dbline 194
 021C           ; key_buf+=12;
 021C 445F              subi R20,244    ; addi 12
 021E 01C0              xjmp L54
 0220           L53:
 0220                   .dbline 196
 0220           ; else
 0220           ; key_buf=16;
 0220 40E1              ldi R20,16
 0222           L54:
 0222           L52:
 0222           L50:
 0222           L48:
 0222                   .dbline 198
 0222           ; 
 0222           ; if(key_buf!=16)
 0222 4031              cpi R20,16
 0224 41F0              breq L55
 0226                   .dbline 199
 0226           ; {
 0226                   .dbline 200
 0226           ; key=key_buf;
 0226 40930400          sts _key,R20
 022A                   .dbline 202
 022A           ; 
 022A           ; RfSendProc();
 022A 62DF              xcall _RfSendProc
 022C                   .dbline 203
 022C           ; key_buf=16;
 022C 40E1              ldi R20,16
 022E           L57:
 022E                   .dbline 205
 022E           L58:
 022E                   .dbline 205
 022E           ; 
 022E           ; while((~PINA)&0xf0) ;//检测按键是否释放,若没有释放就一直循环
 022E 89B3              in R24,0x19
 0230 8095              com R24
 0232 807F              andi R24,240
 0234 E1F7              brne L57
 0236                   .dbline 206
 0236           ; }
 0236           L55:
 0236                   .dbline 208
 0236           ; 
 0236           ; DDRA=0xf0;
 0236 80EF              ldi R24,240
 0238 8ABB              out 0x1a,R24
 023A                   .dbline 209
 023A           ; PORTA=0x0f;
 023A 8FE0              ldi R24,15
 023C 8BBB              out 0x1b,R24
 023E                   .dbline 210
 023E           ; GIFR=0x40;
 023E 80E4              ldi R24,64
 0240 8ABF              out 0x3a,R24
 0242                   .dbline 211
 0242           ; GICR=0x40; //中断复位
 0242 8BBF              out 0x3b,R24
 0244                   .dbline -2
 0244           L38:
 0244 0E940000          xcall pop_gset1
 0248 0E940000          xcall pop_lset
 024C                   .dbline 0 ; func end
 024C 1895              reti
 024E                   .dbsym l i 1 c
 024E                   .dbsym r key_buf 20 c
 024E                   .dbend
 024E                   .dbfunc e main _main fV
                        .even
 024E           _main::
 024E                   .dbline -1
 024E                   .dbline 222
 024E           ; }
 024E           ; 
 024E           ; 
 024E           ; ///////////////////////key over/////////////////////////////////////////
 024E           ; 
 024E           ; 
 024E           ; 
 024E           ; 
 024E           ; 
 024E           ; void main()
 024E           ; {
 024E                   .dbline 223
 024E           ;    init_devices();
 024E 1FDF              xcall _init_devices
 0250                   .dbline 224
 0250           ;    SystemIni();
 0250 71DF              xcall _SystemIni
 0252                   .dbline 225
 0252           ;    nrf905_Init();
 0252 0E940000          xcall _nrf905_Init
 0256                   .dbline 226
 0256           ;    GICR  = BIT(INT0);
 0256 80E4              ldi R24,64
 0258 8BBF              out 0x3b,R24
 025A 01C0              xjmp L62
 025C           L61:
 025C                   .dbline 229
 025C                   .dbline 230
 025C 24DF              xcall _RfRecvProc
 025E                   .dbline 231
 025E           L62:
 025E                   .dbline 228
 025E FECF              xjmp L61
 0260           X0:
 0260                   .dbline -2
 0260           L60:
 0260                   .dbline 0 ; func end
 0260 0895              ret
 0262                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\charon\MYDOCU~1\AVR\NRF905\master.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           _key:
 0004                   .blkb 1
 0005                   .dbfile C:\DOCUME~1\charon\MYDOCU~1\AVR\NRF905/config.h
 0005                   .dbsym s key _key c

⌨️ 快捷键说明

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