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