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

📄 lcddrive.lis

📁 ssd1325控制器液晶的驱动程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 006E                   .dbline -1
 006E                   .dbline 163
 006E           ; } 
 006E           ; /***********************************************************************
 006E           ; * 名称:LCD_TestStaBit01()
 006E           ; * 功能:判断读写指令和读写数据是否允许。
 006E           ; * 入口参数:无
 006E           ; * 出口参数:返回0表示禁止,否则表示允许
 006E           ; ***********************************************************************/
 006E           ; uint8  LCD_TestStaBit01(void)
 006E           ; {  /*uint8 i;
 006E           L12:
 006E                   .dbline 170
 006E           L13:
 006E                   .dbline 170
 006E           ; 
 006E           ;    for(i=100; i>0; i--)
 006E           ;    {  if( (LCD_ReadState()&0x03)==0x03 ) break;
 006E           ;    }
 006E           ;    
 006E           ;    return(i);*/
 006E           ;    while((LCD_ReadState()&0x03)!=3);
 006E E6DF              xcall _LCD_ReadState
 0070 C801              movw R24,R16
 0072 8370              andi R24,3
 0074 9070              andi R25,0
 0076 8330              cpi R24,3
 0078 E0E0              ldi R30,0
 007A 9E07              cpc R25,R30
 007C C1F7              brne L12
 007E                   .dbline -2
 007E           L11:
 007E                   .dbline 0 ; func end
 007E 0895              ret
 0080                   .dbend
 0080                   .dbfunc e LCD_TestStaBit3 _LCD_TestStaBit3 fc
 0080           ;              i -> R20
                        .even
 0080           _LCD_TestStaBit3::
 0080 0E940000          xcall push_gset1
 0084                   .dbline -1
 0084                   .dbline 180
 0084           ; }
 0084           ; 
 0084           ; /***********************************************************************
 0084           ; * 名称:LCD_TestStaBit3()
 0084           ; * 功能:数据自动写状态是否允许。
 0084           ; * 入口参数:无
 0084           ; * 出口参数:返回0表示禁止,否则表示允许
 0084           ; ***********************************************************************/
 0084           ; uint8  LCD_TestStaBit3(void)
 0084           ; {  uint8 i;
 0084                   .dbline 182
 0084           ; 
 0084           ;    for(i=100; i>0; i--)
 0084 44E6              ldi R20,100
 0086 0AC0              xjmp L19
 0088           L16:
 0088                   .dbline 183
 0088           ;    {  if( (LCD_ReadState()&0x08)==0x08 ) break;
 0088                   .dbline 183
 0088 D9DF              xcall _LCD_ReadState
 008A C801              movw R24,R16
 008C 8870              andi R24,8
 008E 9070              andi R25,0
 0090 8830              cpi R24,8
 0092 E0E0              ldi R30,0
 0094 9E07              cpc R25,R30
 0096 09F4              brne L20
 0098                   .dbline 183
 0098 04C0              xjmp L18
 009A           L20:
 009A                   .dbline 184
 009A           L17:
 009A                   .dbline 182
 009A 4A95              dec R20
 009C           L19:
 009C                   .dbline 182
 009C 2224              clr R2
 009E 2416              cp R2,R20
 00A0 98F3              brlo L16
 00A2           L18:
 00A2                   .dbline 186
 00A2           ;    }
 00A2           ;    
 00A2           ;    return(i);
 00A2 042F              mov R16,R20
 00A4                   .dbline -2
 00A4           L15:
 00A4 0E940000          xcall pop_gset1
 00A8                   .dbline 0 ; func end
 00A8 0895              ret
 00AA                   .dbsym r i 20 c
 00AA                   .dbend
 00AA                   .dbfunc e LCD_WriteTCommand1 _LCD_WriteTCommand1 fc
 00AA           ;        command -> R20
                        .even
 00AA           _LCD_WriteTCommand1::
 00AA 0E940000          xcall push_gset1
 00AE 402F              mov R20,R16
 00B0                   .dbline -1
 00B0                   .dbline 197
 00B0           ; }
 00B0           ; 
 00B0           ; 
 00B0           ; /***********************************************************************
 00B0           ; * 名称:LCD_WriteTCommand1()
 00B0           ; * 功能:写无参数命令子程序。会先判断LCM状态字。
 00B0           ; * 入口参数:command           要写入LCM的命令字
 00B0           ; * 出口参数:操作出错返回0,否则返回1
 00B0           ; ***********************************************************************/
 00B0           ; uint8  LCD_WriteTCommand1(uint8 command)
 00B0           ; {  if( LCD_TestStaBit01()==0 ) return(0);
 00B0                   .dbline 197
 00B0 DEDF              xcall _LCD_TestStaBit01
 00B2 0023              tst R16
 00B4 11F4              brne L23
 00B6                   .dbline 197
 00B6 0027              clr R16
 00B8 03C0              xjmp L22
 00BA           L23:
 00BA                   .dbline 198
 00BA           ;    LCD_WriteCommand(command);         // 发送命令字
 00BA 042F              mov R16,R20
 00BC A1DF              xcall _LCD_WriteCommand
 00BE                   .dbline 200
 00BE           ;    
 00BE           ;    return(1);
 00BE 01E0              ldi R16,1
 00C0                   .dbline -2
 00C0           L22:
 00C0 0E940000          xcall pop_gset1
 00C4                   .dbline 0 ; func end
 00C4 0895              ret
 00C6                   .dbsym r command 20 c
 00C6                   .dbend
 00C6                   .dbfunc e LCD_WriteTCommand3 _LCD_WriteTCommand3 fc
 00C6           ;           dat2 -> y+4
 00C6           ;           dat1 -> R22
 00C6           ;        command -> R20
                        .even
 00C6           _LCD_WriteTCommand3::
 00C6 0E940000          xcall push_gset2
 00CA 622F              mov R22,R18
 00CC 402F              mov R20,R16
 00CE                   .dbline -1
 00CE                   .dbline 214
 00CE           ; }
 00CE           ; 
 00CE           ; 
 00CE           ; /***********************************************************************
 00CE           ; * 名称:LCD_WriteTCommand3()
 00CE           ; * 功能:写双参数命令子程序。会先判断LCM状态字。
 00CE           ; * 入口参数:command   要写入LCM的命令字
 00CE           ; *          dat1               参数1
 00CE           ; *          dat2               参数2
 00CE           ; * 出口参数:操作出错返回0,否则返回1
 00CE           ; * 说明:先发送两字节参数据数据,再发送命令字
 00CE           ; ***********************************************************************/
 00CE           ; uint8  LCD_WriteTCommand3(uint8 command, uint8 dat1, uint8 dat2)
 00CE           ; {  if( LCD_TestStaBit01()==0 ) return(0);
 00CE                   .dbline 214
 00CE CFDF              xcall _LCD_TestStaBit01
 00D0 0023              tst R16
 00D2 11F4              brne L26
 00D4                   .dbline 214
 00D4 0027              clr R16
 00D6 11C0              xjmp L25
 00D8           L26:
 00D8                   .dbline 215
 00D8           ;    LCD_WriteData(dat1);                               // 发送数据1
 00D8 062F              mov R16,R22
 00DA A0DF              xcall _LCD_WriteData
 00DC                   .dbline 217
 00DC           ;    
 00DC           ;    if( LCD_TestStaBit01()==0 ) return(0);
 00DC C8DF              xcall _LCD_TestStaBit01
 00DE 0023              tst R16
 00E0 11F4              brne L28
 00E2                   .dbline 217
 00E2 0027              clr R16
 00E4 0AC0              xjmp L25
 00E6           L28:
 00E6                   .dbline 218
 00E6           ;    LCD_WriteData(dat2);                               // 发送数据2
 00E6 0C81              ldd R16,y+4
 00E8 99DF              xcall _LCD_WriteData
 00EA                   .dbline 220
 00EA           ;    
 00EA           ;    if( LCD_TestStaBit01()==0 ) return(0);
 00EA C1DF              xcall _LCD_TestStaBit01
 00EC 0023              tst R16
 00EE 11F4              brne L30
 00F0                   .dbline 220
 00F0 0027              clr R16
 00F2 03C0              xjmp L25
 00F4           L30:
 00F4                   .dbline 221
 00F4           ;    LCD_WriteCommand(command);         // 发送命令字
 00F4 042F              mov R16,R20
 00F6 84DF              xcall _LCD_WriteCommand
 00F8                   .dbline 223
 00F8           ;    
 00F8           ;    return(1);
 00F8 01E0              ldi R16,1
 00FA                   .dbline -2
 00FA           L25:
 00FA 0E940000          xcall pop_gset2
 00FE                   .dbline 0 ; func end
 00FE 0895              ret
 0100                   .dbsym l dat2 4 c
 0100                   .dbsym r dat1 22 c
 0100                   .dbsym r command 20 c
 0100                   .dbend
 0100                   .dbfunc e LCD_WriteTCommand2 _LCD_WriteTCommand2 fc
 0100           ;           dat1 -> R22
 0100           ;        command -> R20
                        .even
 0100           _LCD_WriteTCommand2::
 0100 0E940000          xcall push_gset2
 0104 622F              mov R22,R18
 0106 402F              mov R20,R16
 0108                   .dbline -1
 0108                   .dbline 236
 0108           ; }
 0108           ; 
 0108           ; 
 0108           ; /***********************************************************************
 0108           ; * 名称:LCD_WriteTCommand2()
 0108           ; * 功能:写单参数命令子程序。会先判断LCM状态字。
 0108           ; * 入口参数:command   要写入LCM的命令字
 0108           ; *          dat1               参数1
 0108           ; * 出口参数:操作出错返回0,否则返回1
 0108           ; * 说明:先发送参数据数据,再发送命令字
 0108           ; ***********************************************************************/
 0108           ; uint8  LCD_WriteTCommand2(uint8 command, uint8 dat1)
 0108           ; {  if( LCD_TestStaBit01()==0 ) return(0);
 0108                   .dbline 236
 0108 B2DF              xcall _LCD_TestStaBit01
 010A 0023              tst R16
 010C 11F4              brne L33
 010E                   .dbline 236
 010E 0027              clr R16
 0110 0AC0              xjmp L32
 0112           L33:
 0112                   .dbline 237
 0112           ;    LCD_WriteData(dat1);                               // 发送数据1
 0112 062F              mov R16,R22
 0114 83DF              xcall _LCD_WriteData
 0116                   .dbline 239
 0116           ;    
 0116           ;    if( LCD_TestStaBit01()==0 ) return(0);
 0116 ABDF              xcall _LCD_TestStaBit01
 0118 0023              tst R16
 011A 11F4              brne L35
 011C                   .dbline 239
 011C 0027              clr R16
 011E 03C0              xjmp L32
 0120           L35:
 0120                   .dbline 240
 0120           ;    LCD_WriteCommand(command);         // 发送命令字
 0120 042F              mov R16,R20
 0122 6EDF              xcall _LCD_WriteCommand
 0124                   .dbline 242
 0124           ;    
 0124           ;    return(1);
 0124 01E0              ldi R16,1
 0126                   .dbline -2
 0126           L32:
 0126 0E940000          xcall pop_gset2
 012A                   .dbline 0 ; func end
 012A 0895              ret
 012C                   .dbsym r dat1 22 c
 012C                   .dbsym r command 20 c
 012C                   .dbend
 012C                   .dbfunc e LCD_WriteTData1 _LCD_WriteTData1 fc
 012C           ;            dat -> R20
                        .even
 012C           _LCD_WriteTData1::
 012C 0E940000          xcall push_gset1
 0130 402F              mov R20,R16
 0132                   .dbline -1
 0132                   .dbline 253
 0132           ; }
 0132           ; 
 0132           ; 
 0132           ; /***********************************************************************
 0132           ; * 名称:LCD_WriteTData1()
 0132           ; * 功能:写1字节数据子程序。会先判断状态字。
 0132           ; * 入口参数:dat               要写入LCM的数据
 0132           ; * 出口参数:操作出错返回0,否则返回1

⌨️ 快捷键说明

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