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

📄 6963.lis

📁 液晶驱动程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -