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

📄 zhw.lst

📁 mega128的串口发送文件.可以发送0X55上位机使用串口调试工具就可以接收了.
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
    01E3 EFCF      LDI	R28,0xFF
    01E4 E1D0      LDI	R29,0x10
    01E5 BFCD      OUT	0x3D,R28
    01E6 BFDE      OUT	0x3E,R29
    01E7 51C0      SUBI	R28,0x10
    01E8 40D0      SBCI	R29,0
    01E9 EA0A      LDI	R16,0xAA
    01EA 8308      STD	Y+0,R16
    01EB 2400      CLR	R0
    01EC E0EB      LDI	R30,0xB
    01ED E0F1      LDI	R31,1
    01EE E011      LDI	R17,1
    01EF 31E1      CPI	R30,0x11
    01F0 07F1      CPC	R31,R17
    01F1 F011      BEQ	0x01F4
    01F2 9201      ST	R0,Z+
    01F3 CFFB      RJMP	0x01EF
    01F4 8300      STD	Z+0,R16
    01F5 EBEA      LDI	R30,0xBA
    01F6 E0F3      LDI	R31,3
    01F7 E0A0      LDI	R26,0
    01F8 E0B1      LDI	R27,1
    01F9 E013      LDI	R17,3
    01FA 3CE5      CPI	R30,0xC5
    01FB 07F1      CPC	R31,R17
    01FC F021      BEQ	0x0201
    01FD 95C8      LPM
    01FE 9631      ADIW	R30,1
    01FF 920D      ST	R0,X+
    0200 CFF9      RJMP	0x01FA
    0201 940E0204  CALL	_main
_exit:
    0203 CFFF      RJMP	_exit
FILE: D:\new_sd\main.c
(0001) 
(0002) #include "GLO.h"
(0003) 
(0004) 
(0005) 
(0006) 
(0007) void  main (void)
(0008) {
(0009)     unsigned char i;
(0010) 	
(0011) 	//初始化
(0012) 	init_devices();
_main:
  i                    --> Y+1
    0204 940E03E0  CALL	_init_devices
(0013) 	
(0014) 	
(0015) 	test(0,2);
    0206 E022      LDI	R18,2
    0207 E030      LDI	R19,0
    0208 2700      CLR	R16
    0209 2711      CLR	R17
    020A 940E02F5  CALL	_test
(0016) 	test(2,2);
    020C E022      LDI	R18,2
    020D E030      LDI	R19,0
    020E E002      LDI	R16,2
    020F E010      LDI	R17,0
    0210 940E02F5  CALL	_test
(0017) 	
(0018) 	USART_Transmit(0x55); 
    0212 E505      LDI	R16,0x55
    0213 E010      LDI	R17,0
    0214 940E0401  CALL	_USART_Transmit
(0019) 	while(1)
    0216 CFFF      RJMP	0x0216
    0217 9508      RET
_delayms:
  i                    --> Y+4
  j                    --> Y+0
  m                    --> Y+12
    0218 940E0BF5  CALL	push_arg4
    021A 940E0CFE  CALL	push_gset2
    021C 9728      SBIW	R28,0x8
FILE: D:\new_sd\LCD\LCD.C
(0001) 
(0002) //作者:张文2008.08.07
(0003) //液晶显示问题的说明
(0004) //液晶显示的时候用到LCD_SHOW()就可以了,不过开SPCR = 0x50  使用后关SPCR = 0x54;
(0005) //液晶的尺寸是256*192的. 
(0006) //void LCDSHOW(UINT8 page,UINT8 m,UINT8 n,UINT8 date)
(0007) //page 为0 2 4 8 10对应的是行
(0008) //m 对应的是 0x10  -- 0x17 每一行对应的数据的开始地址
(0009) //n 对应的是 两个字节的数据中的一个 一个汉字是32*32 //n==0的时候显示前半个数据.n=8对应的是后半个数据
(0010) //data 对应的是显示的数据,在显示的时候用的是查表的方法。
(0011) #include <iom64v.h>
(0012) #include <macros.h>
(0013) 
(0014) #include"lcd.h"
(0015) #define LCD_control	  PORTD
(0016) #define LCD_CS	  6
(0017) #define LCD_RST	  5
(0018) #define LCD_RS	  4 
(0019) 
(0020) //-------------------------------------------------------------------------------
(0021) unsigned char date[11]={0};   
(0022) //-------------------------------------------------------------------------------
(0023) //十进制数
(0024) //-------------------------------------------------------------------------------
(0025) const unsigned char data_hi[224]= {	  	 			 	//0123456789.
(0026)    0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
(0027)    0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00, //0	  
(0028)    0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,
(0029)    0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,	//1
(0030)    0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,
(0031)    0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,	//2
(0032)    0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,
(0033)    0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,	//3
(0034)    0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,
(0035)    0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,	//4
(0036)    0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,
(0037)    0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,	//5
(0038)    0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,
(0039)    0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,	//6
(0040)    0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,
(0041)    0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,	//7
(0042)    0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,
(0043)    0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,	//8
(0044)    0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
(0045)    0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,	//9
(0046)    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0047)    0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,	//.   10
(0048)    0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,
(0049)    0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,  //v   11
(0050)    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0051)    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,        //12
(0052)    
(0053)    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  //"-"  //13
(0054)    0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
(0055)    
(0056)    
(0057)    
(0058)    }; 
(0059) //-------------------------------------------------------------------------------
(0060) // Delay Routine
(0061) //延时程序
(0062) //-------------------------------------------------------------------------------
(0063) void delayms(UINT32 m)    
(0064) {
(0065)     UINT32 j;
(0066)     UINT32 i;
(0067)     NOP();
    021D 0000      NOP
(0068)     for(i=0; i<m; i++)
    021E E040      LDI	R20,0
    021F E050      LDI	R21,0
    0220 E060      LDI	R22,0
    0221 E070      LDI	R23,0
    0222 01FE      MOVW	R30,R28
    0223 8344      STD	Z+4,R20
    0224 8355      STD	Z+5,R21
    0225 8366      STD	Z+6,R22
    0226 8377      STD	Z+7,R23
    0227 C03D      RJMP	0x0265
(0069)         for(j=0; j<109; j++)
    0228 E040      LDI	R20,0
    0229 E050      LDI	R21,0
    022A E060      LDI	R22,0
    022B E070      LDI	R23,0
    022C 01FE      MOVW	R30,R28
    022D 8340      STD	Z+0,R20
    022E 8351      STD	Z+1,R21
    022F 8362      STD	Z+2,R22
    0230 8373      STD	Z+3,R23
    0231 C013      RJMP	0x0245
(0070)         NOP();
    0232 0000      NOP
    0233 E041      LDI	R20,1
    0234 E050      LDI	R21,0
    0235 E060      LDI	R22,0
    0236 E070      LDI	R23,0
    0237 01FE      MOVW	R30,R28
    0238 8020      LDD	R2,Z+0
    0239 8031      LDD	R3,Z+1
    023A 8042      LDD	R4,Z+2
    023B 8053      LDD	R5,Z+3
    023C 0E24      ADD	R2,R20
    023D 1E35      ADC	R3,R21
    023E 1E46      ADC	R4,R22
    023F 1E57      ADC	R5,R23
    0240 01FE      MOVW	R30,R28
    0241 8220      STD	Z+0,R2
    0242 8231      STD	Z+1,R3
    0243 8242      STD	Z+2,R4
    0244 8253      STD	Z+3,R5
    0245 E64D      LDI	R20,0x6D
    0246 E050      LDI	R21,0
    0247 E060      LDI	R22,0
    0248 E070      LDI	R23,0
    0249 01FE      MOVW	R30,R28
    024A 8020      LDD	R2,Z+0
    024B 8031      LDD	R3,Z+1
    024C 8042      LDD	R4,Z+2
    024D 8053      LDD	R5,Z+3
    024E 1624      CP	R2,R20
    024F 0635      CPC	R3,R21
    0250 0646      CPC	R4,R22
    0251 0657      CPC	R5,R23
    0252 F2F8      BCS	0x0232
    0253 E041      LDI	R20,1
    0254 E050      LDI	R21,0
    0255 E060      LDI	R22,0
    0256 E070      LDI	R23,0
    0257 01FE      MOVW	R30,R28
    0258 8024      LDD	R2,Z+4
    0259 8035      LDD	R3,Z+5
    025A 8046      LDD	R4,Z+6
    025B 8057      LDD	R5,Z+7
    025C 0E24      ADD	R2,R20
    025D 1E35      ADC	R3,R21
    025E 1E46      ADC	R4,R22
    025F 1E57      ADC	R5,R23
    0260 01FE      MOVW	R30,R28
    0261 8224      STD	Z+4,R2
    0262 8235      STD	Z+5,R3
    0263 8246      STD	Z+6,R4
    0264 8257      STD	Z+7,R5
    0265 01FE      MOVW	R30,R28
    0266 8424      LDD	R2,Z+12
    0267 8435      LDD	R3,Z+13
    0268 8446      LDD	R4,Z+14
    0269 8457      LDD	R5,Z+15
    026A 01FE      MOVW	R30,R28
    026B 8064      LDD	R6,Z+4
    026C 8075      LDD	R7,Z+5
    026D 8086      LDD	R8,Z+6
    026E 8097      LDD	R9,Z+7
    026F 1462      CP	R6,R2
    0270 0473      CPC	R7,R3
    0271 0484      CPC	R8,R4
    0272 0495      CPC	R9,R5
    0273 F408      BCC	0x0275
    0274 CFB3      RJMP	0x0228
    0275 9628      ADIW	R28,0x8
    0276 940E0CEC  CALL	pop_gset2
    0278 9624      ADIW	R28,4
    0279 9508      RET
_SdCmd:
  Command              --> R20
    027A 940E0D00  CALL	push_gset1
    027C 2F40      MOV	R20,R16
(0071) }
(0072) //-------------------------------------------------------------------------------
(0073) // IO Routine
(0074) // LCD“命令字”发送
(0075) //-------------------------------------------------------------------------------
(0076) void SdCmd(UINT8 Command)                                     // send command
(0077) {
(0078)   SPI_SS |=1;  											  //屏蔽3548
    027D 9AC0      SBI	0x18,0
(0079) 	LCD_control &=~(1<<LCD_CS);                               // chip select
    027E 9896      CBI	0x12,6
(0080) 	LCD_control &=~(1<<LCD_RS);                               // for command
    027F 9894      CBI	0x12,4
(0081) 	SPI_SendByte(Command);
    0280 2F04      MOV	R16,R20
    0281 2711      CLR	R17
    0282 940E0BF1  CALL	_SPI_SendByte
(0082) 	LCD_control |=1<<LCD_CS;                                  // chip select
    0284 9A96      SBI	0x12,6
    0285 940E0D03  CALL	pop_gset1
    0287 9508      RET
_SdData:
  DData                --> R20
    0288 940E0D00  CALL	push_gset1
    028A 2F40      MOV	R20,R16
(0083) }
(0084) //-------------------------------------------------------------------------------
(0085) //LCD 数据发送
(0086) //-------------------------------------------------------------------------------
(0087) void SdData(UINT8 DData)                                       // send data
(0088) {
(0089)     SPI_SS |=1;	  											   //屏蔽3548
    028B 9AC0      SBI	0x18,0
(0090) 	LCD_control &=~(1<<LCD_CS);                           	   // chip select
    028C 9896      CBI	0x12,6
(0091) 	LCD_control |=1<<LCD_RS;                                   // for data
    028D 9A94      SBI	0x12,4
(0092) 	SPI_SendByte(DData);
    028E 2F04      MOV	R16,R20
    028F 2711      CLR	R17
    0290 940E0BF1  CALL	_SPI_SendByte
(0093) 	LCD_control |=1<<LCD_CS;                                  // chip select
    0292 9A96      SBI	0x12,6
    0293 940E0D03  CALL	pop_gset1
    0295 9508      RET
_LCDSHOW:
  i                    --> R20
  j                    --> R14
  date                 --> R22
  n                    --> R10
  m                    --> R12
  page                 --> Y+10
    0296 940E0BF5  CALL	push_arg4
    0298 940E0CF8  CALL	push_gset5
    029A 2EC2      MOV	R12,R18
    029B 84AE      LDD	R10,Y+14
    029C 8968      LDD	R22,Y+16
(0094) }	
(0095) //-------------------------------------------------------------------------------
(0096) //LCD 显示字符和数字
(0097) //    void LCDSHOW(UINT8 page,UINT8 m,UINT8 n,UINT8 date)
(0098) //    LCDSHOW( page, 0x15, 8, 12);	
(0099) //    M ()   N   
(0100) //-------------------------------------------------------------------------------
(0101) void LCDSHOW(UINT8 page,UINT8 m,UINT8 n,UINT8 date)
(0102) {
(0103)     
(0104) 	UINT8 i,j;
(0105) 	for(i=0;i<2;i++)              
    029D 2744      CLR	R20
    029E C030      RJMP	0x02CF
(0106) 	   {
(0107) 	    SdCmd(0xb0+i+page);          
    029F 2F04      MOV	R16,R20
    02A0 5500      SUBI	R16,0x50
    02A1 840A      LDD	R0,Y+10
    02A2 0D00      ADD	R16,R0
    02A3 DFD6      RCALL	_SdCmd
(0108) 		SdCmd(m);                
    02A4 2D0C      MOV	R16,R12
    02A5 DFD4      RCALL	_SdCmd
(0109)         SdCmd(n);                 
    02A6 2D0A      MOV	R16,R10
    02A7 DFD2      RCALL	_SdCmd
(0110)         for(j=0;j<8;j++)
    02A8 24EE      CLR	R14
    02A9 C021      RJMP	0x02CB
(0111) 		   {
(0112) 		   SdData(data_hi[j+8*i+8*2*date]);   //为什么要写两次呢?  0--7 +8*0  
    02AA E088      LDI	R24,0x8
    02AB 9F84      MUL	R24,R20
    02AC 2DEE      MOV	R30,R14
    02AD 27FF      CLR	R31
    02AE 0DE0      ADD	R30,R0
    02AF 1DF1      ADC	R31,R1
    02B0 E180      LDI	R24,0x10
    02B1 9F86      MUL	R24,R22
    02B2 0DE0      ADD	R30,R0
    02B3 1DF1      ADC	R31,R1
    02B4 E88C      LDI	R24,0x8C
    02B5 E090      LDI	R25,0
    02B6 0FE8      ADD	R30,R24
    02B7 1FF9      ADC	R31,R25
    02B8 9104      LPM	R16,0(Z)
    02B9 DFCE      RCALL	_SdData
(0113)            SdData(data_hi[j+8*i+8*2*date]);  //                     0-7  +8*1
    02BA E088      LDI	R24,0x8
    02BB 9F84      MUL	R24,R20
    02BC 2DEE      MOV	R30,R14
    02BD 27FF      CLR	R31

⌨️ 快捷键说明

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