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

📄 5110.lst

📁 5110综合演示 变成结构 流程 头文件
💻 LST
📖 第 1 页 / 共 3 页
字号:
    0458 940E050C  CALL	pop_gset5
    045A 9624      ADIW	R28,4
    045B 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
    045C 940E04D9  CALL	push_arg4
    045E 940E050F  CALL	push_gset5
    0460 84CE      LDD	R12,Y+14
    0461 84DF      LDD	R13,Y+15
    0462 88A8      LDD	R10,Y+16
(0198)       }
(0199)   }
(0200) /*************************************************************************
(0201) ** 函数名称: LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char *map,unsigned char Pix_x,unsigned char Pix_y)
(0202) ** 功能描述: 位图绘制函数
(0203) ** 输 入: X、Y    :位图绘制的起始X、Y坐标;
(0204)            *map    :位图点阵数据;
(0205)            Pix_x   :位图像素(长)
(0206)            Pix_y   :位图像素(宽)
(0207) ** 输出	 : 
(0208) ** 全局变量: 无
(0209) ** 调用模块: 
(0210) ** 说明:
(0211) ** 注意:
(0212) **************************************************************************/
(0213) void LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char *map,unsigned char Pix_x,unsigned char Pix_y)
(0214)   {
(0215)     unsigned int i,n;
(0216)     unsigned char row;
(0217)     
(0218)     if (Pix_y%8==0) row=Pix_y/8;      //计算位图所占行数
    0463 E018      LDI	R17,0x8
    0464 890A      LDD	R16,Y+18
    0465 940E04DE  CALL	mod8u
    0467 2300      TST	R16
    0468 F429      BNE	0x046E
    0469 894A      LDD	R20,Y+18
    046A 9546      LSR	R20
    046B 9546      LSR	R20
    046C 9546      LSR	R20
    046D C005      RJMP	0x0473
(0219)       else row=Pix_y/8+1;
    046E 894A      LDD	R20,Y+18
    046F 9546      LSR	R20
    0470 9546      LSR	R20
    0471 9546      LSR	R20
    0472 5F4F      SUBI	R20,0xFF
(0220)     
(0221)     for (n=0;n<row;n++)
    0473 2766      CLR	R22
    0474 2777      CLR	R23
    0475 C025      RJMP	0x049B
(0222)       {
(0223)       	LCD_set_XY(X,Y);
    0476 852C      LDD	R18,Y+12
    0477 850A      LDD	R16,Y+10
    0478 DEA8      RCALL	_LCD_set_XY
(0224)         for(i=0; i<Pix_x; i++)
    0479 24EE      CLR	R14
    047A 24FF      CLR	R15
    047B C015      RJMP	0x0491
(0225)           {
(0226)             LCD_write_byte(map[i+n*Pix_x], 1);
    047C E021      LDI	R18,1
    047D 2C2A      MOV	R2,R10
    047E 2433      CLR	R3
    047F 932F      PUSH	R18
    0480 933F      PUSH	R19
    0481 0191      MOVW	R18,R2
    0482 018B      MOVW	R16,R22
    0483 940E04F6  CALL	empy16s
    0485 913F      POP	R19
    0486 912F      POP	R18
    0487 01F7      MOVW	R30,R14
    0488 0FE0      ADD	R30,R16
    0489 1FF1      ADC	R31,R17
    048A 0DEC      ADD	R30,R12
    048B 1DFD      ADC	R31,R13
    048C 8100      LDD	R16,Z+0
    048D D016      RCALL	_LCD_write_byte
    048E 01C7      MOVW	R24,R14
    048F 9601      ADIW	R24,1
    0490 017C      MOVW	R14,R24
    0491 2C2A      MOV	R2,R10
    0492 2433      CLR	R3
    0493 14E2      CP	R14,R2
    0494 04F3      CPC	R15,R3
    0495 F330      BCS	0x047C
(0227)           }
(0228)         Y++;                         //换行
    0496 840C      LDD	R0,Y+12
    0497 9403      INC	R0
    0498 860C      STD	Y+12,R0
    0499 5F6F      SUBI	R22,0xFF
    049A 4F7F      SBCI	R23,0xFF
    049B 2E24      MOV	R2,R20
    049C 2433      CLR	R3
    049D 1562      CP	R22,R2
    049E 0573      CPC	R23,R3
    049F F2B0      BCS	0x0476
    04A0 940E050C  CALL	pop_gset5
    04A2 9624      ADIW	R28,4
    04A3 9508      RET
(0229)       }
(0230)   }
(0231) /*************************************************************************
(0232) ** 函数名称: LCD_write_byte(unsigned char data, unsigned char command)
(0233) ** 功能描述: 使用SPI接口写数据到LCD
(0234) ** 输 入: data    :写入的数据;
(0235)            command :写数据/命令选择;
(0236) ** 输出	 : 
(0237) ** 全局变量: 无
(0238) ** 调用模块: 
(0239) ** 说明:
(0240) ** 注意:
(0241) **************************************************************************/
(0242) void LCD_write_byte(unsigned char data, unsigned char command)
(0243)   {
(0244)     PORTB &= ~LCD_CE ;		        // 使能LCD
_LCD_write_byte:
  command              --> R18
  data                 --> R16
    04A4 98C4      CBI	0x18,4
(0245)     
(0246)     if (command == 0)
    04A5 2322      TST	R18
    04A6 F411      BNE	0x04A9
(0247)       PORTB &= ~LCD_DC ;	        // 传送命令
    04A7 98C3      CBI	0x18,3
    04A8 C001      RJMP	0x04AA
(0248)     else
(0249)       PORTB |= LCD_DC ;		        // 传送数据
    04A9 9AC3      SBI	0x18,3
(0250) 
(0251)     SPDR = data;			// 传送数据到SPI寄存器
    04AA B90F      OUT	0x0F,R16
(0252) 
(0253)     while ((SPSR & 0x80) == 0);         // 等待数据传送完毕
    04AB 9B77      SBIS	0x0E,7
    04AC CFFE      RJMP	0x04AB
(0254) 	
(0255)     PORTB |= LCD_CE ;			// 关闭LCD
    04AD 9AC4      SBI	0x18,4
    04AE 9508      RET
FILE: D:\avrvi\democode\5110_综合演示\source\lib\delay.c
(0001) /************************************************
(0002) 文件:delay.c
(0003) 用途:延时函数
(0004) 注意:系统时钟8M
(0005) 创建:2008.1.25
(0006) 修改:2008.1.25
(0007) Copy Right  (c)  www.avrvi.com  AVR与虚拟仪器
(0008) ************************************************/
(0009) 
(0010) void delay_1us(void)                 //1us延时函数
(0011)   {
(0012)    asm("nop");
_delay_1us:
    04AF 0000      NOP
    04B0 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R22
    04B1 940E0515  CALL	push_gset2
    04B3 01B8      MOVW	R22,R16
(0013)   }
(0014) 
(0015) void delay_nus(unsigned int n)       //N us延时函数
(0016)   {
(0017)    unsigned int i=0;
    04B4 2744      CLR	R20
    04B5 2755      CLR	R21
(0018)    for (i=0;i<n;i++)
    04B6 C003      RJMP	0x04BA
(0019)    delay_1us();
    04B7 DFF7      RCALL	_delay_1us
    04B8 5F4F      SUBI	R20,0xFF
    04B9 4F5F      SBCI	R21,0xFF
    04BA 1746      CP	R20,R22
    04BB 0757      CPC	R21,R23
    04BC F3D0      BCS	0x04B7
    04BD 940E0506  CALL	pop_gset2
    04BF 9508      RET
(0020)   }
(0021)   
(0022) void delay_1ms(void)                 //1ms延时函数
(0023)   {
(0024)    unsigned int i;
(0025)    for (i=0;i<1140;i++);
_delay_1ms:
  i                    --> R16
    04C0 2700      CLR	R16
    04C1 2711      CLR	R17
    04C2 C002      RJMP	0x04C5
    04C3 5F0F      SUBI	R16,0xFF
    04C4 4F1F      SBCI	R17,0xFF
    04C5 3704      CPI	R16,0x74
    04C6 E0E4      LDI	R30,4
    04C7 071E      CPC	R17,R30
    04C8 F3D0      BCS	0x04C3
    04C9 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R22
    04CA 940E0515  CALL	push_gset2
    04CC 01B8      MOVW	R22,R16
(0026)   }
(0027)   
(0028) void delay_nms(unsigned int n)       //N ms延时函数
(0029)   {
(0030)    unsigned int i=0;
    04CD 2744      CLR	R20
    04CE 2755      CLR	R21
(0031)    for (i=0;i<n;i++)
    04CF C003      RJMP	0x04D3
(0032)    delay_1ms();
FILE: <library>
    04D0 DFEF      RCALL	_delay_1ms
    04D1 5F4F      SUBI	R20,0xFF
    04D2 4F5F      SBCI	R21,0xFF
    04D3 1746      CP	R20,R22
    04D4 0757      CPC	R21,R23
    04D5 F3D0      BCS	0x04D0
    04D6 940E0506  CALL	pop_gset2
    04D8 9508      RET
push_arg4:
    04D9 933A      ST	R19,-Y
    04DA 932A      ST	R18,-Y
push_arg2:
    04DB 931A      ST	R17,-Y
    04DC 930A      ST	R16,-Y
    04DD 9508      RET
mod8u:
    04DE 9468      BSET	6
    04DF C001      RJMP	xdiv8u
div8u:
    04E0 94E8      BCLR	6
xdiv8u:
    04E1 932A      ST	R18,-Y
    04E2 92FA      ST	R15,-Y
    04E3 92EA      ST	R14,-Y
    04E4 24FF      CLR	R15
    04E5 24EE      CLR	R14
    04E6 E120      LDI	R18,0x10
    04E7 0F00      LSL	R16
    04E8 1CFF      ROL	R15
    04E9 1CEE      ROL	R14
    04EA 16E1      CP	R14,R17
    04EB F010      BCS	0x04EE
    04EC 1AE1      SUB	R14,R17
    04ED 9503      INC	R16
    04EE 952A      DEC	R18
    04EF F7B9      BNE	0x04E7
    04F0 F40E      BRTC	0x04F2
    04F1 2D0E      MOV	R16,R14
    04F2 90E9      LD	R14,Y+
    04F3 90F9      LD	R15,Y+
    04F4 9129      LD	R18,Y+
    04F5 9508      RET
empy16s:
    04F6 920A      ST	R0,-Y
    04F7 921A      ST	R1,-Y
    04F8 938A      ST	R24,-Y
    04F9 939A      ST	R25,-Y
    04FA 9F02      MUL	R16,R18
    04FB 01C0      MOVW	R24,R0
    04FC 9F12      MUL	R17,R18
    04FD 0D90      ADD	R25,R0
    04FE 9F03      MUL	R16,R19
    04FF 0D90      ADD	R25,R0
    0500 018C      MOVW	R16,R24
    0501 9199      LD	R25,Y+
    0502 9189      LD	R24,Y+
    0503 9019      LD	R1,Y+
    0504 9009      LD	R0,Y+
    0505 9508      RET
pop_gset2:
    0506 E0E2      LDI	R30,2
    0507 940C051B  JMP	pop
pop_gset3:
    0509 E0E4      LDI	R30,4
    050A 940C051B  JMP	pop
pop_gset5:
    050C 27EE      CLR	R30
    050D 940C051B  JMP	pop
push_gset5:
    050F 92FA      ST	R15,-Y
    0510 92EA      ST	R14,-Y
push_gset4:
    0511 92DA      ST	R13,-Y
    0512 92CA      ST	R12,-Y
push_gset3:
    0513 92BA      ST	R11,-Y
    0514 92AA      ST	R10,-Y
push_gset2:
    0515 937A      ST	R23,-Y
    0516 936A      ST	R22,-Y
push_gset1:
    0517 935A      ST	R21,-Y
    0518 934A      ST	R20,-Y
    0519 9508      RET
pop_gset1:
    051A E0E1      LDI	R30,1
pop:
    051B 9149      LD	R20,Y+
    051C 9159      LD	R21,Y+
    051D FDE0      SBRC	R30,0
    051E 9508      RET
    051F 9169      LD	R22,Y+
    0520 9179      LD	R23,Y+
    0521 FDE1      SBRC	R30,1
    0522 9508      RET
    0523 90A9      LD	R10,Y+
    0524 90B9      LD	R11,Y+
    0525 FDE2      SBRC	R30,2
    0526 9508      RET
    0527 90C9      LD	R12,Y+
    0528 90D9      LD	R13,Y+
    0529 FDE3      SBRC	R30,3
    052A 9508      RET
    052B 90E9      LD	R14,Y+
    052C 90F9      LD	R15,Y+
    052D 9508      RET
asgncblk:
    052E 93AA      ST	R26,-Y
    052F 93BA      ST	R27,-Y
    0530 93EA      ST	R30,-Y
    0531 93FA      ST	R31,-Y
    0532 920A      ST	R0,-Y
    0533 81AF      LDD	R26,Y+7
    0534 85B8      LDD	R27,Y+8
    0535 81ED      LDD	R30,Y+5
    0536 81FE      LDD	R31,Y+6
    0537 3000      CPI	R16,0
    0538 0701      CPC	R16,R17
    0539 F031      BEQ	0x0540
    053A 95C8      LPM
    053B 920D      ST	R0,X+
    053C 9631      ADIW	R30,1
    053D 5001      SUBI	R16,1
    053E 4010      SBCI	R17,0
    053F CFF7      RJMP	0x0537
    0540 9009      LD	R0,Y+
    0541 91F9      LD	R31,Y+
    0542 91E9      LD	R30,Y+
    0543 91B9      LD	R27,Y+
    0544 91A9      LD	R26,Y+
    0545 9624      ADIW	R28,4
    0546 9508      RET

⌨️ 快捷键说明

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