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

📄 6963.lst

📁 液晶驱动程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
__text_start:
__start:
    07AA E5CF      LDI	R28,0x5F
    07AB E0D4      LDI	R29,4
    07AC BFCD      OUT	0x3D,R28
    07AD BFDE      OUT	0x3E,R29
    07AE 51C0      SUBI	R28,0x10
    07AF 40D0      SBCI	R29,0
    07B0 EA0A      LDI	R16,0xAA
    07B1 8308      STD	Y+0,R16
    07B2 2400      CLR	R0
    07B3 E6E0      LDI	R30,0x60
    07B4 E0F0      LDI	R31,0
    07B5 E010      LDI	R17,0
    07B6 36E0      CPI	R30,0x60
    07B7 07F1      CPC	R31,R17
    07B8 F011      BEQ	0x07BB
    07B9 9201      ST	R0,Z+
    07BA CFFB      RJMP	0x07B6
    07BB 8300      STD	Z+0,R16
    07BC E5E4      LDI	R30,0x54
    07BD E0FF      LDI	R31,0xF
    07BE E6A0      LDI	R26,0x60
    07BF E0B0      LDI	R27,0
    07C0 E01F      LDI	R17,0xF
    07C1 35E4      CPI	R30,0x54
    07C2 07F1      CPC	R31,R17
    07C3 F021      BEQ	0x07C8
    07C4 95C8      LPM
    07C5 9631      ADIW	R30,1
    07C6 920D      ST	R0,X+
    07C7 CFF9      RJMP	0x07C1
    07C8 940E08AB  CALL	_main
_exit:
    07CA CFFF      RJMP	_exit
_lcd_delay:
  i                    --> R20
  time                 --> R16
    07CB 940E08D4  CALL	push_gset1
FILE: C:\DOCUME~1\yr\桌面\6963\6963.c
(0001) /*******************************************************************************
(0002) **                      T6963C液晶驱动 RT240128
(0003) **                         MAGE16L 8M
(0004) ********************************************************************************
(0005) **创 建 人:杨如峰
(0006) **文 件 名:240128.c
(0007) **创建日期:2005-11-17 
(0008) **版 本 号:yrf0422
(0009) *******************************************************************************/
(0010) #include "config.h"
(0011) 
(0012) #define LCD_LEFT        0
(0013) #define LCD_TOP         0
(0014) #define LCD_RIGHT       239
(0015) #define LCD_BOTTOM      127
(0016) 
(0017) #define LCD_DELAY       0
(0018) /***********************************************************************************/
(0019) void lcd_delay(uint time)
(0020) {
    07CD C009      RJMP	0x07D7
(0021)         uint i;
(0022)         while(time--)
(0023)            for(i=0;i<1000;i++);
    07CE 2744      CLR	R20
    07CF 2755      CLR	R21
    07D0 C002      RJMP	0x07D3
    07D1 5F4F      SUBI	R20,0xFF
    07D2 4F5F      SBCI	R21,0xFF
    07D3 3E48      CPI	R20,0xE8
    07D4 E0E3      LDI	R30,3
    07D5 075E      CPC	R21,R30
    07D6 F3D0      BCS	0x07D1
    07D7 0118      MOVW	R2,R16
    07D8 5001      SUBI	R16,1
    07D9 4010      SBCI	R17,0
    07DA 2022      TST	R2
    07DB F791      BNE	0x07CE
    07DC 2033      TST	R3
    07DD F781      BNE	0x07CE
    07DE 940E08D7  CALL	pop_gset1
    07E0 9508      RET
(0024)               
(0025) }
(0026) /***********************************************************************************/
(0027) void lcd_wd(uchar lcd_data)/*写数据*/
(0028) {
(0029)         LCD_DDR          = 0X00;
_lcd_wd:
  lcd_data             --> R16
    07E1 2422      CLR	R2
    07E2 BA2A      OUT	0x1A,R2
(0030)         LCD_CODE_P      &= ~(BIT(LCD_RD) | BIT(LCD_CE));
    07E3 B388      IN	R24,0x18
    07E4 7F89      ANDI	R24,0xF9
    07E5 BB88      OUT	0x18,R24
(0031)         /*LCD_CODE_P       = 0XF9;*/
(0032)         while((LCD_DATA & 0X03) != 0X03);
    07E6 B389      IN	R24,0x19
    07E7 7083      ANDI	R24,3
    07E8 3083      CPI	R24,3
    07E9 F7E1      BNE	0x07E6
(0033)         LCD_RD_H;
    07EA 9AC1      SBI	0x18,1
(0034)         LCD_CD_L;
    07EB 98C3      CBI	0x18,3
(0035)         LCD_RW_L;
    07EC 98C0      CBI	0x18,0
(0036)         /*LCD_CODE_P       = 0XF2;*/
(0037)         LCD_DDR          = 0XFF;
    07ED EF8F      LDI	R24,0xFF
    07EE BB8A      OUT	0x1A,R24
(0038)         LCD_PORT         = lcd_data;
    07EF BB0B      OUT	0x1B,R16
(0039)         LCD_CODE_P       |= (BIT(LCD_RW) | BIT(LCD_RD) | BIT(LCD_CD) | BIT(LCD_CE));
    07F0 B388      IN	R24,0x18
    07F1 608F      ORI	R24,0xF
    07F2 BB88      OUT	0x18,R24
    07F3 9508      RET
(0040) }
(0041) /***********************************************************************************/
(0042) void lcd_wc(uchar lcd_code)/*写命令*/
(0043) {
(0044)         LCD_DDR          = 0X00;
_lcd_wc:
  lcd_code             --> R16
    07F4 2422      CLR	R2
    07F5 BA2A      OUT	0x1A,R2
(0045)         LCD_CODE_P      &= ~(BIT(LCD_RD) | BIT(LCD_CE));
    07F6 B388      IN	R24,0x18
    07F7 7F89      ANDI	R24,0xF9
    07F8 BB88      OUT	0x18,R24
(0046)         /*LCD_CODE_P      = 0XF9;*/
(0047)         while((LCD_DATA & 0X03) != 0X03);
    07F9 B389      IN	R24,0x19
    07FA 7083      ANDI	R24,3
    07FB 3083      CPI	R24,3
    07FC F7E1      BNE	0x07F9
(0048)         LCD_RD_H;
    07FD 9AC1      SBI	0x18,1
(0049) 		LCD_CD_H;   //修改过了,把CD拉高为写命令
    07FE 9AC3      SBI	0x18,3
(0050)         LCD_RW_L;
    07FF 98C0      CBI	0x18,0
(0051)         /*LCD_CODE_P       = 0XFA;*/
(0052)         LCD_DDR          = 0XFF;
    0800 EF8F      LDI	R24,0xFF
    0801 BB8A      OUT	0x1A,R24
(0053)         LCD_PORT         = lcd_code;
    0802 BB0B      OUT	0x1B,R16
(0054)         LCD_CODE_P       |= (BIT(LCD_RW) | BIT(LCD_RD) | BIT(LCD_CD) | BIT(LCD_CE));
    0803 B388      IN	R24,0x18
    0804 608F      ORI	R24,0xF
    0805 BB88      OUT	0x18,R24
    0806 9508      RET
_lcd_wc3:
  lcd_data2            --> Y+4
  lcd_data1            --> R22
  lcd_code             --> R20
    0807 940E08D2  CALL	push_gset2
    0809 2F62      MOV	R22,R18
    080A 2F40      MOV	R20,R16
(0055) }
(0056) /***********************************************************************************/
(0057) void lcd_wc3(uchar lcd_code,uchar lcd_data1,uchar lcd_data2)
(0058) {
(0059)         lcd_wd(lcd_data1);
    080B 2F06      MOV	R16,R22
    080C DFD4      RCALL	_lcd_wd
(0060)         lcd_wd(lcd_data2);
    080D 810C      LDD	R16,Y+4
    080E DFD2      RCALL	_lcd_wd
(0061)         lcd_wc(lcd_code);
    080F 2F04      MOV	R16,R20
    0810 DFE3      RCALL	_lcd_wc
    0811 940E08C6  CALL	pop_gset2
    0813 9508      RET
_lcd_init:
    0814 9721      SBIW	R28,1
(0062) }
(0063) /***********************************************************************************/
(0064) void lcd_init(void)
(0065) {
(0066)         LCD_RES_H;
    0815 9AC4      SBI	0x18,4
(0067)         LCD_RES_L;
    0816 98C4      CBI	0x18,4
(0068)         lcd_delay(15);
    0817 E00F      LDI	R16,0xF
    0818 E010      LDI	R17,0
    0819 DFB1      RCALL	_lcd_delay
(0069)         LCD_RES_H;
    081A 9AC4      SBI	0x18,4
(0070)         
(0071)         lcd_wc3(0x40,0,0);     //设置文本显示区首地址
    081B 2422      CLR	R2
    081C 8228      STD	Y+0,R2
    081D 2722      CLR	R18
    081E E400      LDI	R16,0x40
    081F DFE7      RCALL	_lcd_wc3
(0072)         lcd_wc3(0x41,30,0);    //设置文本显示区宽度
    0820 2422      CLR	R2
    0821 8228      STD	Y+0,R2
    0822 E12E      LDI	R18,0x1E
    0823 E401      LDI	R16,0x41
    0824 DFE2      RCALL	_lcd_wc3
(0073)         lcd_wc3(0x42,0,0);     //设置图形显示区首地址
    0825 2422      CLR	R2
    0826 8228      STD	Y+0,R2
    0827 2722      CLR	R18
    0828 E402      LDI	R16,0x42
    0829 DFDD      RCALL	_lcd_wc3
(0074)         lcd_wc3(0x43,30,0);    //设置图形显示区宽度
    082A 2422      CLR	R2
    082B 8228      STD	Y+0,R2
    082C E12E      LDI	R18,0x1E
    082D E403      LDI	R16,0x43
    082E DFD8      RCALL	_lcd_wc3
(0075) 		lcd_wc(0x80);          //设置显示模式为逻辑“或”模式
    082F E800      LDI	R16,0x80
    0830 DFC3      RCALL	_lcd_wc
(0076)         lcd_wc(0x98);          //开显示,图形显示
    0831 E908      LDI	R16,0x98
    0832 DFC1      RCALL	_lcd_wc
    0833 9621      ADIW	R28,1
    0834 9508      RET
_lcd_clear:
  i                    --> R20
  j                    --> R10
  lcd_data             --> R22
    0835 940E08D0  CALL	push_gset3
    0837 2F60      MOV	R22,R16
    0838 9721      SBIW	R28,1
(0077) }
(0078) /***********************************************************************************/
(0079) void lcd_clear(uchar lcd_data)
(0080) {
(0081)         uchar i,j;
(0082)         lcd_wc(0x98);                    /* 打开图形显示,关闭文本显示   */
    0839 E908      LDI	R16,0x98
    083A DFB9      RCALL	_lcd_wc
(0083)         lcd_wc3(0x24,0,0);               /* 设置地址指针 */
    083B 2422      CLR	R2
    083C 8228      STD	Y+0,R2
    083D 2722      CLR	R18
    083E E204      LDI	R16,0x24
    083F DFC7      RCALL	_lcd_wc3
(0084)         lcd_wc(0xb0);                    /* 设置自动写数据 */
    0840 EB00      LDI	R16,0xB0
    0841 DFB2      RCALL	_lcd_wc

⌨️ 快捷键说明

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