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

📄 new.lst

📁 包含无线收发模块 NREF905的所有功能库函数 本库函数与外部函数接口简单易用
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0129)       {
(0130)        KeyV>>=1;
    030F 902000C8  LDS	R2,KeyV
    0311 9426      LSR	R2
    0312 922000C8  STS	KeyV,R2
(0131)        if(PINB&0x80)
    0314 9BB7      SBIS	0x16,7
    0315 C004      RJMP	0x031A
(0132)        KeyV|=0x80;     
    0316 2D82      MOV	R24,R2
    0317 6880      ORI	R24,0x80
    0318 938000C8  STS	KeyV,R24
(0133)        }
(0134) 	   
(0135)   IntNum++;
    031A 918000C4  LDS	R24,IntNum
    031C 5F8F      SUBI	R24,0xFF
    031D 938000C4  STS	IntNum,R24
(0136)   // while (!Key_CLK); //等待PS/2CLK拉高            use??????
(0137)  if(IntNum>10)
    031F E08A      LDI	R24,0xA
    0320 902000C4  LDS	R2,IntNum
    0322 1582      CP	R24,R2
    0323 F430      BCC	0x032A
(0138)     { 
(0139)       IntNum=0;
    0324 2422      CLR	R2
    0325 922000C4  STS	IntNum,R2
(0140)       KeyFlag=1;
    0327 E081      LDI	R24,1
    0328 938000C7  STS	KeyFlag,R24
(0141)     }
    032A 9029      LD	R2,Y+
    032B BE2F      OUT	0x3F,R2
    032C 9199      LD	R25,Y+
    032D 9189      LD	R24,Y+
    032E 9039      LD	R3,Y+
    032F 9029      LD	R2,Y+
    0330 9518      RETI
_display4:
  kk                   --> R20
    0331 D490      RCALL	push_gset2
    0332 2F40      MOV	R20,R16
FILE: F:\programme\RF905\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);
    0333 E300      LDI	R16,0x30
    0334 E010      LDI	R17,0
    0335 D13E      RCALL	_lcd_write_comm
(0014)   lcd_write_comm(0x0c);
    0336 E00C      LDI	R16,0xC
    0337 E010      LDI	R17,0
    0338 D13B      RCALL	_lcd_write_comm
(0015)   switch(kk)
    0339 2F64      MOV	R22,R20
    033A 2777      CLR	R23
    033B 3263      CPI	R22,0x23
    033C E0E0      LDI	R30,0
    033D 077E      CPC	R23,R30
    033E F409      BNE	0x0340
    033F C05C      RJMP	0x039C
    0340 E283      LDI	R24,0x23
    0341 E090      LDI	R25,0
    0342 1786      CP	R24,R22
    0343 0797      CPC	R25,R23
    0344 F0C4      BLT	0x035D
    0345 3060      CPI	R22,0
    0346 E0E0      LDI	R30,0
    0347 077E      CPC	R23,R30
    0348 F40C      BGE	0x034A
    0349 C05C      RJMP	0x03A6
    034A E180      LDI	R24,0x10
    034B E090      LDI	R25,0
    034C 1786      CP	R24,R22
    034D 0797      CPC	R25,R23
    034E F40C      BGE	0x0350
    034F C056      RJMP	0x03A6
    0350 E002      LDI	R16,2
    0351 E010      LDI	R17,0
    0352 019B      MOVW	R18,R22
    0353 D452      RCALL	empy16s
    0354 01F8      MOVW	R30,R16
    0355 E286      LDI	R24,0x26
    0356 E090      LDI	R25,0
    0357 0FE8      ADD	R30,R24
    0358 1FF9      ADC	R31,R25
    0359 9005      LPM	R0,Z+
    035A 9014      LPM	R1,0(Z)
    035B 01F0      MOVW	R30,R0
    035C 9409      IJMP
    035D 326A      CPI	R22,0x2A
    035E E0E0      LDI	R30,0
    035F 077E      CPC	R23,R30
    0360 F409      BNE	0x0362
    0361 C030      RJMP	0x0392
    0362 C043      RJMP	0x03A6
(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;	
    0363 E908      LDI	R16,0x98
    0364 E010      LDI	R17,0
    0365 D10E      RCALL	_lcd_write_comm
    0366 2F04      MOV	R16,R20
    0367 2711      CLR	R17
    0368 D077      RCALL	_displaybyte2
    0369 C045      RJMP	0x03AF
(0026) 	  case 13: lcd_write_comm(0x98);lcd_write_data('F');lcd_write_data('1'); break;		
    036A E908      LDI	R16,0x98
    036B E010      LDI	R17,0
    036C D107      RCALL	_lcd_write_comm
    036D E406      LDI	R16,0x46
    036E E010      LDI	R17,0
    036F D0EF      RCALL	_lcd_write_data
    0370 E301      LDI	R16,0x31
    0371 E010      LDI	R17,0
    0372 D0EC      RCALL	_lcd_write_data
    0373 C03B      RJMP	0x03AF
(0027) 	  case 14: lcd_write_comm(0x98);lcd_write_data('F');lcd_write_data('2'); break; 
    0374 E908      LDI	R16,0x98
    0375 E010      LDI	R17,0
    0376 D0FD      RCALL	_lcd_write_comm
    0377 E406      LDI	R16,0x46
    0378 E010      LDI	R17,0
    0379 D0E5      RCALL	_lcd_write_data
    037A E302      LDI	R16,0x32
    037B E010      LDI	R17,0
    037C D0E2      RCALL	_lcd_write_data
    037D C031      RJMP	0x03AF
(0028) 	  case 15: lcd_write_comm(0x98);lcd_write_data('F');lcd_write_data('2'); break;	  
    037E E908      LDI	R16,0x98
    037F E010      LDI	R17,0
    0380 D0F3      RCALL	_lcd_write_comm
    0381 E406      LDI	R16,0x46
    0382 E010      LDI	R17,0
    0383 D0DB      RCALL	_lcd_write_data
    0384 E302      LDI	R16,0x32
    0385 E010      LDI	R17,0
    0386 D0D8      RCALL	_lcd_write_data
    0387 C027      RJMP	0x03AF
(0029) 	  case 16: lcd_write_comm(0x98);lcd_write_data('F');lcd_write_data('4');  break; 
    0388 E908      LDI	R16,0x98
    0389 E010      LDI	R17,0
    038A D0E9      RCALL	_lcd_write_comm
    038B E406      LDI	R16,0x46
    038C E010      LDI	R17,0
    038D D0D1      RCALL	_lcd_write_data
    038E E304      LDI	R16,0x34
    038F E010      LDI	R17,0
    0390 D0CE      RCALL	_lcd_write_data
    0391 C01D      RJMP	0x03AF
(0030) 	  case '*':lcd_write_comm(0x98);lcd_write_data(' ');lcd_write_data('*'); break;		
    0392 E908      LDI	R16,0x98
    0393 E010      LDI	R17,0
    0394 D0DF      RCALL	_lcd_write_comm
    0395 E200      LDI	R16,0x20
    0396 E010      LDI	R17,0
    0397 D0C7      RCALL	_lcd_write_data
    0398 E20A      LDI	R16,0x2A
    0399 E010      LDI	R17,0
    039A D0C4      RCALL	_lcd_write_data
    039B C013      RJMP	0x03AF
(0031) 	  case '#':lcd_write_comm(0x98);lcd_write_data(' ');lcd_write_data('#');   break;
    039C E908      LDI	R16,0x98
    039D E010      LDI	R17,0
    039E D0D5      RCALL	_lcd_write_comm
    039F E200      LDI	R16,0x20
    03A0 E010      LDI	R17,0
    03A1 D0BD      RCALL	_lcd_write_data
    03A2 E203      LDI	R16,0x23
    03A3 E010      LDI	R17,0
    03A4 D0BA      RCALL	_lcd_write_data
    03A5 C009      RJMP	0x03AF
(0032) 	  default: lcd_write_comm(0x98);lcd_write_data('N');lcd_write_data('O'); break;
    03A6 E908      LDI	R16,0x98
    03A7 E010      LDI	R17,0
    03A8 D0CB      RCALL	_lcd_write_comm
    03A9 E40E      LDI	R16,0x4E
    03AA E010      LDI	R17,0
    03AB D0B3      RCALL	_lcd_write_data
    03AC E40F      LDI	R16,0x4F
    03AD E010      LDI	R17,0
    03AE D0B0      RCALL	_lcd_write_data
    03AF D406      RCALL	pop_gset2
    03B0 9508      RET
_displaybyte:
  data                 --> R20
    03B1 D412      RCALL	push_gset1
    03B2 2F40      MOV	R20,R16
(0033)      }  
(0034)    
(0035) }
(0036) 
(0037) void displaybyte(unsigned char data)
(0038) { 
(0039)   lcd_write_data(data/100%10+0x30);
    03B3 E624      LDI	R18,0x64
    03B4 E030      LDI	R19,0
    03B5 2F04      MOV	R16,R20
    03B6 2711      CLR	R17
    03B7 D348      RCALL	div16s
    03B8 E02A      LDI	R18,0xA
    03B9 E030      LDI	R19,0
    03BA D341      RCALL	mod16s
    03BB 5D00      SUBI	R16,0xD0
    03BC 4F1F      SBCI	R17,0xFF
    03BD D0A1      RCALL	_lcd_write_data
(0040)   lcd_write_data(data/10%10+0x30);
    03BE E02A      LDI	R18,0xA
    03BF E030      LDI	R19,0
    03C0 2F04      MOV	R16,R20
    03C1 2711      CLR	R17
    03C2 D33D      RCALL	div16s
    03C3 E02A      LDI	R18,0xA
    03C4 E030      LDI	R19,0
    03C5 D336      RCALL	mod16s
    03C6 5D00      SUBI	R16,0xD0
    03C7 4F1F      SBCI	R17,0xFF
    03C8 D096      RCALL	_lcd_write_data
(0041)   lcd_write_data(data%10+0x30); 
    03C9 E02A      LDI	R18,0xA
    03CA E030      LDI	R19,0
    03CB 2F04      MOV	R16,R20
    03CC 2711      CLR	R17
    03CD D32E      RCALL	mod16s
    03CE 5D00      SUBI	R16,0xD0
    03CF 4F1F      SBCI	R17,0xFF
    03D0 D08E      RCALL	_lcd_write_data
    03D1 D3F5      RCALL	pop_gset1
    03D2 9508      RET
_displayint:
  data                 --> R20
  address              --> R22
    03D3 D3EE      RCALL	push_gset2
    03D4 2F42      MOV	R20,R18
    03D5 2F60      MOV	R22,R16
(0042) }
(0043) void displayint(unsigned char address,unsigned char data)
(0044) {   lcd_write_comm(0x30);
    03D6 E300      LDI	R16,0x30
    03D7 E010      LDI	R17,0
    03D8 D09B      RCALL	_lcd_write_comm
(0045)     lcd_write_comm(address);
    03D9 2F06      MOV	R16,R22
    03DA 2711      CLR	R17
    03DB D098      RCALL	_lcd_write_comm
(0046) 	displaybyte(data);
    03DC 2F04      MOV	R16,R20
    03DD DFD3      RCALL	_displaybyte
    03DE D3D7      RCALL	pop_gset2
    03DF 9508      RET
_displaybyte2:
  data                 --> R20
    03E0 D3E3      RCALL	push_gset1
    03E1 2F40      MOV	R20,R16
(0047) }
(0048) 
(0049) void displaybyte2(unsigned char data)
(0050) { 
(0051)   lcd_write_data(data/10%10+0x30);
    03E2 E02A      LDI	R18,0xA
    03E3 E030      LDI	R19,0
    03E4 2F04      MOV	R16,R20
    03E5 2711      CLR	R17
    03E6 D319      RCALL	div16s
    03E7 E02A      LDI	R18,0xA
    03E8 E030      LDI	R19,0
    03E9 D312      RCALL	mod16s
    03EA 5D00      SUBI	R16,0xD0
    03EB 4F1F      SBCI	R17,0xFF
    03EC D072      RCALL	_lcd_write_data
(0052)   lcd_write_data(data%10+0x30); 
    03ED E02A      LDI	R18,0xA
    03EE E030      LDI	R19,0
    03EF 2F04      MOV	R16,R20
    03F0 2711      CLR	R17
    03F1 D30A      RCALL	mod16s
    03F2 5D00      SUBI	R16,0xD0
    03F3 4F1F      SBCI	R17,0xFF
    03F4 D06A      RCALL	_lcd_write_data
    03F5 D3D1      RCALL	pop_gset1
    03F6 9508      RET
_display_char:
  i                    --> R20
  len                  --> R22
  address              --> R20
  Ptr                  --> R10
    03F7 D3C8      RCALL	push_gset3
    03F8 2F42      MOV	R20,R18
    03F9 0158      MOVW	R10,R16
    03FA 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);
    03FB E300      LDI	R16,0x30
    03FC E010      LDI	R17,0
    03FD D076      RCALL	_lcd_write_comm
(0063)     lcd_write_comm(address);
    03FE 2F04      MOV	R16,R20
    03FF 2711      CLR	R17
    0400 D073      RCALL	_lcd_write_comm
(0064)     lcd_write_comm(0x0c);
    0401 E00C      LDI	R16,0xC
    0402 E010      LDI	R17,0
    0403 D070      RCALL	_lcd_write_comm
(0065) 	for(i=0;i<len;i++)
    0404 2744      CLR	R20
    0405 C00D      RJMP	0x0413
(0066) 	{
(0067) 	if(*Ptr!='/0')
    0406 01F5      MOVW	R30,R10
    0407 8180      LDD	R24,Z+0
    0408 328F      CPI	R24,0x2F
    0409 F029      BEQ	0x040F
(0068) 	lcd_write_data(*Ptr++);
    040A 9101      LD	R16,Z+
    040B 015F      MOVW	R10,R30
    040C 2711      CLR	R17
    040D D051      RCALL	_lcd_write_data
    040E C003      RJMP	0x0412
(0069) 	else
(0070) 	lcd_write_data(' ');
    040F E200      LDI	R16,0x20
    0410 E010      LDI	R17,0
    0411 D04D      RCALL	_lcd_write_data
    0412 9543      INC	R20
    0413 1746      CP	R20,R22
    0414 F388      BCS	0x0406
    0415 D3A2      RCALL	pop_gset3
    0416 9508      RET
_display_int:
  i                    --> R20
  len                  --> R22
  address              --> R20
  Ptr                  --> R10
    0417 D3A8      RCALL	push_gset3
    0418 2F42      MOV	R20,R18
    0419 0158      MOVW	R10,R16
    041A 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);
    041B E300      LDI	R16,0x30
    041C E010      LDI	R17,0
    041D D056      RCALL	_lcd_write_comm
(0083)     lcd_write_comm(address);
    041E 2F04      MOV	R16,R20
    041F 2711      CLR	R17
    0420 D053      RCALL	_lcd_write_comm
(0084)     lcd_write_comm(0x0c);
    0421 E00C      LDI	R16,0xC
    0422 E010      LDI	R17,0
    0423 D050      RCALL	_lcd_write_comm
(0085) 	for(i=0;i<len;i++)
    0424 2744      CLR	R20
    0425 C00A      RJMP	0x0430
(0086) 	{
(0087) 	//if(*Ptr!='/0')
(0088) 	//if(*Ptr!=0)
(0089) 	{
(0090) 	displaybyte(*Ptr);
    0426 01F5      MOVW	R30,R10
    0427 8100      LDD	R16,Z+0
    0428 DF88      RCALL	_displaybyte
(0091) 	Ptr++ ;
    0429 01C5      MOVW	R24,R10
    042A 9601      ADIW	R24,1
    042B 015C      MOVW	R10,R24
(0092) 	lcd_write_data(' ');
    042C E200      LDI	R16,0x20
    042D E010      LDI	R17,0
    042E D030      RCALL	_lcd_write_data
    042F 9543      INC	R20
    0430 1746      CP	R20,R22
    0431 F3A0      BCS	0x0426
    0432 D385      RCALL	pop_gset3
    0433 9508      RET

⌨️ 快捷键说明

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