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

📄 lcdsd1335.lst

📁 AVR单片机
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
    14F3 EFCF      LDI	R28,0xFF
    14F4 E1D0      LDI	R29,0x10
    14F5 BFCD      OUT	0x3D,R28
    14F6 BFDE      OUT	0x3E,R29
    14F7 51CE      SUBI	R28,0x1E
    14F8 40D0      SBCI	R29,0
    14F9 EA0A      LDI	R16,0xAA
    14FA 8308      STD	Y+0,R16
    14FB 2400      CLR	R0
    14FC E4E1      LDI	R30,0x41
    14FD E0F1      LDI	R31,1
    14FE E011      LDI	R17,1
    14FF 34E1      CPI	R30,0x41
    1500 07F1      CPC	R31,R17
    1501 F011      BEQ	0x1504
    1502 9201      ST	R0,Z+
    1503 CFFB      RJMP	0x14FF
    1504 8300      STD	Z+0,R16
    1505 EAE4      LDI	R30,0xA4
    1506 E2F9      LDI	R31,0x29
    1507 E0A0      LDI	R26,0
    1508 E0B1      LDI	R27,1
    1509 E219      LDI	R17,0x29
    150A E000      LDI	R16,0
    150B BF0B      OUT	0x3B,R16
    150C 3EE5      CPI	R30,0xE5
    150D 07F1      CPC	R31,R17
    150E F021      BEQ	0x1513
    150F 95C8      LPM
    1510 9631      ADIW	R30,1
    1511 920D      ST	R0,X+
    1512 CFF9      RJMP	0x150C
    1513 940E 1516 CALL	_main
_exit:
    1515 CFFF      RJMP	_exit
_main:
  o                    --> R10
  j                    --> R20
  i                    --> R22
    1516 9727      SBIW	R28,7
FILE: F:\avr\lcdsd1330\lcd_test.c
(0001) /***********************************************************************
(0002) Content: Test for graphic library for Epson SED-1335 based LCD displays.
(0003) Last modified: 15.05.2003
(0004) Copyrights: Free to use, free to change, free to delete :-)
(0005) Compiler: ImageCraft AVR
(0006) Written by: Knut Baardsen @ Baardsen Software, Norway
(0007) Updates: http://www.baso.no
(0008) ***********************************************************************/
(0009) 
(0010) /***********************************************************************
(0011) This software is provided "as is"; Without warranties either express or
(0012) implied, including any warranty regarding merchantability, fitness for 
(0013) a particular purpose or noninfringement. 
(0014) In no event shall Baardsen Software or its suppliers be liable for any 
(0015) special,indirect,incidential or concequential damages resulting from 
(0016) the use or inability to use this software.
(0017) ***********************************************************************/
(0018) 
(0019) 
(0020) /***********************************************************************
(0021) Includes
(0022) ***********************************************************************/
(0023) #include "global.h"
(0024) 
(0025) 
(0026) /***********************************************************************
(0027) Defines and globals 
(0028) ***********************************************************************/
(0029) #define ClockX		   160
(0030) #define ClockY		   120
(0031) #define ClockOR		   40
(0032) #define ClockIR		   2
(0033) int sec = 0;
(0034) int min = 0;
(0035) 
(0036) 
(0037) /***********************************************************************
(0038) Main 
(0039) ***********************************************************************/
(0040) void main()
(0041) {
(0042)  int i = 0; 
    1517 2766      CLR	R22
    1518 2777      CLR	R23
(0043)  int j = 0;
    1519 2744      CLR	R20
    151A 2755      CLR	R21
(0044)   int o = 0;
    151B 24AA      CLR	R10
    151C 24BB      CLR	R11
(0045)   // Init the display
(0046)   lcd_init();
    151D 940E 1663 CALL	_lcd_init
(0047)   lcd_clear_text();
    151F 940E 16C4 CALL	_lcd_clear_text
(0048)   lcd_clear_graphics();
    1521 940E 171C CALL	_lcd_clear_graphics
(0049)   
(0050)    lcd_write_command(0x4f); 
    1523 E40F      LDI	R16,0x4F
    1524 940E 164E CALL	_lcd_write_command
(0051)  /*lcd_write_command(0x46);   
(0052)  lcd_write_data(0x00);       
(0053)  lcd_write_data(0x10);
(0054)  lcd_show_cursor(1);
(0055)  // lcd_show_cursor(0);  
(0056)  lcd_write_command(0x42);
(0057)  for (i = 0;i < 16; i++)
(0058)  {   
(0059)      lcd_write_data(jian4[i]);       
(0060)  } 
(0061)  lcd_write_command(0x46);   
(0062)  lcd_write_data(0x01);       
(0063)  lcd_write_data(0x10);
(0064)    
(0065)  lcd_write_command(0x42);
(0066)  for (i = 16;i < 32; i++)
(0067)  {   
(0068)      lcd_write_data(jian4[i]);       
(0069)  }*/
(0070)  
(0071)  for(j= 0; j < 40 ; j++ )
(0072)  {
(0073)     lcd_write_command(0x46); 
    1526 E406      LDI	R16,0x46
    1527 940E 164E CALL	_lcd_write_command
(0074)     lcd_write_data(0x00+j);       
    1529 2F04      MOV	R16,R20
    152A 940E 1653 CALL	_lcd_write_data
(0075)     lcd_write_data(0x10);
    152C E100      LDI	R16,0x10
    152D 940E 1653 CALL	_lcd_write_data
(0076) 	lcd_write_command(0x42);
    152F E402      LDI	R16,0x42
    1530 940E 164E CALL	_lcd_write_command
(0077)     for(i = j*240; i < (240*j+240) ; i++)
    1532 EF00      LDI	R16,0xF0
    1533 E010      LDI	R17,0
    1534 019A      MOVW	R18,R20
    1535 940E 1ABE CALL	empy16s
    1537 01B8      MOVW	R22,R16
    1538 C00B      RJMP	0x1544
(0078)     {
(0079) 	    lcd_write_data(~windows[i]);   
    1539 E184      LDI	R24,0x14
    153A E091      LDI	R25,1
    153B 01FB      MOVW	R30,R22
    153C 0FE8      ADD	R30,R24
    153D 1FF9      ADC	R31,R25
    153E 9106      ELPM	R16,1(Z)
    153F 9500      COM	R16
    1540 940E 1653 CALL	_lcd_write_data
    1542 5F6F      SUBI	R22,0xFF
    1543 4F7F      SBCI	R23,0xFF
    1544 EF00      LDI	R16,0xF0
    1545 E010      LDI	R17,0
    1546 019A      MOVW	R18,R20
    1547 940E 1ABE CALL	empy16s
    1549 01C8      MOVW	R24,R16
    154A 5180      SUBI	R24,0x10
    154B 4F9F      SBCI	R25,0xFF
    154C 1768      CP	R22,R24
    154D 0779      CPC	R23,R25
    154E F354      BLT	0x1539
    154F 5F4F      SUBI	R20,0xFF
    1550 4F5F      SBCI	R21,0xFF
    1551 3248      CPI	R20,0x28
    1552 E0E0      LDI	R30,0
    1553 075E      CPC	R21,R30
    1554 F28C      BLT	0x1526
(0080)     }
(0081)  }
(0082)  while(1);  
    1555 CFFF      RJMP	0x1555
(0083)   
(0084)   // Disable all interrupts
(0085)   CLI();
(0086)   // Set up timer 1 for about 1 second 
(0087)  TCCR1B = 0x00; //stop
(0088)  TCNT1H = 0xE3; //setup
(0089)  TCNT1L = 0xE1;
(0090)  OCR1AH = 0x1C;
(0091)  OCR1AL = 0x1F;
(0092)  OCR1BH = 0x1C;
(0093)  OCR1BL = 0x1F;
(0094)  OCR1CH = 0x1C;
(0095)  OCR1CL = 0x1F;
(0096)  ICR1H  = 0x1C;
(0097)  ICR1L  = 0x1F;
(0098)  TCCR1A = 0x00;
(0099)  TCCR1B = 0x05; //start Timer
(0100)  MCUCR = 0x00;
(0101)  EICRA = 0x00; //extended ext ints
(0102)  EICRB = 0x00; //extended ext ints
(0103)  EIMSK = 0x00;
(0104)  TIMSK = 0x04; //timer interrupt sources
(0105)  ETIMSK = 0x00; //extended timer interrupt sources
(0106)   //lcd_chinesechar(0, 0,jian4 ,2,16,0);
(0107)    // lcd_chinesechar(50, 50,jian4 ,2,16,1);
(0108)   //lcd_chinesechar(10, 12,jian4 ,2,16,1);
(0109)   //while(1);
(0110)   // Draw a frame
(0111)   lcd_rectangle(1,1,320,240,1);
(0112)   lcd_rectangle(3,3,318,238,1);
(0113)   // Write some text
(0114)   
(0115)   
(0116)   lcd_goto(10,4);
(0117)   lcd_write_string(" Baardsen Software");
(0118)   lcd_goto(10,5);
(0119)   lcd_write_string("   Svennahaugen 39");
(0120)   lcd_goto(10,6);
(0121)   lcd_write_string("5516 Haugesund, Norway");
(0122)   //DrawClockOutline();
(0123)   lcd_circle(ClockX,ClockY,ClockIR,1);
(0124)   lcd_circle(ClockX,ClockY,ClockOR,1);
(0125)   i = 0;
(0126)   
(0127)   SEI();
(0128)   while (i < 360)
(0129)   {
(0130)     lcd_degree_line(ClockX,ClockY,i,ClockOR-5,ClockOR,1);
    1556 E081      LDI	R24,1
    1557 838E      STD	Y+6,R24
    1558 E288      LDI	R24,0x28
    1559 E090      LDI	R25,0
    155A 839D      STD	Y+5,R25
    155B 838C      STD	Y+4,R24
    155C E283      LDI	R24,0x23
    155D 839B      STD	Y+3,R25
    155E 838A      STD	Y+2,R24
    155F 8379      STD	Y+1,R23
    1560 8368      STD	Y+0,R22
    1561 E728      LDI	R18,0x78
    1562 E030      LDI	R19,0
    1563 EA00      LDI	R16,0xA0
    1564 E010      LDI	R17,0
    1565 940E 17D8 CALL	_lcd_degree_line
(0131)       i = i + 30;
    1567 5E62      SUBI	R22,0xE2
    1568 4F7F      SBCI	R23,0xFF
    1569 3668      CPI	R22,0x68
    156A E0E1      LDI	R30,1
    156B 077E      CPC	R23,R30
    156C F34C      BLT	0x1556
(0132)   }
(0133)   // Ok, then we enable interrupts and timer which will simulate
(0134)   // a good old analog clock. Enjoy !
(0135)   while(1);
    156D CFFF      RJMP	0x156D
    156E 9627      ADIW	R28,7
    156F 9508      RET
_timer1_ovf_isr:
    1570 920A      ST	R0,-Y
    1571 921A      ST	R1,-Y
    1572 922A      ST	R2,-Y
    1573 923A      ST	R3,-Y
    1574 924A      ST	R4,-Y
    1575 925A      ST	R5,-Y
    1576 926A      ST	R6,-Y
    1577 927A      ST	R7,-Y
    1578 928A      ST	R8,-Y
    1579 929A      ST	R9,-Y
    157A 930A      ST	R16,-Y
    157B 931A      ST	R17,-Y
    157C 932A      ST	R18,-Y
    157D 933A      ST	R19,-Y
    157E 938A      ST	R24,-Y
    157F 939A      ST	R25,-Y
    1580 93AA      ST	R26,-Y
    1581 93BA      ST	R27,-Y
    1582 93EA      ST	R30,-Y
    1583 93FA      ST	R31,-Y
    1584 B60F      IN	R0,0x3F
    1585 920A      ST	R0,-Y
    1586 9727      SBIW	R28,7
(0136) }
(0137) 
(0138) 
(0139) /***********************************************************************
(0140) Interrupt handler for Timer 1 - 1 Second 
(0141) ***********************************************************************/
(0142) #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
(0143) void timer1_ovf_isr(void)
(0144) {
(0145)  //TIMER1 has overflowed
(0146)  TCNT1H = 0xE3; //reload counter high value
    1587 EE83      LDI	R24,0xE3
    1588 BD8D      OUT	0x2D,R24
(0147)  TCNT1L = 0xE1; //reload counter low value
    1589 EE81      LDI	R24,0xE1
    158A BD8C      OUT	0x2C,R24
(0148)   // Draw seconds
(0149)   lcd_degree_line(ClockX,ClockY,sec,ClockIR+1,ClockOR-7,0); 
    158B 2422      CLR	R2
    158C 822E      STD	Y+6,R2
    158D E281      LDI	R24,0x21
    158E E090      LDI	R25,0
    158F 839D      STD	Y+5,R25
    1590 838C      STD	Y+4,R24
    1591 E083      LDI	R24,3
    1592 839B      STD	Y+3,R25
    1593 838A      STD	Y+2,R24
    1594 9020 0100 LDS	R2,sec
    1596 9030 0101 LDS	R3,sec+1
    1598 8239      STD	Y+1,R3
    1599 8228      STD	Y+0,R2
    159A E728      LDI	R18,0x78
    159B E030      LDI	R19,0
    159C EA00      LDI	R16,0xA0
    159D E010      LDI	R17,0
    159E 940E 17D8 CALL	_lcd_degree_line
(0150)   sec = sec + 6;
    15A0 9180 0100 LDS	R24,sec
    15A2 9190 0101 LDS	R25,sec+1
    15A4 9606      ADIW	R24,6
    15A5 9390 0101 STS	sec+1,R25
    15A7 9380 0100 STS	sec,R24
(0151)   lcd_degree_line(ClockX,ClockY,sec,ClockIR+1,ClockOR-7,1); 
    15A9 E081      LDI	R24,1
    15AA 838E      STD	Y+6,R24
    15AB E281      LDI	R24,0x21
    15AC E090      LDI	R25,0
    15AD 839D      STD	Y+5,R25
    15AE 838C      STD	Y+4,R24
    15AF E083      LDI	R24,3
    15B0 839B      STD	Y+3,R25
    15B1 838A      STD	Y+2,R24
    15B2 9020 0100 LDS	R2,sec
    15B4 9030 0101 LDS	R3,sec+1
    15B6 8239      STD	Y+1,R3
    15B7 8228      STD	Y+0,R2
    15B8 E728      LDI	R18,0x78
    15B9 E030      LDI	R19,0
    15BA EA00      LDI	R16,0xA0
    15BB E010      LDI	R17,0
    15BC 940E 17D8 CALL	_lcd_degree_line
(0152)   // Draw minute
(0153)   lcd_degree_line(ClockX,ClockY,min,ClockIR+1,ClockOR-15,1); 
    15BE E081      LDI	R24,1
    15BF 838E      STD	Y+6,R24
    15C0 E189      LDI	R24,0x19
    15C1 E090      LDI	R25,0
    15C2 839D      STD	Y+5,R25
    15C3 838C      STD	Y+4,R24
    15C4 E083      LDI	R24,3
    15C5 839B      STD	Y+3,R25
    15C6 838A      STD	Y+2,R24
    15C7 9020 0102 LDS	R2,min
    15C9 9030 0103 LDS	R3,min+1
    15CB 8239      STD	Y+1,R3
    15CC 8228      STD	Y+0,R2
    15CD E728      LDI	R18,0x78
    15CE E030      LDI	R19,0
    15CF EA00      LDI	R16,0xA0
    15D0 E010      LDI	R17,0
    15D1 940E 17D8 CALL	_lcd_degree_line
(0154)   // Some simple checking....
(0155)   if (sec >= 360) 
    15D3 9180 0100 LDS	R24,sec
    15D5 9190 0101 LDS	R25,sec+1
    15D7 3688      CPI	R24,0x68
    15D8 E0E1      LDI	R30,1
    15D9 079E      CPC	R25,R30
    15DA F1C4      BLT	0x1613
(0156)   {
(0157)     sec = 0;
    15DB 2422      CLR	R2
    15DC 2433      CLR	R3
    15DD 9230 0101 STS	sec+1,R3
    15DF 9220 0100 STS	sec,R2
(0158)     lcd_degree_line(ClockX,ClockY,min,ClockIR+1,ClockOR-15,0);
    15E1 822E      STD	Y+6,R2
    15E2 E189      LDI	R24,0x19
    15E3 E090      LDI	R25,0
    15E4 839D      STD	Y+5,R25
    15E5 838C      STD	Y+4,R24
    15E6 E083      LDI	R24,3
    15E7 839B      STD	Y+3,R25
    15E8 838A      STD	Y+2,R24
    15E9 9020 0102 LDS	R2,min
    15EB 9030 0103 LDS	R3,min+1
    15ED 8239      STD	Y+1,R3
    15EE 8228      STD	Y+0,R2
    15EF E728      LDI	R18,0x78
    15F0 E030      LDI	R19,0
    15F1 EA00      LDI	R16,0xA0
    15F2 E010      LDI	R17,0
    15F3 940E 17D8 CALL	_lcd_degree_line
(0159)     min = min + 6;
    15F5 9180 0102 LDS	R24,min
    15F7 9190 0103 LDS	R25,min+1

⌨️ 快捷键说明

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