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

📄 lcdsd1335.lst

📁 AVR单片机
💻 LST
📖 第 1 页 / 共 5 页
字号:
    15F9 9606      ADIW	R24,6
    15FA 9390 0103 STS	min+1,R25
    15FC 9380 0102 STS	min,R24
(0160)     lcd_degree_line(ClockX,ClockY,min,ClockIR+1,ClockOR-15,1);
    15FE E081      LDI	R24,1
    15FF 838E      STD	Y+6,R24
    1600 E189      LDI	R24,0x19
    1601 E090      LDI	R25,0
    1602 839D      STD	Y+5,R25
    1603 838C      STD	Y+4,R24
    1604 E083      LDI	R24,3
    1605 839B      STD	Y+3,R25
    1606 838A      STD	Y+2,R24
    1607 9020 0102 LDS	R2,min
    1609 9030 0103 LDS	R3,min+1
    160B 8239      STD	Y+1,R3
    160C 8228      STD	Y+0,R2
    160D E728      LDI	R18,0x78
    160E E030      LDI	R19,0
    160F EA00      LDI	R16,0xA0
    1610 E010      LDI	R17,0
    1611 940E 17D8 CALL	_lcd_degree_line
(0161)   }
(0162)   if (min >= 360)
    1613 9180 0102 LDS	R24,min
    1615 9190 0103 LDS	R25,min+1
    1617 3688      CPI	R24,0x68
    1618 E0E1      LDI	R30,1
    1619 079E      CPC	R25,R30
    161A F034      BLT	0x1621
(0163)   {
(0164)     min = 0;
    161B 2422      CLR	R2
    161C 2433      CLR	R3
    161D 9230 0103 STS	min+1,R3
    161F 9220 0102 STS	min,R2
(0165)   }
    1621 9627      ADIW	R28,7
    1622 9009      LD	R0,Y+
    1623 BE0F      OUT	0x3F,R0
    1624 91F9      LD	R31,Y+
    1625 91E9      LD	R30,Y+
    1626 91B9      LD	R27,Y+
    1627 91A9      LD	R26,Y+
    1628 9199      LD	R25,Y+
    1629 9189      LD	R24,Y+
    162A 9139      LD	R19,Y+
    162B 9129      LD	R18,Y+
    162C 9119      LD	R17,Y+
    162D 9109      LD	R16,Y+
    162E 9099      LD	R9,Y+
    162F 9089      LD	R8,Y+
    1630 9079      LD	R7,Y+
    1631 9069      LD	R6,Y+
    1632 9059      LD	R5,Y+
    1633 9049      LD	R4,Y+
    1634 9039      LD	R3,Y+
    1635 9029      LD	R2,Y+
    1636 9019      LD	R1,Y+
    1637 9009      LD	R0,Y+
    1638 9518      RETI
_lcd_delay:
  x                    --> R20
  y                    --> R22
  i                    --> R16
    1639 940E 1AE4 CALL	push_xgsetF000
FILE: F:\avr\lcdsd1330\1335.c
(0001) 
(0002) /*
(0003) *******************************************************************************
(0004) *
(0005) *                                 保定建通制造有限责任公司
(0006) *
(0007) *                  BAODING JIANTONG ELECTRICAL APPLIANCE MANUFACTURING CO.,LTD.
(0008) *
(0009) *                  http://www.jtdq.com.cn/
(0010) *                  email:jtdq@jtdq.com.cn
(0011) *
(0012) *文件名称:
(0013) *
(0014) *包含函数:
(0015) *
(0016) *函数说明:
(0017) *
(0018) *
(0019) *
(0020) *
(0021) *
(0022) *
(0023) *作者:段胜柱     duanshengzhu@126.com
(0024) *
(0025) *时间:
(0026) ***************************************************************************
(0027) */ 
(0028) 
(0029) /***********************************************************************
(0030) Content: Graphic library for Epson SED-1335 based LCD displays.
(0031) Last modified: 15.05.2003
(0032) Copyrights: Free to use, free to change, free to delete :-)
(0033) Compiler: ImageCraft AVR
(0034) Written by: Knut Baardsen @ Baardsen Software, Norway
(0035) Updates: http://www.baso.no
(0036) ***********************************************************************/
(0037) 
(0038) /***********************************************************************
(0039) This software is provided "as is"; Without warranties either express or
(0040) implied, including any warranty regarding merchantability, fitness for 
(0041) a particular purpose or noninfringement. 
(0042) In no event shall Baardsen Software or its suppliers be liable for any 
(0043) special,indirect,incidential or concequential damages resulting from 
(0044) the use or inability to use this software.
(0045) ***********************************************************************/
(0046) 
(0047) #include"global.h"
(0048) 
(0049) 
(0050) 
(0051) /***********************************************************************
(0052) Makes a delay at approximate 2mS at 8MHz
(0053) ***********************************************************************/
(0054) void lcd_delay(unsigned int i)
(0055) {
(0056)   int x ,y;
(0057)   for (x = 0; x < i; x++)
    163B 2744      CLR	R20
    163C 2755      CLR	R21
    163D C00B      RJMP	0x1649
(0058)   {
(0059)      for (y = 0; y <200; y++)
    163E 2766      CLR	R22
    163F 2777      CLR	R23
(0060)      asm("WDR");
    1640 95A8      WDR
    1641 5F6F      SUBI	R22,0xFF
    1642 4F7F      SBCI	R23,0xFF
    1643 3C68      CPI	R22,0xC8
    1644 E0E0      LDI	R30,0
    1645 077E      CPC	R23,R30
    1646 F3CC      BLT	0x1640
    1647 5F4F      SUBI	R20,0xFF
    1648 4F5F      SBCI	R21,0xFF
    1649 1740      CP	R20,R16
    164A 0751      CPC	R21,R17
    164B F390      BCS	0x163E
    164C 940C 1AE9 JMP	pop_xgsetF000
(0061)   }
(0062) }
(0063) 
(0064) 
(0065) /***********************************************************************
(0066) Write specified command to LCD panel.
(0067) This is an internal function...
(0068) ***********************************************************************/
(0069) void lcd_write_command(unsigned char command)
(0070) {
(0071)   LCDDATAPORT = command;
_lcd_write_command:
  command              --> R16
    164E BB0B      OUT	0x1B,R16
(0072)   LCDCTLPORT |= A0;   
    164F 9AAD      SBI	0x15,5
(0073)   LCDCTLPORT &= ~(WR);
    1650 98AC      CBI	0x15,4
(0074)   LCDCTLPORT |= WR;   
    1651 9AAC      SBI	0x15,4
    1652 9508      RET
(0075) }
(0076) 
(0077) 
(0078) /***********************************************************************
(0079) Write specified data to LCD panel.
(0080) This is an internal function...
(0081) ***********************************************************************/
(0082) void lcd_write_data(unsigned char data)
(0083) {
(0084)   LCDDATAPORT = data;
_lcd_write_data:
  data                 --> R16
    1653 BB0B      OUT	0x1B,R16
(0085)   LCDCTLPORT &= ~(A0);
    1654 98AD      CBI	0x15,5
(0086)   LCDCTLPORT &= ~(WR);
    1655 98AC      CBI	0x15,4
(0087)   LCDCTLPORT |= WR;   
    1656 9AAC      SBI	0x15,4
    1657 9508      RET
(0088) }
(0089) 
(0090) 
(0091) /***********************************************************************
(0092) Read data from LCD panel at position given by lcd_pixel command.
(0093) This is an internal function...
(0094) ***********************************************************************/
(0095) unsigned char lcd_read_data(void)
(0096) {
(0097)   unsigned char data;
(0098)   int i;
(0099)   LCDDATADDR = 0x00;    
_lcd_read_data:
  i                    --> Y,+1
  data                 --> R16
    1658 2422      CLR	R2
    1659 BA2A      OUT	0x1A,R2
(0100)   LCDCTLPORT |= A0;     
    165A 9AAD      SBI	0x15,5
(0101)   LCDCTLPORT &= ~(RD);  
    165B 98AB      CBI	0x15,3
(0102)   data = LCDDATAPIN;    
    165C B309      IN	R16,0x19
(0103)   data = LCDDATAPIN;    
    165D B309      IN	R16,0x19
(0104)   data = LCDDATAPIN;    
    165E B309      IN	R16,0x19
(0105)   LCDCTLPORT |= RD;     
    165F 9AAB      SBI	0x15,3
(0106)   LCDDATADDR = 0xff;    
    1660 EF8F      LDI	R24,0xFF
    1661 BB8A      OUT	0x1A,R24
(0107)   return data;
    1662 9508      RET
_lcd_init:
  i                    --> R20
    1663 934A      ST	R20,-Y
    1664 935A      ST	R21,-Y
(0108) }
(0109) 
(0110) 
(0111) /***********************************************************************
(0112) Initialize the LCD controller. Read the documentation for the 
(0113) controller in use. If any other than SED1335 values can be wrong ! 
(0114) ***********************************************************************/
(0115) void lcd_init(void)
(0116) {
(0117)   int i;
(0118)   // Setup LCD Data bus port as output
(0119)   LCDDATAPORT  = 0xff;
    1665 EF8F      LDI	R24,0xFF
    1666 BB8B      OUT	0x1B,R24
(0120)   LCDDATADDR   = 0xff; 
    1667 BB8A      OUT	0x1A,R24
(0121)    
(0122)   // Setup LCD control bus port as output
(0123)   LCDCTLDDR |= 0xff; 
    1668 B384      IN	R24,0x14
    1669 6F8F      ORI	R24,0xFF
    166A BB84      OUT	0x14,R24
(0124)   LCDCTLPORT = 0xff;
    166B EF8F      LDI	R24,0xFF
    166C BB85      OUT	0x15,R24
(0125)   LCDCTLPORT = LCDCTLPORT&CSEL;
    166D B385      IN	R24,0x15
    166E 778F      ANDI	R24,0x7F
    166F BB85      OUT	0x15,R24
(0126) 
(0127)           
(0128)   LCDCTLPORT |= WR;           
    1670 9AAC      SBI	0x15,4
(0129)   LCDCTLPORT |= RD;           
    1671 9AAB      SBI	0x15,3
(0130)   // Reset the LCD
(0131)   LCDCTLPORT |= RST;
    1672 9AAE      SBI	0x15,6
(0132)   lcd_delay(5);
    1673 E005      LDI	R16,5
    1674 E010      LDI	R17,0
    1675 DFC3      RCALL	_lcd_delay
(0133)   LCDCTLPORT &= ~RST;
    1676 98AE      CBI	0x15,6
(0134)   for (i=0; i<50; i++) lcd_delay(5);
    1677 2744      CLR	R20
    1678 2755      CLR	R21
    1679 E005      LDI	R16,5
    167A E010      LDI	R17,0
    167B DFBD      RCALL	_lcd_delay
    167C 5F4F      SUBI	R20,0xFF
    167D 4F5F      SBCI	R21,0xFF
    167E 3342      CPI	R20,0x32
    167F E0E0      LDI	R30,0
    1680 075E      CPC	R21,R30
    1681 F3BC      BLT	0x1679
(0135)   LCDCTLPORT |= RST; 
    1682 9AAE      SBI	0x15,6
(0136)   
(0137)  
(0138)   // System
(0139)   lcd_write_command(0x40); 
    1683 E400      LDI	R16,0x40
    1684 DFC9      RCALL	_lcd_write_command
(0140)   lcd_write_data(0x30);////////////////////////////P1   0  0 B 1 WS M2 M1 M0
    1685 E300      LDI	R16,0x30
    1686 DFCC      RCALL	_lcd_write_data
(0141)   lcd_write_data(0x87);////////////////////////////P2   WF 0 0 0 0    FX(0-7)
    1687 E807      LDI	R16,0x87
    1688 DFCA      RCALL	_lcd_write_data
(0142)   lcd_write_data(0x07);////////////////////////////P3   0  0 0 0     FY(0-F)
    1689 E007      LDI	R16,7
    168A DFC8      RCALL	_lcd_write_data
(0143)   lcd_write_data((LCD_X_SIZE/8)-1); ///////////////P4          C/R
    168B E207      LDI	R16,0x27
    168C DFC6      RCALL	_lcd_write_data
(0144)   lcd_write_data(0x42); ///////////////////////////P5          TC/R>cr+4
    168D E402      LDI	R16,0x42
    168E DFC4      RCALL	_lcd_write_data
(0145)   lcd_write_data(LCD_Y_SIZE - 1);//////////////////P6          L/F  240-1
    168F EE0F      LDI	R16,0xEF
    1690 DFC2      RCALL	_lcd_write_data
(0146)   lcd_write_data(LCD_X_SIZE/8);////////////////////P7          APL  40
    1691 E208      LDI	R16,0x28
    1692 DFC0      RCALL	_lcd_write_data
(0147)   lcd_write_data(0x00);//////////////////////////////P8          APH    
    1693 2700      CLR	R16
    1694 DFBE      RCALL	_lcd_write_data
(0148)   // Scroll
(0149)   lcd_write_command(0x44); 
    1695 E404      LDI	R16,0x44
    1696 DFB7      RCALL	_lcd_write_command
(0150)   lcd_write_data(0x00);    
    1697 2700      CLR	R16
    1698 DFBA      RCALL	_lcd_write_data
(0151)   lcd_write_data(0x00);    
    1699 2700      CLR	R16
    169A DFB8      RCALL	_lcd_write_data
(0152)   lcd_write_data(LCD_Y_SIZE);
    169B EF00      LDI	R16,0xF0
    169C DFB6      RCALL	_lcd_write_data
(0153)   lcd_write_data(0x00);      
    169D 2700      CLR	R16
    169E DFB4      RCALL	_lcd_write_data
(0154)   lcd_write_data(0x10);      
    169F E100      LDI	R16,0x10
    16A0 DFB2      RCALL	_lcd_write_data
(0155)   lcd_write_data(LCD_Y_SIZE);
    16A1 EF00      LDI	R16,0xF0
    16A2 DFB0      RCALL	_lcd_write_data
(0156)   // Horizontal scroll
(0157)   lcd_write_command(0x5a);  
    16A3 E50A      LDI	R16,0x5A
    16A4 DFA9      RCALL	_lcd_write_command
(0158)   lcd_write_data(0x00);     
    16A5 2700      CLR	R16
    16A6 DFAC      RCALL	_lcd_write_data
(0159)   // Overlay
(0160)   lcd_write_command(0x5b);  
    16A7 E50B      LDI	R16,0x5B
    16A8 DFA5      RCALL	_lcd_write_command
(0161)   lcd_write_data(0x03);    
    16A9 E003      LDI	R16,3
    16AA DFA8      RCALL	_lcd_write_data
(0162)   // Display On/Off I
(0163)   lcd_write_command(0x58);
    16AB E508      LDI	R16,0x58
    16AC DFA1      RCALL	_lcd_write_command
(0164)   lcd_write_data(0x14);     
    16AD E104      LDI	R16,0x14
    16AE DFA4      RCALL	_lcd_write_data
(0165)   // Cursor format
(0166)   lcd_write_command(0x5d); 
    16AF E50D      LDI	R16,0x5D
    16B0 DF9D      RCALL	_lcd_write_command
(0167)   lcd_write_data(0x07);    
    16B1 E007      LDI	R16,7
    16B2 DFA0      RCALL	_lcd_write_data
(0168)   lcd_write_data(0x87);    
    16B3 E807      LDI	R16,0x87
    16B4 DF9E      RCALL	_lcd_write_data
(0169)   // Display On/Off II 
(0170)   lcd_write_command(0x59);   
    16B5 E509      LDI	R16,0x59
    16B6 DF97      RCALL	_lcd_write_command
(0171)   lcd_write_data(0x14); // 0 0 0 1 0 1 0 0     
    16B7 E104      LDI	R16,0x14
    16B8 DF9A      RCALL	_lcd_write_data
(0172)   // Curson direction  
(0173)   lcd_write_command(0x4c);          
    16B9 E40C      LDI	R16,0x4C
    16BA DF93      RCALL	_lcd_write_command
(0174)   // CUrsor write  
(0175)   lcd_write_command(0x46);
    16BB E406      LDI	R16,0x46
    16BC DF91      RCALL	_lcd_write_command
(0176)   lcd_write_data(0x00); 
    16BD 2700      CLR	R16
    16BE DF94      RCALL	_lcd_write_data
(0177)   lcd_write_data(0x00);  
    16BF 2700      CLR	R16
    16C0 DF92      RCALL	_lcd_write_data
    16C1 9159      LD	R21,Y+
    16C2 9149      LD	R20,Y+
    16C3 9508      RET
_lcd_clear_text:
  i                    --> R20
    16C4 934A      ST	R20,-Y
    16C5 935A      ST	R21,-Y
(0178) }
(0179) /***********************************************************************

⌨️ 快捷键说明

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