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

📄 main.s

📁 nrf905无线收发模块利用模拟spi通信的程序 经此程序可转成串口通信
💻 S
📖 第 1 页 / 共 3 页
字号:
	.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 + -