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

📄 zhw.lst

📁 mega128的串口发送文件.可以发送0X55上位机使用串口调试工具就可以接收了.
💻 LST
📖 第 1 页 / 共 5 页
字号:
    02BE 0DE0      ADD	R30,R0
    02BF 1DF1      ADC	R31,R1
    02C0 E180      LDI	R24,0x10
    02C1 9F86      MUL	R24,R22
    02C2 0DE0      ADD	R30,R0
    02C3 1DF1      ADC	R31,R1
    02C4 E88C      LDI	R24,0x8C
    02C5 E090      LDI	R25,0
    02C6 0FE8      ADD	R30,R24
    02C7 1FF9      ADC	R31,R25
    02C8 9104      LPM	R16,0(Z)
    02C9 DFBE      RCALL	_SdData
    02CA 94E3      INC	R14
    02CB 2D8E      MOV	R24,R14
    02CC 3088      CPI	R24,0x8
    02CD F2E0      BCS	0x02AA
    02CE 9543      INC	R20
    02CF 3042      CPI	R20,2
    02D0 F408      BCC	0x02D2
    02D1 CFCD      RJMP	0x029F
    02D2 940E0CF5  CALL	pop_gset5
    02D4 9624      ADIW	R28,4
    02D5 9508      RET
_SdPage:
  i                    --> R20
  j                    --> R22
    02D6 940E0CFE  CALL	push_gset2
(0114) 		   }
(0115) 	   }
(0116) }	   
(0117) 
(0118) //-------------------------------------------------------------------------------
(0119) //清屏 
(0120) //-------------------------------------------------------------------------------
(0121) void SdPage(void)
(0122)   {
(0123)   UINT8 i, j; 	
(0124)   SPCR = 0x50;
    02D8 E580      LDI	R24,0x50
    02D9 B98D      OUT	0x0D,R24
(0125)   for(i=0;i<12;i++)              // page data
    02DA 2744      CLR	R20
    02DB C012      RJMP	0x02EE
(0126)     {
(0127) 	WDR();
    02DC 95A8      WDR
(0128)     SdCmd(0xb0|i );              // select page
    02DD 2F04      MOV	R16,R20
    02DE 6B00      ORI	R16,0xB0
    02DF DF9A      RCALL	_SdCmd
(0129)     SdCmd(0x10);                 // column address start at 00 (Y7,Y6,Y5)
    02E0 E100      LDI	R16,0x10
    02E1 DF98      RCALL	_SdCmd
(0130)     SdCmd(0x00);                 // column address start at 00 (Y4,Y3,Y2,Y1)
    02E2 2700      CLR	R16
    02E3 DF96      RCALL	_SdCmd
(0131)     for(j=0;j<128;j++)
    02E4 2766      CLR	R22
    02E5 C005      RJMP	0x02EB
(0132)       {
(0133)       SdData(0X00);	  		     //清屏 
    02E6 2700      CLR	R16
    02E7 DFA0      RCALL	_SdData
(0134)       SdData(0X00);
    02E8 2700      CLR	R16
    02E9 DF9E      RCALL	_SdData
    02EA 9563      INC	R22
    02EB 3860      CPI	R22,0x80
    02EC F3C8      BCS	0x02E6
    02ED 9543      INC	R20
    02EE 304C      CPI	R20,0xC
    02EF F360      BCS	0x02DC
(0135)       }
(0136)    }			
(0137)   SPCR = 0x54; 
    02F0 E584      LDI	R24,0x54
    02F1 B98D      OUT	0x0D,R24
    02F2 940E0CEC  CALL	pop_gset2
    02F4 9508      RET
_test:
  i                    --> Y+4
  j                    --> Y+4
  k                    --> R20
  page                 --> R22
  data                 --> R20
    02F5 940E0CFE  CALL	push_gset2
    02F7 2F62      MOV	R22,R18
    02F8 2F40      MOV	R20,R16
    02F9 9723      SBIW	R28,3
(0138)   }
(0139) 
(0140) void test(UINT8 data,UINT8 page)
(0141) {
(0142)    UINT8 k,j,i;
(0143)    SPCR = 0x50;
    02FA E580      LDI	R24,0x50
    02FB B98D      OUT	0x0D,R24
(0144)    date[0]=(data&0xf0)>>4;
    02FC 2F84      MOV	R24,R20
    02FD 7F80      ANDI	R24,0xF0
    02FE 9582      SWAP	R24
    02FF 708F      ANDI	R24,0xF
    0300 93800100  STS	date,R24
(0145)    date[1]=data&0x0f;
    0302 2F84      MOV	R24,R20
    0303 708F      ANDI	R24,0xF
    0304 93800101  STS	date+1,R24
(0146)    
(0147)    for(k=0;k<2;k++)
    0306 2744      CLR	R20
    0307 C013      RJMP	0x031B
(0148) 	     {
(0149) 		     LCDSHOW( page, 0x10+k/2, (0x08*k)&0x0f, date[k]);  
    0308 E080      LDI	R24,0
    0309 E091      LDI	R25,1
    030A 2FE4      MOV	R30,R20
    030B 27FF      CLR	R31
    030C 0FE8      ADD	R30,R24
    030D 1FF9      ADC	R31,R25
    030E 8020      LDD	R2,Z+0
    030F 822A      STD	Y+2,R2
    0310 E088      LDI	R24,0x8
    0311 9F84      MUL	R24,R20
    0312 2D80      MOV	R24,R0
    0313 708F      ANDI	R24,0xF
    0314 8388      STD	Y+0,R24
    0315 2F24      MOV	R18,R20
    0316 9526      LSR	R18
    0317 5F20      SUBI	R18,0xF0
    0318 2F06      MOV	R16,R22
    0319 DF7C      RCALL	_LCDSHOW
    031A 9543      INC	R20
    031B 3042      CPI	R20,2
    031C F358      BCS	0x0308
(0150) 		}
(0151)  SPCR = 0x54;		
    031D E584      LDI	R24,0x54
    031E B98D      OUT	0x0D,R24
    031F 9623      ADIW	R28,3
    0320 940E0CEC  CALL	pop_gset2
    0322 9508      RET
_LCD_init_initialize:
    0323 940E0CFE  CALL	push_gset2
(0152) }
(0153) 
(0154) 
(0155) 
(0156) //-------------------------------------------------------------------------------
(0157) //LCD初始化
(0158) //-------------------------------------------------------------------------------
(0159) void LCD_init_initialize(void)
(0160)  {
(0161) 	LCD_control&=~(1<<LCD_RST);      // reset the LCD module
    0325 9895      CBI	0x12,5
(0162)     delayms(5);
    0326 E005      LDI	R16,5
    0327 E010      LDI	R17,0
    0328 E020      LDI	R18,0
    0329 E030      LDI	R19,0
    032A DEED      RCALL	_delayms
(0163) 
(0164) 	LCD_control|=1<<LCD_RST;
    032B 9A95      SBI	0x12,5
(0165)     delayms(5);     // wait for the init routine to finish
    032C E005      LDI	R16,5
    032D E010      LDI	R17,0
    032E E020      LDI	R18,0
    032F E030      LDI	R19,0
    0330 DEE7      RCALL	_delayms
(0166) 
(0167) //  SdCmd(0xae);    // Display off **hardware reset default**
(0168)     SdCmd(0x48);    // Display Duty Ratio = 1/96
    0331 E408      LDI	R16,0x48
    0332 DF47      RCALL	_SdCmd
(0169)     SdCmd(0x60);    // (two byte instruction)
    0333 E600      LDI	R16,0x60
    0334 DF45      RCALL	_SdCmd
(0170)     SdCmd(0xa1);    // ADC = 1, reverse (flip x-direction)
    0335 EA01      LDI	R16,0xA1
    0336 DF43      RCALL	_SdCmd
(0171)     SdCmd(0xc8);    // SHL = 1, reverse (flip y-direction)
    0337 EC08      LDI	R16,0xC8
    0338 DF41      RCALL	_SdCmd
(0172)     SdCmd(0x44);    // COM0Reg = 16
    0339 E404      LDI	R16,0x44
    033A DF3F      RCALL	_SdCmd
(0173)     SdCmd(0x10);    // (two byte instruction)
    033B E100      LDI	R16,0x10
    033C DF3D      RCALL	_SdCmd
(0174)     SdCmd(0x40);    // Display Start Line = 0
    033D E400      LDI	R16,0x40
    033E DF3B      RCALL	_SdCmd
(0175)     SdCmd(0x00);    // (two byte instruction)
    033F 2700      CLR	R16
    0340 DF39      RCALL	_SdCmd
(0176)     SdCmd(0xab);    // Osc on strat
    0341 EA0B      LDI	R16,0xAB
    0342 DF37      RCALL	_SdCmd
(0177)     SdCmd(0x66);    // DC-DC StepUp = 5x boosting
    0343 E606      LDI	R16,0x66
    0344 DF35      RCALL	_SdCmd
(0178) 
(0179)     SdCmd(0x27);    // 1+(Rb/Ra) = 7.2 (highest value)
    0345 E207      LDI	R16,0x27
    0346 DF33      RCALL	_SdCmd
(0180)     SdCmd(0x81);    // ElecVol = 32 (middle value)
    0347 E801      LDI	R16,0x81
    0348 DF31      RCALL	_SdCmd
(0181)     SdCmd(0x20);    // (two byte instruction)
    0349 E200      LDI	R16,0x20
    034A DF2F      RCALL	_SdCmd
(0182)     SdCmd(0x54);    // LCD bias = 1/9 (adjusted for better control)
    034B E504      LDI	R16,0x54
    034C DF2D      RCALL	_SdCmd
(0183) //  SdCmd(0x4c);    // N-line inversion = frame inversion **hardware reset default**
(0184) //  SdCmd(0x00);    // (two byte instruction) **hardware reset default**
(0185) 
(0186)     SdCmd(0x93);    // FRC=4 PWM=15
    034D E903      LDI	R16,0x93
    034E DF2B      RCALL	_SdCmd
(0187) 
(0188)     SdCmd(0x88);    // white mode (two byte instruction)
    034F E808      LDI	R16,0x88
    0350 DF29      RCALL	_SdCmd
(0189)     SdCmd(0x00);    // 1st Frame Pulse width = 00h
    0351 2700      CLR	R16
    0352 DF27      RCALL	_SdCmd
(0190)                     // 2nd Frame Pulse width = 00h
(0191)     SdCmd(0x89);    // white mode (two byte instruction)
    0353 E809      LDI	R16,0x89
    0354 DF25      RCALL	_SdCmd
(0192)     SdCmd(0x00);    // 3rd Frame Pulse width = 00h
    0355 2700      CLR	R16
    0356 DF23      RCALL	_SdCmd
(0193)                     // 4th Frame Pulse width = 00h
(0194) 
(0195)     SdCmd(0x8a);    // light gray mode (two byte instruction)
    0357 E80A      LDI	R16,0x8A
    0358 DF21      RCALL	_SdCmd
(0196)     SdCmd(0x00);    // 1st Frame Pulse width = 08h
    0359 2700      CLR	R16
    035A DF1F      RCALL	_SdCmd
(0197)                     // 2nd Frame Pulse width = 08h
(0198)     SdCmd(0x8b);    // white mode (two byte instruction)
    035B E80B      LDI	R16,0x8B
    035C DF1D      RCALL	_SdCmd
(0199)     SdCmd(0x00);    // 3rd Frame Pulse width = 08h
    035D 2700      CLR	R16
    035E DF1B      RCALL	_SdCmd
(0200)                     // 4th Frame Pulse width = 08h
(0201) 
(0202)     SdCmd(0x8c);    // dark gray mode (two byte instruction)
    035F E80C      LDI	R16,0x8C
    0360 DF19      RCALL	_SdCmd
(0203)     SdCmd(0xff);    // 1st Frame Pulse width = 0Bh
    0361 EF0F      LDI	R16,0xFF
    0362 DF17      RCALL	_SdCmd
(0204)                     // 2nd Frame Pulse width = 0Bh
(0205)     SdCmd(0x8d);    // white mode (two byte instruction)
    0363 E80D      LDI	R16,0x8D
    0364 DF15      RCALL	_SdCmd
(0206)     SdCmd(0xff);    // 3rd Frame Pulse width = 0Bh
    0365 EF0F      LDI	R16,0xFF
    0366 DF13      RCALL	_SdCmd
(0207)                     // 4th Frame Pulse width = 0Bh
(0208) 
(0209)     SdCmd(0x8e);    // dark gray mode (two byte instruction)
    0367 E80E      LDI	R16,0x8E
    0368 DF11      RCALL	_SdCmd
(0210)     SdCmd(0xff);    // 1st Frame Pulse width = 0Eh (set to reduce crosstalk)
    0369 EF0F      LDI	R16,0xFF
    036A DF0F      RCALL	_SdCmd
(0211)                     // 2nd Frame Pulse width = 0Eh (set to reduce crosstalk)
(0212)     SdCmd(0x8f);    // white mode (two byte instruction)
    036B E80F      LDI	R16,0x8F
    036C DF0D      RCALL	_SdCmd
(0213)     SdCmd(0xff);    // 3rd Frame Pulse width = 0Eh (set to reduce crosstalk)
    036D EF0F      LDI	R16,0xFF
    036E DF0B      RCALL	_SdCmd
(0214)                     // 4th Frame Pulse width = 0Eh (set to reduce crosstalk)
(0215) 
(0216)     SdCmd(0x2C);    // power ctl = DC-DC ON
    036F E20C      LDI	R16,0x2C
    0370 DF09      RCALL	_SdCmd
(0217)     delayms(1); 
    0371 E001      LDI	R16,1
    0372 E010      LDI	R17,0
    0373 E020      LDI	R18,0
    0374 E030      LDI	R19,0
    0375 DEA2      RCALL	_delayms
(0218)     SdCmd(0x2f);    // power ctl = Voltage Regulator ON
    0376 E20F      LDI	R16,0x2F
    0377 DF02      RCALL	_SdCmd
(0219)     delayms(1);
    0378 E001      LDI	R16,1
    0379 E010      LDI	R17,0
    037A E020      LDI	R18,0
    037B E030      LDI	R19,0
    037C DE9B      RCALL	_delayms
(0220)     SdCmd(0x2f);    // power ctl = Voltage follower ON
    037D E20F      LDI	R16,0x2F
    037E DEFB      RCALL	_SdCmd
(0221)     delayms(1);
    037F E001      LDI	R16,1
    0380 E010      LDI	R17,0
    0381 E020      LDI	R18,0
    0382 E030      LDI	R19,0
    0383 DE94      RCALL	_delayms
(0222) 
(0223)     SdCmd(0xaf);    // display ON
    0384 EA0F      LDI	R16,0xAF
    0385 DEF4      RCALL	_SdCmd
    0386 940E0CEC  CALL	pop_gset2
    0388 9508      RET
_LCD_init:
  ret                  --> Y+1
  csdbuff              --> Y+0
    0389 9760      SBIW	R28,0x10
(0224)  }
(0225) //------------------------------------------------------------------------------- 
(0226) void LCD_init(void)                      					   //模块复位与初始化  
(0227)  {   
(0228)     UINT8 csdbuff[16],ret;
(0229) 	SPCR = 0x50; 
    038A E580      LDI	R24,0x50
    038B B98D      OUT	0x0D,R24
(0230) 	DDRD|=1<<LCD_CS;
    038C 9A8E      SBI	0x11,6
(0231) 	DDRD|=1<<LCD_RS;
    038D 9A8C      SBI	0x11,4
(0232) 	DDRD|=1<<LCD_RST;
    038E 9A8D      SBI	0x11,5
(0233) 	
(0234)     LCD_init_initialize();	 								   //LCD初始化 
    038F DF93      RCALL	_LCD_init_initialize
(0235) 	SdPage();    											   // 清屏
    0390 DF45      RCALL	_SdPage
(0236) 	SPCR = 0x54;
    0391 E584      LDI	R24,0x54
    0392 B98D      OUT	0x0D,R24
    0393 9660      ADIW	R28,0x10
    0394 9508      RET
FILE: D:\new_sd\init.c
(0001) 
(0002) #include "glo.h"
(0003) void port_init(void)
(0004) {
(0005)      PORTA = 0xFF;		      //PORTx   端口x数据寄存器
_port_init:
    0395 EF8F      LDI	R24,0xFF
    0396 BB8B      OUT	0x1B,R24
(0006)    DDRA  = 0xFF;			  //DDRx    端口x方向寄存器 1为输出,0为输入
    0397 BB8A      OUT	0x1A,R24
(0007)  
(0008)  PORTB = 0xFF;
    0398 BB88      OUT	0x18,R24
(0009)  DDRB  = 0x00;

⌨️ 快捷键说明

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