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

📄 nrf2401.lst

📁 著名的RF射频芯片nRF2401应用程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
    0051 E5CF      LDI	R28,0x5F
    0052 E0D4      LDI	R29,4
    0053 BFCD      OUT	0x3D,R28
    0054 BFDE      OUT	0x3E,R29
    0055 51CE      SUBI	R28,0x1E
    0056 40D0      SBCI	R29,0
    0057 EA0A      LDI	R16,0xAA
    0058 8308      STD	Y+0,R16
    0059 2400      CLR	R0
    005A EBE9      LDI	R30,0xB9
    005B E0F0      LDI	R31,0
    005C E010      LDI	R17,0
    005D 3DE0      CPI	R30,0xD0
    005E 07F1      CPC	R31,R17
    005F F011      BEQ	0x0062
    0060 9201      ST	R0,Z+
    0061 CFFB      RJMP	0x005D
    0062 8300      STD	Z+0,R16
    0063 E4E8      LDI	R30,0x48
    0064 E0F0      LDI	R31,0
    0065 E6A0      LDI	R26,0x60
    0066 E0B0      LDI	R27,0
    0067 E010      LDI	R17,0
    0068 3AE1      CPI	R30,0xA1
    0069 07F1      CPC	R31,R17
    006A F021      BEQ	0x006F
    006B 95C8      LPM
    006C 9631      ADIW	R30,1
    006D 920D      ST	R0,X+
    006E CFF9      RJMP	0x0068
    006F D224      RCALL	_main
_exit:
    0070 CFFF      RJMP	_exit
_display4:
  kk                   --> R20
    0071 D441      RCALL	push_gset2
    0072 2F40      MOV	R20,R16
FILE: F:\programme\nrf2401\display.c
(0001) //************************************************************//
(0002) //本模块用于显示程序运行过程中需要显示的一些数据,可按需要改动
(0003) //注意:将要显示的数据设为外部变量
(0004) //周金广做
(0005) //**********************************************************//
(0006) #include <stdio.h>
(0007) #include <iom8v.h>
(0008) #include <macros.h>
(0009) 
(0010) 
(0011) void display4(unsigned char kk)  //临时少麻烦
(0012) { 
(0013)   lcd_write_comm(0x30);
    0073 E300      LDI	R16,0x30
    0074 E010      LDI	R17,0
    0075 D144      RCALL	_lcd_write_comm
(0014)   lcd_write_comm(0x0c);
    0076 E00C      LDI	R16,0xC
    0077 E010      LDI	R17,0
    0078 D141      RCALL	_lcd_write_comm
(0015)   switch(kk)
    0079 2F64      MOV	R22,R20
    007A 2777      CLR	R23
    007B 3263      CPI	R22,0x23
    007C E0E0      LDI	R30,0
    007D 077E      CPC	R23,R30
    007E F409      BNE	0x0080
    007F C05B      RJMP	0x00DB
    0080 E283      LDI	R24,0x23
    0081 E090      LDI	R25,0
    0082 1786      CP	R24,R22
    0083 0797      CPC	R25,R23
    0084 F0BC      BLT	0x009C
    0085 3060      CPI	R22,0
    0086 E0E0      LDI	R30,0
    0087 077E      CPC	R23,R30
    0088 F40C      BGE	0x008A
    0089 C05B      RJMP	0x00E5
    008A E180      LDI	R24,0x10
    008B E090      LDI	R25,0
    008C 1786      CP	R24,R22
    008D 0797      CPC	R25,R23
    008E F40C      BGE	0x0090
    008F C055      RJMP	0x00E5
    0090 E286      LDI	R24,0x26
    0091 E090      LDI	R25,0
    0092 2F06      MOV	R16,R22
    0093 2F17      MOV	R17,R23
    0094 0F00      LSL	R16
    0095 1F11      ROL	R17
    0096 0F08      ADD	R16,R24
    0097 1F19      ADC	R17,R25
    0098 D433      RCALL	lpm16
    0099 2FE0      MOV	R30,R16
    009A 2FF1      MOV	R31,R17
    009B 9409      IJMP
    009C 326A      CPI	R22,0x2A
    009D E0E0      LDI	R30,0
    009E 077E      CPC	R23,R30
    009F F409      BNE	0x00A1
    00A0 C030      RJMP	0x00D1
    00A1 C043      RJMP	0x00E5
(0016) 	 {case 1: 
(0017) 	  case 2: 
(0018) 	  case 3: 
(0019) 	  case 4:
(0020) 	  case 5:
(0021) 	  case 6:  
(0022) 	  case 7: 
(0023) 	  case 8:
(0024) 	  case 9: 		  
(0025) 	  case 0:  lcd_write_comm(0x98); displaybyte2(kk); break;	
    00A2 E908      LDI	R16,0x98
    00A3 E010      LDI	R17,0
    00A4 D115      RCALL	_lcd_write_comm
    00A5 2F04      MOV	R16,R20
    00A6 2711      CLR	R17
    00A7 D077      RCALL	_displaybyte2
    00A8 C045      RJMP	0x00EE
(0026) 	  case 13: lcd_write_comm(0x98);lcd_write_data('F');lcd_write_data('1'); break;		
    00A9 E908      LDI	R16,0x98
    00AA E010      LDI	R17,0
    00AB D10E      RCALL	_lcd_write_comm
    00AC E406      LDI	R16,0x46
    00AD E010      LDI	R17,0
    00AE D0F6      RCALL	_lcd_write_data
    00AF E301      LDI	R16,0x31
    00B0 E010      LDI	R17,0
    00B1 D0F3      RCALL	_lcd_write_data
    00B2 C03B      RJMP	0x00EE
(0027) 	  case 14: lcd_write_comm(0x98);lcd_write_data('F');lcd_write_data('2'); break; 
    00B3 E908      LDI	R16,0x98
    00B4 E010      LDI	R17,0
    00B5 D104      RCALL	_lcd_write_comm
    00B6 E406      LDI	R16,0x46
    00B7 E010      LDI	R17,0
    00B8 D0EC      RCALL	_lcd_write_data
    00B9 E302      LDI	R16,0x32
    00BA E010      LDI	R17,0
    00BB D0E9      RCALL	_lcd_write_data
    00BC C031      RJMP	0x00EE
(0028) 	  case 15: lcd_write_comm(0x98);lcd_write_data('F');lcd_write_data('2'); break;	  
    00BD E908      LDI	R16,0x98
    00BE E010      LDI	R17,0
    00BF D0FA      RCALL	_lcd_write_comm
    00C0 E406      LDI	R16,0x46
    00C1 E010      LDI	R17,0
    00C2 D0E2      RCALL	_lcd_write_data
    00C3 E302      LDI	R16,0x32
    00C4 E010      LDI	R17,0
    00C5 D0DF      RCALL	_lcd_write_data
    00C6 C027      RJMP	0x00EE
(0029) 	  case 16: lcd_write_comm(0x98);lcd_write_data('F');lcd_write_data('4');  break; 
    00C7 E908      LDI	R16,0x98
    00C8 E010      LDI	R17,0
    00C9 D0F0      RCALL	_lcd_write_comm
    00CA E406      LDI	R16,0x46
    00CB E010      LDI	R17,0
    00CC D0D8      RCALL	_lcd_write_data
    00CD E304      LDI	R16,0x34
    00CE E010      LDI	R17,0
    00CF D0D5      RCALL	_lcd_write_data
    00D0 C01D      RJMP	0x00EE
(0030) 	  case '*':lcd_write_comm(0x98);lcd_write_data(' ');lcd_write_data('*'); break;		
    00D1 E908      LDI	R16,0x98
    00D2 E010      LDI	R17,0
    00D3 D0E6      RCALL	_lcd_write_comm
    00D4 E200      LDI	R16,0x20
    00D5 E010      LDI	R17,0
    00D6 D0CE      RCALL	_lcd_write_data
    00D7 E20A      LDI	R16,0x2A
    00D8 E010      LDI	R17,0
    00D9 D0CB      RCALL	_lcd_write_data
    00DA C013      RJMP	0x00EE
(0031) 	  case '#':lcd_write_comm(0x98);lcd_write_data(' ');lcd_write_data('#');   break;
    00DB E908      LDI	R16,0x98
    00DC E010      LDI	R17,0
    00DD D0DC      RCALL	_lcd_write_comm
    00DE E200      LDI	R16,0x20
    00DF E010      LDI	R17,0
    00E0 D0C4      RCALL	_lcd_write_data
    00E1 E203      LDI	R16,0x23
    00E2 E010      LDI	R17,0
    00E3 D0C1      RCALL	_lcd_write_data
    00E4 C009      RJMP	0x00EE
(0032) 	  default: lcd_write_comm(0x98);lcd_write_data('N');lcd_write_data('O'); break;
    00E5 E908      LDI	R16,0x98
    00E6 E010      LDI	R17,0
    00E7 D0D2      RCALL	_lcd_write_comm
    00E8 E40E      LDI	R16,0x4E
    00E9 E010      LDI	R17,0
    00EA D0BA      RCALL	_lcd_write_data
    00EB E40F      LDI	R16,0x4F
    00EC E010      LDI	R17,0
    00ED D0B7      RCALL	_lcd_write_data
    00EE D3B8      RCALL	pop_gset2
    00EF 9508      RET
_displaybyte:
  data                 --> R20
    00F0 D3C4      RCALL	push_gset1
    00F1 2F40      MOV	R20,R16
(0033)      }  
(0034)    
(0035) }
(0036) 
(0037) void displaybyte(unsigned char data)
(0038) { 
(0039)   lcd_write_data(data/100%10+0x30);
    00F2 E624      LDI	R18,0x64
    00F3 E030      LDI	R19,0
    00F4 2F04      MOV	R16,R20
    00F5 2711      CLR	R17
    00F6 D37B      RCALL	div16s
    00F7 E02A      LDI	R18,0xA
    00F8 E030      LDI	R19,0
    00F9 D374      RCALL	mod16s
    00FA 5D00      SUBI	R16,0xD0
    00FB 4F1F      SBCI	R17,0xFF
    00FC D0A8      RCALL	_lcd_write_data
(0040)   lcd_write_data(data/10%10+0x30);
    00FD E02A      LDI	R18,0xA
    00FE E030      LDI	R19,0
    00FF 2F04      MOV	R16,R20
    0100 2711      CLR	R17
    0101 D370      RCALL	div16s
    0102 E02A      LDI	R18,0xA
    0103 E030      LDI	R19,0
    0104 D369      RCALL	mod16s
    0105 5D00      SUBI	R16,0xD0
    0106 4F1F      SBCI	R17,0xFF
    0107 D09D      RCALL	_lcd_write_data
(0041)   lcd_write_data(data%10+0x30); 
    0108 E02A      LDI	R18,0xA
    0109 E030      LDI	R19,0
    010A 2F04      MOV	R16,R20
    010B 2711      CLR	R17
    010C D361      RCALL	mod16s
    010D 5D00      SUBI	R16,0xD0
    010E 4F1F      SBCI	R17,0xFF
    010F D095      RCALL	_lcd_write_data
    0110 D3A7      RCALL	pop_gset1
    0111 9508      RET
_displayint:
  data                 --> R20
  address              --> R22
    0112 D3A0      RCALL	push_gset2
    0113 2F42      MOV	R20,R18
    0114 2F60      MOV	R22,R16
(0042) }
(0043) void displayint(unsigned char address,unsigned char data)
(0044) {   lcd_write_comm(0x30);
    0115 E300      LDI	R16,0x30
    0116 E010      LDI	R17,0
    0117 D0A2      RCALL	_lcd_write_comm
(0045)     lcd_write_comm(address);
    0118 2F06      MOV	R16,R22
    0119 2711      CLR	R17
    011A D09F      RCALL	_lcd_write_comm
(0046) 	displaybyte(data);
    011B 2F04      MOV	R16,R20
    011C DFD3      RCALL	_displaybyte
    011D D389      RCALL	pop_gset2
    011E 9508      RET
_displaybyte2:
  data                 --> R20
    011F D395      RCALL	push_gset1
    0120 2F40      MOV	R20,R16
(0047) }
(0048) 
(0049) void displaybyte2(unsigned char data)
(0050) { 
(0051)   lcd_write_data(data/10%10+0x30);
    0121 E02A      LDI	R18,0xA
    0122 E030      LDI	R19,0
    0123 2F04      MOV	R16,R20
    0124 2711      CLR	R17
    0125 D34C      RCALL	div16s
    0126 E02A      LDI	R18,0xA
    0127 E030      LDI	R19,0
    0128 D345      RCALL	mod16s
    0129 5D00      SUBI	R16,0xD0
    012A 4F1F      SBCI	R17,0xFF
    012B D079      RCALL	_lcd_write_data
(0052)   lcd_write_data(data%10+0x30); 
    012C E02A      LDI	R18,0xA
    012D E030      LDI	R19,0
    012E 2F04      MOV	R16,R20
    012F 2711      CLR	R17
    0130 D33D      RCALL	mod16s
    0131 5D00      SUBI	R16,0xD0
    0132 4F1F      SBCI	R17,0xFF
    0133 D071      RCALL	_lcd_write_data
    0134 D383      RCALL	pop_gset1
    0135 9508      RET
_display_char:
  i                    --> R20
  len                  --> R22
  address              --> R20
  Ptr                  --> R10
    0136 D37A      RCALL	push_gset3
    0137 2F42      MOV	R20,R18
    0138 2EA0      MOV	R10,R16
    0139 2EB1      MOV	R11,R17
    013A 816E      LDD	R22,Y+6
(0053) }
(0054) //////////////////////////////////////////////////////////////////////
(0055) //*Ptr       字符串的首地址 
(0056) //address    液晶屏的地址0x80-0x8f,0x90-0x9f之间
(0057) //len        显示的数据的长度,如果不够后面补空格
(0058) /////////////////////////////////////////////////////////////////////
(0059) void display_char(unsigned char *Ptr ,unsigned char address,unsigned char len)
(0060) {   unsigned char i;
(0061) 
(0062)     lcd_write_comm(0x30);
    013B E300      LDI	R16,0x30
    013C E010      LDI	R17,0
    013D D07C      RCALL	_lcd_write_comm
(0063)     lcd_write_comm(address);
    013E 2F04      MOV	R16,R20
    013F 2711      CLR	R17
    0140 D079      RCALL	_lcd_write_comm
(0064)     lcd_write_comm(0x0c);
    0141 E00C      LDI	R16,0xC
    0142 E010      LDI	R17,0
    0143 D076      RCALL	_lcd_write_comm
(0065) 	for(i=0;i<len;i++)
    0144 2744      CLR	R20
    0145 C00F      RJMP	0x0155
(0066) 	{
(0067) 	if(*Ptr!='/0')
    0146 2DEA      MOV	R30,R10
    0147 2DFB      MOV	R31,R11
    0148 8180      LDD	R24,Z+0
    0149 328F      CPI	R24,0x2F
    014A F031      BEQ	0x0151
(0068) 	lcd_write_data(*Ptr++);
    014B 9101      LD	R16,Z+
    014C 2EAE      MOV	R10,R30
    014D 2EBF      MOV	R11,R31
    014E 2711      CLR	R17
    014F D055      RCALL	_lcd_write_data
    0150 C003      RJMP	0x0154
(0069) 	else
(0070) 	lcd_write_data(' ');
    0151 E200      LDI	R16,0x20
    0152 E010      LDI	R17,0
    0153 D051      RCALL	_lcd_write_data
    0154 9543      INC	R20
    0155 1746      CP	R20,R22
    0156 F378      BCS	0x0146
    0157 D351      RCALL	pop_gset3
    0158 9508      RET
_display_int:
  i                    --> R20
  len                  --> R22
  address              --> R20
  Ptr                  --> R10
    0159 D357      RCALL	push_gset3
    015A 2F42      MOV	R20,R18
    015B 2EA0      MOV	R10,R16
    015C 2EB1      MOV	R11,R17
    015D 816E      LDD	R22,Y+6
(0071) 	}
(0072) }
(0073) 
(0074) //////////////////////////////////////////////////////////////////////
(0075) //*Ptr       字符串的首地址 
(0076) //address    液晶屏的地址0x80-0x8f,0x90-0x9f之间
(0077) //len        显示的数据的长度,如果不够后面补空格
(0078) /////////////////////////////////////////////////////////////////////
(0079) void display_int(unsigned char *Ptr ,unsigned char address,unsigned char len)
(0080) {   unsigned char i;
(0081) 
(0082)     lcd_write_comm(0x30);
    015E E300      LDI	R16,0x30
    015F E010      LDI	R17,0
    0160 D059      RCALL	_lcd_write_comm
(0083)     lcd_write_comm(address);
    0161 2F04      MOV	R16,R20
    0162 2711      CLR	R17
    0163 D056      RCALL	_lcd_write_comm
(0084)     lcd_write_comm(0x0c);
    0164 E00C      LDI	R16,0xC
    0165 E010      LDI	R17,0
    0166 D053      RCALL	_lcd_write_comm

⌨️ 快捷键说明

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