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

📄 nokia5110.lst

📁 好啊,欢迎大家都来下在,很游泳的问张哦.
💻 LST
📖 第 1 页 / 共 3 页
字号:
    036B E090      LDI	R25,0
    036C 0E28      ADD	R2,R24
    036D 1E39      ADC	R3,R25
    036E 2FE4      MOV	R30,R20
    036F 27FF      CLR	R31
    0370 0DE2      ADD	R30,R2
    0371 1DF3      ADC	R31,R3
    0372 9104      LPM	R16,0(Z)
    0373 D147      RCALL	_LCD_write_byte
    0374 9543      INC	R20
    0375 3046      CPI	R20,6
    0376 F378      BCS	0x0366
(0121)   }
    0377 D187      RCALL	pop_gset2
    0378 9508      RET
_LCD_write_english_string:
  s                    --> R20
  Y                    --> R10
  X                    --> R22
    0379 D1A5      RCALL	push_gset3
    037A 2EA2      MOV	R10,R18
    037B 2F60      MOV	R22,R16
    037C 814E      LDD	R20,Y+6
    037D 815F      LDD	R21,Y+7
(0122) 
(0123) /*-----------------------------------------------------------------------
(0124) LCD_write_english_String  : 英文字符串显示函数
(0125) 
(0126) 输入参数:*s      :英文字符串指针;
(0127)           X、Y    : 显示字符串的位置,x 0-83 ,y 0-5
(0128) 
(0129) 编写日期          :2004-8-10 
(0130) 最后修改日期      :2004-8-10 		
(0131) -----------------------------------------------------------------------*/
(0132) void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
(0133)   {
(0134)     LCD_set_XY(X,Y);
    037E 2D2A      MOV	R18,R10
    037F 2F06      MOV	R16,R22
    0380 DFD3      RCALL	_LCD_set_XY
    0381 C005      RJMP	0x0387
(0135)     while (*s) 
(0136)       {
(0137) 	 LCD_write_char(*s);
    0382 01FA      MOVW	R30,R20
    0383 8100      LDD	R16,Z+0
    0384 DFDC      RCALL	_LCD_write_char
(0138) 	 s++;
    0385 5F4F      SUBI	R20,0xFF
    0386 4F5F      SBCI	R21,0xFF
    0387 01FA      MOVW	R30,R20
    0388 8020      LDD	R2,Z+0
    0389 2022      TST	R2
    038A F7B9      BNE	0x0382
(0139)       }
(0140)   }
    038B D175      RCALL	pop_gset3
    038C 9508      RET
_LCD_write_chinese_string:
  i                    --> R20
  n                    --> R14
  row                  --> R10
  line                 --> R12
  num                  --> R22
  ch_with              --> Y+14
  Y                    --> Y+12
  X                    --> Y+10
    038D D144      RCALL	push_arg4
    038E D196      RCALL	push_gset5
    038F 8968      LDD	R22,Y+16
    0390 88CA      LDD	R12,Y+18
    0391 88AC      LDD	R10,Y+20
(0141) /*-----------------------------------------------------------------------
(0142) LCD_write_chinese_string: 在LCD上显示汉字
(0143) 
(0144) 输入参数:X、Y    :显示汉字的起始X、Y坐标;
(0145)           ch_with :汉字点阵的宽度
(0146)           num     :显示汉字的个数;  
(0147)           line    :汉字点阵数组中的起始行数
(0148)           row     :汉字显示的行间距
(0149) 编写日期          :2004-8-11 
(0150) 最后修改日期      :2004-8-12 
(0151) 测试:
(0152) 	LCD_write_chi(0,0,12,7,0,0);
(0153) 	LCD_write_chi(0,2,12,7,0,0);
(0154) 	LCD_write_chi(0,4,12,7,0,0);	
(0155) -----------------------------------------------------------------------*/                        
(0156) void LCD_write_chinese_string(unsigned char X, unsigned char Y, 
(0157)                    unsigned char ch_with,unsigned char num,
(0158)                    unsigned char line,unsigned char row)
(0159)   {
(0160)     unsigned char i,n;
(0161)     
(0162)     LCD_set_XY(X,Y);                             //设置初始位置
    0392 852C      LDD	R18,Y+12
    0393 850A      LDD	R16,Y+10
    0394 DFBF      RCALL	_LCD_set_XY
(0163)     
(0164)     for (i=0;i<num;)
    0395 2744      CLR	R20
    0396 C032      RJMP	0x03C9
(0165)       {
(0166)       	for (n=0; n<ch_with*2; n++)              //写一个汉字
    0397 24EE      CLR	R14
    0398 C023      RJMP	0x03BC
(0167)       	  { 
(0168)       	    if (n==ch_with)                      //写汉字的下半部分
    0399 840E      LDD	R0,Y+14
    039A 14E0      CP	R14,R0
    039B F479      BNE	0x03AB
(0169)       	      {
(0170)       	        if (i==0) LCD_set_XY(X,Y+1);
    039C 2344      TST	R20
    039D F429      BNE	0x03A3
    039E 852C      LDD	R18,Y+12
    039F 5F2F      SUBI	R18,0xFF
    03A0 850A      LDD	R16,Y+10
    03A1 DFB2      RCALL	_LCD_set_XY
    03A2 C008      RJMP	0x03AB
(0171)       	        else
(0172)       	           LCD_set_XY((X+(ch_with+row)*i),Y+1);
    03A3 852C      LDD	R18,Y+12
    03A4 5F2F      SUBI	R18,0xFF
    03A5 842E      LDD	R2,Y+14
    03A6 0C2A      ADD	R2,R10
    03A7 9E24      MUL	R2,R20
    03A8 850A      LDD	R16,Y+10
    03A9 0D00      ADD	R16,R0
    03AA DFA9      RCALL	_LCD_set_XY
(0173)               }
(0174)       	    LCD_write_byte(write_chinese[line+i][n],1);
    03AB E021      LDI	R18,1
    03AC 2C2C      MOV	R2,R12
    03AD 0E24      ADD	R2,R20
    03AE E188      LDI	R24,0x18
    03AF 9D82      MUL	R24,R2
    03B0 0110      MOVW	R2,R0
    03B1 ED8E      LDI	R24,0xDE
    03B2 E092      LDI	R25,2
    03B3 0E28      ADD	R2,R24
    03B4 1E39      ADC	R3,R25
    03B5 2DEE      MOV	R30,R14
    03B6 27FF      CLR	R31
    03B7 0DE2      ADD	R30,R2
    03B8 1DF3      ADC	R31,R3
    03B9 9104      LPM	R16,0(Z)
    03BA D100      RCALL	_LCD_write_byte
    03BB 94E3      INC	R14
    03BC E082      LDI	R24,2
    03BD 840E      LDD	R0,Y+14
    03BE 9D80      MUL	R24,R0
    03BF 14E0      CP	R14,R0
    03C0 F2C0      BCS	0x0399
(0175)       	  }
(0176)       	i++;
    03C1 9543      INC	R20
(0177)       	LCD_set_XY((X+(ch_with+row)*i),Y);
    03C2 852C      LDD	R18,Y+12
    03C3 842E      LDD	R2,Y+14
    03C4 0C2A      ADD	R2,R10
    03C5 9E24      MUL	R2,R20
    03C6 850A      LDD	R16,Y+10
    03C7 0D00      ADD	R16,R0
    03C8 DF8B      RCALL	_LCD_set_XY
    03C9 1746      CP	R20,R22
    03CA F408      BCC	0x03CC
    03CB CFCB      RJMP	0x0397
(0178)       }
(0179)   }
    03CC D136      RCALL	pop_gset5
    03CD 9624      ADIW	R28,4
    03CE 9508      RET
_chinese_string:
  i                    --> R20
  j                    --> R22
  buffer_l             --> Y+84
  buffer_h             --> Y+0
  n                    --> R10
  T                    --> R12
  Y                    --> R14
  X                    --> Y+178
    03CF D102      RCALL	push_arg4
    03D0 D154      RCALL	push_gset5
    03D1 2EE2      MOV	R14,R18
    03D2 97EF      SBIW	R28,0x3F
    03D3 97EF      SBIW	R28,0x3F
    03D4 97AA      SBIW	R28,0x2A
    03D5 01FE      MOVW	R30,R28
    03D6 54EA      SUBI	R30,0x4A
    03D7 4FFF      SBCI	R31,0xFF
    03D8 80C0      LDD	R12,Z+0
(0180)   
(0181) /*-----------------------------------------------------------------------
(0182) LCD_move_chinese_string: 汉字移动
(0183) 
(0184) 输入参数:X、Y    :显示汉字的起始X、Y坐标;
(0185)           T       :移动速度;
(0186) 
(0187) 编写日期          :2004-8-13 
(0188) 最后修改日期      :2004-8-13 
(0189) -----------------------------------------------------------------------*/                        
(0190) void chinese_string (unsigned char X, unsigned char Y, unsigned char T)
(0191)   {
(0192)     unsigned char i,n,j=0;
    03D9 2766      CLR	R22
(0193)     unsigned char buffer_h[84]={0};
    03DA EA86      LDI	R24,0xA6
    03DB E094      LDI	R25,4
    03DC 01FE      MOVW	R30,R28
    03DD E504      LDI	R16,0x54
    03DE E010      LDI	R17,0
    03DF 93FA      ST	R31,-Y
    03E0 93EA      ST	R30,-Y
    03E1 939A      ST	R25,-Y
    03E2 938A      ST	R24,-Y
    03E3 D144      RCALL	asgncblk
(0194)     unsigned char buffer_l[84]={0};
    03E4 EF8A      LDI	R24,0xFA
    03E5 E094      LDI	R25,4
    03E6 01FE      MOVW	R30,R28
    03E7 5AEC      SUBI	R30,0xAC
    03E8 4FFF      SBCI	R31,0xFF
    03E9 E504      LDI	R16,0x54
    03EA E010      LDI	R17,0
    03EB 93FA      ST	R31,-Y
    03EC 93EA      ST	R30,-Y
    03ED 939A      ST	R25,-Y
    03EE 938A      ST	R24,-Y
    03EF D138      RCALL	asgncblk
(0195)       
(0196)     for (i=0; i<156; i++)
    03F0 2744      CLR	R20
    03F1 C07D      RJMP	0x046F
(0197)       {
(0198)         buffer_h[83] = move_chinese_string[i/12][j];
    03F2 E01C      LDI	R17,0xC
    03F3 2F04      MOV	R16,R20
    03F4 D0E4      RCALL	div8u
    03F5 E188      LDI	R24,0x18
    03F6 9F80      MUL	R24,R16
    03F7 0110      MOVW	R2,R0
    03F8 EE86      LDI	R24,0xE6
    03F9 E093      LDI	R25,3
    03FA 0E28      ADD	R2,R24
    03FB 1E39      ADC	R3,R25
    03FC 2FE6      MOV	R30,R22
    03FD 27FF      CLR	R31
    03FE 0DE2      ADD	R30,R2
    03FF 1DF3      ADC	R31,R3
    0400 91E4      LPM	R30,0(Z)
    0401 01DE      MOVW	R26,R28
    0402 5AAD      SUBI	R26,0xAD
    0403 4FBF      SBCI	R27,0xFF
    0404 93EC      ST	R30,0(X)
(0199)         buffer_l[83] = move_chinese_string[i/12][j+12];
    0405 E01C      LDI	R17,0xC
    0406 2F04      MOV	R16,R20
    0407 D0D1      RCALL	div8u
    0408 E188      LDI	R24,0x18
    0409 9F80      MUL	R24,R16
    040A 0110      MOVW	R2,R0
    040B EE86      LDI	R24,0xE6
    040C E093      LDI	R25,3
    040D 0E28      ADD	R2,R24
    040E 1E39      ADC	R3,R25
    040F 2FE6      MOV	R30,R22
    0410 27FF      CLR	R31
    0411 963C      ADIW	R30,0xC
    0412 0DE2      ADD	R30,R2
    0413 1DF3      ADC	R31,R3
    0414 91E4      LPM	R30,0(Z)
    0415 01DE      MOVW	R26,R28
    0416 55A9      SUBI	R26,0x59
    0417 4FBF      SBCI	R27,0xFF
    0418 93EC      ST	R30,0(X)
(0200)         j++;
    0419 9563      INC	R22
(0201)         if (j==12) j=0;
    041A 306C      CPI	R22,0xC
    041B F409      BNE	0x041D
    041C 2766      CLR	R22
(0202)         
(0203)         for (n=0; n<83; n++)
    041D 24AA      CLR	R10
    041E C01E      RJMP	0x043D
(0204)           { 
(0205)             buffer_h[n]=buffer_h[n+1];
    041F 01CE      MOVW	R24,R28
    0420 9601      ADIW	R24,1
    0421 2DEA      MOV	R30,R10
    0422 27FF      CLR	R31
    0423 0FE8      ADD	R30,R24
    0424 1FF9      ADC	R31,R25
    0425 8020      LDD	R2,Z+0
    0426 01CE      MOVW	R24,R28
    0427 2DEA      MOV	R30,R10
    0428 27FF      CLR	R31
    0429 0FE8      ADD	R30,R24
    042A 1FF9      ADC	R31,R25
    042B 8220      STD	Z+0,R2
(0206)             buffer_l[n]=buffer_l[n+1];
    042C 01CE      MOVW	R24,R28
    042D 5A8B      SUBI	R24,0xAB
    042E 4F9F      SBCI	R25,0xFF
    042F 2DEA      MOV	R30,R10
    0430 27FF      CLR	R31
    0431 0FE8      ADD	R30,R24
    0432 1FF9      ADC	R31,R25
    0433 8020      LDD	R2,Z+0
    0434 01CE      MOVW	R24,R28
    0435 5A8C      SUBI	R24,0xAC
    0436 4F9F      SBCI	R25,0xFF
    0437 2DEA      MOV	R30,R10
    0438 27FF      CLR	R31
    0439 0FE8      ADD	R30,R24
    043A 1FF9      ADC	R31,R25
    043B 8220      STD	Z+0,R2
    043C 94A3      INC	R10
    043D 2D8A      MOV	R24,R10
    043E 3583      CPI	R24,0x53
    043F F2F8      BCS	0x041F
(0207)           } 
(0208)         
(0209)         LCD_set_XY(X,Y);
    0440 2D2E      MOV	R18,R14
    0441 01FE      MOVW	R30,R28
    0442 54EE      SUBI	R30,0x4E
    0443 4FFF      SBCI	R31,0xFF
    0444 8100      LDD	R16,Z+0
    0445 DF0E      RCALL	_LCD_set_XY
(0210)         for (n=0; n<83; n++)
    0446 24AA      CLR	R10
    0447 C009      RJMP	0x0451
(0211)           { 
(0212)             LCD_write_byte(buffer_h[n],1);
    0448 E021      LDI	R18,1
    0449 01CE      MOVW	R24,R28
    044A 2DEA      MOV	R30,R10
    044B 27FF      CLR	R31
    044C 0FE8      ADD	R30,R24
    044D 1FF9      ADC	R31,R25
    044E 8100      LDD	R16,Z+0
    044F D06B      RCALL	_LCD_write_byte
    0450 94A3      INC	R10
    0451 2D8A      MOV	R24,R10
    0452 3583      CPI	R24,0x53
    0453 F3A0      BCS	0x0448
(0213)           } 
(0214)         
(0215)         LCD_set_XY(X,Y+1); 
    0454 2D2E      MOV	R18,R14
    0455 5F2F      SUBI	R18,0xFF
    0456 01FE      MOVW	R30,R28

⌨️ 快捷键说明

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