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

📄 lcm.lis

📁 8位液晶屏LCM0825的点亮源代码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module lcm.c
                        .area text(rom, con, rel)
 0000                   .dbfile G:\AVR系列\LCM0825\lcm.c
 0000                   .dbfunc e delay_1us _delay_1us fV
 0000           ;              k -> R16,R17
                        .even
 0000           _delay_1us::
 0000                   .dbline -1
 0000                   .dbline 5
 0000           ; //lcm.c
 0000           ; //液晶显示程序
 0000           ; #include<iom8v.h>
 0000           ; void delay_1us(void)//1us延时程序
 0000           ;  {
 0000                   .dbline 7
 0000           ;   unsigned  int k;
 0000           ;   for(k=1;k<10;k++) 
 0000 01E0              ldi R16,1
 0002 10E0              ldi R17,0
 0004 02C0              rjmp L5
 0006           L2:
 0006                   .dbline 8
 0006           L3:
 0006                   .dbline 7
 0006 0F5F              subi R16,255  ; offset = 1
 0008 1F4F              sbci R17,255
 000A           L5:
 000A                   .dbline 7
 000A 0A30              cpi R16,10
 000C E0E0              ldi R30,0
 000E 1E07              cpc R17,R30
 0010 D0F3              brlo L2
 0012                   .dbline -2
 0012           L1:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r k 16 i
 0014                   .dbend
 0014                   .dbfunc e delay_1ms _delay_1ms fV
 0014           ;              k -> R16,R17
                        .even
 0014           _delay_1ms::
 0014                   .dbline -1
 0014                   .dbline 12
 0014           ;   ;
 0014           ;  }
 0014           ; 
 0014           ;  void delay_1ms(void)//1ms延时程序
 0014           ;  {
 0014                   .dbline 14
 0014           ;   unsigned  int k;
 0014           ;   for(k=1;k<856;k++) 
 0014 01E0              ldi R16,1
 0016 10E0              ldi R17,0
 0018 02C0              rjmp L10
 001A           L7:
 001A                   .dbline 15
 001A           L8:
 001A                   .dbline 14
 001A 0F5F              subi R16,255  ; offset = 1
 001C 1F4F              sbci R17,255
 001E           L10:
 001E                   .dbline 14
 001E 0835              cpi R16,88
 0020 E3E0              ldi R30,3
 0022 1E07              cpc R17,R30
 0024 D0F3              brlo L7
 0026                   .dbline -2
 0026           L6:
 0026                   .dbline 0 ; func end
 0026 0895              ret
 0028                   .dbsym r k 16 i
 0028                   .dbend
 0028                   .dbfunc e delay _delay fV
 0028           ;              l -> R20,R21
 0028           ;              m -> R22,R23
                        .even
 0028           _delay::
 0028 00D0              rcall push_gset2
 002A B801              movw R22,R16
 002C                   .dbline -1
 002C                   .dbline 18
 002C           ;   ;
 002C           ;  }
 002C           ;   void delay(unsigned int m)//延时m ms程序
 002C           ;  {
 002C                   .dbline 21
 002C           ;   unsigned  int l;
 002C           ;   
 002C           ;   for(l=0;l<m;l++) 
 002C 4427              clr R20
 002E 5527              clr R21
 0030 03C0              rjmp L15
 0032           L12:
 0032                   .dbline 22
 0032 F0DF              rcall _delay_1ms
 0034           L13:
 0034                   .dbline 21
 0034 4F5F              subi R20,255  ; offset = 1
 0036 5F4F              sbci R21,255
 0038           L15:
 0038                   .dbline 21
 0038 4617              cp R20,R22
 003A 5707              cpc R21,R23
 003C D0F3              brlo L12
 003E                   .dbline -2
 003E           L11:
 003E 00D0              rcall pop_gset2
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbsym r l 20 i
 0042                   .dbsym r m 22 i
 0042                   .dbend
 0042                   .dbfunc e data_0 _data_0 fV
 0042           ;              i -> R20,R21
 0042           ;              n -> R22,R23
                        .even
 0042           _data_0::
 0042 00D0              rcall push_gset2
 0044 B801              movw R22,R16
 0046                   .dbline -1
 0046                   .dbline 26
 0046           ;   delay_1ms();
 0046           ;  }
 0046           ; 
 0046           ;  void data_0(unsigned int n)//传输N个0
 0046           ; { int i;
 0046                   .dbline 27
 0046           ;    for(i=0;i<n;i++)
 0046 4427              clr R20
 0048 5527              clr R21
 004A 0CC0              rjmp L20
 004C           L17:
 004C                   .dbline 28
 004C                   .dbline 30
 004C 82B3              in R24,0x12
 004E 8F77              andi R24,127
 0050 82BB              out 0x12,R24
 0052                   .dbline 30
 0052 D6DF              rcall _delay_1us
 0054                   .dbline 31
 0054 82B3              in R24,0x12
 0056 8F7B              andi R24,191
 0058 82BB              out 0x12,R24
 005A                   .dbline 31
 005A D2DF              rcall _delay_1us
 005C                   .dbline 32
 005C 969A              sbi 0x12,6
 005E                   .dbline 32
 005E D0DF              rcall _delay_1us
 0060                   .dbline 33
 0060           L18:
 0060                   .dbline 27
 0060 4F5F              subi R20,255  ; offset = 1
 0062 5F4F              sbci R21,255
 0064           L20:
 0064                   .dbline 27
 0064 4617              cp R20,R22
 0066 5707              cpc R21,R23
 0068 88F3              brlo L17
 006A                   .dbline -2
 006A           L16:
 006A 00D0              rcall pop_gset2
 006C                   .dbline 0 ; func end
 006C 0895              ret
 006E                   .dbsym r i 20 I
 006E                   .dbsym r n 22 i
 006E                   .dbend
 006E                   .dbfunc e data_1 _data_1 fV
 006E           ;              i -> R20,R21
 006E           ;              n -> R22,R23
                        .even
 006E           _data_1::
 006E 00D0              rcall push_gset2
 0070 B801              movw R22,R16
 0072                   .dbline -1
 0072                   .dbline 37
 0072           ;    {
 0072           ;    
 0072           ;    PORTD&=0x7F; delay_1us();//data=0
 0072           ;    PORTD&=0xBF;delay_1us();//wr=0
 0072           ;    PORTD|=0x40; delay_1us();//wr=1
 0072           ;    }
 0072           ;  }
 0072           ;  
 0072           ;  void data_1(unsigned int n)//传输N个1
 0072           ; { int i;
 0072                   .dbline 38
 0072           ;    for(i=0;i<n;i++)
 0072 4427              clr R20
 0074 5527              clr R21
 0076 0DC0              rjmp L25
 0078           L22:
 0078                   .dbline 39
 0078                   .dbline 40
 0078 82B3              in R24,0x12
 007A 8F77              andi R24,127
 007C 82BB              out 0x12,R24
 007E                   .dbline 41
 007E 979A              sbi 0x12,7
 0080                   .dbline 41
 0080 BFDF              rcall _delay_1us
 0082                   .dbline 42
 0082 82B3              in R24,0x12
 0084 8F7B              andi R24,191
 0086 82BB              out 0x12,R24
 0088                   .dbline 42
 0088 BBDF              rcall _delay_1us
 008A                   .dbline 43
 008A 969A              sbi 0x12,6
 008C                   .dbline 43
 008C B9DF              rcall _delay_1us
 008E                   .dbline 44
 008E           L23:
 008E                   .dbline 38
 008E 4F5F              subi R20,255  ; offset = 1
 0090 5F4F              sbci R21,255
 0092           L25:
 0092                   .dbline 38
 0092 4617              cp R20,R22
 0094 5707              cpc R21,R23
 0096 80F3              brlo L22
 0098                   .dbline -2
 0098           L21:
 0098 00D0              rcall pop_gset2
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbsym r i 20 I
 009C                   .dbsym r n 22 i
 009C                   .dbend
 009C                   .dbfunc e write_lcd _write_lcd fV
 009C           ;              j -> R20
 009C           ;            dat -> R22
 009C           ;           data -> R10
 009C           ;              n -> R20
                        .even
 009C           _write_lcd::
 009C 00D0              rcall push_gset3
 009E A22E              mov R10,R18
 00A0 402F              mov R20,R16
 00A2                   .dbline -1
 00A2                   .dbline 49
 00A2           ;    {
 00A2           ;     PORTD&=0x7f; 
 00A2           ;    PORTD|=0x80;delay_1us();//data=1
 00A2           ;    PORTD&=0xBF;delay_1us();//wr=0
 00A2           ;    PORTD|=0x40;delay_1us();//wr=1
 00A2           ;    }
 00A2           ;  }
 00A2           ;  
 00A2           ; 
 00A2           ; void write_lcd(char n,unsigned char data )
 00A2           ;  {
 00A2                   .dbline 51
 00A2           ;    char j;
 00A2           ;    unsigned char dat=data;
 00A2 6A2D              mov R22,R10
 00A4                   .dbline 52
 00A4           ;     DDRD=0xf0; delay_1us();//PD4为CS,PD6为WR,PD7为DATA
 00A4 80EF              ldi R24,240
 00A6 81BB              out 0x11,R24
 00A8                   .dbline 52
 00A8 ABDF              rcall _delay_1us
 00AA                   .dbline 53
 00AA           ;  PORTD=0xff; delay_1us();
 00AA 8FEF              ldi R24,255
 00AC 82BB              out 0x12,R24
 00AE                   .dbline 53
 00AE A8DF              rcall _delay_1us
 00B0                   .dbline 54
 00B0           ;   switch(n)
 00B0 5527              clr R21
 00B2 4A30              cpi R20,10
 00B4 E0E0              ldi R30,0
 00B6 5E07              cpc R21,R30
 00B8 09F4              brne X1
 00BA 62C0              rjmp L40
 00BC           X1:
 00BC 4C30              cpi R20,12
 00BE E0E0              ldi R30,0
 00C0 5E07              cpc R21,R30
 00C2 29F0              breq L30
 00C4 4D30              cpi R20,13
 00C6 E0E0              ldi R30,0
 00C8 5E07              cpc R21,R30
 00CA 61F1              breq L35
 00CC 89C0              rjmp L27
 00CE           X0:
 00CE                   .dbline 55
 00CE           ;   { 
 00CE           L30:
 00CE                   .dbline 57
 00CE           ;    case 12://写命令
 00CE           ;    {
 00CE                   .dbline 59
 00CE           ;   
 00CE           ;     PORTD&=0xef;delay_1us(); 
 00CE 82B3              in R24,0x12
 00D0 8F7E              andi R24,239
 00D2 82BB              out 0x12,R24
 00D4                   .dbline 59
 00D4 95DF              rcall _delay_1us
 00D6                   .dbline 60
 00D6           ;       data_1(1);
 00D6 01E0              ldi R16,1
 00D8 10E0              ldi R17,0
 00DA C9DF              rcall _data_1
 00DC                   .dbline 61
 00DC           ;       data_0(2);
 00DC 02E0              ldi R16,2
 00DE 10E0              ldi R17,0
 00E0 B0DF              rcall _data_0
 00E2                   .dbline 62
 00E2           ;       for(j=0;j<8;j++)
 00E2 4427              clr R20
 00E4 13C0              rjmp L34
 00E6           L31:
 00E6                   .dbline 63
 00E6                   .dbline 64
 00E6 82B3              in R24,0x12
 00E8 8F77              andi R24,127
 00EA 82BB              out 0x12,R24
 00EC                   .dbline 64
 00EC 89DF              rcall _delay_1us
 00EE                   .dbline 65
 00EE 862F              mov R24,R22
 00F0 8078              andi R24,128
 00F2 22B2              in R2,0x12
 00F4 282A              or R2,R24
 00F6 22BA              out 0x12,R2
 00F8                   .dbline 65
 00F8 83DF              rcall _delay_1us
 00FA                   .dbline 66
 00FA 82B3              in R24,0x12
 00FC 8F7B              andi R24,191
 00FE 82BB              out 0x12,R24
 0100                   .dbline 66
 0100 7FDF              rcall _delay_1us
 0102                   .dbline 67
 0102 969A              sbi 0x12,6
 0104                   .dbline 67
 0104 7DDF              rcall _delay_1us
 0106                   .dbline 68
 0106 660F              lsl R22
 0108                   .dbline 68
 0108 7BDF              rcall _delay_1us
 010A                   .dbline 70
 010A           L32:
 010A                   .dbline 62
 010A 4395              inc R20
 010C           L34:
 010C                   .dbline 62
 010C 4830              cpi R20,8
 010E 58F3              brlo L31
 0110                   .dbline 71
 0110           ;     { 
 0110           ;      PORTD&=0x7f; delay_1us();      
 0110           ;      PORTD|=(dat&0x80);delay_1us(); //可能存在数据类型不同错误
 0110           ;      PORTD&=0xbf;delay_1us(); 
 0110           ;        PORTD|=0x40;delay_1us();                 
 0110           ;      dat=(dat<<1);delay_1us();  
 0110           ;        
 0110           ;     }
 0110           ;       data_0(1);
 0110 01E0              ldi R16,1
 0112 10E0              ldi R17,0
 0114 96DF              rcall _data_0
 0116                   .dbline 72
 0116           ;       PORTD|=0x10;delay_1us(); 
 0116 949A              sbi 0x12,4
 0118                   .dbline 72
 0118 73DF              rcall _delay_1us
 011A                   .dbline 73
 011A           ;       PORTD|=0xc0;delay_1us();
 011A 82B3              in R24,0x12
 011C 806C              ori R24,192
 011E 82BB              out 0x12,R24
 0120                   .dbline 73
 0120 6FDF              rcall _delay_1us
 0122                   .dbline 75
 0122           ;       //delay(100);
 0122           ;    }break;
 0122                   .dbline 75
 0122 5EC0              rjmp L28
 0124           L35:
 0124                   .dbline 77
 0124           ; case 13://写最低位数据
 0124           ;    {
 0124                   .dbline 80
 0124           ;   
 0124           ;   
 0124           ;     PORTD&=0xef;delay_1us(); 
 0124 82B3              in R24,0x12
 0126 8F7E              andi R24,239
 0128 82BB              out 0x12,R24
 012A                   .dbline 80
 012A 6ADF              rcall _delay_1us
 012C                   .dbline 81
 012C           ;        data_1(1);
 012C 01E0              ldi R16,1
 012E 10E0              ldi R17,0
 0130 9EDF              rcall _data_1
 0132                   .dbline 82
 0132           ;    data_0(1);
 0132 01E0              ldi R16,1
 0134 10E0              ldi R17,0
 0136 85DF              rcall _data_0

⌨️ 快捷键说明

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