📄 main.s
字号:
.module main.c
.area data(ram, con, rel)
_table::
.blkb 2
.area idata
.byte 126,18
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 'O,91
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 51,'y
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 125,'R
.area data(ram, con, rel)
.blkb 2
.area idata
.byte 127,123
.area data(ram, con, rel)
.dbfile E:\PQ-1A\我的AVR\新建文件夹\无线模拟/spi.c
.dbsym e table _table A[10:10]c
.area text(rom, con, rel)
.dbfile E:\PQ-1A\我的AVR\新建文件夹\无线模拟/spi.c
.dbfunc e delayus _delayus fV
; i -> R20,R21
; us -> R22,R23
.even
_delayus::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 40
; #include <iom128v.h>
; #include <iom128.h>
; #include <macros.h>
; #include "NRF905.C"
; #include "zlg7290_avr.c"
; #define KEY1 READ_PC3
; #define KEY2 READ_PC1
; #define KEY3 READ_PC2
; #define KEY4 READ_PC0
;
; #define uchar unsigned char
; #define uint unsigned int
;
; uchar TxBuf[28]={0};
; uchar RxBuf[28]={0};
; uchar tf=0;
;
; void main()
; {
; uint i;
; uchar KeyValue;
; uint led1_count=0,led2_count=0,led3_count=0,led4_count=0;
; DDRA=0XFF;
; PORTA=0XFF;
; DDRC&=~(BIT(0)|BIT(2)|BIT(1)|BIT(3));
; PORTC=0XFF;
; // SystemInit();
; // ClearAll();
; nRF905Init();
; Config905(); // Config nRF905 module
; TxBuf[0] = 1;
; TxBuf[1] = 1;
; SetTxMode(); // Set Tx Mode
; TxPacket(TxBuf); // Transmit Tx buffer data
; Delay(1000); // delay for led light
; PORTA=0X0C;
; TxBuf[0] = 0xff;
; TxBuf[1] = 0xff;
;
; SetRxMode(); // Set nRF905 in Rx mode
.dbline 42
; while(1)
; {
ldi R16,13
ldi R17,0
movw R18,R22
xcall empy16s
ldi R18,10
ldi R19,0
xcall div16u
movw R22,R16
.dbline 43
clr R20
clr R21
xjmp L5
L2:
.dbline 43
L3:
.dbline 43
subi R20,255 ; offset = 1
sbci R21,255
L5:
.dbline 43
; /* if ( FlagINT ) //如果有键按下
cp R20,R22
cpc R21,R23
brlo L2
.dbline -2
.dbline 44
; {
L1:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r us 22 i
.dbend
.dbfunc e delayms _delayms fV
; x -> R20,R21
; y -> R22,R23
; z -> R16,R17
.even
_delayms::
xcall push_gset2
.dbline -1
.dbline 53
; //清除中断标志
; FlagINT = 0;
; //读取键值、连击计数器值、功能键值
; ZLG7290_ReadReg(ZLG7290_Key,&KeyValue);
; DispValue(0,KeyValue);
; }*/
; if(KEY4 ==0 )
; {
; TxBuf[0] = 0x11;
.dbline 55
; for(i = 0; i<15; i++)
; {
movw R20,R16
xjmp L10
L7:
.dbline 56
ldi R22,1185
ldi R23,4
xjmp L14
L11:
.dbline 56
L12:
.dbline 56
subi R22,1
sbci R23,0
L14:
.dbline 56
cpi R22,0
cpc R22,R23
brne L11
X0:
L8:
.dbline 55
subi R20,1
sbci R21,0
L10:
.dbline 55
cpi R20,0
cpc R20,R21
brne L7
X1:
.dbline -2
.dbline 57
; SetTxMode(); // Set Tx Mode
; TxPacket(TxBuf); // Transmit Tx buffer data
L6:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r x 20 i
.dbsym r y 22 i
.dbsym r z 16 i
.dbend
.dbfunc e SpiInit _SpiInit fV
.even
_SpiInit::
.dbline -1
.dbline 60
; }
; SetRxMode();
; } //
.dbline 61
; if(KEY3 ==0 )
in R24,0x17
ori R24,7
out 0x17,R24
.dbline 62
; {
cbi 0x17,3
.dbline 63
; TxBuf[0] = 0xaa ;
sbi 0x18,3
.dbline 64
; for(i = 0; i<15; i++)
in R24,0x18
ori R24,1
out 0x18,R24
.dbline 65
; {
in R24,0x18
andi R24,253
out 0x18,R24
.dbline -2
.dbline 66
; SetTxMode(); // Set Tx Mode
L15:
.dbline 0 ; func end
ret
.dbend
.dbfunc e SpiRead _SpiRead fc
; i -> R16
.even
_SpiRead::
.dbline -1
.dbline 69
; TxPacket(TxBuf); // Transmit Tx buffer data
; }
; SetRxMode();
.dbline 71
; } //
; if(KEY2 ==0 )
clr R16
xjmp L20
L17:
.dbline 72
; { TxBuf[0] = 0x66 ;
.dbline 73
; // TxBuf[1] = 0x06 ;
lds R2,_DATA_BUF
lsl R2
sts _DATA_BUF,R2
.dbline 74
; for(i = 0; i<15; i++)
in R24,0x18
ori R24,2
out 0x18,R24
.dbline 76
; {
; SetTxMode(); // Set Tx Mode
in R24,0x16
lsr R24
lsr R24
lsr R24
andi R24,1
breq L21
.dbline 77
; TxPacket(TxBuf); // Transmit Tx buffer data
.dbline 78
; }
mov R24,R2
ori R24,1
sts _DATA_BUF,R24
.dbline 79
; SetRxMode(); // Set nRF905 in Rx mode
xjmp L22
L21:
.dbline 81
; }
; if(KEY1 ==0 )
.dbline 82
; {
lds R24,_DATA_BUF
andi R24,254
sts _DATA_BUF,R24
.dbline 83
; TxBuf[0] = 0x33 ;
L22:
.dbline 85
in R24,0x18
andi R24,253
out 0x18,R24
.dbline 86
L18:
.dbline 71
inc R16
L20:
.dbline 71
cpi R16,8
brlo L17
.dbline 87
; // TxBuf[1] = 0x08 ;
; for(i = 0; i<15; i++)
; {
; SetTxMode(); // Set Tx Mode
lds R16,_DATA_BUF
.dbline -2
L16:
.dbline 0 ; func end
ret
.dbsym r i 16 c
.dbend
.dbfunc e SpiWrite _SpiWrite fV
; i -> R20
; send -> R16
.even
_SpiWrite::
xcall push_gset1
.dbline -1
.dbline 91
; TxPacket(TxBuf); // Transmit Tx buffer data
; }
; SetRxMode(); // Set nRF905 in Rx mode
; }
.dbline 93
; /* if(tf==1)
; {
sts _DATA_BUF,R16
.dbline 94
; SetTxMode(); // Set Tx Mode
clr R20
xjmp L27
L24:
.dbline 95
; TxPacket(TxBuf); // Transmit Tx buffer data
.dbline 96
; TxBuf[0] = 0xff;
lds R2,_DATA_BUF
sbrs R2,7
rjmp L28
.dbline 97
; TxBuf[1] = 0xff;
.dbline 98
; SetRxMode(); // Set nRF905 in Rx mode
in R24,0x18
ori R24,4
out 0x18,R24
.dbline 99
; tf=0;
xjmp L29
L28:
.dbline 101
; }
; if(led1_count>0)
.dbline 102
; {
in R24,0x18
andi R24,251
out 0x18,R24
.dbline 103
; led1_count--;
L29:
.dbline 104
in R24,0x18
ori R24,2
out 0x18,R24
.dbline 105
lds R2,_DATA_BUF
lsl R2
sts _DATA_BUF,R2
.dbline 106
in R24,0x18
andi R24,253
out 0x18,R24
.dbline 107
L25:
.dbline 94
inc R20
L27:
.dbline 94
cpi R20,8
brlo L24
.dbline -2
.dbline 108
; PORTA=BIT(0);
; Delay(160);
; }
; else PORTA&=~BIT(0);
; if(led2_count>0)
L23:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r send 16 c
.dbend
.area data(ram, con, rel)
.dbfile E:\PQ-1A\我的AVR\新建文件夹\无线模拟/spi.c
_TxAddress::
.blkb 2
.area idata
.byte 204,204
.area data(ram, con, rel)
.dbfile E:\PQ-1A\我的AVR\新建文件夹\无线模拟/spi.c
.blkb 2
.area idata
.byte 204,204
.area data(ram, con, rel)
.dbfile E:\PQ-1A\我的AVR\新建文件夹\无线模拟/spi.c
.dbfile E:\PQ-1A\我的AVR\新建文件夹\无线模拟/NRF905.C
.dbsym e TxAddress _TxAddress A[4:4]c
_RxTxConf::
.blkb 1
.area idata
.byte 10
.area data(ram, con, rel)
.dbfile E:\PQ-1A\我的AVR\新建文件夹\无线模拟/NRF905.C
.blkb 2
.area idata
.byte 'L,12
.area data(ram, con, rel)
.dbfile E:\PQ-1A\我的AVR\新建文件夹\无线模拟/NRF905.C
.blkb 2
.area idata
.byte 'D,28
.area data(ram, con, rel)
.dbfile E:\PQ-1A\我的AVR\新建文件夹\无线模拟/NRF905.C
.blkb 2
.area idata
.byte 28,204
.area data(ram, con, rel)
.dbfile E:\PQ-1A\我的AVR\新建文件夹\无线模拟/NRF905.C
.blkb 2
.area idata
.byte 204,204
.area data(ram, con, rel)
.dbfile E:\PQ-1A\我的AVR\新建文件夹\无线模拟/NRF905.C
.blkb 2
.area idata
.byte 204,216
.area data(ram, con, rel)
.dbfile E:\PQ-1A\我的AVR\新建文件夹\无线模拟/NRF905.C
.dbsym e RxTxConf _RxTxConf X
.area text(rom, con, rel)
.dbfile E:\PQ-1A\我的AVR\新建文件夹\无线模拟/NRF905.C
.dbfunc s Delay _Delay fV
; i -> R20,R21
; n -> R16
.even
_Delay:
xcall push_gset1
.dbline -1
.dbline 29
xjmp L32
L31:
.dbline 32
clr R20
clr R21
xjmp L37
L34:
.dbline 32
L35:
.dbline 32
subi R20,255 ; offset = 1
sbci R21,255
L37:
.dbline 32
cpi R20,232
ldi R30,3
cpc R21,R30
brlo L34
L32:
.dbline 31
mov R2,R16
clr R3
subi R16,1
tst R2
brne L31
.dbline -2
.dbline 33
L30:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 16 c
.dbend
.dbfunc e nRF905Init _nRF905Init fV
.even
_nRF905Init::
.dbline -1
.dbline 39
.dbline 41
in R24,0x11
ori R24,84
out 0x11,R24
.dbline 42
in R24,0x11
andi R24,87
out 0x11,R24
.dbline 43
xcall _SpiInit
.dbline 46
in R24,0x10
ori R24,8
out 0x10,R24
.dbline 47
in R24,0x10
ori R24,128
out 0x10,R24
.dbline 48
in R24,0x12
ori R24,4
out 0x12,R24
.dbline 49
ldi R16,4
xcall _Delay
.dbline 50
in R24,0x12
andi R24,239
out 0x12,R24
.dbline 51
in R24,0x12
andi R24,191
out 0x12,R24
.dbline -2
.dbline 62
L38:
.dbline 0 ; func end
ret
.dbend
.dbfunc e WriteTxAddress _WriteTxAddress fV
; len -> R20
; i -> R22
.even
_WriteTxAddress::
xcall push_gset2
.dbline -1
.dbline 68
.dbline 70
lds R20,_RxTxConf+1+2
swap R20
andi R20,#0x0F
.dbline 71
in R24,0x18
andi R24,254
out 0x18,R24
.dbline 72
ldi R16,34
xcall _SpiWrite
.dbline 74
clr R22
xjmp L45
L42:
.dbline 75
.dbline 76
ldi R24,<_TxAddress
ldi R25,>_TxAddress
mov R30,R22
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
xcall _SpiWrite
.dbline 78
L43:
.dbline 74
inc R22
L45:
.dbline 74
cp R22,R20
brlo L42
.dbline 79
in R24,0x18
ori R24,1
out 0x18,R24
.dbline -2
.dbline 80
L39:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r len 20 c
.dbsym r i 22 c
.dbend
.dbfunc e Config905 _Config905 fV
; i -> R20
.even
_Config905::
xcall push_gset1
.dbline -1
.dbline 86
.dbline 88
in R24,0x18
andi R24,254
out 0x18,R24
.dbline 89
clr R16
xcall _SpiWrite
.dbline 90
clr R20
xjmp L50
L47:
.dbline 91
.dbline 92
ldi R24,<_RxTxConf+1
ldi R25,>_RxTxConf+1
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
xcall _SpiWrite
.dbline 94
L48:
.dbline 90
inc R20
L50:
.dbline 90
lds R2,_RxTxConf
cp R20,R2
brlo L47
.dbline 95
in R24,0x18
ori R24,1
out 0x18,R24
.dbline 96
xcall _WriteTxAddress
.dbline -2
.dbline 97
L46:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e SetTxMode _SetTxMode fV
.even
_SetTxMode::
.dbline -1
.dbline 103
.dbline 104
in R24,0x12
andi R24,239
out 0x12,R24
.dbline 105
in R24,0x12
ori R24,64
out 0x12,R24
.dbline 106
ldi R16,1
.dbline -2
.dbline 107
L52:
.dbline 0 ; func end
xjmp _Delay
.dbend
.dbfunc e SetRxMode _SetRxMode fV
.even
_SetRxMode::
.dbline -1
.dbline 113
; {
; led2_count--;
; PORTA=BIT(1);
; Delay(160);
; }
.dbline 114
; else PORTA&=~BIT(1); */
in R24,0x12
andi R24,191
out 0x12,R24
.dbline 115
; if (RxPacket(RxBuf) == 1) //返回1 表明有数据包接收到
in R24,0x12
ori R24,16
out 0x12,R24
.dbline 116
; {
ldi R16,1
.dbline -2
.dbline 117
; PORTA=RxBuf[0];
L53:
.dbline 0 ; func end
xjmp _Delay
.dbend
.dbfunc e TxPacket _TxPacket fV
; i -> R20
; TxBuf -> R22,R23
.even
_TxPacket::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 122
; Delay(3200);
; }
; }
; }
;
.dbline 125
;
;
;
in R24,0x18
andi R24,254
out 0x18,R24
.dbline 126
;
ldi R16,32
xcall _SpiWrite
.dbline 128
;
;
clr R20
xjmp L58
L55:
.dbline 129
.dbline 130
mov R30,R20
clr R31
add R30,R22
adc R31,R23
ldd R16,z+0
xcall _SpiWrite
.dbline 132
L56:
.dbline 128
inc R20
L58:
.dbline 128
lds R2,_RxTxConf+1+4
cp R20,R2
brlo L55
.dbline 133
;
;
;
;
;
in R24,0x18
ori R24,1
out 0x18,R24
.dbline 134
;
in R24,0x12
ori R24,16
out 0x12,R24
.dbline 135
;
ldi R16,1
xcall _Delay
.dbline 136
;
in R24,0x12
andi R24,239
out 0x12,R24
.dbline -2
.dbline 137
;
L54:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r TxBuf 22 pc
.dbend
.dbfunc e RxPacket _RxPacket fc
; i -> R20
; RxBuf -> R22,R23
.even
_RxPacket::
xcall push_gset2
movw R22,R16
.dbline -1
.dbline 146
;
;
;
;
;
;
;
;
;
.dbline 148
;
;
in R24,0x10
lsr R24
lsr R24
lsr R24
andi R24,1
breq L62
.dbline 149
;
.dbline 150
;
in R24,0x12
andi R24,239
out 0x12,R24
.dbline 151
;
in R24,0x18
andi R24,254
out 0x18,R24
.dbline 152
;
ldi R16,36
xcall _SpiWrite
.dbline 154
;
;
clr R20
xjmp L67
L64:
.dbline 155
.dbline 156
xcall _SpiRead
mov R30,R20
clr R31
add R30,R22
adc R31,R23
std z+0,R16
.dbline 158
L65:
.dbline 154
inc R20
L67:
.dbline 154
lds R2,_RxTxConf+1+3
cp R20,R2
brlo L64
.dbline 159
;
;
;
;
;
in R24,0x18
ori R24,1
out 0x18,R24
L70:
.dbline 160
L71:
.dbline 160
;
in R24,0x10
lsr R24
lsr R24
lsr R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -