📄 6963.lis
字号:
.module _6963.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\yr\桌面\6963\6963.c
0000 .dbfunc e lcd_delay _lcd_delay fV
0000 ; i -> R20,R21
0000 ; time -> R16,R17
.even
0000 _lcd_delay::
0000 0E940000 xcall push_gset1
0004 .dbline -1
0004 .dbline 20
0004 ; /*******************************************************************************
0004 ; ** T6963C液晶驱动 RT240128
0004 ; ** MAGE16L 8M
0004 ; ********************************************************************************
0004 ; **创 建 人:杨如峰
0004 ; **文 件 名:240128.c
0004 ; **创建日期:2005-11-17
0004 ; **版 本 号:yrf0422
0004 ; *******************************************************************************/
0004 ; #include "config.h"
0004 ;
0004 ; #define LCD_LEFT 0
0004 ; #define LCD_TOP 0
0004 ; #define LCD_RIGHT 239
0004 ; #define LCD_BOTTOM 127
0004 ;
0004 ; #define LCD_DELAY 0
0004 ; /***********************************************************************************/
0004 ; void lcd_delay(uint time)
0004 ; {
0004 09C0 xjmp L3
0006 L2:
0006 .dbline 23
0006 4427 clr R20
0008 5527 clr R21
000A 02C0 xjmp L8
000C L5:
000C .dbline 23
000C L6:
000C .dbline 23
000C 4F5F subi R20,255 ; offset = 1
000E 5F4F sbci R21,255
0010 L8:
0010 .dbline 23
0010 483E cpi R20,232
0012 E3E0 ldi R30,3
0014 5E07 cpc R21,R30
0016 D0F3 brlo L5
0018 L3:
0018 .dbline 22
0018 ; uint i;
0018 ; while(time--)
0018 1801 movw R2,R16
001A 0150 subi R16,1
001C 1040 sbci R17,0
001E 2220 tst R2
0020 91F7 brne L2
0022 3320 tst R3
0024 81F7 brne L2
0026 X0:
0026 .dbline -2
0026 L1:
0026 0E940000 xcall pop_gset1
002A .dbline 0 ; func end
002A 0895 ret
002C .dbsym r i 20 i
002C .dbsym r time 16 i
002C .dbend
002C .dbfunc e lcd_wd _lcd_wd fV
002C ; lcd_data -> R16
.even
002C _lcd_wd::
002C .dbline -1
002C .dbline 28
002C ; for(i=0;i<1000;i++);
002C ;
002C ; }
002C ; /***********************************************************************************/
002C ; void lcd_wd(uchar lcd_data)/*写数据*/
002C ; {
002C .dbline 29
002C ; LCD_DDR = 0X00;
002C 2224 clr R2
002E 2ABA out 0x1a,R2
0030 .dbline 30
0030 ; LCD_CODE_P &= ~(BIT(LCD_RD) | BIT(LCD_CE));
0030 88B3 in R24,0x18
0032 897F andi R24,249
0034 88BB out 0x18,R24
0036 L10:
0036 .dbline 32
0036 L11:
0036 .dbline 32
0036 ; /*LCD_CODE_P = 0XF9;*/
0036 ; while((LCD_DATA & 0X03) != 0X03);
0036 89B3 in R24,0x19
0038 8370 andi R24,3
003A 8330 cpi R24,3
003C E1F7 brne L10
003E .dbline 33
003E ; LCD_RD_H;
003E C19A sbi 0x18,1
0040 .dbline 34
0040 ; LCD_CD_L;
0040 C398 cbi 0x18,3
0042 .dbline 35
0042 ; LCD_RW_L;
0042 C098 cbi 0x18,0
0044 .dbline 37
0044 ; /*LCD_CODE_P = 0XF2;*/
0044 ; LCD_DDR = 0XFF;
0044 8FEF ldi R24,255
0046 8ABB out 0x1a,R24
0048 .dbline 38
0048 ; LCD_PORT = lcd_data;
0048 0BBB out 0x1b,R16
004A .dbline 39
004A ; LCD_CODE_P |= (BIT(LCD_RW) | BIT(LCD_RD) | BIT(LCD_CD) | BIT(LCD_CE));
004A 88B3 in R24,0x18
004C 8F60 ori R24,15
004E 88BB out 0x18,R24
0050 .dbline -2
0050 L9:
0050 .dbline 0 ; func end
0050 0895 ret
0052 .dbsym r lcd_data 16 c
0052 .dbend
0052 .dbfunc e lcd_wc _lcd_wc fV
0052 ; lcd_code -> R16
.even
0052 _lcd_wc::
0052 .dbline -1
0052 .dbline 43
0052 ; }
0052 ; /***********************************************************************************/
0052 ; void lcd_wc(uchar lcd_code)/*写命令*/
0052 ; {
0052 .dbline 44
0052 ; LCD_DDR = 0X00;
0052 2224 clr R2
0054 2ABA out 0x1a,R2
0056 .dbline 45
0056 ; LCD_CODE_P &= ~(BIT(LCD_RD) | BIT(LCD_CE));
0056 88B3 in R24,0x18
0058 897F andi R24,249
005A 88BB out 0x18,R24
005C L14:
005C .dbline 47
005C L15:
005C .dbline 47
005C ; /*LCD_CODE_P = 0XF9;*/
005C ; while((LCD_DATA & 0X03) != 0X03);
005C 89B3 in R24,0x19
005E 8370 andi R24,3
0060 8330 cpi R24,3
0062 E1F7 brne L14
0064 .dbline 48
0064 ; LCD_RD_H;
0064 C19A sbi 0x18,1
0066 .dbline 49
0066 ; LCD_CD_H; //修改过了,把CD拉高为写命令
0066 C39A sbi 0x18,3
0068 .dbline 50
0068 ; LCD_RW_L;
0068 C098 cbi 0x18,0
006A .dbline 52
006A ; /*LCD_CODE_P = 0XFA;*/
006A ; LCD_DDR = 0XFF;
006A 8FEF ldi R24,255
006C 8ABB out 0x1a,R24
006E .dbline 53
006E ; LCD_PORT = lcd_code;
006E 0BBB out 0x1b,R16
0070 .dbline 54
0070 ; LCD_CODE_P |= (BIT(LCD_RW) | BIT(LCD_RD) | BIT(LCD_CD) | BIT(LCD_CE));
0070 88B3 in R24,0x18
0072 8F60 ori R24,15
0074 88BB out 0x18,R24
0076 .dbline -2
0076 L13:
0076 .dbline 0 ; func end
0076 0895 ret
0078 .dbsym r lcd_code 16 c
0078 .dbend
0078 .dbfunc e lcd_wc3 _lcd_wc3 fV
0078 ; lcd_data2 -> y+4
0078 ; lcd_data1 -> R22
0078 ; lcd_code -> R20
.even
0078 _lcd_wc3::
0078 0E940000 xcall push_gset2
007C 622F mov R22,R18
007E 402F mov R20,R16
0080 .dbline -1
0080 .dbline 58
0080 ; }
0080 ; /***********************************************************************************/
0080 ; void lcd_wc3(uchar lcd_code,uchar lcd_data1,uchar lcd_data2)
0080 ; {
0080 .dbline 59
0080 ; lcd_wd(lcd_data1);
0080 062F mov R16,R22
0082 D4DF xcall _lcd_wd
0084 .dbline 60
0084 ; lcd_wd(lcd_data2);
0084 0C81 ldd R16,y+4
0086 D2DF xcall _lcd_wd
0088 .dbline 61
0088 ; lcd_wc(lcd_code);
0088 042F mov R16,R20
008A E3DF xcall _lcd_wc
008C .dbline -2
008C L17:
008C 0E940000 xcall pop_gset2
0090 .dbline 0 ; func end
0090 0895 ret
0092 .dbsym l lcd_data2 4 c
0092 .dbsym r lcd_data1 22 c
0092 .dbsym r lcd_code 20 c
0092 .dbend
0092 .dbfunc e lcd_init _lcd_init fV
.even
0092 _lcd_init::
0092 2197 sbiw R28,1
0094 .dbline -1
0094 .dbline 65
0094 ; }
0094 ; /***********************************************************************************/
0094 ; void lcd_init(void)
0094 ; {
0094 .dbline 66
0094 ; LCD_RES_H;
0094 C49A sbi 0x18,4
0096 .dbline 67
0096 ; LCD_RES_L;
0096 C498 cbi 0x18,4
0098 .dbline 68
0098 ; lcd_delay(15);
0098 0FE0 ldi R16,15
009A 10E0 ldi R17,0
009C B1DF xcall _lcd_delay
009E .dbline 69
009E ; LCD_RES_H;
009E C49A sbi 0x18,4
00A0 .dbline 71
00A0 ;
00A0 ; lcd_wc3(0x40,0,0); //设置文本显示区首地址
00A0 2224 clr R2
00A2 2882 std y+0,R2
00A4 2227 clr R18
00A6 00E4 ldi R16,64
00A8 E7DF xcall _lcd_wc3
00AA .dbline 72
00AA ; lcd_wc3(0x41,30,0); //设置文本显示区宽度
00AA 2224 clr R2
00AC 2882 std y+0,R2
00AE 2EE1 ldi R18,30
00B0 01E4 ldi R16,65
00B2 E2DF xcall _lcd_wc3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -