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

📄 test.lst

📁 用ATmega88驱动LCD240128
💻 LST
📖 第 1 页 / 共 4 页
字号:
__start:
__text_start:
    03EA EFCF      LDI	R28,0xFF
    03EB E0D4      LDI	R29,4
    03EC BFCD      OUT	0x3D,R28
    03ED BFDE      OUT	0x3E,R29
    03EE 51C0      SUBI	R28,0x10
    03EF 40D0      SBCI	R29,0
    03F0 EA0A      LDI	R16,0xAA
    03F1 8308      STD	Y+0,R16
    03F2 2400      CLR	R0
    03F3 E4E4      LDI	R30,0x44
    03F4 E0F1      LDI	R31,1
    03F5 E011      LDI	R17,1
    03F6 34E6      CPI	R30,0x46
    03F7 07F1      CPC	R31,R17
    03F8 F011      BEQ	0x03FB
    03F9 9201      ST	R0,Z+
    03FA CFFB      RJMP	0x03F6
    03FB 8300      STD	Z+0,R16
    03FC E9E0      LDI	R30,0x90
    03FD E0F7      LDI	R31,7
    03FE E0A0      LDI	R26,0
    03FF E0B1      LDI	R27,1
    0400 E017      LDI	R17,7
    0401 3DE4      CPI	R30,0xD4
    0402 07F1      CPC	R31,R17
    0403 F021      BEQ	0x0408
    0404 95C8      LPM
    0405 9631      ADIW	R30,1
    0406 920D      ST	R0,X+
    0407 CFF9      RJMP	0x0401
    0408 D04F      RCALL	_main
_exit:
    0409 CFFF      RJMP	_exit
FILE: D:\工作\240X12~1\(000)\TEST.C
(0001) // Target : M88
(0002) // Crystal: 16.0000Mhz
(0003) #include <iom88v.h>
(0004) #include <macros.h>
(0005) #include "240128.h"
(0006) //#include "storeroom.h"
(0007) //------------------------------------------------------------------------------
(0008) void port_init(void)
(0009) {
(0010)     PORTB = 0xFF;
_port_init:
    040A EF8F      LDI	R24,0xFF
    040B B985      OUT	0x05,R24
(0011)     DDRB  = 0xFF;
    040C B984      OUT	0x04,R24
(0012)     PORTC = 0xFF; //m103 output only
    040D B988      OUT	0x08,R24
(0013)     DDRC  = 0xFF;
    040E B987      OUT	0x07,R24
(0014)     PORTD = 0xFF;
    040F B98B      OUT	0x0B,R24
(0015)     DDRD  = 0xFF;
    0410 B98A      OUT	0x0A,R24
    0411 9508      RET
(0016) }
(0017) void init_devices(void)
(0018) {
(0019)     CLI();               //disable all interrupts
_init_devices:
    0412 94F8      BCLR	7
(0020)     port_init();	
    0413 DFF6      RCALL	_port_init
(0021)     MCUCR  = 0x00;
    0414 2422      CLR	R2
    0415 BE25      OUT	0x35,R2
(0022)     EICRA  = 0x00;       //extended ext ints
    0416 92200069  STS	0x69,R2
(0023)     EIMSK  = 0x00; 
    0418 BA2D      OUT	0x1D,R2
(0024)     TIMSK0 = 0x00;       //timer 0 interrupt sources
    0419 9220006E  STS	0x6E,R2
(0025)     TIMSK1 = 0x00;       //timer 1 interrupt sources
    041B 9220006F  STS	0x6F,R2
(0026)     TIMSK2 = 0x00;       //timer 2 interrupt sources 
    041D 92200070  STS	0x70,R2
(0027)     PCMSK0 = 0x00;       //pin change mask 0 
    041F 9220006B  STS	0x6B,R2
(0028)     PCMSK1 = 0x00;       //pin change mask 1 
    0421 9220006C  STS	0x6C,R2
(0029)     PCMSK2 = 0x00;       //pin change mask 2
    0423 9220006D  STS	0x6D,R2
(0030)     PCICR  = 0x00;       //pin change enable 
    0425 92200068  STS	0x68,R2
(0031)     PRR    = 0x00;       //power controller
    0427 92200064  STS	0x64,R2
(0032)     SEI();               //re-enable interrupts
    0429 9478      BSET	7
    042A 9508      RET
(0033) }
(0034) //------------------------------------------------------------------------------
(0035) /*********************************************************************
(0036)  延时
(0037) *********************************************************************/
(0038) void delay_1us(void)
(0039)  {
(0040)      asm("nop");asm("nop");asm("nop");
_delay_1us:
    042B 0000      NOP
    042C 0000      NOP
    042D 0000      NOP
    042E 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R22
    042F D40E      RCALL	push_gset2
    0430 01B8      MOVW	R22,R16
(0041)  }
(0042) void delay_nus(unsigned int n)
(0043)  {
(0044)      unsigned int i=0;
    0431 2744      CLR	R20
    0432 2755      CLR	R21
(0045)      for (i=0;i<n;i++) delay_1us();
    0433 C003      RJMP	0x0437
    0434 DFF6      RCALL	_delay_1us
    0435 5F4F      SUBI	R20,0xFF
    0436 4F5F      SBCI	R21,0xFF
    0437 1746      CP	R20,R22
    0438 0757      CPC	R21,R23
    0439 F3D0      BCS	0x0434
    043A D3F7      RCALL	pop_gset2
    043B 9508      RET
_delay_1ms:
  i                    --> R20
    043C D403      RCALL	push_gset1
(0046)  }  
(0047) void delay_1ms(void)
(0048)  {
(0049) 	 unsigned int i;
(0050) 	 delay_nus(1000);	 
    043D EE08      LDI	R16,0xE8
    043E E013      LDI	R17,3
    043F DFEF      RCALL	_delay_nus
(0051)      for (i=0;i<1;i++);
    0440 2744      CLR	R20
    0441 2755      CLR	R21
    0442 C002      RJMP	0x0445
    0443 5F4F      SUBI	R20,0xFF
    0444 4F5F      SBCI	R21,0xFF
    0445 3041      CPI	R20,1
    0446 E0E0      LDI	R30,0
    0447 075E      CPC	R21,R30
    0448 F3D0      BCS	0x0443
    0449 D3F9      RCALL	pop_gset1
    044A 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R22
    044B D3F2      RCALL	push_gset2
    044C 01B8      MOVW	R22,R16
(0052)  }  
(0053) void delay_nms(unsigned int n)
(0054)  {
(0055)      unsigned int i=0;
    044D 2744      CLR	R20
    044E 2755      CLR	R21
(0056)     for (i=0;i<n;i++) delay_1ms();
    044F C003      RJMP	0x0453
    0450 DFEB      RCALL	_delay_1ms
    0451 5F4F      SUBI	R20,0xFF
    0452 4F5F      SBCI	R21,0xFF
    0453 1746      CP	R20,R22
    0454 0757      CPC	R21,R23
    0455 F3D0      BCS	0x0450
    0456 D3DB      RCALL	pop_gset2
    0457 9508      RET
_main:
  i                    --> R20
    0458 9725      SBIW	R28,5
(0057)  }
(0058) 
(0059) //------------------------------------------------------------------------------
(0060) void main(void)
(0061) {
(0062)     unsigned char i;
(0063) 	init_devices();
    0459 DFB8      RCALL	_init_devices
(0064)     LCD_INIT();
    045A D0EB      RCALL	_LCD_INIT
    045B C081      RJMP	0x04DD
(0065) 	while(1)
(0066) 	{
(0067)         //LCD_PRINT_240128(ouravr);
(0068) 		//delay_nms(1000);
(0069) 		LCD_CLEAR(0x00);
    045C 2700      CLR	R16
    045D D103      RCALL	_LCD_CLEAR
(0070) 		delay_nms(500);
    045E EF04      LDI	R16,0xF4
    045F E011      LDI	R17,1
    0460 DFEA      RCALL	_delay_nms
(0071) 		PRINT_words(0,0,"test for:中.文*测~试");
    0461 E28F      LDI	R24,0x2F
    0462 E091      LDI	R25,1
    0463 8399      STD	Y+1,R25
    0464 8388      STD	Y+0,R24
    0465 2722      CLR	R18
    0466 2700      CLR	R16
    0467 D154      RCALL	_PRINT_words
(0072) 		delay_nms(500);
    0468 EF04      LDI	R16,0xF4
    0469 E011      LDI	R17,1
    046A DFE0      RCALL	_delay_nms
(0073)         PRINT_words(11,2,"T6963C use ATMega88");
    046B E18B      LDI	R24,0x1B
    046C E091      LDI	R25,1
    046D 8399      STD	Y+1,R25
    046E 8388      STD	Y+0,R24
    046F E022      LDI	R18,2
    0470 E00B      LDI	R16,0xB
    0471 D14A      RCALL	_PRINT_words
(0074) 		delay_nms(500);
    0472 EF04      LDI	R16,0xF4
    0473 E011      LDI	R17,1
    0474 DFD6      RCALL	_delay_nms
(0075)         PRINT_words(2,4,"2007年5月27日-14点09分##秒");
    0475 E080      LDI	R24,0
    0476 E091      LDI	R25,1
    0477 8399      STD	Y+1,R25
    0478 8388      STD	Y+0,R24
    0479 E024      LDI	R18,4
    047A E002      LDI	R16,2
    047B D140      RCALL	_PRINT_words
(0076) 		delay_nms(500);
    047C EF04      LDI	R16,0xF4
    047D E011      LDI	R17,1
    047E DFCC      RCALL	_delay_nms
(0077)         PRINT_line(5,50,80,50,8);   // 线1
    047F E088      LDI	R24,0x8
    0480 838C      STD	Y+4,R24
    0481 E382      LDI	R24,0x32
    0482 838A      STD	Y+2,R24
    0483 E580      LDI	R24,0x50
    0484 8388      STD	Y+0,R24
    0485 E322      LDI	R18,0x32
    0486 E005      LDI	R16,5
    0487 D228      RCALL	_PRINT_line
(0078) 		delay_nms(500);
    0488 EF04      LDI	R16,0xF4
    0489 E011      LDI	R17,1
    048A DFC0      RCALL	_delay_nms
(0079)         PRINT_line(5,50,80,20,8);   // 线2
    048B E088      LDI	R24,0x8
    048C 838C      STD	Y+4,R24
    048D E184      LDI	R24,0x14
    048E 838A      STD	Y+2,R24
    048F E580      LDI	R24,0x50
    0490 8388      STD	Y+0,R24
    0491 E322      LDI	R18,0x32
    0492 E005      LDI	R16,5
    0493 D21C      RCALL	_PRINT_line
(0080) 		delay_nms(500);
    0494 EF04      LDI	R16,0xF4
    0495 E011      LDI	R17,1
    0496 DFB4      RCALL	_delay_nms
(0081)         PRINT_line(80,20,80,50,8);  // 线3
    0497 E088      LDI	R24,0x8
    0498 838C      STD	Y+4,R24
    0499 E382      LDI	R24,0x32
    049A 838A      STD	Y+2,R24
    049B E580      LDI	R24,0x50
    049C 8388      STD	Y+0,R24
    049D E124      LDI	R18,0x14
    049E E500      LDI	R16,0x50
    049F D210      RCALL	_PRINT_line
(0082) 		delay_nms(500);
    04A0 EF04      LDI	R16,0xF4
    04A1 E011      LDI	R17,1
    04A2 DFA8      RCALL	_delay_nms
(0083)         for (i=120;i>0;i--)
    04A3 E748      LDI	R20,0x78
    04A4 C017      RJMP	0x04BC
(0084)         {
(0085)             PRINT_circle(120,64,i+1,0); // 擦除外圆
    04A5 2422      CLR	R2
    04A6 822A      STD	Y+2,R2
    04A7 2F84      MOV	R24,R20
    04A8 5F8F      SUBI	R24,0xFF
    04A9 8388      STD	Y+0,R24
    04AA E420      LDI	R18,0x40
    04AB E708      LDI	R16,0x78
    04AC D29F      RCALL	_PRINT_circle
(0086)             PRINT_circle(120,64,i,8);
    04AD E088      LDI	R24,0x8
    04AE 838A      STD	Y+2,R24
    04AF 8348      STD	Y+0,R20
    04B0 E420      LDI	R18,0x40
    04B1 E708      LDI	R16,0x78
    04B2 D299      RCALL	_PRINT_circle
(0087)             PRINT_circle(120,64,i-1,8);
    04B3 E088      LDI	R24,0x8
    04B4 838A      STD	Y+2,R24
    04B5 2F84      MOV	R24,R20
    04B6 5081      SUBI	R24,1
    04B7 8388      STD	Y+0,R24
    04B8 E420      LDI	R18,0x40
    04B9 E708      LDI	R16,0x78
    04BA D291      RCALL	_PRINT_circle
    04BB 954A      DEC	R20
    04BC 2422      CLR	R2
    04BD 1624      CP	R2,R20
    04BE F330      BCS	0x04A5
(0088)         }
(0089)         for (i=5;i<64;i++)
    04BF E045      LDI	R20,5
    04C0 C01A      RJMP	0x04DB
(0090)         {
(0091)             PRINT_circle(120,64,i-1,0); // 擦除内圆
    04C1 2422      CLR	R2
    04C2 822A      STD	Y+2,R2
    04C3 2F84      MOV	R24,R20
    04C4 5081      SUBI	R24,1
    04C5 8388      STD	Y+0,R24
    04C6 E420      LDI	R18,0x40
    04C7 E708      LDI	R16,0x78
    04C8 D283      RCALL	_PRINT_circle
(0092)             PRINT_circle(120,64,i,8);
    04C9 E088      LDI	R24,0x8
    04CA 838A      STD	Y+2,R24
    04CB 8348      STD	Y+0,R20
    04CC E420      LDI	R18,0x40
    04CD E708      LDI	R16,0x78
    04CE D27D      RCALL	_PRINT_circle
(0093)             PRINT_circle(120,64,i+1,8);
    04CF E088      LDI	R24,0x8
    04D0 838A      STD	Y+2,R24
    04D1 2F84      MOV	R24,R20
    04D2 5F8F      SUBI	R24,0xFF
    04D3 8388      STD	Y+0,R24
    04D4 E420      LDI	R18,0x40
    04D5 E708      LDI	R16,0x78
    04D6 D275      RCALL	_PRINT_circle
(0094) 			delay_nms(50);            
    04D7 E302      LDI	R16,0x32
    04D8 E010      LDI	R17,0
    04D9 DF71      RCALL	_delay_nms
    04DA 9543      INC	R20
    04DB 3440      CPI	R20,0x40
    04DC F320      BCS	0x04C1
    04DD CF7E      RJMP	0x045C
    04DE 9625      ADIW	R28,5
    04DF 9508      RET
FILE: D:\工作\240X12~1\(000)\240128.C
(0001) /*******************************************************************************
(0002)                            T6963C液晶驱动 RT240128
(0003)                               MAGE88 16M
(0004) *******************************************************************************/
(0005) #include <iom88v.h>
(0006) #include <macros.h>
(0007) #include "240128.h"
(0008) #include "storeroom.h"
(0009) const unsigned char  turnf[8] = {7,6,5,4,3,2,1,0};
(0010) unsigned char gCurRow,gCurCol;
(0011) /*******************************************************************************
(0012)  状态位STA1,STA0判断读写指令和读写数据,在读写数据或者写入命令前必须保证均为1。 
(0013) *******************************************************************************/
(0014) unsigned char fnSTA01(void)
(0015) {
(0016)     if( (LCD_RD_STATUS() & 0x03) == 0x03 )    return(0);
_fnSTA01:
    04E0 D023      RCALL	_LCD_RD_STATUS
    04E1 2F80      MOV	R24,R16
    04E2 7083      ANDI	R24,3
    04E3 3083      CPI	R24,3
    04E4 F411      BNE	0x04E7
    04E5 2700      CLR	R16
    04E6 C001      RJMP	0x04E8
(0017) 	else                                      return(1);
    04E7 E001      LDI	R16,1
    04E8 9508      RET
(0018) }
(0019) /*******************************************************************************
(0020)  状态位STA2,如果STA2=1 为自动读状态
(0021) *******************************************************************************/
(0022) unsigned char fnSTA2(void)
(0023) {
(0024)     if( (LCD_RD_STATUS() & 0x04) == 0x04 )    return(0);
_fnSTA2:
    04E9 D01A      RCALL	_LCD_RD_STATUS
    04EA 2F80      MOV	R24,R16
    04EB 7084      ANDI	R24,4
    04EC 3084      CPI	R24,4
    04ED F411      BNE	0x04F0
    04EE 2700      CLR	R16
    04EF C001      RJMP	0x04F1
(0025)     else                                      return(1);
    04F0 E001      LDI	R16,1
    04F1 9508      RET
(0026) }
(0027) /*******************************************************************************
(0028)  状态位STA3 如果STA3 = 1 数据自动写状态
(0029) *******************************************************************************/
(0030) unsigned char fnSTA3(void)
(0031) {
(0032)     if( (LCD_RD_STATUS() & 0x08) == 0x08 )    return(0);
_fnSTA3:
    04F2 D011      RCALL	_LCD_RD_STATUS
    04F3 2F80      MOV	R24,R16
    04F4 7088      ANDI	R24,0x8
    04F5 3088      CPI	R24,0x8
    04F6 F411      BNE	0x04F9
    04F7 2700      CLR	R16
    04F8 C001      RJMP	0x04FA
(0033)     else                                      return(1);
    04F9 E001      LDI	R16,1
    04FA 9508      RET
(0034) }
(0035) /*******************************************************************************
(0036)  状态位STA6 如果STA6 =1 屏读/屏拷贝状态
(0037) *******************************************************************************/
(0038) unsigned char fnSTA6(void)
(0039) {
(0040)     if( (LCD_RD_STATUS() & 0x40) == 0x40 )    return(0);
_fnSTA6:
    04FB D008      RCALL	_LCD_RD_STATUS
    04FC 2F80      MOV	R24,R16
    04FD 7480      ANDI	R24,0x40
    04FE 3480      CPI	R24,0x40

⌨️ 快捷键说明

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