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

📄 192lcd.lis

📁 使用AVR的mega128进行驱动液晶芯片LMS0192A
💻 LIS
字号:
                        .module _192lcd.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\zi\lcd\192lcd\192lcd.c
 0000                   .dbfunc e LCD_Command _LCD_Command fV
 0000           ;              i -> R20,R21
 0000           ;        command -> R16,R17
                        .even
 0000           _LCD_Command::
 0000 00D0              rcall push_gset1
 0002                   .dbline -1
 0002                   .dbline 6
 0002           ; #include "iom8v.h"
 0002           ; #include "macros.h"
 0002           ; #include "lcd.h"
 0002           ; //写操作
 0002           ; void LCD_Command(unsigned command)
 0002           ; { 
 0002                   .dbline 8
 0002           ;  unsigned i;  
 0002           ;  for(i=0;i<=7;i++)
 0002 4427              clr R20
 0004 5527              clr R21
 0006 0EC0              rjmp L5
 0008           L2:
 0008                   .dbline 9
 0008           ;  {
 0008                   .dbline 10
 0008           ;   CLR_A0
 0008 AA98              cbi 0x15,2
 000A                   .dbline 11
 000A           ;   CLR_SCL
 000A A998              cbi 0x15,1
 000C                   .dbline 12
 000C           ;   if(0X80&&command==0)
 000C 0030              cpi R16,0
 000E 0107              cpc R16,R17
 0010 11F4              brne L6
 0012           X0:
 0012                   .dbline 13
 0012           ;        CLR_SI
 0012 A898              cbi 0x15,0
 0014 01C0              rjmp L7
 0016           L6:
 0016                   .dbline 15
 0016           ;   else
 0016           ;        SBIT_SI
 0016 A89A              sbi 0x15,0
 0018           L7:
 0018                   .dbline 16
 0018 A99A              sbi 0x15,1
 001A                   .dbline 17
 001A AA9A              sbi 0x15,2
 001C                   .dbline 18
 001C 000F              lsl R16
 001E 111F              rol R17
 0020                   .dbline 19
 0020           L3:
 0020                   .dbline 8
 0020 4F5F              subi R20,255  ; offset = 1
 0022 5F4F              sbci R21,255
 0024           L5:
 0024                   .dbline 8
 0024 87E0              ldi R24,7
 0026 90E0              ldi R25,0
 0028 8417              cp R24,R20
 002A 9507              cpc R25,R21
 002C 68F7              brsh L2
 002E                   .dbline -2
 002E           L1:
 002E 00D0              rcall pop_gset1
 0030                   .dbline 0 ; func end
 0030 0895              ret
 0032                   .dbsym r i 20 i
 0032                   .dbsym r command 16 i
 0032                   .dbend
 0032                   .dbfunc e LCD_Data _LCD_Data fV
 0032           ;              i -> R20,R21
 0032           ;           data -> R16,R17
                        .even
 0032           _LCD_Data::
 0032 00D0              rcall push_gset1
 0034                   .dbline -1
 0034                   .dbline 22
 0034           ;   SBIT_SCL
 0034           ;   SBIT_A0
 0034           ;   command=command<<1;
 0034           ;  }                      
 0034           ; }
 0034           ; void LCD_Data(unsigned data)
 0034           ; {
 0034                   .dbline 24
 0034           ;  unsigned i;
 0034           ;  for(i=0;i<=7;i++)
 0034 4427              clr R20
 0036 5527              clr R21
 0038 0EC0              rjmp L12
 003A           L9:
 003A                   .dbline 25
 003A           ;  {
 003A                   .dbline 26
 003A           ;   SBIT_A0
 003A AA9A              sbi 0x15,2
 003C                   .dbline 27
 003C           ;   CLR_SCL
 003C A998              cbi 0x15,1
 003E                   .dbline 28
 003E           ;   if(0x80&&data==0)
 003E 0030              cpi R16,0
 0040 0107              cpc R16,R17
 0042 11F4              brne L13
 0044           X1:
 0044                   .dbline 29
 0044           ;        CLR_SI
 0044 A898              cbi 0x15,0
 0046 01C0              rjmp L14
 0048           L13:
 0048                   .dbline 31
 0048           ;   else
 0048           ;        SBIT_SI
 0048 A89A              sbi 0x15,0
 004A           L14:
 004A                   .dbline 32
 004A A99A              sbi 0x15,1
 004C                   .dbline 33
 004C AA98              cbi 0x15,2
 004E                   .dbline 34
 004E 1695              lsr R17
 0050 0795              ror R16
 0052                   .dbline 35
 0052           L10:
 0052                   .dbline 24
 0052 4F5F              subi R20,255  ; offset = 1
 0054 5F4F              sbci R21,255
 0056           L12:
 0056                   .dbline 24
 0056 87E0              ldi R24,7
 0058 90E0              ldi R25,0
 005A 8417              cp R24,R20
 005C 9507              cpc R25,R21
 005E 68F7              brsh L9
 0060                   .dbline -2
 0060           L8:
 0060 00D0              rcall pop_gset1
 0062                   .dbline 0 ; func end
 0062 0895              ret
 0064                   .dbsym r i 20 i
 0064                   .dbsym r data 16 i
 0064                   .dbend
 0064                   .dbfunc e LCD_Init _LCD_Init fV
                        .even
 0064           _LCD_Init::
 0064                   .dbline -1
 0064                   .dbline 39
 0064           ;   SBIT_SCL
 0064           ;   CLR_A0
 0064           ;   data=data>>1;
 0064           ;  }
 0064           ; }
 0064           ; //初始化    
 0064           ; void LCD_Init(void)
 0064           ; {
 0064                   .dbline 40
 0064           ;    CLR_RES
 0064 AB98              cbi 0x15,3
 0066                   .dbline 41
 0066           ;    Delay_1ms();
 0066 00D0              rcall _Delay_1ms
 0068                   .dbline 42
 0068           ;    SBIT_RES
 0068 AB9A              sbi 0x15,3
 006A                   .dbline 43
 006A           ;    Delay_1ms();
 006A 00D0              rcall _Delay_1ms
 006C                   .dbline 44
 006C           ;    LCD_Command(0XAB);//OSC ON
 006C 0BEA              ldi R16,171
 006E 10E0              ldi R17,0
 0070 C7DF              rcall _LCD_Command
 0072                   .dbline 45
 0072           ;    LCD_Command(0XA2);//BIAS=1/9
 0072 02EA              ldi R16,162
 0074 10E0              ldi R17,0
 0076 C4DF              rcall _LCD_Command
 0078                   .dbline 46
 0078           ;    LCD_Command(0XA1);//ADC=1
 0078 01EA              ldi R16,161
 007A 10E0              ldi R17,0
 007C C1DF              rcall _LCD_Command
 007E                   .dbline 47
 007E           ;    LCD_Command(0XC8);//COM=1
 007E 08EC              ldi R16,200
 0080 10E0              ldi R17,0
 0082 BEDF              rcall _LCD_Command
 0084                   .dbline 48
 0084           ;    LCD_Command(0X40);//START LINE=0
 0084 00E4              ldi R16,64
 0086 10E0              ldi R17,0
 0088 BBDF              rcall _LCD_Command
 008A                   .dbline 49
 008A           ;    LCD_Command(0X2F);//POWER CONTROL
 008A 0FE2              ldi R16,47
 008C 10E0              ldi R17,0
 008E B8DF              rcall _LCD_Command
 0090                   .dbline 50
 0090           ;    LCD_Command(0X25);//set internal res
 0090 05E2              ldi R16,37
 0092 10E0              ldi R17,0
 0094 B5DF              rcall _LCD_Command
 0096                   .dbline 53
 0096           ;    //LCD_Command(0XA4);//DISPLAY ALL LIGHT=OFF
 0096           ;    //LCD_Command(0XA6);//DISPLAY NORMAL
 0096           ;    LCD_Command(0X81);//set v mode
 0096 01E8              ldi R16,129
 0098 10E0              ldi R17,0
 009A B2DF              rcall _LCD_Command
 009C                   .dbline 54
 009C           ;    LCD_Command(0X13);//set v reg
 009C 03E1              ldi R16,19
 009E 10E0              ldi R17,0
 00A0 AFDF              rcall _LCD_Command
 00A2                   .dbline 55
 00A2           ;    LCD_Command(0XAF);//DISPLAY ON
 00A2 0FEA              ldi R16,175
 00A4 10E0              ldi R17,0
 00A6 ACDF              rcall _LCD_Command
 00A8                   .dbline 56
 00A8           ;    LCD_Command(0XB0);//set page address
 00A8 00EB              ldi R16,176
 00AA 10E0              ldi R17,0
 00AC A9DF              rcall _LCD_Command
 00AE                   .dbline 57
 00AE           ;    LCD_Command(0X10);//column up-4
 00AE 00E1              ldi R16,16
 00B0 10E0              ldi R17,0
 00B2 A6DF              rcall _LCD_Command
 00B4                   .dbline 58
 00B4           ;    LCD_Command(0X00);//column low-4
 00B4 0027              clr R16
 00B6 1127              clr R17
 00B8 A3DF              rcall _LCD_Command
 00BA                   .dbline -2
 00BA           L15:
 00BA                   .dbline 0 ; func end
 00BA 0895              ret
 00BC                   .dbend
 00BC                   .dbfunc e DIS_Lcd_XY _DIS_Lcd_XY fV
 00BC           ;          colum -> R22,R23
 00BC           ;           temp -> R20,R21
 00BC           ;           data -> y+4
 00BC           ;           page -> R20,R21
 00BC           ;         column -> R22,R23
                        .even
 00BC           _DIS_Lcd_XY::
 00BC 00D0              rcall push_gset2
 00BE A901              movw R20,R18
 00C0 B801              movw R22,R16
 00C2                   .dbline -1
 00C2                   .dbline 61
 00C2           ; }
 00C2           ; void DIS_Lcd_XY(unsigned column,unsigned page,unsigned data)
 00C2           ; {
 00C2                   .dbline 63
 00C2           ;  unsigned temp;
 00C2           ;  unsigned colum=column+0x24;
 00C2 6C5D              subi R22,220  ; offset = 36
 00C4 7F4F              sbci R23,255
 00C6                   .dbline 64
 00C6           ;  temp=page|0xB0;
 00C6 406B              ori R20,176
 00C8                   .dbline 65
 00C8           ;  LCD_Command(temp);/*设置页*/
 00C8 8A01              movw R16,R20
 00CA 9ADF              rcall _LCD_Command
 00CC                   .dbline 66
 00CC           ;  temp=((colum>>4)&0x0F)|0x10;
 00CC AB01              movw R20,R22
 00CE 5695              lsr R21
 00D0 4795              ror R20
 00D2 5695              lsr R21
 00D4 4795              ror R20
 00D6 5695              lsr R21
 00D8 4795              ror R20
 00DA 5695              lsr R21
 00DC 4795              ror R20
 00DE 4F70              andi R20,15
 00E0 5070              andi R21,0
 00E2 4061              ori R20,16
 00E4                   .dbline 67
 00E4           ;  LCD_Command(temp);/*设置列高位*/    
 00E4 8A01              movw R16,R20
 00E6 8CDF              rcall _LCD_Command
 00E8                   .dbline 68
 00E8           ;  temp=colum&0x0F;
 00E8 AB01              movw R20,R22
 00EA 4F70              andi R20,15
 00EC 5070              andi R21,0
 00EE                   .dbline 69
 00EE           ;  LCD_Command(temp);/*设置列低位*/
 00EE 8A01              movw R16,R20
 00F0 87DF              rcall _LCD_Command
 00F2                   .dbline 70
 00F2           ;  LCD_Data(data);
 00F2 0C81              ldd R16,y+4
 00F4 1D81              ldd R17,y+5
 00F6 9DDF              rcall _LCD_Data
 00F8                   .dbline -2
 00F8           L16:
 00F8 00D0              rcall pop_gset2
 00FA                   .dbline 0 ; func end
 00FA 0895              ret
 00FC                   .dbsym r colum 22 i
 00FC                   .dbsym r temp 20 i
 00FC                   .dbsym l data 4 i
 00FC                   .dbsym r page 20 i
 00FC                   .dbsym r column 22 i
 00FC                   .dbend

⌨️ 快捷键说明

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