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

📄 lcddrive.lst

📁 一个基于MEGA16的GUI
💻 LST
📖 第 1 页 / 共 5 页
字号:
 229               	.LBE4:
 230               	.LBE3:
 231               	.LBE2:
 232 0042 2150      		subi r18,lo8(-(-1))
 233 0044 3040      		sbci r19,hi8(-(-1))
 234 0046 8FEF      		ldi r24,hi8(-1)
 235 0048 2F3F      		cpi r18,lo8(-1)
 236 004a 3807      		cpc r19,r24
 237 004c B9F7      		brne .L19
 238               	.L21:
 239               	/* epilogue: frame size=0 */
 240 004e DF91      		pop r29
 241 0050 CF91      		pop r28
 242 0052 0895      		ret
 243               	/* epilogue end (size=3) */
 244               	/* function DelayXms size 27 (22) */
 249               	.Lscope1:
 251               	.global	LcdPortInit
 253               	LcdPortInit:
 255               	.Ltext2:
  76:lcddrive.c    ****  #if     AVR_GCC==1
  77:lcddrive.c    ****   while(xs--)
  78:lcddrive.c    ****   {
  79:lcddrive.c    ****    _delay_ms(1);
  80:lcddrive.c    ****   }
  81:lcddrive.c    ****  #else
  82:lcddrive.c    ****  uint16  D_t
  83:lcddrive.c    ****  while(xs--)
  84:lcddrive.c    ****  {
  85:lcddrive.c    ****   for(D_t=Fosc/1000;D_t>=0;D_t--);
  86:lcddrive.c    ****  }
  87:lcddrive.c    ****  #endif
  88:lcddrive.c    ****  
  89:lcddrive.c    **** }
  90:lcddrive.c    **** 
  91:lcddrive.c    **** 
  92:lcddrive.c    **** 
  93:lcddrive.c    **** 
  94:lcddrive.c    **** 
  95:lcddrive.c    **** /***********************************************************************
  96:lcddrive.c    **** * 名称:LCDportInit()
  97:lcddrive.c    **** * 功能:读取数据子程序。
  98:lcddrive.c    **** * 入口参数:无
  99:lcddrive.c    **** * 出口参数:返回值即为读出的数据
 100:lcddrive.c    **** * 说明:函数会设置LCM数据总线为输入方式
 101:lcddrive.c    **** ***********************************************************************/
 102:lcddrive.c    **** void LcdPortInit(void)
 103:lcddrive.c    **** {
 257               	.LM14:
 258               	/* prologue: frame size=0 */
 259               	/* prologue end (size=0) */
 104:lcddrive.c    ****  DDRA |= 0x80;
 261               	.LM15:
 262 0054 D79A      		sbi 58-0x20,7
 105:lcddrive.c    ****  DDRB |= 0x80;
 264               	.LM16:
 265 0056 BF9A      		sbi 55-0x20,7
 106:lcddrive.c    ****  DDRD |= 0x06;
 267               	.LM17:
 268 0058 81B3      		in r24,49-0x20
 269 005a 8660      		ori r24,lo8(6)
 270 005c 81BB      		out 49-0x20,r24
 107:lcddrive.c    ****  //LCD_PORTS |= (1<<LCD_RST)|(1<<LCD_CS)|(1<<LCD_SDATA)|(1<<LCD_SCLK);
 108:lcddrive.c    ****  //LCD_DDR  |= (1<<LCD_RST)|(1<<LCD_CS)|(1<<LCD_SDATA)|(1<<LCD_SCLK);
 109:lcddrive.c    ****  SetLcdRst();
 272               	.LM18:
 273               	/* #APP */
 274 005e 919A      		 SBI 0x12,1
 275               		
 110:lcddrive.c    ****  SetLcdCs();
 277               	.LM19:
 278 0060 929A      		 SBI 0x12,2
 279               		
 111:lcddrive.c    ****  SetLcdSclk();
 281               	.LM20:
 282 0062 DF9A      		 SBI 0x1b,7
 283               		
 284               	/* #NOAPP */
 285               	/* epilogue: frame size=0 */
 286 0064 0895      		ret
 287               	/* epilogue end (size=1) */
 288               	/* function LcdPortInit size 18 (17) */
 290               	.Lscope2:
 292               	.global	LcdReset
 294               	LcdReset:
 112:lcddrive.c    **** }
 113:lcddrive.c    **** 
 114:lcddrive.c    **** /***********************************************************************
 115:lcddrive.c    **** * 名称:LCDreset()
 116:lcddrive.c    **** * 功能:LCD重启
 117:lcddrive.c    **** * 入口参数:无
 118:lcddrive.c    **** * 出口参数:五
 119:lcddrive.c    **** ***********************************************************************/
 120:lcddrive.c    **** void LcdReset(void)
 121:lcddrive.c    **** {
 296               	.LM21:
 297               	/* prologue: frame size=0 */
 298               	/* prologue end (size=0) */
 122:lcddrive.c    ****  ClrLcdRst();
 300               	.LM22:
 301               	/* #APP */
 302 0066 9198      		 CBI 0x12,1
 303               		
 123:lcddrive.c    ****  DelayXms(5);
 305               	.LM23:
 306               	/* #NOAPP */
 307 0068 85E0      		ldi r24,lo8(5)
 308 006a 90E0      		ldi r25,hi8(5)
 309 006c 0E94 0000 		call DelayXms
 124:lcddrive.c    ****  SetLcdRst();
 311               	.LM24:
 312               	/* #APP */
 313 0070 919A      		 SBI 0x12,1
 314               		
 125:lcddrive.c    ****  DelayXms(5);
 316               	.LM25:
 317               	/* #NOAPP */
 318 0072 85E0      		ldi r24,lo8(5)
 319 0074 90E0      		ldi r25,hi8(5)
 320 0076 0E94 0000 		call DelayXms
 321               	/* epilogue: frame size=0 */
 322 007a 0895      		ret
 323               	/* epilogue end (size=1) */
 324               	/* function LcdReset size 17 (16) */
 326               	.Lscope3:
 329               	.global	LcdSendCommand
 331               	LcdSendCommand:
 126:lcddrive.c    **** }
 127:lcddrive.c    **** 
 128:lcddrive.c    **** 
 129:lcddrive.c    **** /***********************************************************************
 130:lcddrive.c    **** * 名称:LcdSendCommand()
 131:lcddrive.c    **** * 功能:数据自动写状态是否允许。
 132:lcddrive.c    **** * 入口参数:无
 133:lcddrive.c    **** * 出口参数:返回0表示禁止,否则表示允许
 134:lcddrive.c    **** ***********************************************************************/
 135:lcddrive.c    **** void LcdSendCommand(uint8 cmd)
 136:lcddrive.c    **** {
 333               	.LM26:
 334               	/* prologue: frame size=0 */
 335               	/* prologue end (size=0) */
 336 007c 982F      		mov r25,r24
 137:lcddrive.c    ****  uint8 i;
 138:lcddrive.c    ****  SetSdataOut();
 139:lcddrive.c    ****  ClrLcdCs();
 338               	.LM27:
 339               	/* #APP */
 340 007e 9298      		 CBI 0x12,2
 341               		
 140:lcddrive.c    ****  ClrLcdSclk();
 343               	.LM28:
 344 0080 DF98      		 CBI 0x1b,7
 345               		
 141:lcddrive.c    ****  ClrLcdSdata();
 347               	.LM29:
 348 0082 C798      		 CBI 0x18,7
 349               		
 142:lcddrive.c    ****  SetLcdSclk();
 351               	.LM30:
 352 0084 DF9A      		 SBI 0x1b,7
 353               		
 354               	/* #NOAPP */
 355 0086 30E8      		ldi r19,lo8(-128)
 356 0088 27E0      		ldi r18,lo8(7)
 357               	.L28:
 143:lcddrive.c    ****  
 144:lcddrive.c    ****  for(i=0;i<8;i++)
 145:lcddrive.c    ****   {
 146:lcddrive.c    ****     PORTA=0x00;
 359               	.LM31:
 360 008a 1BBA      		out 59-0x20,__zero_reg__
 147:lcddrive.c    **** 	PORTB=cmd&0x80;
 362               	.LM32:
 363 008c 892F      		mov r24,r25
 364 008e 8078      		andi r24,lo8(-128)
 365 0090 88BB      		out 56-0x20,r24
 148:lcddrive.c    **** 	PORTA=0x80;
 367               	.LM33:
 368 0092 3BBB      		out 59-0x20,r19
 149:lcddrive.c    **** 	cmd<<=1;
 370               	.LM34:
 371 0094 990F      		lsl r25
 373               	.LM35:
 374 0096 2150      		subi r18,lo8(-(-1))
 375 0098 27FF      		sbrs r18,7
 376 009a F7CF      		rjmp .L28
 377               	/* epilogue: frame size=0 */
 378 009c 0895      		ret
 379               	/* epilogue end (size=1) */
 380               	/* function LcdSendCommand size 29 (28) */
 385               	.Lscope4:
 387               	.global	LcdInit
 389               	LcdInit:
 150:lcddrive.c    ****   /*
 151:lcddrive.c    ****    ClrLcdSclk();
 152:lcddrive.c    ****    if(cmd &DCB2HEX_TAB[i] )
 153:lcddrive.c    ****     {
 154:lcddrive.c    ****      SetLcdSdata();
 155:lcddrive.c    ****     }
 156:lcddrive.c    ****    else
 157:lcddrive.c    ****     { 
 158:lcddrive.c    ****      ClrLcdSdata();
 159:lcddrive.c    ****     }
 160:lcddrive.c    ****    SetLcdSclk();
 161:lcddrive.c    ****    */
 162:lcddrive.c    ****   }
 163:lcddrive.c    **** }
 164:lcddrive.c    **** 
 165:lcddrive.c    **** /***********************************************************************
 166:lcddrive.c    **** * 名称:LcdInit()
 167:lcddrive.c    **** * 功能:初始化LCD
 168:lcddrive.c    **** * 入口参数:
 169:lcddrive.c    **** * 出口参数:
 170:lcddrive.c    **** ***********************************************************************/
 171:lcddrive.c    **** void LcdInit(void)
 172:lcddrive.c    **** {
 391               	.LM36:
 392               	/* prologue: frame size=0 */
 393 009e CF93      		push r28
 394               	/* prologue end (size=1) */
 173:lcddrive.c    ****  uint8 i;
 174:lcddrive.c    ****  LcdPortInit();
 396               	.LM37:
 397 00a0 0E94 0000 		call LcdPortInit
 175:lcddrive.c    **** 
 176:lcddrive.c    ****  LcdReset();
 399               	.LM38:
 400 00a4 0E94 0000 		call LcdReset
 177:lcddrive.c    ****  LcdSendCommand(0x01);		//soft reset
 402               	.LM39:
 403 00a8 81E0      		ldi r24,lo8(1)
 404 00aa 0E94 0000 		call LcdSendCommand
 178:lcddrive.c    ****  SetLcdCs();
 406               	.LM40:
 407               	/* #APP */
 408 00ae 929A      		 SBI 0x12,2
 409               		
 179:lcddrive.c    ****  
 180:lcddrive.c    ****  DelayXms(5);
 411               	.LM41:
 412               	/* #NOAPP */
 413 00b0 85E0      		ldi r24,lo8(5)
 414 00b2 90E0      		ldi r25,hi8(5)
 415 00b4 0E94 0000 		call DelayXms
 181:lcddrive.c    ****  LcdSendCommand(0xc6);     //initial escape
 417               	.LM42:
 418 00b8 86EC      		ldi r24,lo8(-58)
 419 00ba 0E94 0000 		call LcdSendCommand
 182:lcddrive.c    ****  SetLcdCs();
 421               	.LM43:
 422               	/* #APP */
 423 00be 929A      		 SBI 0x12,2
 424               		
 183:lcddrive.c    **** 
 184:lcddrive.c    ****  LcdSendCommand(0xb9);		//refresh set
 426               	.LM44:
 427               	/* #NOAPP */
 428 00c0 89EB      		ldi r24,lo8(-71)
 429 00c2 0E94 0000 		call LcdSendCommand
 185:lcddrive.c    ****  LcdSendData(0x00);
 431               	.LM45:
 432 00c6 80E0      		ldi r24,lo8(0)
 433 00c8 0E94 0000 		call LcdSendData
 186:lcddrive.c    ****  SetLcdCs();
 435               	.LM46:
 436               	/* #APP */
 437 00cc 929A      		 SBI 0x12,2
 438               		
 187:lcddrive.c    **** 
 188:lcddrive.c    ****  LcdSendCommand(0xb6);		//display control
 440               	.LM47:
 441               	/* #NOAPP */
 442 00ce 86EB      		ldi r24,lo8(-74)
 443 00d0 0E94 0000 		call LcdSendCommand
 189:lcddrive.c    ****  LcdSendData(0x80);
 445               	.LM48:
 446 00d4 80E8      		ldi r24,lo8(-128)
 447 00d6 0E94 0000 		call LcdSendData
 190:lcddrive.c    ****  LcdSendData(0x80);
 449               	.LM49:
 450 00da 80E8      		ldi r24,lo8(-128)
 451 00dc 0E94 0000 		call LcdSendData
 191:lcddrive.c    ****  LcdSendData(0x81);
 453               	.LM50:
 454 00e0 81E8      		ldi r24,lo8(-127)
 455 00e2 0E94 0000 		call LcdSendData
 192:lcddrive.c    ****  LcdSendData(84);
 457               	.LM51:
 458 00e6 84E5      		ldi r24,lo8(84)
 459 00e8 0E94 0000 		call LcdSendData
 193:lcddrive.c    ****  LcdSendData(69);

⌨️ 快捷键说明

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