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

📄 nrf.lst

📁 基于m16的nrf905接收发送程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
      2E E5CF      LDI	R28,0x5F
      2F E0D4      LDI	R29,4
      30 BFCD      OUT	0x3D,R28
      31 BFDE      OUT	0x3E,R29
      32 51CE      SUBI	R28,0x1E
      33 40D0      SBCI	R29,0
      34 EA0A      LDI	R16,0xAA
      35 8308      STD	Y+0,R16
      36 2400      CLR	R0
      37 E6E8      LDI	R30,0x68
      38 E0F0      LDI	R31,0
      39 E010      LDI	R17,0
      3A 36E8      CPI	R30,0x68
      3B 07F1      CPC	R31,R17
      3C F011      BEQ	0x003F
      3D 9201      ST	R0,Z+
      3E CFFB      RJMP	0x003A
      3F 8300      STD	Z+0,R16
      40 E5E4      LDI	R30,0x54
      41 E0F0      LDI	R31,0
      42 E6A0      LDI	R26,0x60
      43 E0B0      LDI	R27,0
      44 E010      LDI	R17,0
      45 E000      LDI	R16,0
      46 BF0B      OUT	0x3B,R16
      47 35EC      CPI	R30,0x5C
      48 07F1      CPC	R31,R17
      49 F021      BEQ	0x004E
      4A 95C8      LPM
      4B 9631      ADIW	R30,1
      4C 920D      ST	R0,X+
      4D CFF9      RJMP	0x0047
      4E 940E 0132 CALL	_main
_exit:
      50 CFFF      RJMP	_exit
FILE: C:\DOCUME~1\Administrator\桌面\nrftest\nrf_main.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #include "nrf905.h"
(0004) #include "lcd.h"
(0005) #include "delay.h"
(0006) 
(0007) void led_on( void )
(0008) {
(0009) DDRD |= ( 1 << PD0 );
_led_on:
      51 9A88      SBI	0x11,0
(0010) PORTD &=~ ( 1 << PB0 );
      52 9890      CBI	0x12,0
      53 9508      RET
(0011) }
(0012) void led_of( void )
(0013) {
(0014) DDRD |= ( 1 << PB0 );
_led_of:
      54 9A88      SBI	0x11,0
(0015) PORTD |= ( 1 << PB0 );
      55 9A90      SBI	0x12,0
      56 9508      RET
(0016) }
(0017) 
(0018) void port_key_init( void )
(0019) {
(0020)  	 DDRA = 0X00;
_port_key_init:
      57 2422      CLR	R2
      58 BA2A      OUT	0x1A,R2
(0021) 	 PORTA = 0XFF;
      59 EF8F      LDI	R24,0xFF
      5A BB8B      OUT	0x1B,R24
      5B 9508      RET
_get_key:
      5C 934A      ST	R20,-Y
      5D 935A      ST	R21,-Y
      5E 9721      SBIW	R28,1
(0022) }
(0023) 
(0024) void get_key( void )
(0025) {
(0026)  	 switch( PINA & 0xff )
      5F B349      IN	R20,0x19
      60 2755      CLR	R21
      61 7050      ANDI	R21,0
      62 3D4F      CPI	R20,0xDF
      63 E0E0      LDI	R30,0
      64 075E      CPC	R21,R30
      65 F409      BNE	0x0067
      66 C067      RJMP	0x00CE
      67 ED8F      LDI	R24,0xDF
      68 E090      LDI	R25,0
      69 1784      CP	R24,R20
      6A 0795      CPC	R25,R21
      6B F084      BLT	0x007C
      6C 374F      CPI	R20,0x7F
      6D E0E0      LDI	R30,0
      6E 075E      CPC	R21,R30
      6F F409      BNE	0x0071
      70 C071      RJMP	0x00E2
      71 374F      CPI	R20,0x7F
      72 E0E0      LDI	R30,0
      73 075E      CPC	R21,R30
      74 F40C      BGE	0x0076
      75 C075      RJMP	0x00EB
      76 3B4F      CPI	R20,0xBF
      77 E0E0      LDI	R30,0
      78 075E      CPC	R21,R30
      79 F409      BNE	0x007B
      7A C05D      RJMP	0x00D8
      7B C06F      RJMP	0x00EB
      7C 3E4F      CPI	R20,0xEF
      7D E0E0      LDI	R30,0
      7E 075E      CPC	R21,R30
      7F F409      BNE	0x0081
      80 C043      RJMP	0x00C4
      81 3E4F      CPI	R20,0xEF
      82 E0E0      LDI	R30,0
      83 075E      CPC	R21,R30
      84 F40C      BGE	0x0086
      85 C065      RJMP	0x00EB
      86 3F47      CPI	R20,0xF7
      87 E0E0      LDI	R30,0
      88 075E      CPC	R21,R30
      89 F181      BEQ	0x00BA
      8A 3F4B      CPI	R20,0xFB
      8B E0E0      LDI	R30,0
      8C 075E      CPC	R21,R30
      8D F111      BEQ	0x00B0
      8E 3F4D      CPI	R20,0xFD
      8F E0E0      LDI	R30,0
      90 075E      CPC	R21,R30
      91 F0A1      BEQ	0x00A6
      92 3F4E      CPI	R20,0xFE
      93 E0E0      LDI	R30,0
      94 075E      CPC	R21,R30
      95 F031      BEQ	0x009C
      96 3F4F      CPI	R20,0xFF
      97 E0E0      LDI	R30,0
      98 075E      CPC	R21,R30
      99 F409      BNE	0x009B
      9A C050      RJMP	0x00EB
      9B C04F      RJMP	0x00EB
(0027) 	 {
(0028) 	 case 0b11111111: break;
(0029) 	 case 0b11111110: nrf905_SendData('0'); LCD_write_char( 1, 8, '0' ); break;
      9C E300      LDI	R16,0x30
      9D 940E 01DA CALL	_nrf905_SendData
      9F E380      LDI	R24,0x30
      A0 8388      STD	Y+0,R24
      A1 E028      LDI	R18,0x8
      A2 E001      LDI	R16,1
      A3 940E 02B3 CALL	_LCD_write_char
      A5 C045      RJMP	0x00EB
(0030) 	 case 0b11111101: nrf905_SendData('1'); LCD_write_char( 1, 8, '1' ); break;
      A6 E301      LDI	R16,0x31
      A7 940E 01DA CALL	_nrf905_SendData
      A9 E381      LDI	R24,0x31
      AA 8388      STD	Y+0,R24
      AB E028      LDI	R18,0x8
      AC E001      LDI	R16,1
      AD 940E 02B3 CALL	_LCD_write_char
      AF C03B      RJMP	0x00EB
(0031) 	 case 0b11111011: nrf905_SendData('2'); LCD_write_char( 1, 8, '2' ); break;
      B0 E302      LDI	R16,0x32
      B1 940E 01DA CALL	_nrf905_SendData
      B3 E382      LDI	R24,0x32
      B4 8388      STD	Y+0,R24
      B5 E028      LDI	R18,0x8
      B6 E001      LDI	R16,1
      B7 940E 02B3 CALL	_LCD_write_char
      B9 C031      RJMP	0x00EB
(0032) 	 case 0b11110111: nrf905_SendData('3'); LCD_write_char( 1, 8, '3' ); break;
      BA E303      LDI	R16,0x33
      BB 940E 01DA CALL	_nrf905_SendData
      BD E383      LDI	R24,0x33
      BE 8388      STD	Y+0,R24
      BF E028      LDI	R18,0x8
      C0 E001      LDI	R16,1
      C1 940E 02B3 CALL	_LCD_write_char
      C3 C027      RJMP	0x00EB
(0033) 	 case 0b11101111: nrf905_SendData('4'); LCD_write_char( 1, 8, '4' ); break;
      C4 E304      LDI	R16,0x34
      C5 940E 01DA CALL	_nrf905_SendData
      C7 E384      LDI	R24,0x34
      C8 8388      STD	Y+0,R24
      C9 E028      LDI	R18,0x8
      CA E001      LDI	R16,1
      CB 940E 02B3 CALL	_LCD_write_char
      CD C01D      RJMP	0x00EB
(0034) 	 case 0b11011111: nrf905_SendData('5'); LCD_write_char( 1, 8, '5' ); break;
      CE E305      LDI	R16,0x35
      CF 940E 01DA CALL	_nrf905_SendData
      D1 E385      LDI	R24,0x35
      D2 8388      STD	Y+0,R24
      D3 E028      LDI	R18,0x8
      D4 E001      LDI	R16,1
      D5 940E 02B3 CALL	_LCD_write_char
      D7 C013      RJMP	0x00EB
(0035) 	 case 0b10111111: nrf905_SendData('6'); LCD_write_char( 1, 8, '6' ); break;
      D8 E306      LDI	R16,0x36
      D9 940E 01DA CALL	_nrf905_SendData
      DB E386      LDI	R24,0x36
      DC 8388      STD	Y+0,R24
      DD E028      LDI	R18,0x8
      DE E001      LDI	R16,1
      DF 940E 02B3 CALL	_LCD_write_char
      E1 C009      RJMP	0x00EB
(0036) 	 case 0b01111111: nrf905_SendData('7'); LCD_write_char( 1, 8, '7' ); break;
      E2 E307      LDI	R16,0x37
      E3 940E 01DA CALL	_nrf905_SendData
      E5 E387      LDI	R24,0x37
      E6 8388      STD	Y+0,R24
      E7 E028      LDI	R18,0x8
      E8 E001      LDI	R16,1
      E9 940E 02B3 CALL	_LCD_write_char
      EB 9621      ADIW	R28,1
      EC 9159      LD	R21,Y+
      ED 9149      LD	R20,Y+
      EE 9508      RET
(0037) 	 }
(0038) }
(0039) 
(0040) void led_port_init( void )
(0041) {
(0042) DDRA = 0xff;
_led_port_init:
      EF EF8F      LDI	R24,0xFF
      F0 BB8A      OUT	0x1A,R24
(0043) PORTA = 0XFF;
      F1 BB8B      OUT	0x1B,R24
      F2 9508      RET
_led_onon:
  t                    --> R16
      F3 934A      ST	R20,-Y
      F4 935A      ST	R21,-Y
(0044) }
(0045) 
(0046) void led_onon( uchar t )
(0047) {
(0048) switch( t )
      F5 2F40      MOV	R20,R16
      F6 2755      CLR	R21
      F7 3340      CPI	R20,0x30
      F8 E0E0      LDI	R30,0
      F9 075E      CPC	R21,R30
      FA F0E9      BEQ	0x0118
      FB 3341      CPI	R20,0x31
      FC E0E0      LDI	R30,0
      FD 075E      CPC	R21,R30
      FE F0E1      BEQ	0x011B
      FF 3342      CPI	R20,0x32
     100 E0E0      LDI	R30,0
     101 075E      CPC	R21,R30
     102 F0D9      BEQ	0x011E
     103 3343      CPI	R20,0x33
     104 E0E0      LDI	R30,0
     105 075E      CPC	R21,R30
     106 F0D1      BEQ	0x0121
     107 3344      CPI	R20,0x34
     108 E0E0      LDI	R30,0
     109 075E      CPC	R21,R30
     10A F0C9      BEQ	0x0124
     10B 3345      CPI	R20,0x35
     10C E0E0      LDI	R30,0
     10D 075E      CPC	R21,R30
     10E F0C1      BEQ	0x0127
     10F 3346      CPI	R20,0x36
     110 E0E0      LDI	R30,0
     111 075E      CPC	R21,R30
     112 F0B9      BEQ	0x012A
     113 3347      CPI	R20,0x37
     114 E0E0      LDI	R30,0
     115 075E      CPC	R21,R30
     116 F0B1      BEQ	0x012D
     117 C017      RJMP	0x012F
(0049) {
(0050) case '0': PORTA = 0B11111110; break; 
     118 EF8E      LDI	R24,0xFE
     119 BB8B      OUT	0x1B,R24
     11A C014      RJMP	0x012F
(0051) case '1': PORTA = 0B11111101; break;
     11B EF8D      LDI	R24,0xFD
     11C BB8B      OUT	0x1B,R24
     11D C011      RJMP	0x012F
(0052) case '2': PORTA = 0B11111011; break;
     11E EF8B      LDI	R24,0xFB
     11F BB8B      OUT	0x1B,R24
     120 C00E      RJMP	0x012F
(0053) case '3': PORTA = 0B11110111; break;
     121 EF87      LDI	R24,0xF7
     122 BB8B      OUT	0x1B,R24
     123 C00B      RJMP	0x012F
(0054) case '4': PORTA = 0B11101111; break;
     124 EE8F      LDI	R24,0xEF
     125 BB8B      OUT	0x1B,R24
     126 C008      RJMP	0x012F
(0055) case '5': PORTA = 0B11011111; break;
     127 ED8F      LDI	R24,0xDF
     128 BB8B      OUT	0x1B,R24
     129 C005      RJMP	0x012F
(0056) case '6': PORTA = 0B10111111; break;
     12A EB8F      LDI	R24,0xBF
     12B BB8B      OUT	0x1B,R24
     12C C002      RJMP	0x012F
(0057) case '7': PORTA = 0B01111111; break;
     12D E78F      LDI	R24,0x7F
     12E BB8B      OUT	0x1B,R24
(0058) default :  break;
     12F 9159      LD	R21,Y+
     130 9149      LD	R20,Y+
     131 9508      RET
_main:
  r_tmp                --> R10
     132 9722      SBIW	R28,2
(0059) }
(0060) }
(0061) 
(0062) #define receive
(0063) //#define send
(0064) void main( void )
(0065) {
(0066)      uchar r_tmp;
(0067)  	 port_key_init();
     133 DF23      RCALL	_port_key_init
(0068) 	 led_port_init();	   
     134 DFBA      RCALL	_led_port_init
(0069)  	 LCD_init();
     135 940E 0273 CALL	_LCD_init
(0070) 	 SPI_Init();
     137 940E 018F CALL	_SPI_Init
(0071) 	 nrf905_Init();
     139 940E 01B9 CALL	_nrf905_Init
(0072) 	 
(0073) 	 #ifdef send
(0074) 	 	 
(0075) 	 LCD_write_string( 2, 3, "fasong" );
(0076) 	 while( 1 ) get_key();	 
(0077) 	 
(0078) 	 #endif
(0079) 	 
(0080) 	 #ifdef receive
(0081) 	 LCD_write_string( 2, 3, "jieshou" );
     13B E680      LDI	R24,0x60
     13C E090      LDI	R25,0
     13D 8399      STD	Y+1,R25
     13E 8388      STD	Y+0,R24
     13F E023      LDI	R18,3
     140 E002      LDI	R16,2
     141 940E 029E CALL	_LCD_write_string
     143 C00E      RJMP	0x0152
(0082) 	 
(0083) 	 while( 1 )
(0084) 	 {
(0085) 	  	led_of();
     144 DF0F      RCALL	_led_of
     145 C00A      RJMP	0x0150
(0086) 	    //led_on();
(0087) 		while( PINB & 0b00001000 )
(0088) 		{ 
(0089) 		   /*
(0090) 		   led_on();
(0091) 		   r_tmp = nrf905_ReadData();
(0092) 		   LCD_write_char( 1, 6, r_tmp );
(0093) 		   delay_nms( 1 );	
(0094) 		   */
(0095) 		   r_tmp = nrf905_ReadData();
     146 940E 01E4 CALL	_nrf905_ReadData
     148 2EA0      MOV	R10,R16
(0096) 		   LCD_write_char( 1, 6, r_tmp );
     149 82A8      STD	Y+0,R10
     14A E026      LDI	R18,6
     14B E001      LDI	R16,1
     14C 940E 02B3 CALL	_LCD_write_char
(0097) 		   led_onon( r_tmp );	 	
     14E 2D0A      MOV	R16,R10
     14F DFA3      RCALL	_led_onon
     150 99B3      SBIC	0x16,3
     151 CFF4      RJMP	0x0146
     152 CFF1      RJMP	0x0144
     153 9622      ADIW	R28,2
     154 9508      RET
_DelayMs:
  i                    --> R10
  ms                   --> R12
     155 92AA      ST	R10,-Y
     156 92CA      ST	R12,-Y
     157 2EC0      MOV	R12,R16
FILE: C:\DOCUME~1\Administrator\桌面\nrftest\nrf905.C
(0001) #define _nrf905_c_
(0002) #include "nrf905.h"
(0003) #include "LCD.h"
(0004) 
(0005) //延时--------------------------------------------------
(0006) void DelayMs( uchar ms )
(0007) {
(0008)  	 char i;
(0009) 	 
(0010) 	 for( i = 0; i < ms; i++ )
     158 24AA      CLR	R10
     159 C004      RJMP	0x015E
(0011)      {
(0012) 	  	 DelayUs( 1000 );
     15A EE08      LDI	R16,0xE8
     15B E013      LDI	R17,3
     15C D006      RCALL	_DelayUs
     15D 94A3      INC	R10
     15E 14AC      CP	R10,R12
     15F F3D0      BCS	0x015A
(0013) 	 }
(0014) 	 
(0015)      return;
     160 90C9      LD	R12,Y+
     161 90A9      LD	R10,Y+
     162 9508      RET

⌨️ 快捷键说明

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