1.lis

来自「这是个lcd12864液晶的串行驱动程序」· LIS 代码 · 共 1,496 行 · 第 1/4 页

LIS
1,496
字号
 02E0 0000              .byte 0,0
 02E2 0000              .byte 0,0
 02E4 0000              .byte 0,0
 02E6 0718              .byte 7,24
 02E8 2020              .byte 32,32
 02EA 2010              .byte 32,16
 02EC 0800              .byte 8,0
 02EE 0000              .byte 0,0
 02F0 8080              .byte 128,128
 02F2 8080              .byte 128,128
 02F4 8080              .byte 128,128
 02F6 8000              .byte 128,0
 02F8 8080              .byte 128,128
 02FA 8000              .byte 128,0
 02FC 0080              .byte 0,128
 02FE 8080              .byte 128,128
 0300 203F              .byte 32,63
 0302 2000              .byte 32,0
 0304 3F20              .byte 63,32
 0306 003F              .byte 0,63
 0308 0001              .byte 0,1
 030A 0E30              .byte 14,48
 030C 0806              .byte 8,6
 030E 0100              .byte 1,0
 0310                   .dbsym e HZK _HZK A[576:576]kc
                        .area text(rom, con, rel)
 0000                   .dbfile G:\test\lcd\1\1.c
 0000                   .dbfunc e Wleft_Cmad _Wleft_Cmad fV
 0000           ;         Lstate -> R20
 0000           ;           Lcmd -> R16
                        .even
 0000           _Wleft_Cmad::
 0000 0E940000          xcall push_gset1
 0004                   .dbline -1
 0004                   .dbline 98
 0004           ; //mega8515 lcd of ks108 
 0004           ; // 
 0004           ; //----------------------------------------------------------------------------- 
 0004           ; // Includes 
 0004           ; //----------------------------------------------------------------------------- 
 0004           ; #include <iom16v.h>                
 0004           ; #include <macros.h> 
 0004           ; typedef unsigned char uchar; 
 0004           ; typedef unsigned int  uint; 
 0004           ; //----------------------------------------------------------------------------- 
 0004           ; //  DB0-DB7=PA  
 0004           ; //  CSA      = PC7               // Select left or right LCD. 
 0004           ; //  CSB      = PC6               // Select left or right LCD. 
 0004           ; //  DI       = PB2               // Select Rigster LCD. 
 0004           ; //  RW       = PB1               // Read or Write LCD. 
 0004           ; //  EN       = PB0;  
 0004           ; //----------------------------------------------------------------------------- 
 0004           ; /*   定义12864端口   */ 
 0004           ; //DATA_PORT=PORTA 
 0004           ; #define DATA PORTA 
 0004           ; //CSA=PC7 
 0004           ; #define CSA_H asm("sbi 0x15,7") 
 0004           ; #define CSA_L asm("cbi 0x15,7") 
 0004           ; //CSB=PC6 
 0004           ; #define CSB_H asm("sbi 0x15,6") 
 0004           ; #define CSB_L asm("cbi 0x15,6") 
 0004           ; //DI=PB2 
 0004           ; #define DI_H asm("sbi 0x18,2") 
 0004           ; #define DI_L asm("cbi 0x18,2")  
 0004           ; //RW=PB1 
 0004           ; #define RW_H asm("sbi 0x18,1") 
 0004           ; #define RW_L asm("cbi 0x18,1")  
 0004           ; //EN=PB0 
 0004           ; #define EN_H asm("sbi 0x18,0") 
 0004           ; #define EN_L asm("cbi 0x18,0")  
 0004           ; 
 0004           ; //----------------------------------------------------------------------------- 
 0004           ; // Data for display. 
 0004           ; //----------------------------------------------------------------------------- 
 0004           ; const uchar Dig[] = { 
 0004           ; 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,   // 0 
 0004           ; 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,   // 1 
 0004           ; 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,   // 2 
 0004           ; 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,   // 3 
 0004           ; 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,   // 4 
 0004           ; 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,   // 5 
 0004           ; 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,   // 6 
 0004           ; 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,   // 7 
 0004           ; 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,   // 8 
 0004           ; 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,   // 9 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,   // .[10] 
 0004           ; 0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,   // %[11] 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00    //  [12] 
 0004           ; }; 
 0004           ; 
 0004           ; const uchar HZK[] = { 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x48,0x56,0xD4,0x54,0xD4,0x54,0x54,   // 氧量:[0] 
 0004           ; 0x54,0xD4,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x7C,0x54,0x54,0x54,0x54,0x54,0x54, 
 0004           ; 0x54,0x7E,0x44,0x40,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00, 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x15,0x15,0x15,0x7F,0x15,0x15,0x15, 
 0004           ; 0x00,0x1F,0x20,0x40,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x50,0x5F,0x55,0x55,0x55,0x7F,0x55,0x55, 
 0004           ; 0x55,0x5F,0x50,0x40,0x00,0x00,0x00,0x00,0x31,0x31,0x00,0x00,0x00,0x00,0x00,0x00, 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xC2,0x0C,0xC0,0x00,0xFC,0x94,0x94,0x94,   // 温度:[4] 
 0004           ; 0x94,0x94,0xFE,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x28,0x28,0xF8,0xAA,0xAC,0xA8, 
 0004           ; 0xF8,0x28,0x2C,0x08,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00, 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7C,0x03,0x40,0x7E,0x42,0x42,0x7E,0x42, 
 0004           ; 0x7E,0x42,0x42,0x7E,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x30,0x0F,0x40,0x42,0x42,0x26,0x2A,0x12,0x2A, 
 0004           ; 0x26,0x42,0x40,0x40,0x00,0x00,0x00,0x00,0x31,0x31,0x00,0x00,0x00,0x00,0x00,0x00, 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x90,0xFE,0x50,0x10,0x40,0x90,   // 热电势[8] 
 0004           ; 0x7E,0x10,0x10,0xF8,0x10,0x80,0x00,0x00,0x00,0xF0,0x90,0x90,0x90,0xFE,0x90,0x90, 
 0004           ; 0x90,0x90,0xF8,0x10,0x00,0x00,0x48,0x48,0x48,0xFE,0x28,0x28,0x80,0x48,0xBE,0x08, 
 0004           ; 0x08,0xF8,0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00, 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x34,0x07,0x10,0x64,0x02,0x11, 
 0004           ; 0x61,0x02,0x00,0x13,0x64,0x07,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x3F,0x44,0x44, 
 0004           ; 0x44,0x44,0x47,0x40,0x70,0x00,0x40,0x44,0x45,0x25,0x14,0x0F,0x04,0x04,0x24,0x44, 
 0004           ; 0x3E,0x04,0x01,0x03,0x00,0x00,0x00,0x00,0x31,0x31,0x00,0x00,0x00,0x00,0x00,0x00, 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x48,0x56,0xD4,0x54,0xD4,0x54,   // 氧电势[12] 
 0004           ; 0x54,0x54,0xD4,0x04,0x04,0x00,0x00,0x00,0x00,0xF0,0x90,0x90,0x90,0xFE,0x90,0x90, 
 0004           ; 0x90,0x90,0xF8,0x10,0x00,0x00,0x48,0x48,0x48,0xFE,0x28,0x28,0x80,0x48,0xBE,0x08, 
 0004           ; 0x08,0xF8,0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00, 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x15,0x15,0x15,0x7F,0x15,0x15, 
 0004           ; 0x15,0x00,0x1F,0x20,0x40,0x78,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x3F,0x44,0x44, 
 0004           ; 0x44,0x44,0x47,0x40,0x70,0x00,0x40,0x44,0x45,0x25,0x14,0x0F,0x04,0x04,0x24,0x44, 
 0004           ; 0x3E,0x04,0x01,0x03,0x00,0x00,0x00,0x00,0x31,0x31,0x00,0x00,0x00,0x00,0x00,0x00, 
 0004           ; 0x00,0x00,0x18,0x24,0x24,0x18,0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x00,0x00,   // C:[16] 
 0004           ; 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,0x00,0x00,    
 0004           ; 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,   // mv[17] 
 0004           ; 0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00    
 0004           ; }; 
 0004           ; //----------------------------------------------------------------------------- 
 0004           ; // LCD:Write instraction code at left. 
 0004           ; //----------------------------------------------------------------------------- 
 0004           ; void Wleft_Cmad(unsigned char Lcmd) 
 0004           ; { 
 0004                   .dbline 100
 0004           ;    unsigned char Lstate; 
 0004           ;    CSA_L;  CSB_H; 
 0004 AF98              cbi 0x15,7
 0006                   .dbline 100
 0006 AE9A              sbi 0x15,6
 0008                   .dbline 101
 0008           ;    DI_L;   RW_H; 
 0008 C298              cbi 0x18,2
 000A                   .dbline 101
 000A C19A              sbi 0x18,1
 000C                   .dbline 102
 000C           ;    DDRA=0x00;//a口设为输入 
 000C 2224              clr R2
 000E 2ABA              out 0x1a,R2
 0010                   .dbline 103
 0010           ;    PORTA=0x00; 
 0010 2BBA              out 0x1b,R2
 0012           L2:
 0012                   .dbline 105
 0012           ;    do 
 0012           ;    { EN_H; 
 0012                   .dbline 105
 0012 C09A              sbi 0x18,0
 0014                   .dbline 106
 0014           ;      Lstate  = PINA; 
 0014 49B3              in R20,0x19
 0016                   .dbline 107
 0016           ;      EN_L;   
 0016 C098              cbi 0x18,0
 0018                   .dbline 108
 0018           L3:
 0018                   .dbline 108
 0018           ;    }while(Lstate & 0x80) ; 
 0018 47FD              sbrc R20,7
 001A FBCF              rjmp L2
 001C                   .dbline 109
 001C           ;    DDRA=0xff; 
 001C 8FEF              ldi R24,255
 001E 8ABB              out 0x1a,R24
 0020                   .dbline 110
 0020           ;    RW_L; 
 0020 C198              cbi 0x18,1
 0022                   .dbline 111
 0022           ;    DATA     = Lcmd; 
 0022 0BBB              out 0x1b,R16
 0024                   .dbline 112
 0024           ;    EN_H; 
 0024 C09A              sbi 0x18,0
 0026                   .dbline 113
 0026           ;    EN_L; 
 0026 C098              cbi 0x18,0
 0028                   .dbline -2
 0028           L1:
 0028 0E940000          xcall pop_gset1
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbsym r Lstate 20 c
 002E                   .dbsym r Lcmd 16 c
 002E                   .dbend
 002E                   .dbfunc e Wleft_Data _Wleft_Data fV
 002E           ;         Lstate -> R20
 002E           ;           Ldat -> R16
                        .even
 002E           _Wleft_Data::
 002E 0E940000          xcall push_gset1
 0032                   .dbline -1
 0032                   .dbline 119
 0032           ; } 
 0032           ; //----------------------------------------------------------------------------- 
 0032           ; // LCD:Write Data at left. 
 0032           ; //----------------------------------------------------------------------------- 
 0032           ; void Wleft_Data(unsigned char Ldat) 
 0032           ; { 
 0032                   .dbline 121
 0032           ;    unsigned char Lstate; 
 0032           ;    CSA_L;  CSB_H; 
 0032 AF98              cbi 0x15,7
 0034                   .dbline 121
 0034 AE9A              sbi 0x15,6
 0036                   .dbline 122
 0036           ;    DI_L; 
 0036 C298              cbi 0x18,2
 0038                   .dbline 123
 0038           ;    RW_H; 
 0038 C19A              sbi 0x18,1
 003A                   .dbline 124
 003A           ;    DDRA=0x00; 
 003A 2224              clr R2
 003C 2ABA              out 0x1a,R2
 003E                   .dbline 125
 003E           ;    PORTA=0x00; 
 003E 2BBA              out 0x1b,R2
 0040           L6:
 0040                   .dbline 127
 0040           ;    do  
 0040           ;    { EN_H; 
 0040                   .dbline 127
 0040 C09A              sbi 0x18,0
 0042                   .dbline 128
 0042           ;      Lstate  = PINA; 
 0042 49B3              in R20,0x19
 0044                   .dbline 129
 0044           ;      EN_L;   
 0044 C098              cbi 0x18,0
 0046                   .dbline 130
 0046           L7:
 0046                   .dbline 130
 0046           ;    }while(Lstate & 0x80); 
 0046 47FD              sbrc R20,7
 0048 FBCF              rjmp L6
 004A                   .dbline 131
 004A           ;    DDRA=0xff; 
 004A 8FEF              ldi R24,255
 004C 8ABB              out 0x1a,R24
 004E                   .dbline 132
 004E           ;    DI_H; 
 004E C29A              sbi 0x18,2
 0050                   .dbline 133
 0050           ;    RW_L; 
 0050 C198              cbi 0x18,1
 0052                   .dbline 134
 0052           ;    DATA     = Ldat; 
 0052 0BBB              out 0x1b,R16
 0054                   .dbline 135
 0054           ;    EN_H; 
 0054 C09A              sbi 0x18,0
 0056                   .dbline 136
 0056           ;    EN_L; 
 0056 C098              cbi 0x18,0
 0058                   .dbline -2
 0058           L5:
 0058 0E940000          xcall pop_gset1
 005C                   .dbline 0 ; func end
 005C 0895              ret
 005E                   .dbsym r Lstate 20 c
 005E                   .dbsym r Ldat 16 c
 005E                   .dbend
 005E                   .dbfunc e Wrigt_Cmad _Wrigt_Cmad fV
 005E           ;         Lstate -> R20
 005E           ;           Rcmd -> R16
                        .even
 005E           _Wrigt_Cmad::
 005E 0E940000          xcall push_gset1
 0062                   .dbline -1
 0062                   .dbline 142
 0062           ; } 
 0062           ; //----------------------------------------------------------------------------- 
 0062           ; // LCD:Write instraction code at Right. 
 0062           ; //----------------------------------------------------------------------------- 
 0062           ; void Wrigt_Cmad(unsigned char Rcmd) 
 0062           ; { 
 0062                   .dbline 144
 0062           ;    unsigned char Lstate; 
 0062           ;    CSA_H;    CSB_L; 
 0062 AF9A              sbi 0x15,7
 0064                   .dbline 144
 0064 AE98              cbi 0x15,6
 0066                   .dbline 145
 0066           ;    DI_L; 
 0066 C298              cbi 0x18,2
 0068                   .dbline 146
 0068           ;    RW_H; 
 0068 C19A              sbi 0x18,1
 006A                   .dbline 147
 006A           ;    DDRA=0x00; 
 006A 2224              clr R2
 006C 2ABA              out 0x1a,R2
 006E                   .dbline 148
 006E           ;    PORTA=0x00; 
 006E 2BBA              out 0x1b,R2
 0070           L10:
 0070                   .dbline 150
 0070           ;    do 
 0070           ;    { EN_H; 
 0070                   .dbline 150
 0070 C09A              sbi 0x18,0
 0072                   .dbline 151
 0072           ;      Lstate  = PINA; 
 0072 49B3              in R20,0x19
 0074                   .dbline 152
 0074           ;      EN_L;  
 0074 C098              cbi 0x18,0
 0076                   .dbline 153
 0076           L11:
 0076                   .dbline 153
 0076           ;    }while(Lstate & 0x80) ; 
 0076 47FD              sbrc R20,7
 0078 FBCF              rjmp L10
 007A                   .dbline 154
 007A           ;    DDRA=0xff; 
 007A 8FEF              ldi R24,255
 007C 8ABB              out 0x1a,R24
 007E                   .dbline 155
 007E           ;    RW_L; 
 007E C198              cbi 0x18,1
 0080                   .dbline 156
 0080           ;    DATA     = Rcmd; 
 0080 0BBB              out 0x1b,R16
 0082                   .dbline 157
 0082           ;    EN_H; 
 0082 C09A              sbi 0x18,0
 0084                   .dbline 158
 0084           ;    EN_L; 
 0084 C098              cbi 0x18,0
 0086                   .dbline -2
 0086           L9:
 0086 0E940000          xcall pop_gset1
 008A                   .dbline 0 ; func end
 008A 0895              ret
 008C                   .dbsym r Lstate 20 c
 008C                   .dbsym r Rcmd 16 c
 008C                   .dbend
 008C                   .dbfunc e Wrigt_Data _Wrigt_Data fV
 008C           ;         Lstate -> R20
 008C           ;           Rdat -> R16
                        .even
 008C           _Wrigt_Data::
 008C 0E940000          xcall push_gset1
 0090                   .dbline -1
 0090                   .dbline 164
 0090           ; }       
 0090           ; //----------------------------------------------------------------------------- 
 0090           ; // LCD:Write Data at right. 
 0090           ; //----------------------------------------------------------------------------- 
 0090           ; void Wrigt_Data(unsigned char Rdat) 
 0090           ; { 
 0090                   .dbline 166
 0090           ;    unsigned char Lstate; 
 0090           ;    CSA_H;   CSB_L; 
 0090 AF9A              sbi 0x15,7
 0092                   .dbline 166
 0092 AE98              cbi 0x15,6
 0094                   .dbline 167
 0094           ;    DI_L; 
 0094 C298              cbi 0x18,2
 0096                   .dbline 168
 0096           ;    RW_H;    
 0096 C19A              sbi 0x18,1
 0098                   .dbline 169
 0098           ;    DDRA=0x00; 

⌨️ 快捷键说明

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