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

📄 tc_clock.lst

📁 在ICCAVR环境下做的ATMEGA128单片机实现模拟时钟
💻 LST
📖 第 1 页 / 共 3 页
字号:
    03EE DFB4      RCALL	_delayUS
(0215)   LCDENH;
    03EF 9A96      SBI	0x12,6
(0216)   delayUS(2);
    03F0 E002      LDI	R16,2
    03F1 E010      LDI	R17,0
    03F2 DFB0      RCALL	_delayUS
(0217)   PORTC=com;
    03F3 BB45      OUT	0x15,R20
(0218)   delayUS(2);
    03F4 E002      LDI	R16,2
    03F5 E010      LDI	R17,0
    03F6 DFAC      RCALL	_delayUS
(0219)   LCDENL;
    03F7 9896      CBI	0x12,6
    03F8 940E0718  CALL	pop_gset1
    03FA 9508      RET
_LCD_WRITE_ADD_CHAR:
  i                    --> R20
  p                    --> R22
  y                    --> R10
  x                    --> R12
    03FB 940E070F  CALL	push_gset4
    03FD 2EA2      MOV	R10,R18
    03FE 2EC0      MOV	R12,R16
    03FF 8568      LDD	R22,Y+8
(0220) }
(0221) /*******************************************
(0222) *函数名称:LCD_WRITE_ADD_CHAR(uchar x,y ,uchar *p)
(0223) *函数功能:在坐标xy处写入西文字符
(0224) *入口参数:x,y 写入字符的坐标,  *p字符编码表的首地址
(0225) *出口参数:无
(0226) **********************************************/
(0227) void    LCD_WRITE_ADD_CHAR(uchar x, uchar y, uchar  p)
(0228) {
(0229)   uchar i;
(0230)   x=0xb8+x*2;
    0400 E082      LDI	R24,2
    0401 9D8C      MUL	R24,R12
    0402 2D80      MOV	R24,R0
    0403 5488      SUBI	R24,0x48
    0404 2EC8      MOV	R12,R24
(0231)   y=0x40+y*8;
    0405 E088      LDI	R24,0x8
    0406 9D8A      MUL	R24,R10
    0407 2D80      MOV	R24,R0
    0408 5C80      SUBI	R24,0xC0
    0409 2EA8      MOV	R10,R24
(0232)   LCD_WRITE_COM(x);    //x为行
    040A 2D0C      MOV	R16,R12
    040B DFD8      RCALL	_LCD_WRITE_COM
(0233)   LCD_WRITE_COM(y);    // y为列
    040C 2D0A      MOV	R16,R10
    040D DFD6      RCALL	_LCD_WRITE_COM
(0234)   for(i=0;i<8;i++)
    040E 2744      CLR	R20
    040F C00E      RJMP	0x041E
(0235)   {
(0236)       LCD_WRITE_DAT(table[p][i]);     //西文字母的上半部分,由8行点构成(每行有8个点)
    0410 E180      LDI	R24,0x10
    0411 9F86      MUL	R24,R22
    0412 0110      MOVW	R2,R0
    0413 E88C      LDI	R24,0x8C
    0414 E090      LDI	R25,0
    0415 0E28      ADD	R2,R24
    0416 1E39      ADC	R3,R25
    0417 2FE4      MOV	R30,R20
    0418 27FF      CLR	R31
    0419 0DE2      ADD	R30,R2
    041A 1DF3      ADC	R31,R3
    041B 9104      LPM	R16,0(Z)
    041C DFB0      RCALL	_LCD_WRITE_DAT
    041D 9543      INC	R20
    041E 3048      CPI	R20,0x8
    041F F380      BCS	0x0410
(0237)   }
(0238)    LCD_WRITE_COM(x+1);
    0420 2D0C      MOV	R16,R12
    0421 5F0F      SUBI	R16,0xFF
    0422 DFC1      RCALL	_LCD_WRITE_COM
(0239)   LCD_WRITE_COM(y);
    0423 2D0A      MOV	R16,R10
    0424 DFBF      RCALL	_LCD_WRITE_COM
(0240)     for(i=0;i<8;i++)                                 //写入西文字母的下半部分
    0425 2744      CLR	R20
    0426 C00F      RJMP	0x0436
(0241)   {
(0242)       LCD_WRITE_DAT(table[p][8+i]);
    0427 E180      LDI	R24,0x10
    0428 9F86      MUL	R24,R22
    0429 0110      MOVW	R2,R0
    042A E88C      LDI	R24,0x8C
    042B E090      LDI	R25,0
    042C 0E28      ADD	R2,R24
    042D 1E39      ADC	R3,R25
    042E 2FE4      MOV	R30,R20
    042F 27FF      CLR	R31
    0430 9638      ADIW	R30,0x8
    0431 0DE2      ADD	R30,R2
    0432 1DF3      ADC	R31,R3
    0433 9104      LPM	R16,0(Z)
    0434 DF98      RCALL	_LCD_WRITE_DAT
    0435 9543      INC	R20
    0436 3048      CPI	R20,0x8
    0437 F378      BCS	0x0427
    0438 940E070A  CALL	pop_gset4
    043A 9508      RET
_LCD_WRITE_ADD_CHINESE:
  i                    --> R20
  p                    --> R22
  y                    --> R10
  x                    --> R12
    043B 940E070F  CALL	push_gset4
    043D 2EA2      MOV	R10,R18
    043E 2EC0      MOV	R12,R16
    043F 8568      LDD	R22,Y+8
(0243)   }
(0244) }
(0245) void LCD_WRITE_ADD_CHINESE(uchar x,uchar y,uchar p)
(0246) {
(0247)    uchar i;
(0248)   x=0xb8+x*2;
    0440 E082      LDI	R24,2
    0441 9D8C      MUL	R24,R12
    0442 2D80      MOV	R24,R0
    0443 5488      SUBI	R24,0x48
    0444 2EC8      MOV	R12,R24
(0249)   y=0x40+y*8;
    0445 E088      LDI	R24,0x8
    0446 9D8A      MUL	R24,R10
    0447 2D80      MOV	R24,R0
    0448 5C80      SUBI	R24,0xC0
    0449 2EA8      MOV	R10,R24
(0250)   LCD_WRITE_COM(x);
    044A 2D0C      MOV	R16,R12
    044B DF98      RCALL	_LCD_WRITE_COM
(0251)   LCD_WRITE_COM(y);
    044C 2D0A      MOV	R16,R10
    044D DF96      RCALL	_LCD_WRITE_COM
(0252)   for(i=0;i<16;i++)
    044E 2744      CLR	R20
    044F C011      RJMP	0x0461
(0253)   {
(0254)       LCD_WRITE_DAT(Tab_Chinesepoem[2*p][i]);  
    0450 E082      LDI	R24,2
    0451 9F86      MUL	R24,R22
    0452 2D10      MOV	R17,R0
    0453 E100      LDI	R16,0x10
    0454 0201      MULS	R16,R17
    0455 E98C      LDI	R24,0x9C
    0456 E091      LDI	R25,1
    0457 0110      MOVW	R2,R0
    0458 0E28      ADD	R2,R24
    0459 1E39      ADC	R3,R25
    045A 2FE4      MOV	R30,R20
    045B 27FF      CLR	R31
    045C 0DE2      ADD	R30,R2
    045D 1DF3      ADC	R31,R3
    045E 9104      LPM	R16,0(Z)
    045F DF6D      RCALL	_LCD_WRITE_DAT
    0460 9543      INC	R20
    0461 3140      CPI	R20,0x10
    0462 F368      BCS	0x0450
(0255)   }
(0256)    LCD_WRITE_COM(x+1);
    0463 2D0C      MOV	R16,R12
    0464 5F0F      SUBI	R16,0xFF
    0465 DF7E      RCALL	_LCD_WRITE_COM
(0257)   LCD_WRITE_COM(y);
    0466 2D0A      MOV	R16,R10
    0467 DF7C      RCALL	_LCD_WRITE_COM
(0258)     for(i=0;i<16;i++)
    0468 2744      CLR	R20
    0469 C011      RJMP	0x047B
(0259)   {
(0260)       LCD_WRITE_DAT(Tab_Chinesepoem[2*p+1][i]);
    046A E082      LDI	R24,2
    046B 9F86      MUL	R24,R22
    046C 2D10      MOV	R17,R0
    046D E100      LDI	R16,0x10
    046E 0201      MULS	R16,R17
    046F EA8C      LDI	R24,0xAC
    0470 E091      LDI	R25,1
    0471 0110      MOVW	R2,R0
    0472 0E28      ADD	R2,R24
    0473 1E39      ADC	R3,R25
    0474 2FE4      MOV	R30,R20
    0475 27FF      CLR	R31
    0476 0DE2      ADD	R30,R2
    0477 1DF3      ADC	R31,R3
    0478 9104      LPM	R16,0(Z)
    0479 DF53      RCALL	_LCD_WRITE_DAT
    047A 9543      INC	R20
    047B 3140      CPI	R20,0x10
    047C F368      BCS	0x046A
    047D 940E070A  CALL	pop_gset4
    047F 9508      RET
_LCD_WRITE_PICTURE:
  a                    --> Y+1
  k                    --> R20
  i                    --> R22
  j                    --> R10
    0480 940E0711  CALL	push_gset3
(0261)   }
(0262) }
(0263) 
(0264) /********************************************************
(0265) *函数名称:LCD_WRITE_PICTURE()
(0266) *函数功能:在LCD液晶屏上显示图片‘南华大学电气工程学院’
(0267) *函数引用了字模软件生成的字模表Tab_pic2[][16]
(0268) *其取模方式为  :从第一列开始向下取8个点作为一个字节
(0269) ,然后从第二列开始向下取8个点作为第二个字节...依此类推。
(0270) 如果最后不足8个点就补满8位。  取模顺序是从低到高,即第
(0271) 一个点作为最低位。如*-------取为00000001
(0272) ***********************************************************/
(0273) void LCD_WRITE_PICTURE()
(0274) {
(0275)   uchar i,j,k;
(0276)   uint a;
(0277)   LCDCS1H;
    0482 9A95      SBI	0x12,5
(0278)   LCDCS2L; 
    0483 9894      CBI	0x12,4
(0279)    LCD_WRITE_COM(0x3F);
    0484 E30F      LDI	R16,0x3F
    0485 DF5E      RCALL	_LCD_WRITE_COM
(0280)   LCD_WRITE_COM(0xC0);
    0486 EC00      LDI	R16,0xC0
    0487 DF5C      RCALL	_LCD_WRITE_COM
(0281)   for(k=0;k<8;k++)
    0488 2744      CLR	R20
    0489 C022      RJMP	0x04AC
(0282)   {
(0283)      LCD_WRITE_COM(0xB8+k);         //起始行,每页有八行
    048A 2F04      MOV	R16,R20
    048B 5408      SUBI	R16,0x48
    048C DF57      RCALL	_LCD_WRITE_COM
(0284) 	 LCD_WRITE_COM(0x40);              //起始列,列自动加一
    048D E400      LDI	R16,0x40
    048E DF55      RCALL	_LCD_WRITE_COM
(0285)                for(i=0;i<4;i++)
    048F 2766      CLR	R22
    0490 C018      RJMP	0x04A9
(0286)                    for(j=0;j<16;j++)
    0491 24AA      CLR	R10
    0492 C012      RJMP	0x04A5
(0287)                             {
(0288)                               LCD_WRITE_DAT(Tab_pic2[i+k*8][j]);
    0493 E088      LDI	R24,0x8
    0494 9F84      MUL	R24,R20
    0495 2E26      MOV	R2,R22
    0496 0C20      ADD	R2,R0
    0497 E180      LDI	R24,0x10
    0498 9D82      MUL	R24,R2
    0499 0110      MOVW	R2,R0
    049A EF8C      LDI	R24,0xFC
    049B E092      LDI	R25,2
    049C 0E28      ADD	R2,R24
    049D 1E39      ADC	R3,R25
    049E 2DEA      MOV	R30,R10
    049F 27FF      CLR	R31
    04A0 0DE2      ADD	R30,R2
    04A1 1DF3      ADC	R31,R3
    04A2 9104      LPM	R16,0(Z)
    04A3 DF29      RCALL	_LCD_WRITE_DAT
    04A4 94A3      INC	R10
    04A5 2D8A      MOV	R24,R10
    04A6 3180      CPI	R24,0x10
    04A7 F358      BCS	0x0493
    04A8 9563      INC	R22
    04A9 3064      CPI	R22,4
    04AA F330      BCS	0x0491
    04AB 9543      INC	R20
    04AC 3048      CPI	R20,0x8
    04AD F2E0      BCS	0x048A
(0289)                               
(0290)                             }
(0291) 							
(0292)   }
(0293)    LCDCS1L;
    04AE 9895      CBI	0x12,5
(0294)   LCDCS2H; 
    04AF 9A94      SBI	0x12,4
(0295)    LCD_WRITE_COM(0x3F);
    04B0 E30F      LDI	R16,0x3F
    04B1 DF32      RCALL	_LCD_WRITE_COM
(0296)   LCD_WRITE_COM(0xC0);
    04B2 EC00      LDI	R16,0xC0
    04B3 DF30      RCALL	_LCD_WRITE_COM
(0297)   for(k=0;k<8;k++)
    04B4 2744      CLR	R20
    04B5 C023      RJMP	0x04D9
(0298)     {
(0299)          LCD_WRITE_COM(0xB8+k);         //起始行,每页有八行
    04B6 2F04      MOV	R16,R20
    04B7 5408      SUBI	R16,0x48
    04B8 DF2B      RCALL	_LCD_WRITE_COM
(0300) 	     LCD_WRITE_COM(0x40);              //起始列,列自动加一
    04B9 E400      LDI	R16,0x40
    04BA DF29      RCALL	_LCD_WRITE_COM
(0301)                for(i=0;i<4;i++)
    04BB 2766      CLR	R22
    04BC C019      RJMP	0x04D6
(0302)                    for(j=0;j<16;j++)
    04BD 24AA      CLR	R10
    04BE C013      RJMP	0x04D2
(0303)                             {
(0304)                               LCD_WRITE_DAT(Tab_pic2[i+4+k*8][j]);        
    04BF E088      LDI	R24,0x8
    04C0 9F84      MUL	R24,R20
    04C1 2F86      MOV	R24,R22
    04C2 5F8C      SUBI	R24,0xFC
    04C3 0D80      ADD	R24,R0
    04C4 E190      LDI	R25,0x10
    04C5 9F98      MUL	R25,R24
    04C6 0110      MOVW	R2,R0
    04C7 EF8C      LDI	R24,0xFC
    04C8 E092      LDI	R25,2
    04C9 0E28      ADD	R2,R24
    04CA 1E39      ADC	R3,R25
    04CB 2DEA      MOV	R30,R10
    04CC 27FF      CLR	R31
    04CD 0DE2      ADD	R30,R2
    04CE 1DF3      ADC	R31,R3
    04CF 9104      LPM	R16,0(Z)
    04D0 DEFC      RCALL	_LCD_WRITE_DAT
    04D1 94A3      INC	R10
    04D2 2D8A      MOV	R24,R10

⌨️ 快捷键说明

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