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

📄 jifeng_jieshou.lst

📁 非常适合实用的无线射频芯片NRF905
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
    0132 E5CF      LDI	R28,0x5F
    0133 E0D2      LDI	R29,2
    0134 BFCD      OUT	0x3D,R28
    0135 BFDE      OUT	0x3E,R29
    0136 51C0      SUBI	R28,0x10
    0137 40D0      SBCI	R29,0
    0138 EA0A      LDI	R16,0xAA
    0139 8308      STD	Y+0,R16
    013A 2400      CLR	R0
    013B E6EF      LDI	R30,0x6F
    013C E0F0      LDI	R31,0
    013D E010      LDI	R17,0
    013E 37E5      CPI	R30,0x75
    013F 07F1      CPC	R31,R17
    0140 F011      BEQ	0x0143
    0141 9201      ST	R0,Z+
    0142 CFFB      RJMP	0x013E
    0143 8300      STD	Z+0,R16
    0144 E5E4      LDI	R30,0x54
    0145 E0F2      LDI	R31,2
    0146 E6A0      LDI	R26,0x60
    0147 E0B0      LDI	R27,0
    0148 E012      LDI	R17,2
    0149 36E3      CPI	R30,0x63
    014A 07F1      CPC	R31,R17
    014B F021      BEQ	0x0150
    014C 95C8      LPM
    014D 9631      ADIW	R30,1
    014E 920D      ST	R0,X+
    014F CFF9      RJMP	0x0149
    0150 D30B      RCALL	_main
_exit:
    0151 CFFF      RJMP	_exit
_Delay:
  i                    --> R20
  x                    --> R16
    0152 D340      RCALL	push_gset1
FILE: F:\开发板配套资料\JASK3000软件开发包\遥控开关\NRF905_接收\jifeng_jieshou.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   Hign_nrf905_TX_EN    PORTB |= (1 << PB0);   
(0011) #define   Low_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) //--------------------------------NRF905-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) //#define  nrf905_CSN     PB4		//输出1		
(0024) #define   Hign_nrf905_CSN    PORTB |= (1 << PB4);   
(0025) #define   Low_nrf905_CSN     PORTB &= ~(1 << PB4); 						
(0026) //-------------------------------NRF905状态输出口-------------------------------
(0027) //#define  nrf905_CD      PD4	    //输入0
(0028) #define   Hign_nrf905_CD    PORTD |= (1 << PD4);   
(0029) #define   Low_nrf905_CD     PORTD &= ~(1 << PD4); 
(0030) #define   Read_nrf905_CD    PINB & (1 << PD4);
(0031) //#define  nrf905_AM      PB3	    //输入0
(0032) #define   Hign_nrf905_AM    PORTB |= (1 << PB3);   
(0033) #define   Low_nrf905_AM     PORTB &= ~(1 << PB3); 
(0034) #define   Read_nrf905_AM    PINB & (1 << PB3);
(0035) //#define  nrf905_DR      PB2  		//输入0
(0036) #define   Hign_nrf905_DR     PORTB |= (1 << PB2);   
(0037) #define   Low_nrf905_DR     PORTB &= ~(1 << PB2); 
(0038) #define   Read_nrf905_DR    PINB & (1 << PB2);   
(0039) //------------------------------LCD状态输出口-----------------------------------
(0040) //#define LCD_CS           PC7  	//1-out
(0041) //#define   Out_LCD_CS       DDRC |= (1 << PC7);
(0042) #define   Hign_LCD_CS      PORTC |= (1 << PC7);   
(0043) #define   Low_LCD_CS       PORTC &= ~(1 << PC7); 
(0044) //#define LCD_RESET         PC6 	//1-out
(0045) //#define   Out_CD_RESET      DDRC |= (1 << PC6);
(0046) #define   Hign_LCD_RESET    PORTC |= (1 << PC6);   
(0047) #define   Low_LCD_RESET     PORTC &= ~(1 << PC6); 
(0048) //#define LCD_RS           PC5 	//1-out
(0049) //#define   Out_LCD_RS       DDRC |= (1 << PC5);
(0050) #define   Hign_LCD_RS      PORTC |= (1 << PC5);   
(0051) #define   Low_LCD_RS       PORTC &= ~(1 << PC5); 
(0052) //#define LCD_SCL        PC4 	//1-out
(0053) //#define   Out_LCD_SCL      DDRC |= (1 << PC4); 
(0054) #define   Hign_LCD_SCL     PORTC |= (1 << PC4);   
(0055) #define   Low_LCD_SCL      PORTC &= ~(1 << PC4);
(0056) //#define LCD_SI         PC3  	//1-ou
(0057) //#define   Out_LCD_SI      DDRC |= (1 << PC3); 
(0058) #define   Hign_LCD_SI    PORTC |= (1 << PC3);   
(0059) #define   Low_LCD_SI     PORTC &= ~(1 << PC3);
(0060) //-------------------------------BELL蜂明器-------------------------------------
(0061) #define   Hign_BELL  PORTD |= (1 << PD6);   
(0062) #define   Low_BELL     PORTD &= ~(1 << PD6); 
(0063) //-------------------------------JDQ继电器--------------------------------------
(0064) #define   Hign_JDQ  PORTD |= (1 << PD7)
(0065) #define   Low_JDQ     PORTD &= ~(1 << PD7)
(0066) //------------------------LCD字库---------------------------------------------
(0067) const uchar ling16[16]= 
(0068) {0x00,0xE0,0xF0,0x08,0x08,0x18,0xF0,0xC0,0x00,0x0F,0x1F,0x20,0x20,0x30,0x1F,0x07};//0
(0069) const uchar yi16[16]= 
(0070) {0x00,0x00,0x10,0xF0,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x3F,0x20,0x20,0x00};//1
(0071) const uchar er16[16]= 
(0072) {0x00,0x70,0x78,0x08,0x08,0x98,0xF8,0x70,0x00,0x30,0x38,0x34,0x32,0x31,0x30,0x38};//2
(0073) const uchar san16[16]=
(0074) {0x00,0x30,0x38,0x88,0x88,0xF8,0x70,0x00,0x00,0x18,0x38,0x21,0x21,0x33,0x1E,0x0C};//3
(0075) const uchar si16[16]= 
(0076) {0x00,0x00,0x80,0x60,0x30,0xF8,0xF8,0x00,0x00,0x06,0x05,0x24,0x24,0x3F,0x3F,0x24};//4
(0077) const uchar wu16[16]= 
(0078) {0x00,0xF0,0xF8,0x88,0x88,0x88,0x08,0x00,0x00,0x19,0x39,0x20,0x20,0x31,0x1F,0x06};//5
(0079) const uchar liu16[16]= 
(0080) {0x00,0xE0,0xF0,0x88,0x88,0x98,0x98,0x00,0x00,0x0F,0x3F,0x20,0x20,0x20,0x1F,0x0E};//6
(0081) const uchar qi16[16]= 
(0082) {0x00,0x38,0x18,0x08,0x88,0xE8,0x38,0x08,0x00,0x00,0x00,0x3E,0x3F,0x00,0x00,0x00};//7
(0083) const uchar ba16[16]= 
(0084) {0x00,0x70,0xF8,0x8C,0x8C,0x8C,0xF8,0x70,0x00,0x0E,0x1F,0x31,0x31,0x33,0x1F,0x0E};//8
(0085) const uchar jiu16[16]= 
(0086) {0x00,0xF0,0xF8,0x08,0x08,0x18,0xF8,0xF0,0x00,0x19,0x33,0x32,0x32,0x3B,0x1F,0x0F};//9
(0087) const uchar xsdian[16]=
(0088) {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x00};//.
(0089) 
(0090) //-------------------------------------------------------------------------------
(0091) const uchar wu[32]=															 	 //无
(0092) {0x00,0x40,0x42,0x42,0x42,0x42,0xFE,0x42,0xC2,0x42,0x43,0x42,0x60,0x40,0x00,0x00,
(0093) 0x00,0x80,0x40,0x20,0x18,0x06,0x01,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x70,0x00};
(0094) const uchar xian[32]=															 //线
(0095) {0x00,0x20,0x30,0xAC,0x63,0x20,0x30,0x20,0x20,0xFF,0x90,0x92,0x94,0xD0,0x80,0x00,
(0096) 0x20,0x62,0x23,0x12,0x12,0x12,0x41,0x41,0x21,0x17,0x18,0x24,0x42,0x80,0xE0,0x00};
(0097) const uchar yao[32]=															 //遥
(0098) {0x40,0x42,0x44,0xCC,0x00,0x42,0x36,0x2A,0x22,0xFE,0x21,0x29,0x25,0x80,0x00,0x00,
(0099) 0x00,0x40,0x20,0x1F,0x21,0x41,0x5D,0x49,0x49,0x4F,0x49,0x49,0x5D,0x61,0x21,0x00};
(0100) const uchar kong[32]=															 //控
(0101) {0x10,0x10,0x10,0xFF,0x90,0x50,0x0C,0x44,0x24,0x15,0x06,0x14,0x24,0x54,0x0C,0x00,
(0102) 0x02,0x42,0x81,0x7F,0x00,0x40,0x42,0x42,0x42,0x42,0x7E,0x42,0x43,0x62,0x40,0x00};
(0103) const uchar xi[32]=															 	 //系
(0104) {0x00,0x02,0x22,0x22,0x32,0x2E,0xA2,0x62,0x22,0x22,0x91,0x09,0x01,0x00,0x00,0x00,
(0105) 0x00,0x00,0x42,0x22,0x1A,0x43,0x82,0x7E,0x02,0x02,0x0A,0x13,0x66,0x00,0x00,0x00};
(0106) const uchar tong[32]=															//统
(0107) {0x20,0x30,0xAC,0x63,0x30,0x88,0xC8,0xA8,0x99,0x8E,0x88,0xA8,0xCC,0x88,0x00,0x00,
(0108) 0x22,0x67,0x22,0x12,0x92,0x40,0x30,0x0F,0x00,0x00,0x3F,0x40,0x40,0x41,0x70,0x00};
(0109) const uchar ji[32]=																//继											//继
(0110) {0x20,0x30,0xAC,0x63,0x30,0x00,0xFE,0x88,0x90,0xA0,0xFF,0xA0,0x90,0x98,0x00,0x00,
(0111) 0x22,0x67,0x22,0x12,0x12,0x00,0x7F,0x48,0x44,0x42,0x7F,0x42,0x44,0x6C,0x40,0x00};
(0112) const uchar dian[32]=															//电
(0113) {0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,
(0114) 0x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00};
(0115) const uchar qi[32]=																//器
(0116) {0x80,0x80,0x9F,0x91,0x91,0x91,0x9F,0xE0,0x9F,0x91,0xB1,0xD1,0x9F,0xC0,0x80,0x00,
(0117) 0x08,0x08,0xFC,0x8C,0x8A,0x8A,0xF9,0x00,0xF9,0x8A,0x8A,0x8C,0xFC,0x08,0x08,0x00};
(0118) const uchar kai[32]=															//开
(0119) {0x80,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x83,0xC2,0x80,0x00,
(0120) 0x00,0x80,0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00};
(0121) const uchar feng[32]=															//蜂
(0122) {0x00,0xF0,0x10,0xFF,0x10,0xF8,0x90,0x88,0x4F,0x54,0xA4,0x54,0x4C,0xC4,0x40,0x00,
(0123) 0x20,0x67,0x22,0x1F,0x12,0x3B,0x00,0x14,0x15,0x15,0xFF,0x15,0x15,0x14,0x00,0x00};
(0124) const uchar ming[32]=															//明
(0125) {0x00,0xFC,0x44,0x44,0x44,0xFE,0x04,0x00,0xFE,0x22,0x22,0x22,0x22,0xFF,0x02,0x00,
(0126) 0x00,0x0F,0x04,0x04,0x04,0x8F,0x40,0x30,0x0F,0x02,0x02,0x42,0x82,0x7F,0x00,0x00};
(0127) const uchar xiang[32]=																//响
(0128) {0x00,0xFC,0x04,0x04,0xFE,0x04,0xF8,0x08,0xCC,0x4A,0x49,0xC8,0x08,0xFC,0x08,0x00,
(0129) 0x00,0x1F,0x08,0x08,0x1F,0x00,0xFF,0x00,0x0F,0x08,0x08,0x4F,0x80,0x7F,0x00,0x00};
(0130) //----------------------------------NRF905-SPI指令------------------------------
(0131) #define WC	0x00
(0132) #define RRC	0x10
(0133) #define WTP	0x20
(0134) #define RTP	0x21
(0135) #define WTA	0x22
(0136) #define RTA	0x23
(0137) #define RRP	0x24
(0138) //---------------------------------发送数据-------------------------------------
(0139) uchar TxRxBuffer[4];
(0140) //----------------------------------接收地址------------------------------------
(0141) uchar TxAddress[4]={0xcc,0xcc,0xcc,0xcc };    
(0142) //------------------------------------------------------------------------------
(0143) uchar count1 ,count2;
(0144) //----------------------------------寄存器配置----------------------------------
(0145) uchar RFConf[11]=
(0146) {
(0147)   0x00,                            //配置命令//
(0148)   0x4c,                           //CH_NO,配置频段在430MHZ
(0149)   0x0C,                          //输出功率为10db,不重发,节电为正常模式
(0150)   0x44,                         //地址宽度设置,为4字节
(0151)   0x04,0x04,                   //接收发送有效数据长度为32字节
(0152)   0xCC,0xCC,0xCC,0xCC,        //接收地址
(0153)   0x58,                      //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
(0154) };
(0155) //----------------------------------NRF905函数申明------------------------------
(0156) void Delay(uint x);						       //延时子程序																							
(0157) void Spi_initial();                            //SPI初始化
(0158) uchar SpiReadSpiWrite(unsigned char cData);    //SPI读写子程序
(0159) void system_Init(void);		   				   //系统初始化
(0160) void Config905(void);						   //NRF905初始化子程序
(0161) void TxPacket(void);						
(0162) void SetTxMode(void);						   //数据发送
(0163) void SetRxMode(void);						   //
(0164) void TX(void);
(0165) unsigned char CheckDR(void);
(0166) void RxPacket(void);
(0167) void  RX(void);
(0168) //-------------------------------串口函数申明-----------------------------------
(0169) void StartUART(void);
(0170) void R_S_Byte(uchar R_Byte);
(0171) //-------------------------------LCD函数申明------------------------------------
(0172) void LCD_Delay(uint time);
(0173) void Lcd_init(void);
(0174) void Lcd_Write_Data(uchar DATA) ;
(0175) void Lcd_Write_command(uchar COMMAND);
(0176) void Lcd_CURSOR(uchar add_page,uchar add_col)  ;
(0177) void Lcd_Clear(void) ;
(0178) void dis_1616hz(uchar x1,uchar x2,uchar row,const uchar hz[]);
(0179) void dis_168hz(uchar x1,uchar row,const uchar hz[]);
(0180) void LCDtime();
(0181) //----------------------------------100us延时子程序-----------------------------
(0182) void Delay(uint x)
(0183) {
    0153 C009      RJMP	0x015D
(0184) 	uint i;
(0185) 	while(x--)
(0186) 	for(i=0;i<80;i++);
    0154 2744      CLR	R20
    0155 2755      CLR	R21
    0156 C002      RJMP	0x0159
    0157 5F4F      SUBI	R20,0xFF
    0158 4F5F      SBCI	R21,0xFF
    0159 3540      CPI	R20,0x50
    015A E0E0      LDI	R30,0
    015B 075E      CPC	R21,R30
    015C F3D0      BCS	0x0157
    015D 2E20      MOV	R2,R16
    015E 2E31      MOV	R3,R17
    015F 5001      SUBI	R16,1
    0160 4010      SBCI	R17,0
    0161 2022      TST	R2
    0162 F789      BNE	0x0154
    0163 2033      TST	R3
    0164 F779      BNE	0x0154
    0165 D330      RCALL	pop_gset1
    0166 9508      RET
(0187) }
(0188) //----------------------------------SPI初始化-----------------------------------
(0189) void Spi_initial()
(0190) {
(0191) 	SPCR   = (1<<SPE)|(1<<MSTR)|(0<<CPOL)|(0<<SPR0);// 主机模式,fck/16, SPI方式0
_Spi_initial:
    0167 E580      LDI	R24,0x50
    0168 B98D      OUT	0x0D,R24
    0169 9508      RET
(0192) }
(0193) //---------------------------------SPI读写程序----------------------------------	
(0194) uchar SpiReadSpiWrite(unsigned char cData)
(0195) {
(0196) 	SPDR = cData;
_SpiReadSpiWrite:
  cData                --> R16
    016A B90F      OUT	0x0F,R16
(0197) 	while(!(SPSR & (1<<SPIF) ))  // 等待SPI发送完毕
    016B 9B77      SBIS	0x0E,7
    016C CFFE      RJMP	0x016B
(0198) 	{};			
(0199) 	return SPDR;
    016D B10F      IN	R16,0x0F
    016E 9508      RET
(0200) }
(0201) //--------------------------------系统状态初始化--------------------------------
(0202) void system_Init(void)			
(0203) {
(0204) 
(0205)    	Hign_nrf905_CSN;			// SPI使能
_system_Init:
    016F 9AC4      SBI	0x18,4
(0206) 	Low_nrf905_SCK;				
    0170 98C7      CBI	0x18,7
(0207) 	Low_nrf905_DR;				// DR=0
    0171 98C2      CBI	0x18,2
(0208) 	Low_nrf905_AM;				// AM=0
    0172 98C3      CBI	0x18,3
(0209) 	Low_nrf905_CD;				// CD=0
    0173 9894      CBI	0x12,4
(0210) 	Hign_nrf905_PWR;		    // PWR=1
    0174 9AC1      SBI	0x18,1
(0211) 	Low_nrf905_TRX_CE;			// nrf905_TRX_CE=0
    0175 9895      CBI	0x12,5
(0212) 	Low_nrf905_TX_EN ;			// nrf905_TX_EN=0
    0176 98C0      CBI	0x18,0
    0177 9508      RET
_Config905:
  i                    --> R20
    0178 D31A      RCALL	push_gset1
(0213) }
(0214) //--------------------------------NRF905寄存器初始化函数------------------------
(0215) void Config905(void)
(0216) {
(0217) 	uchar i;
(0218) 	Low_nrf905_CSN;				//SPI使能											
    0179 98C4      CBI	0x18,4
(0219) 	Delay(1);				   
    017A E001      LDI	R16,1
    017B E010      LDI	R17,0
    017C DFD5      RCALL	_Delay
(0220) 	for (i=0;i<11;i++)			//碞RF905配置字
    017D 2744      CLR	R20
    017E C009      RJMP	0x0188
(0221) 	{
(0222) 	 SpiReadSpiWrite(RFConf[i]);
    017F E684      LDI	R24,0x64
    0180 E090      LDI	R25,0
    0181 2FE4      MOV	R30,R20
    0182 27FF      CLR	R31
    0183 0FE8      ADD	R30,R24
    0184 1FF9      ADC	R31,R25
    0185 8100      LDD	R16,Z+0
    0186 DFE3      RCALL	_SpiReadSpiWrite
    0187 9543      INC	R20
    0188 304B      CPI	R20,0xB
    0189 F3A8      BCS	0x017F
(0223) 	}
(0224) 	Hign_nrf905_CSN;					// Disable Spi
    018A 9AC4      SBI	0x18,4
    018B D30A      RCALL	pop_gset1
    018C 9508      RET
_TxPacket:
  i                    --> R20
    018D D305      RCALL	push_gset1
(0225) }
(0226) //--------------------------------NRF905待发数据打包----------------------------
(0227) void TxPacket(void)
(0228) {

⌨️ 快捷键说明

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