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

📄 jfp_fasong.lst

📁 非常适合实用的无线射频芯片NRF905
💻 LST
📖 第 1 页 / 共 2 页
字号:
__text_start:
__start:
    0032 E5CF      LDI	R28,0x5F
    0033 E0D4      LDI	R29,4
    0034 BFCD      OUT	0x3D,R28
    0035 BFDE      OUT	0x3E,R29
    0036 51C0      SUBI	R28,0x10
    0037 40D0      SBCI	R29,0
    0038 EA0A      LDI	R16,0xAA
    0039 8308      STD	Y+0,R16
    003A 2400      CLR	R0
    003B E6EF      LDI	R30,0x6F
    003C E0F0      LDI	R31,0
    003D E010      LDI	R17,0
    003E 37E3      CPI	R30,0x73
    003F 07F1      CPC	R31,R17
    0040 F011      BEQ	0x0043
    0041 9201      ST	R0,Z+
    0042 CFFB      RJMP	0x003E
    0043 8300      STD	Z+0,R16
    0044 E5E4      LDI	R30,0x54
    0045 E0F0      LDI	R31,0
    0046 E6A0      LDI	R26,0x60
    0047 E0B0      LDI	R27,0
    0048 E010      LDI	R17,0
    0049 36E3      CPI	R30,0x63
    004A 07F1      CPC	R31,R17
    004B F021      BEQ	0x0050
    004C 95C8      LPM
    004D 9631      ADIW	R30,1
    004E 920D      ST	R0,X+
    004F CFF9      RJMP	0x0049
    0050 940E00C8  CALL	_main
_exit:
    0052 CFFF      RJMP	_exit
_Delay:
  i                    --> R20
  x                    --> R16
    0053 940E0123  CALL	push_gset1
FILE: F:\开发板配套资料\JASK3000软件开发包\遥控开关\NRF905_发送\jfp_fasong.c
(0001) //ICC-AVR application builder : 2007-8-11 20:37:32
(0002) // Target : M16
(0003) // Crystal: 8.0000Mhz
(0004) #include <iom16v.h>
(0005) #include <macros.h>
(0006) #define uint  unsigned int
(0007) #define uchar unsigned char
(0008) ///////////////////////////模式控制定义/////////////////////////////////
(0009) //#define  nrf905_TX_EN	  PB0	    //输出1   
(0010) #define   Low_nrf905_TX_EN     PORTB &= ~(1 << PB0)
(0011) #define   Hign_nrf905_TX_EN    PORTB |= (1 << PB0)
(0012) //#define  nrf905_TRX_CE  PD5 	    //输出1
(0013) #define   Hign_nrf905_TRX_CE    PORTD |= (1 << PD5)  
(0014) #define   Low_nrf905_TRX_CE     PORTD &= ~(1 << PD5) 
(0015) //#define  nrf905_PWR     PB1 	    //输出1
(0016) #define   Hign_nrf905_PWR    PORTB |= (1 << PB1) 
(0017) #define   Low_nrf905_PWR     PORTB &= ~(1 << PB1)
(0018) //--------------------------------SPI口定义-------------------------------------
(0019) //#define  nrf905_MISO	  PB6   	//输入0
(0020) //#define  nrf905_MOSI    PB5	    //输出1
(0021) //#define  nrf905_SCK     PB7	    //输出1
(0022) #define   Low_nrf905_SCK     PORTB &= ~(1 << PB7)
(0023) //------------------------------------------------------------------------------
(0024) //#define  nrf905_CSN     PB4		//输出1		
(0025) #define   Hign_nrf905_CSN    PORTB |= (1 << PB4)  
(0026) #define   Low_nrf905_CSN     PORTB &= ~(1 << PB4)				
(0027) //-------------------------------状态输出口-------------------------------------
(0028) //#define  nrf905_CD      PD4	    //输入0
(0029) #define   Hign_nrf905_CD    PORTD |= (1 << PD4) 
(0030) #define   Low_nrf905_CD     PORTD &= ~(1 << PD4) 
(0031) #define   Read_nrf905_CD    PINB & (1 << PD4)
(0032) //#define  nrf905_AM      PB3	    //输入0
(0033) #define   Hign_nrf905_AM    PORTB |= (1 << PB3) 
(0034) #define   Low_nrf905_AM     PORTB &= ~(1 << PB3)
(0035) #define   Read_nrf905_AM    PINB & (1 << PB3)
(0036) //#define  nrf905_DR      PB2  		//输入0
(0037) #define   Hign_nrf905_DR    PORTB |= (1 << PB2)
(0038) #define   Low_nrf905_DR     PORTB &= ~(1 << PB2)
(0039) #define   Read_nrf905_DR    PINB & (1 << PB2)
(0040) //读取键值KEYA-KEYB-KEYC  
(0041) #define   Read_KEY_A   	    PINA & (1 << PA6)
(0042) #define   Read_KEY_B   	    PINA & (1 << PA5)
(0043) #define   Read_KEY_C    	PINA & (1 << PA4)
(0044) //----------------------------------905-SPI指令---------------------------------
(0045) #define WC	0x00
(0046) #define RRC	0x10
(0047) #define WTP	0x20
(0048) #define RTP	0x21
(0049) #define WTA	0x22
(0050) #define RTA	0x23
(0051) #define RRP	0x24
(0052) //---------------------------------发送数据-------------------------------------
(0053) uchar TxRxBuf[4];
(0054) //----------------------------------接收地址------------------------------------
(0055) uchar TxAddress[4]={0xcc,0xcc,0xcc,0xcc };    
(0056) //----------------------------------寄存器配置----------------------------------
(0057) uchar RFConf[11]=
(0058) {
(0059)   0x00,                             //配置命令//
(0060)   0x4c,                             //CH_NO,配置频段在430MHZ
(0061)   0x0C,                             //输出功率为10db,不重发,节电为正常模式
(0062)   0x44,                             //地址宽度设置,为4字节
(0063)   0x04,0x04,                        //接收发送有效数据长度为4字节
(0064)   0xCC,0xCC,0xCC,0xCC,              //接收地址
(0065)   0x58,                              //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
(0066) };
(0067) //----------------------------------函数申明------------------------------------
(0068) void Delay(uint x);
(0069) void Spi_initial();
(0070) uchar SpiReadSpiWrite(uchar DATA);
(0071) void system_Init(void);
(0072) void Config905(void);
(0073) void TxPacket(uchar TxBUF[4]);
(0074) void SetTxMode(void);
(0075) void TX(void);
(0076) void StartUART(void);
(0077) void R_S_Byte(uchar R_Byte);
(0078) //----------------------------------100us延时子程序-----------------------------
(0079) void Delay(uint x)
(0080) {
    0055 C009      RJMP	0x005F
(0081) 	uint i;
(0082) 	while(x--)
(0083) 	for(i=0;i<80;i++);
    0056 2744      CLR	R20
    0057 2755      CLR	R21
    0058 C002      RJMP	0x005B
    0059 5F4F      SUBI	R20,0xFF
    005A 4F5F      SBCI	R21,0xFF
    005B 3540      CPI	R20,0x50
    005C E0E0      LDI	R30,0
    005D 075E      CPC	R21,R30
    005E F3D0      BCS	0x0059
    005F 0118      MOVW	R2,R16
    0060 5001      SUBI	R16,1
    0061 4010      SBCI	R17,0
    0062 2022      TST	R2
    0063 F791      BNE	0x0056
    0064 2033      TST	R3
    0065 F781      BNE	0x0056
    0066 940E0126  CALL	pop_gset1
    0068 9508      RET
(0084) }
(0085) //----------------------------------SPI初始化-----------------------------------
(0086) void Spi_initial()
(0087) {
(0088) 	//SPCR=0x50;
(0089) 	//SPSR=0x00;	
(0090) 	SPCR   = (1<<SPE)|(1<<MSTR)|(0<<CPOL)|(0<<SPR0);   // 主机模式,fck/16, SPI方式0
_Spi_initial:
    0069 E580      LDI	R24,0x50
    006A B98D      OUT	0x0D,R24
    006B 9508      RET
(0091) }
(0092) //---------------------------------SPI读写程序----------------------------------	
(0093) uchar SpiReadSpiWrite(unsigned char cData)//r
(0094) {
(0095) 	SPDR = cData;
_SpiReadSpiWrite:
  cData                --> R16
    006C B90F      OUT	0x0F,R16
(0096) 	while(!(SPSR & (1<<SPIF) ))
    006D 9B77      SBIS	0x0E,7
    006E CFFE      RJMP	0x006D
(0097) 	{};			// 等待SPI发送完毕
(0098) 	return SPDR;
    006F B10F      IN	R16,0x0F
    0070 9508      RET
(0099) }
(0100) //---------------------------------系统状态初始化-------------------------------
(0101) void system_Init(void)			//r
(0102) {
(0103) 
(0104)    	Hign_nrf905_CSN;				// Spi 	disable
_system_Init:
    0071 9AC4      SBI	0x18,4
(0105) 	Low_nrf905_SCK;				// Spi clock line init low
    0072 98C7      CBI	0x18,7
(0106) 	Low_nrf905_DR;				// Init DR for input
    0073 98C2      CBI	0x18,2
(0107) 	Low_nrf905_AM;				// Init AM for input
    0074 98C3      CBI	0x18,3
(0108) 	Low_nrf905_CD;				// Init nrf905_CDfor input
    0075 9894      CBI	0x12,4
(0109) 	Hign_nrf905_PWR;				// nRF905 power on
    0076 9AC1      SBI	0x18,1
(0110) 	Low_nrf905_TRX_CE;			// Set nRF905 in standby mode
    0077 9895      CBI	0x12,5
(0111) 	Low_nrf905_TX_EN ;			// set radio in Rx mode
    0078 98C0      CBI	0x18,0
    0079 9508      RET
_Config905:
  i                    --> R20
    007A 940E0123  CALL	push_gset1
(0112) }
(0113) //--------------------------------NRF905寄存器初始化函数------------------------
(0114) void Config905(void)
(0115) {
(0116) 	uchar i;
(0117) 	Low_nrf905_CSN;	
    007C 98C4      CBI	0x18,4
(0118) 	Delay(1);				// Spi enable for write a spi command
    007D E001      LDI	R16,1
    007E E010      LDI	R17,0
    007F DFD3      RCALL	_Delay
(0119) 	//SpiWrite(WC);				// Write config command写放配置命令
(0120) 	for (i=0;i<11;i++)			// Write configration words  写放配置字
    0080 2744      CLR	R20
    0081 C009      RJMP	0x008B
(0121) 	{
(0122) 	 SpiReadSpiWrite(RFConf[i]);
    0082 E684      LDI	R24,0x64
    0083 E090      LDI	R25,0
    0084 2FE4      MOV	R30,R20
    0085 27FF      CLR	R31
    0086 0FE8      ADD	R30,R24
    0087 1FF9      ADC	R31,R25
    0088 8100      LDD	R16,Z+0
    0089 DFE2      RCALL	_SpiReadSpiWrite
    008A 9543      INC	R20
    008B 304B      CPI	R20,0xB
    008C F3A8      BCS	0x0082
(0123) 	}
(0124) 	Hign_nrf905_CSN;					// Disable Spi
    008D 9AC4      SBI	0x18,4
    008E 940E0126  CALL	pop_gset1
    0090 9508      RET
_TxPacket:
  i                    --> R20
  TxBUF                --> R22
    0091 940E0121  CALL	push_gset2
    0093 01B8      MOVW	R22,R16
(0125) }
(0126) //--------------------------------NRF905待发数据打包----------------------------
(0127) void TxPacket(uchar TxBUF[4])
(0128) {
(0129) 	uchar i;
(0130) 	Low_nrf905_CSN;		   						// 使能Spi,允许对nrf905进行读写操作
    0094 98C4      CBI	0x18,4
(0131) 	Delay(1);
    0095 E001      LDI	R16,1
    0096 E010      LDI	R17,0

⌨️ 快捷键说明

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