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

📄 display.lst

📁 户外显示屏源程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
    0136 9508      RET
_puts:
  l                    --> R20
  h                    --> R20
  data                 --> Y+2
    0137 931A      ST	R17,-Y
    0138 930A      ST	R16,-Y
    0139 940E0305  CALL	push_gset1
(0179) 	  
(0180)        }//主循环结束
(0181) }//主程序结束
(0182) 
(0183) 
(0184) void puts(unsigned int data )
(0185)     {
(0186) 	      // UDR=data>>8;
(0187) 		  unsigned char h , l ;
(0188) 		   h=*((unsigned char *)(&data)+1);
    013B 814B      LDD	R20,Y+3
(0189) 		   UDR=h;
    013C B94C      OUT	0x0C,R20
(0190) 		   while(!(USR&0x40));
    013D 9B5E      SBIS	0x0B,6
    013E CFFE      RJMP	0x013D
(0191) 		   USR |= 0x40;
    013F 9A5E      SBI	0x0B,6
(0192) 		   //UDR=data;
(0193) 		   l=*(unsigned char *)(&data);
    0140 01FE      MOVW	R30,R28
    0141 8142      LDD	R20,Z+2
(0194) 		   UDR=l;
    0142 B94C      OUT	0x0C,R20
(0195) 		   while(!(USR&0x40));
    0143 9B5E      SBIS	0x0B,6
    0144 CFFE      RJMP	0x0143
(0196) 		   USR |= 0x40;
    0145 9A5E      SBI	0x0B,6
    0146 940E0308  CALL	pop_gset1
    0148 9622      ADIW	R28,2
    0149 9508      RET
_display:
  k                    --> R20
    014A 940E0305  CALL	push_gset1
(0197) 		  
(0198)     }
(0199) 	
(0200) void display(void)
(0201)   {
(0202)   unsigned char k ;
(0203)   if(one==1)
    014C 91800065  LDS	R24,one
    014E 3081      CPI	R24,1
    014F F4E9      BNE	0x016D
(0204)       {
(0205) 	   LCD_set_xy(0,0);
    0150 2722      CLR	R18
    0151 2700      CLR	R16
    0152 940E0287  CALL	_LCD_set_xy
(0206) 	   for(k=1;k<=end;k++)
    0154 E041      LDI	R20,1
    0155 C00D      RJMP	0x0163
(0207)           {
(0208) 		   LCD_write_char(0,string[k]);
    0156 E686      LDI	R24,0x66
    0157 E090      LDI	R25,0
    0158 2FE4      MOV	R30,R20
    0159 27FF      CLR	R31
    015A 0FE8      ADD	R30,R24
    015B 1FF9      ADC	R31,R25
    015C 8120      LDD	R18,Z+0
    015D 2733      CLR	R19
    015E 2700      CLR	R16
    015F 2711      CLR	R17
    0160 940E02A1  CALL	_LCD_write_char
    0162 9543      INC	R20
    0163 90200063  LDS	R2,end
    0165 1624      CP	R2,R20
    0166 F778      BCC	0x0156
(0209) 		   
(0210) 		   }
(0211)        start=0;
    0167 2422      CLR	R2
    0168 92200064  STS	start,R2
(0212)        i=0;
    016A 92200060  STS	i,R2
(0213) 	   }
    016C C020      RJMP	0x018D
(0214)    else if(two==1)
    016D 91800062  LDS	R24,two
    016F 3081      CPI	R24,1
    0170 F4E1      BNE	0x018D
(0215)       {
(0216) 	   LCD_set_xy(0,1);
    0171 E021      LDI	R18,1
    0172 2700      CLR	R16
    0173 940E0287  CALL	_LCD_set_xy
(0217) 	   for(k=1;k<=end;k++)
    0175 E041      LDI	R20,1
    0176 C00D      RJMP	0x0184
(0218) 	     {
(0219) 		  LCD_write_char(0,string[k]);
    0177 E686      LDI	R24,0x66
    0178 E090      LDI	R25,0
    0179 2FE4      MOV	R30,R20
    017A 27FF      CLR	R31
    017B 0FE8      ADD	R30,R24
    017C 1FF9      ADC	R31,R25
    017D 8120      LDD	R18,Z+0
    017E 2733      CLR	R19
    017F 2700      CLR	R16
    0180 2711      CLR	R17
    0181 940E02A1  CALL	_LCD_write_char
    0183 9543      INC	R20
    0184 90200063  LDS	R2,end
    0186 1624      CP	R2,R20
    0187 F778      BCC	0x0177
(0220) 		  
(0221) 		  }
(0222) 	   start = 0 ;
    0188 2422      CLR	R2
    0189 92200064  STS	start,R2
(0223) 	   i= 0;
    018B 92200060  STS	i,R2
(0224) 	  }
    018D 940E0308  CALL	pop_gset1
    018F 9508      RET
FILE: F:\我的设计\delphi\uartdispy\mcu\delay.c
(0001) /*********************************Copyright (c)*********************************
(0002) **                              
(0003) ** 文   件   名: delayUs.c
(0004) ** 最后修改日期: 2005年06月8日
(0005) ** 描        述: 延迟函数文件
(0006) ** 版	     本: V1.0
(0007) ** 主  控  芯 片:M16  晶振频率:8 MHZ
(0008) *******************************************************************************/
(0009) #include <iom16v.h>
(0010) #include <macros.h>
(0011) #include "function.h"
(0012) #include "define.h"
(0013) 
(0014) 
(0015) /**********************************************************************
(0016) functionName:       void delayUs(BYTE temp)
(0017) description :      延时函数 晶振频率:7.3728MHZ
(0018) delayUs(1);	 	    //2.71us
(0019) delayUs(2);	 	    //3.53us
(0020) delayUs(4);	 	    //5.15us
(0021) delayUs(8);	 	    //8.41us
(0022) delayUs(16);	 	//14.92us
(0023) delayUs(32);	 	//27.94us
(0024) delayUs(64);	 	//53.98us
(0025) delayUs(128);	 	//106.07us
(0026) delayUs(255);		//209.42us
(0027) delayUs(18);	 	//16.55us
(0028) delayUs(34);	 	//29.57us
(0029) delayUs(35);	 	//30.38us
(0030) delayUs(100);	 	//83.28
(0031) _NOP();			    //0.14us  
(0032) **********************************************************************/
(0033) void delayUs(unsigned char temp)
(0034) {
(0035)  	 while(temp--);
_delayUs:
  temp                 --> R16
    0190 2E20      MOV	R2,R16
    0191 2433      CLR	R3
    0192 5001      SUBI	R16,1
    0193 2022      TST	R2
    0194 F7D9      BNE	0x0190
    0195 9508      RET
(0036) }
(0037) 
(0038) /*-----------------------------------------------------------------------
(0039) 延时函数
(0040) 系统时钟:8M
(0041) -----------------------------------------------------------------------*/
(0042) void delay_1us(void)                 //1us延时函数
(0043)   {
(0044)    asm("nop");
_delay_1us:
    0196 0000      NOP
    0197 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R22
    0198 940E0303  CALL	push_gset2
    019A 01B8      MOVW	R22,R16
(0045)   }
(0046) 
(0047) void delay_nus(unsigned int n)       //N us延时函数
(0048)   {
(0049)    unsigned int i=0;
    019B 2744      CLR	R20
    019C 2755      CLR	R21
(0050)    for (i=0;i<n;i++)
    019D C003      RJMP	0x01A1
(0051)    delay_1us();
    019E DFF7      RCALL	_delay_1us
    019F 5F4F      SUBI	R20,0xFF
    01A0 4F5F      SBCI	R21,0xFF
    01A1 1746      CP	R20,R22
    01A2 0757      CPC	R21,R23
    01A3 F3D0      BCS	0x019E
    01A4 940E02F4  CALL	pop_gset2
    01A6 9508      RET
(0052)   }
(0053)   
(0054) void delay_1ms(void)                 //1ms延时函数
(0055)   {
(0056)    unsigned int i;
(0057)    for (i=0;i<1140;i++);
_delay_1ms:
  i                    --> R16
    01A7 2700      CLR	R16
    01A8 2711      CLR	R17
    01A9 C002      RJMP	0x01AC
    01AA 5F0F      SUBI	R16,0xFF
    01AB 4F1F      SBCI	R17,0xFF
    01AC 3704      CPI	R16,0x74
    01AD E0E4      LDI	R30,4
    01AE 071E      CPC	R17,R30
    01AF F3D0      BCS	0x01AA
    01B0 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R22
    01B1 940E0303  CALL	push_gset2
    01B3 01B8      MOVW	R22,R16
(0058)   }
(0059)   
(0060) void delay_nms(unsigned int n)       //N ms延时函数
(0061)   {
(0062)    unsigned int i=0;
    01B4 2744      CLR	R20
    01B5 2755      CLR	R21
(0063)    for (i=0;i<n;i++)
    01B6 C003      RJMP	0x01BA
(0064)    delay_1ms();
    01B7 DFEF      RCALL	_delay_1ms
    01B8 5F4F      SUBI	R20,0xFF
    01B9 4F5F      SBCI	R21,0xFF
    01BA 1746      CP	R20,R22
    01BB 0757      CPC	R21,R23
    01BC F3D0      BCS	0x01B7
    01BD 940E02F4  CALL	pop_gset2
    01BF 9508      RET
_resetDS18B20:
  errTime              --> R20
    01C0 940E0305  CALL	push_gset1
FILE: F:\我的设计\delphi\uartdispy\mcu\DS18B20.c
(0001) /*********************************Copyright (c)*********************************
(0002) **                                
(0003) ** 文   件   名: defineLCD1602.h
(0004) ** 最后修改日期: 2005年06月8日
(0005) ** 描        述: 18B20温度检测IC驱动函数文件
(0006) ** 版	     本: V1.0
(0007) ** 主  控  芯 片:M16  晶振频率:8 MHZ
(0008) *******************************************************************************/
(0009) 
(0010) #include <iom16v.h>
(0011) #include <macros.h>
(0012) #include "function.h"
(0013) #include "define.h"
(0014) #include "defineDS18B20.h"
(0015) 
(0016) 
(0017) /**********************************************************************
(0018) functionName: BYTE resetDS18B20(void)
(0019) description :DS18B20初始化
(0020) **********************************************************************/
(0021) unsigned char resetDS18B20(void)
(0022) {
(0023) 	unsigned char errTime=0;
    01C2 2744      CLR	R20
(0024) 	RLS_DS18B20;		//释放总线
    01C3 988E      CBI	0x11,6
(0025) 	_NOP();
    01C4 0000      NOP
(0026) 	HLD_DS18B20;		//Maga16控制总线
    01C5 9A8E      SBI	0x11,6
(0027) 	CLR_DS18B20;		//强制拉低
    01C6 9896      CBI	0x12,6
(0028) 	delayUs(255);		//209.42us
    01C7 EF0F      LDI	R16,0xFF
    01C8 940E0190  CALL	_delayUs
(0029) 	delayUs(255);		//209.42us
    01CA EF0F      LDI	R16,0xFF
    01CB 940E0190  CALL	_delayUs
(0030) 	delayUs(255);		//83.28us
    01CD EF0F      LDI	R16,0xFF
    01CE 940E0190  CALL	_delayUs
(0031) 	//以上的三个延时大于480us
(0032) 	RLS_DS18B20;		//释放总线,总线自动上拉
    01D0 988E      CBI	0x11,6
(0033) 	_NOP();			
    01D1 0000      NOP
    01D2 C009      RJMP	0x01DC
(0034) 	while(STU_DS18B20)	
(0035) 	{
(0036) 		delayUs(4);	 	//5.15us
    01D3 E004      LDI	R16,4
    01D4 940E0190  CALL	_delayUs
(0037) 		errTime++;
    01D6 9543      INC	R20
(0038) 		if(errTime>20)
    01D7 E184      LDI	R24,0x14
    01D8 1784      CP	R24,R20
    01D9 F410      BCC	0x01DC
(0039) 		return(0x00);		//如果等带大于约 5.15us*20就返回0x00,报告复位失败(实际上只要等待15-60us)
    01DA 2700      CLR	R16
    01DB C010      RJMP	0x01EC
    01DC 9986      SBIC	0x10,6
    01DD CFF5      RJMP	0x01D3
(0040) 	}
(0041) 	errTime=0;
    01DE 2744      CLR	R20
    01DF C009      RJMP	0x01E9
(0042) 	while(!(STU_DS18B20))	
(0043) 	{
(0044) 		delayUs(4);	 	//5.15us
    01E0 E004      LDI	R16,4
    01E1 940E0190  CALL	_delayUs
(0045) 		errTime++;
    01E3 9543      INC	R20
(0046) 		if(errTime>50)
    01E4 E382      LDI	R24,0x32
    01E5 1784      CP	R24,R20
    01E6 F410      BCC	0x01E9
(0047) 		return(0x00);		//如果等带大于约 5.15us*50就返回0x00,报告复位失败(实际上只要等待60-240us)
    01E7 2700      CLR	R16
    01E8 C003      RJMP	0x01EC
    01E9 9B86      SBIS	0x10,6
    01EA CFF5      RJMP	0x01E0
(0048) 	}
(0049) 	return(0xff);
    01EB EF0F      LDI	R16,0xFF
    01EC 940E0308  CALL	pop_gset1
    01EE 9508      RET
_readByteDS18B20:
  retVal               --> R20
  i                    --> R22
    01EF 940E0303  CALL	push_gset2
(0050) }
(0051) 
(0052) 
(0053) /**********************************************************************
(0054) functionName: BYTE readByteDS18B20(void)
(0055) description :读DS18B20一个字节
(0056) **********************************************************************/
(0057) unsigned char readByteDS18B20(void)
(0058) {
(0059) 	unsigned char i;
(0060) 	unsigned char retVal=0;
    01F1 2744      CLR	R20
(0061) 	RLS_DS18B20;		//释放总线
    01F2 988E      CBI	0x11,6
(0062) 	for(i=8;i>0;i--)
    01F3 E068      LDI	R22,0x8
    01F4 C01D      RJMP	0x0212
(0063) 	{
(0064) 	 	retVal>>=1;
    01F5 9546      LSR	R20
(0065) 	        HLD_DS18B20;	//Maga16控制总线
    01F6 9A8E      SBI	0x11,6
(0066) 		CLR_DS18B20;	//强制拉低
    01F7 9896      CBI	0x12,6
(0067) 		NOP();
    01F8 0000      NOP
(0068) 	   	NOP();
    01F9 0000      NOP
(0069) 	   	NOP();
    01FA 0000      NOP
(0070) 	   	NOP();
    01FB 0000      NOP
(0071) 	   	NOP();
    01FC 0000      NOP
(0072) 		NOP();
    01FD 0000      NOP
(0073) 		NOP();	
    01FE 0000      NOP
(0074) 		NOP();			//延时大于1us	
    01FF 0000      NOP
(0075) 		RLS_DS18B20;		//释放总线,DS18B20会将总线强制拉低
    0200 988E      CBI	0x11,6
(0076) 		NOP();
    0201 0000      NOP
(0077) 		NOP();
    0202 0000      NOP
(0078) 		NOP();
    0203 0000      NOP
(0079) 		if(STU_DS18B20)
    0204 9B86      SBIS	0x10,6
    0205 C001      RJMP	0x0207
(0080) 		retVal|=0x80;
    0206 6840      ORI	R20,0x80
(0081) 		delayUs(16);	 	//14.92us
    0207 E100      LDI	R16,0x10
    0208 940E0190  CALL	_delayUs
(0082) 		delayUs(16);	 	//14.92us
    020A E100      LDI	R16,0x10
    020B 940E0190  CALL	_delayUs
(0083) 		RLS_DS18B20;		//释放总线
    020D 988E      CBI	0x11,6
(0084) 		delayUs(35);	 	//30.38us
    020E E203      LDI	R16,0x23
    020F 940E0190  CALL	_delayUs
    0211 956A      DEC	R22
    0212 2422      CLR	R2
    0213 1626      CP	R2,R22
    0214 F300      BCS	0x01F5
(0085) 	}
(0086) 	delayUs(1);	 		//2.71us(大于1us就行了)
    0215 E001      LDI	R16,1
    0216 940E0190  CALL	_delayUs
(0087) 	return(retVal);
    0218 2F04      MOV	R16,R20
    0219 940E02F4  CALL	pop_gset2

⌨️ 快捷键说明

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