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

📄 3310lcd_prj.lst

📁 /*********************************************** **** 本原代码转自:www.527dz.com (作者527dz) *** **** 由arm
💻 LST
📖 第 1 页 / 共 3 页
字号:
    0419 54EE      SUBI	R30,0x4E
    041A 4FFF      SBCI	R31,0xFF
    041B 8100      LDD	R16,Z+0
    041C DEFF      RCALL	_LCD_set_XY
(0173)         for (n=0; n<83; n++)
    041D 24AA      CLR	R10
    041E C009      RJMP	0x0428
(0174)           { 
(0175)             LCD_write_byte(buffer_h[n],1);
    041F E021      LDI	R18,1
    0420 01CE      MOVW	R24,R28
    0421 2DEA      MOV	R30,R10
    0422 27FF      CLR	R31
    0423 0FE8      ADD	R30,R24
    0424 1FF9      ADC	R31,R25
    0425 8100      LDD	R16,Z+0
    0426 D072      RCALL	_LCD_write_byte
    0427 94A3      INC	R10
    0428 2D8A      MOV	R24,R10
    0429 3583      CPI	R24,0x53
    042A F3A0      BCS	0x041F
(0176)           } 
(0177)         
(0178)         LCD_set_XY(X,Y+1); 
    042B 2D2E      MOV	R18,R14
    042C 5F2F      SUBI	R18,0xFF
    042D 01FE      MOVW	R30,R28
    042E 54EE      SUBI	R30,0x4E
    042F 4FFF      SBCI	R31,0xFF
    0430 8100      LDD	R16,Z+0
    0431 DEEA      RCALL	_LCD_set_XY
(0179)         for (n=0; n<83; n++)
    0432 24AA      CLR	R10
    0433 C00B      RJMP	0x043F
(0180)           { 
(0181)             LCD_write_byte(buffer_l[n],1);
    0434 E021      LDI	R18,1
    0435 01CE      MOVW	R24,R28
    0436 5A8C      SUBI	R24,0xAC
    0437 4F9F      SBCI	R25,0xFF
    0438 2DEA      MOV	R30,R10
    0439 27FF      CLR	R31
    043A 0FE8      ADD	R30,R24
    043B 1FF9      ADC	R31,R25
    043C 8100      LDD	R16,Z+0
    043D D05B      RCALL	_LCD_write_byte
    043E 94A3      INC	R10
    043F 2D8A      MOV	R24,R10
    0440 3583      CPI	R24,0x53
    0441 F390      BCS	0x0434
(0182)           } 
(0183)           
(0184)        delay_nms(T);
    0442 2D0C      MOV	R16,R12
    0443 2711      CLR	R17
    0444 940E02D7  CALL	_delay_nms
    0446 9543      INC	R20
    0447 394C      CPI	R20,0x9C
    0448 F408      BCC	0x044A
    0449 CF7D      RJMP	0x03C7
    044A 96EF      ADIW	R28,0x3F
    044B 96EF      ADIW	R28,0x3F
    044C 96AA      ADIW	R28,0x2A
    044D 940E04D7  CALL	pop_gset5
    044F 9624      ADIW	R28,4
    0450 9508      RET
_LCD_draw_bmp_pixel:
  row                  --> R20
  n                    --> R22
  i                    --> R14
  Pix_y                --> Y+18
  Pix_x                --> R10
  map                  --> R12
  Y                    --> Y+12
  X                    --> Y+10
    0451 940E04A4  CALL	push_arg4
    0453 940E04DA  CALL	push_gset5
    0455 84CE      LDD	R12,Y+14
    0456 84DF      LDD	R13,Y+15
    0457 88A8      LDD	R10,Y+16
(0185)       }
(0186)   }
(0187) 
(0188) /*-----------------------------------------------------------------------
(0189) LCD_draw_map      : 位图绘制函数
(0190) 
(0191) 输入参数:X、Y    :位图绘制的起始X、Y坐标;
(0192)           *map    :位图点阵数据;
(0193)           Pix_x   :位图像素(长)
(0194)           Pix_y   :位图像素(宽)
(0195) 
(0196) 编写日期          :2004-8-13
(0197) 最后修改日期      :2004-8-13 
(0198) -----------------------------------------------------------------------*/
(0199) void LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char *map,
(0200)                   unsigned char Pix_x,unsigned char Pix_y)
(0201)   {
(0202)     unsigned int i,n;
(0203)     unsigned char row;
(0204)     
(0205)     if (Pix_y%8==0) row=Pix_y/8;      //计算位图所占行数
    0458 E018      LDI	R17,0x8
    0459 890A      LDD	R16,Y+18
    045A 940E04A9  CALL	mod8u
    045C 2300      TST	R16
    045D F429      BNE	0x0463
    045E 894A      LDD	R20,Y+18
    045F 9546      LSR	R20
    0460 9546      LSR	R20
    0461 9546      LSR	R20
    0462 C005      RJMP	0x0468
(0206)       else
(0207)         row=Pix_y/8+1;
    0463 894A      LDD	R20,Y+18
    0464 9546      LSR	R20
    0465 9546      LSR	R20
    0466 9546      LSR	R20
    0467 5F4F      SUBI	R20,0xFF
(0208)     
(0209)     for (n=0;n<row;n++)
    0468 2766      CLR	R22
    0469 2777      CLR	R23
    046A C025      RJMP	0x0490
(0210)       {
(0211)       	LCD_set_XY(X,Y);
    046B 852C      LDD	R18,Y+12
    046C 850A      LDD	R16,Y+10
    046D DEAE      RCALL	_LCD_set_XY
(0212)         for(i=0; i<Pix_x; i++)
    046E 24EE      CLR	R14
    046F 24FF      CLR	R15
    0470 C015      RJMP	0x0486
(0213)           {
(0214)             LCD_write_byte(map[i+n*Pix_x], 1);
    0471 E021      LDI	R18,1
    0472 2C2A      MOV	R2,R10
    0473 2433      CLR	R3
    0474 932F      PUSH	R18
    0475 933F      PUSH	R19
    0476 0191      MOVW	R18,R2
    0477 018B      MOVW	R16,R22
    0478 940E04C1  CALL	empy16s
    047A 913F      POP	R19
    047B 912F      POP	R18
    047C 01F7      MOVW	R30,R14
    047D 0FE0      ADD	R30,R16
    047E 1FF1      ADC	R31,R17
    047F 0DEC      ADD	R30,R12
    0480 1DFD      ADC	R31,R13
    0481 8100      LDD	R16,Z+0
    0482 D016      RCALL	_LCD_write_byte
    0483 01C7      MOVW	R24,R14
    0484 9601      ADIW	R24,1
    0485 017C      MOVW	R14,R24
    0486 2C2A      MOV	R2,R10
    0487 2433      CLR	R3
    0488 14E2      CP	R14,R2
    0489 04F3      CPC	R15,R3
    048A F330      BCS	0x0471
(0215)           }
(0216)         Y++;                         //换行
    048B 840C      LDD	R0,Y+12
    048C 9403      INC	R0
    048D 860C      STD	Y+12,R0
    048E 5F6F      SUBI	R22,0xFF
    048F 4F7F      SBCI	R23,0xFF
    0490 2E24      MOV	R2,R20
    0491 2433      CLR	R3
    0492 1562      CP	R22,R2
    0493 0573      CPC	R23,R3
    0494 F2B0      BCS	0x046B
    0495 940E04D7  CALL	pop_gset5
    0497 9624      ADIW	R28,4
    0498 9508      RET
(0217)       }      
(0218)   }
(0219) 
(0220) /*-----------------------------------------------------------------------
(0221) LCD_write_byte    : 使用SPI接口写数据到LCD
(0222) 
(0223) 输入参数:data    :写入的数据;
(0224)           command :写数据/命令选择;
(0225) 
(0226) 编写日期          :2004-8-10 
(0227) 最后修改日期      :2004-8-13 
(0228) -----------------------------------------------------------------------*/
(0229) void LCD_write_byte(unsigned char data, unsigned char command)
(0230)   {
(0231)     PORTB &= ~LCD_CE ;		        // 使能LCD
_LCD_write_byte:
  command              --> R18
  data                 --> R16
    0499 98C4      CBI	0x18,4
(0232)     
(0233)     if (command == 0)
    049A 2322      TST	R18
    049B F411      BNE	0x049E
(0234)       PORTB &= ~LCD_DC ;	        // 传送命令
    049C 98C3      CBI	0x18,3
    049D C001      RJMP	0x049F
(0235)     else
(0236)       PORTB |= LCD_DC ;		        // 传送数据
    049E 9AC3      SBI	0x18,3
(0237) 
(0238)     SPDR = data;			// 传送数据到SPI寄存器
    049F B90F      OUT	0x0F,R16
(0239) 
(0240)     while ((SPSR & 0x80) == 0);         // 等待数据传送完毕
    04A0 9B77      SBIS	0x0E,7
    04A1 CFFE      RJMP	0x04A0
(0241) 	
(0242)     PORTB |= LCD_CE ;			// 关闭LCD
FILE: <library>
    04A2 9AC4      SBI	0x18,4
    04A3 9508      RET
push_arg4:
    04A4 933A      ST	R19,-Y
    04A5 932A      ST	R18,-Y
push_arg2:
    04A6 931A      ST	R17,-Y
    04A7 930A      ST	R16,-Y
    04A8 9508      RET
mod8u:
    04A9 9468      BSET	6
    04AA C001      RJMP	xdiv8u
div8u:
    04AB 94E8      BCLR	6
xdiv8u:
    04AC 932A      ST	R18,-Y
    04AD 92FA      ST	R15,-Y
    04AE 92EA      ST	R14,-Y
    04AF 24FF      CLR	R15
    04B0 24EE      CLR	R14
    04B1 E120      LDI	R18,0x10
    04B2 0F00      LSL	R16
    04B3 1CFF      ROL	R15
    04B4 1CEE      ROL	R14
    04B5 16E1      CP	R14,R17
    04B6 F010      BCS	0x04B9
    04B7 1AE1      SUB	R14,R17
    04B8 9503      INC	R16
    04B9 952A      DEC	R18
    04BA F7B9      BNE	0x04B2
    04BB F40E      BRTC	0x04BD
    04BC 2D0E      MOV	R16,R14
    04BD 90E9      LD	R14,Y+
    04BE 90F9      LD	R15,Y+
    04BF 9129      LD	R18,Y+
    04C0 9508      RET
empy16s:
    04C1 920A      ST	R0,-Y
    04C2 921A      ST	R1,-Y
    04C3 938A      ST	R24,-Y
    04C4 939A      ST	R25,-Y
    04C5 9F02      MUL	R16,R18
    04C6 01C0      MOVW	R24,R0
    04C7 9F12      MUL	R17,R18
    04C8 0D90      ADD	R25,R0
    04C9 9F03      MUL	R16,R19
    04CA 0D90      ADD	R25,R0
    04CB 018C      MOVW	R16,R24
    04CC 9199      LD	R25,Y+
    04CD 9189      LD	R24,Y+
    04CE 9019      LD	R1,Y+
    04CF 9009      LD	R0,Y+
    04D0 9508      RET
pop_gset2:
    04D1 E0E2      LDI	R30,2
    04D2 940C04E6  JMP	pop
pop_gset3:
    04D4 E0E4      LDI	R30,4
    04D5 940C04E6  JMP	pop
pop_gset5:
    04D7 27EE      CLR	R30
    04D8 940C04E6  JMP	pop
push_gset5:
    04DA 92FA      ST	R15,-Y
    04DB 92EA      ST	R14,-Y
push_gset4:
    04DC 92DA      ST	R13,-Y
    04DD 92CA      ST	R12,-Y
push_gset3:
    04DE 92BA      ST	R11,-Y
    04DF 92AA      ST	R10,-Y
push_gset2:
    04E0 937A      ST	R23,-Y
    04E1 936A      ST	R22,-Y
push_gset1:
    04E2 935A      ST	R21,-Y
    04E3 934A      ST	R20,-Y
    04E4 9508      RET
pop_gset1:
    04E5 E0E1      LDI	R30,1
pop:
    04E6 9149      LD	R20,Y+
    04E7 9159      LD	R21,Y+
    04E8 FDE0      SBRC	R30,0
    04E9 9508      RET
    04EA 9169      LD	R22,Y+
    04EB 9179      LD	R23,Y+
    04EC FDE1      SBRC	R30,1
    04ED 9508      RET
    04EE 90A9      LD	R10,Y+
    04EF 90B9      LD	R11,Y+
    04F0 FDE2      SBRC	R30,2
    04F1 9508      RET
    04F2 90C9      LD	R12,Y+
    04F3 90D9      LD	R13,Y+
    04F4 FDE3      SBRC	R30,3
    04F5 9508      RET
    04F6 90E9      LD	R14,Y+
    04F7 90F9      LD	R15,Y+
    04F8 9508      RET
asgncblk:
    04F9 93AA      ST	R26,-Y
    04FA 93BA      ST	R27,-Y
    04FB 93EA      ST	R30,-Y
    04FC 93FA      ST	R31,-Y
    04FD 920A      ST	R0,-Y
    04FE 81AF      LDD	R26,Y+7
    04FF 85B8      LDD	R27,Y+8
    0500 81ED      LDD	R30,Y+5
    0501 81FE      LDD	R31,Y+6
    0502 3000      CPI	R16,0
    0503 0701      CPC	R16,R17
    0504 F031      BEQ	0x050B
    0505 95C8      LPM
    0506 920D      ST	R0,X+
    0507 9631      ADIW	R30,1
    0508 5001      SUBI	R16,1
    0509 4010      SBCI	R17,0
    050A CFF7      RJMP	0x0502
    050B 9009      LD	R0,Y+
    050C 91F9      LD	R31,Y+
    050D 91E9      LD	R30,Y+
    050E 91B9      LD	R27,Y+
    050F 91A9      LD	R26,Y+
    0510 9624      ADIW	R28,4
    0511 9508      RET

⌨️ 快捷键说明

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