📄 lcdsd1335.lst
字号:
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 + -