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

📄 3310.lis

📁 /*** *** *** *** *** *** *** *** *** *** / /* MP3 Code for M32L */ /* By pasyong
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0008 2223              tst R18
 000A 11F4              brne L3
 000C                   .dbline 36
 000C           ;       {
 000C                   .dbline 37
 000C           ;         LCD_PORT&= ~LCD_DC ;        // 传送命令
 000C A898              cbi 0x15,0
 000E                   .dbline 38
 000E           ;         }
 000E 01C0              xjmp L4
 0010           L3:
 0010                   .dbline 40
 0010           ;     else
 0010           ;       {
 0010                   .dbline 41
 0010           ;         LCD_PORT|= LCD_DC ;                   // 传送数据
 0010 A89A              sbi 0x15,0
 0012                   .dbline 42
 0012           ;         }
 0012           L4:
 0012                   .dbline 44
 0012           ; 
 0012           ;     SPDR = data;                      // 传送数据到SPI寄存器
 0012 0FB9              out 0xf,R16
 0014           L5:
 0014                   .dbline 46
 0014           L6:
 0014                   .dbline 46
 0014           ; 
 0014           ;     while ((SPSR & 0x80) == 0);         // 等待数据传送完毕
 0014 779B              sbis 0xe,7
 0016 FECF              rjmp L5
 0018                   .dbline 48
 0018           ;       
 0018           ;     LCD_PORT|= LCD_CE ;                       // 关闭LCD
 0018 A99A              sbi 0x15,1
 001A                   .dbline -2
 001A           L2:
 001A                   .dbline 0 ; func end
 001A 0895              ret
 001C                   .dbsym r command 18 c
 001C                   .dbsym r data 16 c
 001C                   .dbend
 001C                   .dbfunc e LCD_set_XY _LCD_set_XY fV
 001C           ;              Y -> R22
 001C           ;              X -> R20
                        .even
 001C           _LCD_set_XY::
 001C 0E940000          xcall push_gset2
 0020 622F              mov R22,R18
 0022 402F              mov R20,R16
 0024                   .dbline -1
 0024                   .dbline 57
 0024           ;   }
 0024           ; /*-----------------------------------------------------------------------
 0024           ; LCD_set_XY        : 设置LCD坐标函数
 0024           ; 
 0024           ; 输入参数:X       :0-83
 0024           ;           Y       :0-5
 0024           ; -----------------------------------------------------------------------*/
 0024           ; void LCD_set_XY(unsigned char X, unsigned char Y)
 0024           ;   {
 0024                   .dbline 58
 0024           ;     LCD_write_byte(0x40 | Y, 0);              // column
 0024 2227              clr R18
 0026 062F              mov R16,R22
 0028 0064              ori R16,64
 002A EDDF              xcall _LCD_write_byte
 002C                   .dbline 59
 002C           ;     LCD_write_byte(0x80 | X, 0);              // row
 002C 2227              clr R18
 002E 042F              mov R16,R20
 0030 0068              ori R16,128
 0032 E9DF              xcall _LCD_write_byte
 0034                   .dbline -2
 0034           L8:
 0034 0E940000          xcall pop_gset2
 0038                   .dbline 0 ; func end
 0038 0895              ret
 003A                   .dbsym r Y 22 c
 003A                   .dbsym r X 20 c
 003A                   .dbend
 003A                   .dbfunc e LCD_write_char _LCD_write_char fV
 003A           ;           line -> R20
 003A           ;              c -> R22
                        .even
 003A           _LCD_write_char::
 003A 0E940000          xcall push_gset2
 003E 602F              mov R22,R16
 0040                   .dbline -1
 0040                   .dbline 68
 0040           ;   }
 0040           ; 
 0040           ; /*-----------------------------------------------------------------------
 0040           ; LCD_write_char    : 显示英文字符
 0040           ; 
 0040           ; 输入参数:c       :显示的字符;
 0040           ; -----------------------------------------------------------------------*/
 0040           ; void LCD_write_char(unsigned char c)
 0040           ;   {
 0040                   .dbline 70
 0040           ;     unsigned char line;
 0040           ;     c -= 32;
 0040 6052              subi R22,32
 0042                   .dbline 71
 0042           ;     for (line=0; line<6; line++)
 0042 4427              clr R20
 0044 0FC0              xjmp L13
 0046           L10:
 0046                   .dbline 72
 0046 21E0              ldi R18,1
 0048 86E0              ldi R24,6
 004A 869F              mul R24,R22
 004C 1001              movw R2,R0
 004E 80E0              ldi R24,<_font6x8
 0050 90E0              ldi R25,>_font6x8
 0052 280E              add R2,R24
 0054 391E              adc R3,R25
 0056 E42F              mov R30,R20
 0058 FF27              clr R31
 005A E20D              add R30,R2
 005C F31D              adc R31,R3
 005E 0491              lpm R16,Z
 0060 D2DF              xcall _LCD_write_byte
 0062           L11:
 0062                   .dbline 71
 0062 4395              inc R20
 0064           L13:
 0064                   .dbline 71
 0064 4630              cpi R20,6
 0066 78F3              brlo L10
 0068                   .dbline -2
 0068           L9:
 0068 0E940000          xcall pop_gset2
 006C                   .dbline 0 ; func end
 006C 0895              ret
 006E                   .dbsym r line 20 c
 006E                   .dbsym r c 22 c
 006E                   .dbend
 006E                   .dbfunc e LCD_write_english_string _LCD_write_english_string fV
 006E           ;              s -> R20,R21
 006E           ;              Y -> R10
 006E           ;              X -> R22
                        .even
 006E           _LCD_write_english_string::
 006E 0E940000          xcall push_gset3
 0072 A22E              mov R10,R18
 0074 602F              mov R22,R16
 0076 4E81              ldd R20,y+6
 0078 5F81              ldd R21,y+7
 007A                   .dbline -1
 007A                   .dbline 81
 007A           ;       LCD_write_byte(font6x8[c][line], 1);
 007A           ;   }
 007A           ; /*-----------------------------------------------------------------------
 007A           ; LCD_write_english_String  : 英文字符串显示函数
 007A           ; 
 007A           ; 输入参数:*s      :英文字符串指针;
 007A           ;           X、Y    : 显示字符串的位置,x 0-83 ,y 0-5    
 007A           ; -----------------------------------------------------------------------*/
 007A           ; void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
 007A           ;   {
 007A                   .dbline 82
 007A           ;     LCD_set_XY(X,Y);
 007A 2A2D              mov R18,R10
 007C 062F              mov R16,R22
 007E CEDF              xcall _LCD_set_XY
 0080 05C0              xjmp L16
 0082           L15:
 0082                   .dbline 84
 0082                   .dbline 85
 0082 FA01              movw R30,R20
 0084 0081              ldd R16,z+0
 0086 D9DF              xcall _LCD_write_char
 0088                   .dbline 86
 0088 4F5F              subi R20,255  ; offset = 1
 008A 5F4F              sbci R21,255
 008C                   .dbline 87
 008C           L16:
 008C                   .dbline 83
 008C           ;     while (*s) 
 008C FA01              movw R30,R20
 008E 2080              ldd R2,z+0
 0090 2220              tst R2
 0092 B9F7              brne L15
 0094                   .dbline -2
 0094           L14:
 0094 0E940000          xcall pop_gset3
 0098                   .dbline 0 ; func end
 0098 0895              ret
 009A                   .dbsym r s 20 pc
 009A                   .dbsym r Y 10 c
 009A                   .dbsym r X 22 c
 009A                   .dbend
 009A                   .dbfunc e LCD_clear _LCD_clear fV
 009A           ;              i -> R20,R21
                        .even
 009A           _LCD_clear::
 009A 0E940000          xcall push_gset1
 009E                   .dbline -1
 009E                   .dbline 93
 009E           ;       {
 009E           ;        LCD_write_char(*s);
 009E           ;        s++;
 009E           ;       }
 009E           ;   }
 009E           ; /*-----------------------------------------------------------------------
 009E           ; LCD_clear         : LCD清屏函数
 009E           ; -----------------------------------------------------------------------*/
 009E           ; void LCD_clear(void)
 009E           ;   {
 009E                   .dbline 96
 009E           ;     unsigned int i;
 009E           ; 
 009E           ;     LCD_write_byte(0x0c, 0);  //普通显示模式          
 009E 2227              clr R18
 00A0 0CE0              ldi R16,12
 00A2 B1DF              xcall _LCD_write_byte
 00A4                   .dbline 97
 00A4           ;     LCD_write_byte(0x80, 0);    //设置RAM的X地址      
 00A4 2227              clr R18
 00A6 00E8              ldi R16,128
 00A8 AEDF              xcall _LCD_write_byte
 00AA                   .dbline 99
 00AA           ; 
 00AA           ;     for (i=0; i<504; i++)
 00AA 4427              clr R20
 00AC 5527              clr R21
 00AE 05C0              xjmp L22
 00B0           L19:
 00B0                   .dbline 100
 00B0 21E0              ldi R18,1
 00B2 0027              clr R16
 00B4 A8DF              xcall _LCD_write_byte
 00B6           L20:
 00B6                   .dbline 99
 00B6 4F5F              subi R20,255  ; offset = 1
 00B8 5F4F              sbci R21,255
 00BA           L22:
 00BA                   .dbline 99
 00BA 483F              cpi R20,248
 00BC E1E0              ldi R30,1
 00BE 5E07              cpc R21,R30
 00C0 B8F3              brlo L19
 00C2                   .dbline -2
 00C2           L18:
 00C2 0E940000          xcall pop_gset1
 00C6                   .dbline 0 ; func end
 00C6 0895              ret
 00C8                   .dbsym r i 20 i
 00C8                   .dbend
 00C8                   .dbfunc e LCD_init _LCD_init fV
                        .even
 00C8           _LCD_init::
 00C8                   .dbline -1
 00C8                   .dbline 106
 00C8           ;       LCD_write_byte(0, 1);           //写0数据       
 00C8           ;   }
 00C8           ; /*-----------------------------------------------------------------------
 00C8           ; LCD_init          : 3310LCD初始化
 00C8           ; -----------------------------------------------------------------------*/
 00C8           ; void LCD_init(void)
 00C8           ;   {
 00C8                   .dbline 107
 00C8           ;         DDRC|= LCD_RST | LCD_DC | LCD_CE ;
 00C8 84B3              in R24,0x14
 00CA 8760              ori R24,7
 00CC 84BB              out 0x14,R24
 00CE                   .dbline 108
 00CE           ;     DDRB |= SPI_MOSI | SPI_CLK;
 00CE 87B3              in R24,0x17
 00D0 806A              ori R24,160
 00D2 87BB              out 0x17,R24
 00D4                   .dbline 109
 00D4           ;     PORTC &= ~LCD_RST;          // 产生一个让LCD复位的低电平脉冲
 00D4 AA98              cbi 0x15,2
 00D6                   .dbline 110
 00D6           ;     delay_1us();
 00D6 94DF              xcall _delay_1us
 00D8                   .dbline 111
 00D8           ;     PORTC |= LCD_RST;
 00D8 AA9A              sbi 0x15,2
 00DA                   .dbline 112
 00DA           ;     delay_1us();
 00DA 92DF              xcall _delay_1us
 00DC                   .dbline 113
 00DC           ;     PORTC &= ~LCD_CE ;                // 关闭LCD
 00DC A998              cbi 0x15,1
 00DE                   .dbline 114
 00DE           ;     delay_1us();
 00DE 90DF              xcall _delay_1us
 00E0                   .dbline 115
 00E0           ;     PORTC |= LCD_CE;          // 使能LCD
 00E0 A99A              sbi 0x15,1
 00E2                   .dbline 116
 00E2           ;     delay_1us();              
 00E2 8EDF              xcall _delay_1us
 00E4                   .dbline 118
 00E4           ;               
 00E4           ;     LCD_write_byte(0x21, 0);  // 使用扩展命令设置LCD模式
 00E4 2227              clr R18
 00E6 01E2              ldi R16,33
 00E8 8EDF              xcall _LCD_write_byte
 00EA                   .dbline 119
 00EA           ;     LCD_write_byte(0xc8, 0);  // 设置偏置电压
 00EA 2227              clr R18
 00EC 08EC              ldi R16,200
 00EE 8BDF              xcall _LCD_write_byte
 00F0                   .dbline 120
 00F0           ;     LCD_write_byte(0x06, 0);  // 温度校正
 00F0 2227              clr R18
 00F2 06E0              ldi R16,6
 00F4 88DF              xcall _LCD_write_byte
 00F6                   .dbline 121
 00F6           ;     LCD_write_byte(0x13, 0);  // 1:48
 00F6 2227              clr R18
 00F8 03E1              ldi R16,19
 00FA 85DF              xcall _LCD_write_byte
 00FC                   .dbline 122
 00FC           ;     delay_1us();
 00FC 81DF              xcall _delay_1us
 00FE                   .dbline 123
 00FE           ;     LCD_write_byte(0x20, 0);  // 使用基本命令
 00FE 2227              clr R18
 0100 00E2              ldi R16,32
 0102 81DF              xcall _LCD_write_byte
 0104                   .dbline 124
 0104           ;     LCD_clear();                  // 清屏
 0104 CADF              xcall _LCD_clear
 0106                   .dbline 125
 0106           ;     LCD_write_byte(0x0c, 0);  // 设定显示模式,正常显示 
 0106 2227              clr R18
 0108 0CE0              ldi R16,12
 010A 7DDF              xcall _LCD_write_byte
 010C                   .dbline 126
 010C           ;     PORTC &= ~LCD_CE ;                // 关闭LCD                 
 010C A998              cbi 0x15,1
 010E                   .dbline -2
 010E           L23:
 010E                   .dbline 0 ; func end
 010E 0895              ret
 0110                   .dbend

⌨️ 快捷键说明

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