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

📄 oled.lst

📁 nRF24L01详细编程资料
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0165) 		if(accept_flag=1)
      B3 E081      LDI	R24,1
      B4 9380 0145 STS	accept_flag,R24
      B6 2388      TST	R24
      B7 F0E9      BEQ	0x00D5
(0166) 		{
(0167) 		   accept_time++;
      B8 9180 0146 LDS	R24,accept_time
      BA 9190 0147 LDS	R25,accept_time+1
      BC 9601      ADIW	R24,1
      BD 9390 0147 STS	accept_time+1,R25
      BF 9380 0146 STS	accept_time,R24
(0168) 		   delayms(100);
      C1 E604      LDI	R16,0x64
      C2 E010      LDI	R17,0
      C3 D03C      RCALL	_delayms
(0169) 		   if(accept_time>1000)
      C4 EE88      LDI	R24,0xE8
      C5 E093      LDI	R25,3
      C6 9020 0146 LDS	R2,accept_time
      C8 9030 0147 LDS	R3,accept_time+1
      CA 1582      CP	R24,R2
      CB 0593      CPC	R25,R3
      CC F440      BCC	0x00D5
(0170) 		   {
(0171) 		   	 accept_flag=0;
      CD 2422      CLR	R2
      CE 9220 0145 STS	accept_flag,R2
(0172) 			 accept_time=0;
      D0 2433      CLR	R3
      D1 9230 0147 STS	accept_time+1,R3
      D3 9220 0146 STS	accept_time,R2
      D5 CF94      RJMP	0x006A
      D6 9621      ADIW	R28,1
      D7 9508      RET
(0173) 		   }
(0174) 		}	
(0175) 	}
(0176) 
(0177) 
(0178) }
(0179) /*-----------------------------------------------------------------------------
(0180)    Module:   init_CPU
(0181)    Function: Initialization of CPU
(0182) ------------------------------------------------------------------------------*/
(0183) void init_CPU (void)
(0184) {
(0185)  	MCUCR = 0x00;	// 
_init_CPU:
      D8 2422      CLR	R2
      D9 BE25      OUT	0x35,R2
(0186) 	EICRA = 0x00; //extended ext ints
      DA 9220 0069 STS	0x0069,R2
(0187)     EIMSK = 0x00;
      DC BA2D      OUT	0x1D,R2
(0188) 	 
(0189) 	TIMSK0 = 0x01; //timer 0 interrupt sources
      DD E081      LDI	R24,1
      DE 9380 006E STS	0x006E,R24
(0190) 	TIMSK1 = 0x00; //timer 1 interrupt sources
      E0 9220 006F STS	0x006F,R2
(0191) 	TIMSK2 = 0x00; //timer 2 interrupt sources
      E2 9220 0070 STS	0x0070,R2
(0192) 	 CLI(); //disable all interrupts
      E4 94F8      BCLR	7
(0193) 	 NOP();
      E5 0000      NOP
(0194) 	PORTB = 0x81;
      E6 E881      LDI	R24,0x81
      E7 B985      OUT	0x05,R24
(0195)  	DDRB  = 0xf3;
      E8 EF83      LDI	R24,0xF3
      E9 B984      OUT	0x04,R24
(0196) 	PORTD = 0x80;
      EA E880      LDI	R24,0x80
      EB B98B      OUT	0x0B,R24
(0197) 	DDRD  = 0xff;
      EC EF8F      LDI	R24,0xFF
      ED B98A      OUT	0x0A,R24
(0198) 	PORTC = 0x80;
      EE E880      LDI	R24,0x80
      EF B988      OUT	0x08,R24
(0199) 	DDRC  = 0x78;
      F0 E788      LDI	R24,0x78
      F1 B987      OUT	0x07,R24
(0200)     nRF24L01_CEL;
      F2 985F      CBI	0x0B,7
(0201) 	delay();
      F3 D005      RCALL	_delay
(0202) 	nRF24L01_CSNH;			// Spi disable
      F4 9A5E      SBI	0x0B,6
(0203) 	delay();
      F5 D003      RCALL	_delay
(0204) 	nRF24L01_SCKL;	
      F6 9829      CBI	0x05,1
(0205) 	delay();
      F7 D001      RCALL	_delay
      F8 9508      RET
(0206) }
(0207) void delay(void)//
(0208) {
(0209) 	NOP();
_delay:
      F9 0000      NOP
(0210) 	NOP();
      FA 0000      NOP
(0211) 	NOP();
      FB 0000      NOP
(0212) 	NOP();
      FC 0000      NOP
(0213) 	NOP();
      FD 0000      NOP
(0214) 	NOP();
      FE 0000      NOP
      FF 9508      RET
(0215) }
(0216) void delayms(unsigned short	dly)//
(0217) {
(0218) 	for(;dly>0;dly--) ;
_delayms:
  dly                  --> R16
     100 C002      RJMP	0x0103
     101 5001      SUBI	R16,1
     102 4010      SBCI	R17,0
     103 3000      CPI	R16,0
     104 0701      CPC	R16,R17
     105 F7D9      BNE	0x0101
     106 9508      RET
(0219) }
(0220) 
(0221) void clear_buf(unsigned char	*ptr,unsigned char number)//清零buffer,指定字节个数
(0222) {
(0223) 	for (;number>0;number--) *ptr++=0;
_clear_buf:
  number               --> R18
  ptr                  --> R16
     107 C005      RJMP	0x010D
     108 2422      CLR	R2
     109 01F8      MOVW	R30,R16
     10A 9221      ST	R2,Z+
     10B 018F      MOVW	R16,R30
     10C 952A      DEC	R18
     10D E080      LDI	R24,0
     10E 1782      CP	R24,R18
     10F F3C0      BCS	0x0108
     110 9508      RET
_SPI_RW:
  bit_ctr              --> R22
  byte                 --> R20
     111 D0C5      RCALL	push_xgsetF000
     112 2F40      MOV	R20,R16
(0224) }
(0225) //------------------------------------------------------
(0226) /**************************************************
(0227) Function: SPI_RW();
(0228) 
(0229) Description:
(0230)   Writes one byte to nRF24L01, and return the byte read
(0231)   from nRF24L01 during write, according to SPI protocol  */
(0232) /**************************************************/
(0233) unsigned char SPI_RW(unsigned char byte)
(0234) {
(0235) 	unsigned char  bit_ctr;	
(0236)    	for(bit_ctr=0;bit_ctr<8;bit_ctr++)   	// output 8-bit
     113 2766      CLR	R22
     114 C00F      RJMP	0x0124
(0237)    	{
(0238)    		if(byte & 0x80) 
     115 FF47      SBRS	R20,7
     116 C002      RJMP	0x0119
(0239)    			nRF24L01_MOSIH;
     117 9A28      SBI	0x05,0
     118 C001      RJMP	0x011A
(0240)    		else 
(0241)    			nRF24L01_MOSIL;
     119 9828      CBI	0x05,0
(0242) 		delay();
     11A DFDE      RCALL	_delay
(0243)    		byte = (byte << 1);           		// shift next bit into MSB..
     11B 0F44      LSL	R20
(0244)    		nRF24L01_SCKH;
     11C 9A29      SBI	0x05,1
(0245) 		delay();
     11D DFDB      RCALL	_delay
(0246)  		if(PINB&0x08) byte |= 1;
     11E 9B1B      SBIS	0x03,3
     11F C001      RJMP	0x0121
     120 6041      ORI	R20,1
(0247)    		nRF24L01_SCKL;
     121 9829      CBI	0x05,1
(0248) 		delay();
     122 DFD6      RCALL	_delay
     123 9563      INC	R22
     124 3068      CPI	R22,0x8
     125 F378      BCS	0x0115
(0249)    	}
(0250)     return(byte);           		  		// return read byte
     126 2F04      MOV	R16,R20
     127 C0B4      RJMP	pop_xgsetF000
_SPI_RW_Reg:
  status               --> R10
  value                --> R12
  reg                  --> R10
     128 D0A9      RCALL	push_xgset003C
     129 2EC2      MOV	R12,R18
     12A 2EA0      MOV	R10,R16
(0251) }
(0252) /**************************************************
(0253) Function: SPI_RW_Reg();
(0254) 
(0255) Description:
(0256)   Writes value 'value' to register 'reg' */
(0257) /**************************************************/
(0258) unsigned char SPI_RW_Reg(unsigned char reg, unsigned char value)
(0259) {
(0260) 	unsigned char status;
(0261) 	nRF24L01_CSNL;
     12B 985E      CBI	0x0B,6
(0262) 	delay();
     12C DFCC      RCALL	_delay
(0263) 	status = SPI_RW(reg);      // select register
     12D 2D0A      MOV	R16,R10
     12E DFE2      RCALL	_SPI_RW
     12F 2EA0      MOV	R10,R16
(0264)   	SPI_RW(value);             // ..and write value to it..
     130 2D0C      MOV	R16,R12
     131 DFDF      RCALL	_SPI_RW
(0265) 	nRF24L01_CSNH;
     132 9A5E      SBI	0x0B,6
(0266) 	delay();
     133 DFC5      RCALL	_delay
(0267)   	return(status);            // return nRF24L01 status byte
     134 2D0A      MOV	R16,R10
     135 C08A      RJMP	pop_xgset003C
_SPI_Read:
  reg_val              --> R10
  reg                  --> R10
     136 92AA      ST	R10,-Y
     137 92BA      ST	R11,-Y
     138 2EA0      MOV	R10,R16
(0268) }
(0269) /**************************************************
(0270) Function: SPI_Read();
(0271) 
(0272) Description:
(0273)   Read one byte from nRF24L01 register, 'reg'  */
(0274) /**************************************************/
(0275) unsigned char SPI_Read(unsigned char reg)
(0276) {
(0277) 	unsigned char reg_val;
(0278) 	nRF24L01_CSNL;
     139 985E      CBI	0x0B,6
(0279) 	delay();
     13A DFBE      RCALL	_delay
(0280)   	SPI_RW(reg);            // Select register to read from..
     13B 2D0A      MOV	R16,R10
     13C DFD4      RCALL	_SPI_RW
(0281)   	reg_val = SPI_RW(0);    // ..then read registervalue
     13D 2700      CLR	R16
     13E DFD2      RCALL	_SPI_RW
     13F 2EA0      MOV	R10,R16
(0282) 	nRF24L01_CSNH;
     140 9A5E      SBI	0x0B,6
(0283) 	delay();
     141 DFB7      RCALL	_delay
(0284)   	return(reg_val);        // return register value
     142 2D0A      MOV	R16,R10
     143 90B9      LD	R11,Y+
     144 90A9      LD	R10,Y+
     145 9508      RET
_SPI_Read_Buf:
  status               --> R10
  byte_ctr             --> R12
  bytes                --> Y,+6

⌨️ 快捷键说明

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