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