📄 wx_mn.lst
字号:
041B 9508 RET
_DispValue:
d --> R22
dat --> R10
x --> R20
041C 940E053F CALL push_gset3
041E 0159 MOVW R10,R18
041F 2F40 MOV R20,R16
0420 9723 SBIW R28,3
(0206)
(0207) /*
(0208) 函数:DispValue()
(0209) 功能:显示100以内的数值
(0210) 参数:
(0211) x:显示位置,取值0~6
(0212) dat:要显示的数据,取值0~99
(0213) */
(0214) void DispValue(uchar x, uint dat)
(0215) {
(0216) uint d;
(0217) d = dat/10;
0421 E02A LDI R18,0xA
0422 E030 LDI R19,0
0423 0185 MOVW R16,R10
0424 940E04FA CALL div16u
0426 01B8 MOVW R22,R16
(0218) ZLG7290_Download(x,0,0,d);
0427 836A STD R22,2+Y
0428 2422 CLR R2
0429 8228 STD R2,0+Y
042A 2722 CLR R18
042B 2F04 MOV R16,R20
042C DEC9 RCALL _ZLG7290_Download
(0219) delay(1);
042D E001 LDI R16,1
042E E010 LDI R17,0
042F DDB2 RCALL _delay
(0220) d = dat-d*10;
0430 E00A LDI R16,0xA
0431 E010 LDI R17,0
0432 019B MOVW R18,R22
0433 940E0514 CALL empy16s
0435 01B5 MOVW R22,R10
0436 1B60 SUB R22,R16
0437 0B71 SBC R23,R17
(0221) ZLG7290_Download(x-1,0,0,d);
0438 836A STD R22,2+Y
0439 2422 CLR R2
043A 8228 STD R2,0+Y
043B 2722 CLR R18
043C 2F04 MOV R16,R20
043D 5001 SUBI R16,1
043E DEB7 RCALL _ZLG7290_Download
(0222) }
043F 9623 ADIW R28,3
0440 940E054E CALL pop_gset3
0442 9508 RET
_DispHexValue:
d --> R22
dat --> R10
x --> R20
0443 940E053F CALL push_gset3
0445 2EA2 MOV R10,R18
0446 2F40 MOV R20,R16
0447 9723 SBIW R28,3
(0223)
(0224) /*
(0225) 函数:DispHexValue()
(0226) 功能:以16进制方式显示数值
(0227) 参数:
(0228) x:显示位置,取值0~6
(0229) dat:要显示的数据,取值0~255
(0230) */
(0231) void DispHexValue(uchar x, uchar dat)
(0232) {
(0233) uchar d;
(0234) d = dat / 16;
0448 E110 LDI R17,0x10
0449 2D0A MOV R16,R10
044A 940E04E6 CALL div8u
044C 2F60 MOV R22,R16
(0235) ZLG7290_Download(x,0,0,d);
044D 836A STD R22,2+Y
044E 2422 CLR R2
044F 8228 STD R2,0+Y
0450 2722 CLR R18
0451 2F04 MOV R16,R20
0452 DEA3 RCALL _ZLG7290_Download
(0236) d = dat - d * 16;
0453 E180 LDI R24,0x10
0454 9F86 MUL R24,R22
0455 2D6A MOV R22,R10
0456 1960 SUB R22,R0
(0237) ZLG7290_Download(x+1,0,0,d);
0457 836A STD R22,2+Y
0458 2422 CLR R2
0459 8228 STD R2,0+Y
045A 2722 CLR R18
045B 2F04 MOV R16,R20
045C 5F0F SUBI R16,0xFF
045D DE98 RCALL _ZLG7290_Download
(0238) }
045E 9623 ADIW R28,3
045F 940E054E CALL pop_gset3
0461 9508 RET
FILE: E:\PQ-1A\我的AVR\新建文件夹\无线模拟\main.c
(0001) #include <iom128v.h>
(0002) #include <iom128.h>
(0003) #include <macros.h>
(0004) #include "NRF905.C"
(0005) #include "zlg7290_avr.c"
(0006) #define KEY1 READ_PC3
(0007) #define KEY2 READ_PC1
(0008) #define KEY3 READ_PC2
(0009) #define KEY4 READ_PC0
(0010)
(0011) #define uchar unsigned char
(0012) #define uint unsigned int
(0013)
(0014) uchar TxBuf[28]={0};
(0015) uchar RxBuf[28]={0};
(0016) uchar tf=0;
(0017)
(0018) void main()
(0019) {
(0020) uint i;
(0021) uchar KeyValue;
(0022) uint led1_count=0,led2_count=0,led3_count=0,led4_count=0;
_main:
KeyValue --> Y+1
led4_count --> R20
led3_count --> R20
led2_count --> R20
led1_count --> R20
i --> R20
0462 2744 CLR R20
0463 2755 CLR R21
(0023) DDRA=0XFF;
0464 EF8F LDI R24,0xFF
0465 BB8A OUT P1A,R24
(0024) PORTA=0XFF;
0466 BB8B OUT P1B,R24
(0025) DDRC&=~(BIT(0)|BIT(2)|BIT(1)|BIT(3));
0467 B384 IN R24,P14
0468 7F80 ANDI R24,0xF0
0469 BB84 OUT P14,R24
(0026) PORTC=0XFF;
046A EF8F LDI R24,0xFF
046B BB85 OUT P15,R24
(0027) // SystemInit();
(0028) // ClearAll();
(0029) nRF905Init();
046C DCBE RCALL _nRF905Init
(0030) Config905(); // Config nRF905 module
046D DCF4 RCALL _Config905
(0031) TxBuf[0] = 1;
046E E081 LDI R24,1
046F 9380011D STS R24,0x11D
(0032) TxBuf[1] = 1;
0471 9380011E STS R24,0x11E
(0033) SetTxMode(); // Set Tx Mode
0473 DD0B RCALL _SetTxMode
(0034) TxPacket(TxBuf); // Transmit Tx buffer data
0474 E10D LDI R16,0x1D
0475 E011 LDI R17,1
0476 DD18 RCALL _TxPacket
(0035) Delay(1000); // delay for led light
0477 EE08 LDI R16,0xE8
0478 DC9E RCALL _Delay
(0036) PORTA=0X0C;
0479 E08C LDI R24,0xC
047A BB8B OUT P1B,R24
(0037) TxBuf[0] = 0xff;
047B EF8F LDI R24,0xFF
047C 9380011D STS R24,0x11D
(0038) TxBuf[1] = 0xff;
047E 9380011E STS R24,0x11E
(0039)
(0040) SetRxMode(); // Set nRF905 in Rx mode
0480 DD06 RCALL _SetRxMode
0481 C060 RJMP 0x04E2
(0041) while(1)
(0042) {
(0043) /* if ( FlagINT ) //如果有键按下
(0044) {
(0045) //清除中断标志
(0046) FlagINT = 0;
(0047) //读取键值、连击计数器值、功能键值
(0048) ZLG7290_ReadReg(ZLG7290_Key,&KeyValue);
(0049) DispValue(0,KeyValue);
(0050) }*/
(0051) if(KEY4 ==0 )
0482 B383 IN R24,P13
0483 7081 ANDI R24,1
0484 F489 BNE 0x0496
(0052) {
(0053) TxBuf[0] = 0x11;
0485 E181 LDI R24,0x11
0486 9380011D STS R24,0x11D
(0054) for(i = 0; i<15; i++)
0488 2744 CLR R20
0489 2755 CLR R21
048A C006 RJMP 0x0491
(0055) {
(0056) SetTxMode(); // Set Tx Mode
048B DCF3 RCALL _SetTxMode
(0057) TxPacket(TxBuf); // Transmit Tx buffer data
048C E10D LDI R16,0x1D
048D E011 LDI R17,1
048E DD00 RCALL _TxPacket
048F 5F4F SUBI R20,0xFF
0490 4F5F SBCI R21,0xFF
0491 304F CPI R20,0xF
0492 E0E0 LDI R30,0
0493 075E CPC R21,R30
0494 F3B0 BCS 0x048B
(0058) }
(0059) SetRxMode();
0495 DCF1 RCALL _SetRxMode
(0060) } //
(0061) if(KEY3 ==0 )
0496 B383 IN R24,P13
0497 9586 LSR R24
0498 9586 LSR R24
0499 7081 ANDI R24,1
049A F489 BNE 0x04AC
(0062) {
(0063) TxBuf[0] = 0xaa ;
049B EA8A LDI R24,0xAA
049C 9380011D STS R24,0x11D
(0064) for(i = 0; i<15; i++)
049E 2744 CLR R20
049F 2755 CLR R21
04A0 C006 RJMP 0x04A7
(0065) {
(0066) SetTxMode(); // Set Tx Mode
04A1 DCDD RCALL _SetTxMode
(0067) TxPacket(TxBuf); // Transmit Tx buffer data
04A2 E10D LDI R16,0x1D
04A3 E011 LDI R17,1
04A4 DCEA RCALL _TxPacket
04A5 5F4F SUBI R20,0xFF
04A6 4F5F SBCI R21,0xFF
04A7 304F CPI R20,0xF
04A8 E0E0 LDI R30,0
04A9 075E CPC R21,R30
04AA F3B0 BCS 0x04A1
(0068) }
(0069) SetRxMode();
04AB DCDB RCALL _SetRxMode
(0070) } //
(0071) if(KEY2 ==0 )
04AC B383 IN R24,P13
04AD 9586 LSR R24
04AE 7081 ANDI R24,1
04AF F489 BNE 0x04C1
(0072) { TxBuf[0] = 0x66 ;
04B0 E686 LDI R24,0x66
04B1 9380011D STS R24,0x11D
(0073) // TxBuf[1] = 0x06 ;
(0074) for(i = 0; i<15; i++)
04B3 2744 CLR R20
04B4 2755 CLR R21
04B5 C006 RJMP 0x04BC
(0075) {
(0076) SetTxMode(); // Set Tx Mode
04B6 DCC8 RCALL _SetTxMode
(0077) TxPacket(TxBuf); // Transmit Tx buffer data
04B7 E10D LDI R16,0x1D
04B8 E011 LDI R17,1
04B9 DCD5 RCALL _TxPacket
04BA 5F4F SUBI R20,0xFF
04BB 4F5F SBCI R21,0xFF
04BC 304F CPI R20,0xF
04BD E0E0 LDI R30,0
04BE 075E CPC R21,R30
04BF F3B0 BCS 0x04B6
(0078) }
(0079) SetRxMode(); // Set nRF905 in Rx mode
04C0 DCC6 RCALL _SetRxMode
(0080) }
(0081) if(KEY1 ==0 )
04C1 B383 IN R24,P13
04C2 9586 LSR R24
04C3 9586 LSR R24
04C4 9586 LSR R24
04C5 7081 ANDI R24,1
04C6 F489 BNE 0x04D8
(0082) {
(0083) TxBuf[0] = 0x33 ;
04C7 E383 LDI R24,0x33
04C8 9380011D STS R24,0x11D
(0084) // TxBuf[1] = 0x08 ;
(0085) for(i = 0; i<15; i++)
04CA 2744 CLR R20
04CB 2755 CLR R21
04CC C006 RJMP 0x04D3
(0086) {
(0087) SetTxMode(); // Set Tx Mode
04CD DCB1 RCALL _SetTxMode
(0088) TxPacket(TxBuf); // Transmit Tx buffer data
04CE E10D LDI R16,0x1D
04CF E011 LDI R17,1
04D0 DCBE RCALL _TxPacket
04D1 5F4F SUBI R20,0xFF
04D2 4F5F SBCI R21,0xFF
04D3 304F CPI R20,0xF
04D4 E0E0 LDI R30,0
04D5 075E CPC R21,R30
04D6 F3B0 BCS 0x04CD
(0089) }
(0090) SetRxMode(); // Set nRF905 in Rx mode
04D7 DCAF RCALL _SetRxMode
(0091) }
(0092) /* if(tf==1)
(0093) {
(0094) SetTxMode(); // Set Tx Mode
(0095) TxPacket(TxBuf); // Transmit Tx buffer data
(0096) TxBuf[0] = 0xff;
(0097) TxBuf[1] = 0xff;
(0098) SetRxMode(); // Set nRF905 in Rx mode
(0099) tf=0;
(0100) }
(0101) if(led1_count>0)
(0102) {
(0103) led1_count--;
(0104) PORTA=BIT(0);
(0105) Delay(160);
(0106) }
(0107) else PORTA&=~BIT(0);
(0108) if(led2_count>0)
(0109) {
(0110) led2_count--;
(0111) PORTA=BIT(1);
(0112) Delay(160);
(0113) }
(0114) else PORTA&=~BIT(1); */
(0115) if (RxPacket(RxBuf) == 1) //返回1 表明有数据包接收到
04D8 E309 LDI R16,0x39
04D9 E011 LDI R17,1
04DA DCD7 RCALL _RxPacket
04DB 3001 CPI R16,1
04DC F429 BNE 0x04E2
(0116) {
(0117) PORTA=RxBuf[0];
04DD 90200139 LDS R2,0x139
04DF BA2B OUT P1B,R2
(0118) Delay(3200);
04E0 E800 LDI R16,0x80
04E1 DC35 RCALL _Delay
04E2 CF9F RJMP 0x0482
(0119) }
(0120) }
(0121) }
FILE: <library>
04E3 9508 RET
mod8u:
04E4 9468 BSET 6
04E5 C001 RJMP xdiv8u
div8u:
04E6 94E8 BCLR 6
xdiv8u:
04E7 932A ST R18,-Y
04E8 92FA ST R15,-Y
04E9 24FF CLR R15
04EA E028 LDI R18,0x8
04EB 0F00 LSL R16
04EC 1CFF ROL R15
04ED 16F1 CP R15,R17
04EE F010 BCS 0x04F1
04EF 1AF1 SUB R15,R17
04F0 9503 INC R16
04F1 952A DEC R18
04F2 F7C1 BNE 0x04EB
04F3 F40E BRTC 0x04F5
04F4 2D0F MOV R16,R15
04F5 90F9 LD R15,Y+
04F6 9129 LD R18,Y+
04F7 9508 RET
mod16u:
04F8 9468 BSET 6
04F9 C001 RJMP xdiv16u
div16u:
04FA 94E8 BCLR 6
xdiv16u:
04FB 92EA ST R14,-Y
04FC 92FA ST R15,-Y
04FD 938A ST R24,-Y
04FE 24EE CLR R14
04FF 24FF CLR R15
0500 E180 LDI R24,0x10
0501 0F00 LSL R16
0502 1F11 ROL R17
0503 1CEE ROL R14
0504 1CFF ROL R15
0505 16E2 CP R14,R18
0506 06F3 CPC R15,R19
0507 F018 BCS 0x050B
0508 1AE2 SUB R14,R18
0509 0AF3 SBC R15,R19
050A 9503 INC R16
050B 958A DEC R24
050C F7A1 BNE 0x0501
050D F416 BRTC 0x0510
050E 2D0E MOV R16,R14
050F 2D1F MOV R17,R15
0510 9189 LD R24,Y+
0511 90F9 LD R15,Y+
0512 90E9 LD R14,Y+
0513 9508 RET
empy16s:
0514 920A ST R0,-Y
0515 921A ST R1,-Y
0516 938A ST R24,-Y
0517 939A ST R25,-Y
0518 9F02 MUL R16,R18
0519 01C0 MOVW R24,R0
051A 9F12 MUL R17,R18
051B 0D90 ADD R25,R0
051C 9F03 MUL R16,R19
051D 0D90 ADD R25,R0
051E 018C MOVW R16,R24
051F 9199 LD R25,Y+
0520 9189 LD R24,Y+
0521 9019 LD R1,Y+
0522 9009 LD R0,Y+
0523 9508 RET
push_gset1:
0524 935A ST R21,-Y
0525 934A ST R20,-Y
0526 9508 RET
pop_gset1:
0527 E0E1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -