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

📄 lcd.lis

📁 mega128的串口发送文件.可以发送0X55上位机使用串口调试工具就可以接收了.
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00C4           ;        Command -> R20
                        .even
 00C4           _SdCmd::
 00C4 0E940000          xcall push_gset1
 00C8 402F              mov R20,R16
 00CA                   .dbline -1
 00CA                   .dbline 77
 00CA           ;         NOP();
 00CA           ; }
 00CA           ; //-------------------------------------------------------------------------------
 00CA           ; // IO Routine
 00CA           ; // LCD“命令字”发送
 00CA           ; //-------------------------------------------------------------------------------
 00CA           ; void SdCmd(UINT8 Command)                                     // send command
 00CA           ; {
 00CA                   .dbline 78
 00CA           ;   SPI_SS |=1;                                                                                           //屏蔽3548
 00CA C09A              sbi 0x18,0
 00CC                   .dbline 79
 00CC           ;       LCD_control &=~(1<<LCD_CS);                               // chip select
 00CC 9698              cbi 0x12,6
 00CE                   .dbline 80
 00CE           ;       LCD_control &=~(1<<LCD_RS);                               // for command
 00CE 9498              cbi 0x12,4
 00D0                   .dbline 81
 00D0           ;       SPI_SendByte(Command);
 00D0 042F              mov R16,R20
 00D2 1127              clr R17
 00D4 0E940000          xcall _SPI_SendByte
 00D8                   .dbline 82
 00D8           ;       LCD_control |=1<<LCD_CS;                                  // chip select
 00D8 969A              sbi 0x12,6
 00DA                   .dbline -2
 00DA           L10:
 00DA 0E940000          xcall pop_gset1
 00DE                   .dbline 0 ; func end
 00DE 0895              ret
 00E0                   .dbsym r Command 20 c
 00E0                   .dbend
 00E0                   .dbfunc e SdData _SdData fV
 00E0           ;          DData -> R20
                        .even
 00E0           _SdData::
 00E0 0E940000          xcall push_gset1
 00E4 402F              mov R20,R16
 00E6                   .dbline -1
 00E6                   .dbline 88
 00E6           ; }
 00E6           ; //-------------------------------------------------------------------------------
 00E6           ; //LCD 数据发送
 00E6           ; //-------------------------------------------------------------------------------
 00E6           ; void SdData(UINT8 DData)                                       // send data
 00E6           ; {
 00E6                   .dbline 89
 00E6           ;     SPI_SS |=1;                                                                                                  //屏蔽3548
 00E6 C09A              sbi 0x18,0
 00E8                   .dbline 90
 00E8           ;       LCD_control &=~(1<<LCD_CS);                                // chip select
 00E8 9698              cbi 0x12,6
 00EA                   .dbline 91
 00EA           ;       LCD_control |=1<<LCD_RS;                                   // for data
 00EA 949A              sbi 0x12,4
 00EC                   .dbline 92
 00EC           ;       SPI_SendByte(DData);
 00EC 042F              mov R16,R20
 00EE 1127              clr R17
 00F0 0E940000          xcall _SPI_SendByte
 00F4                   .dbline 93
 00F4           ;       LCD_control |=1<<LCD_CS;                                  // chip select
 00F4 969A              sbi 0x12,6
 00F6                   .dbline -2
 00F6           L11:
 00F6 0E940000          xcall pop_gset1
 00FA                   .dbline 0 ; func end
 00FA 0895              ret
 00FC                   .dbsym r DData 20 c
 00FC                   .dbend
 00FC                   .dbfunc e LCDSHOW _LCDSHOW fV
 00FC           ;              i -> R20
 00FC           ;              j -> R14
 00FC           ;           date -> R22
 00FC           ;              n -> R10
 00FC           ;              m -> R12
 00FC           ;           page -> y+10
                        .even
 00FC           _LCDSHOW::
 00FC 0E940000          xcall push_arg4
 0100 0E940000          xcall push_gset5
 0104 C22E              mov R12,R18
 0106 AE84              ldd R10,y+14
 0108 6889              ldd R22,y+16
 010A                   .dbline -1
 010A                   .dbline 102
 010A           ; }     
 010A           ; //-------------------------------------------------------------------------------
 010A           ; //LCD 显示字符和数字
 010A           ; //    void LCDSHOW(UINT8 page,UINT8 m,UINT8 n,UINT8 date)
 010A           ; //    LCDSHOW( page, 0x15, 8, 12);    
 010A           ; //    M ()   N   
 010A           ; //-------------------------------------------------------------------------------
 010A           ; void LCDSHOW(UINT8 page,UINT8 m,UINT8 n,UINT8 date)
 010A           ; {
 010A                   .dbline 105
 010A           ;     
 010A           ;       UINT8 i,j;
 010A           ;       for(i=0;i<2;i++)              
 010A 4427              clr R20
 010C 30C0              xjmp L16
 010E           L13:
 010E                   .dbline 106
 010E           ;          {
 010E                   .dbline 107
 010E           ;           SdCmd(0xb0+i+page);          
 010E 042F              mov R16,R20
 0110 0055              subi R16,80    ; addi 176
 0112 0A84              ldd R0,y+10
 0114 000D              add R16,R0
 0116 D6DF              xcall _SdCmd
 0118                   .dbline 108
 0118           ;               SdCmd(m);                
 0118 0C2D              mov R16,R12
 011A D4DF              xcall _SdCmd
 011C                   .dbline 109
 011C           ;         SdCmd(n);                 
 011C 0A2D              mov R16,R10
 011E D2DF              xcall _SdCmd
 0120                   .dbline 110
 0120           ;         for(j=0;j<8;j++)
 0120 EE24              clr R14
 0122 21C0              xjmp L20
 0124           L17:
 0124                   .dbline 111
 0124                   .dbline 112
 0124 88E0              ldi R24,8
 0126 849F              mul R24,R20
 0128 EE2D              mov R30,R14
 012A FF27              clr R31
 012C E00D              add R30,R0
 012E F11D              adc R31,R1
 0130 80E1              ldi R24,16
 0132 869F              mul R24,R22
 0134 E00D              add R30,R0
 0136 F11D              adc R31,R1
 0138 80E0              ldi R24,<_data_hi
 013A 90E0              ldi R25,>_data_hi
 013C E80F              add R30,R24
 013E F91F              adc R31,R25
 0140 0491              lpm R16,Z
 0142 CEDF              xcall _SdData
 0144                   .dbline 113
 0144 88E0              ldi R24,8
 0146 849F              mul R24,R20
 0148 EE2D              mov R30,R14
 014A FF27              clr R31
 014C E00D              add R30,R0
 014E F11D              adc R31,R1
 0150 80E1              ldi R24,16
 0152 869F              mul R24,R22
 0154 E00D              add R30,R0
 0156 F11D              adc R31,R1
 0158 80E0              ldi R24,<_data_hi
 015A 90E0              ldi R25,>_data_hi
 015C E80F              add R30,R24
 015E F91F              adc R31,R25
 0160 0491              lpm R16,Z
 0162 BEDF              xcall _SdData
 0164                   .dbline 114
 0164           L18:
 0164                   .dbline 110
 0164 E394              inc R14
 0166           L20:
 0166                   .dbline 110
 0166 8E2D              mov R24,R14
 0168 8830              cpi R24,8
 016A E0F2              brlo L17
 016C                   .dbline 115
 016C           L14:
 016C                   .dbline 105
 016C 4395              inc R20
 016E           L16:
 016E                   .dbline 105
 016E 4230              cpi R20,2
 0170 08F4              brsh X1
 0172 CDCF              xjmp L13
 0174           X1:
 0174                   .dbline -2
 0174           L12:
 0174 0E940000          xcall pop_gset5
 0178 2496              adiw R28,4
 017A                   .dbline 0 ; func end
 017A 0895              ret
 017C                   .dbsym r i 20 c
 017C                   .dbsym r j 14 c
 017C                   .dbsym r date 22 c
 017C                   .dbsym r n 10 c
 017C                   .dbsym r m 12 c
 017C                   .dbsym l page 10 c
 017C                   .dbend
 017C                   .dbfunc e SdPage _SdPage fV
 017C           ;              i -> R20
 017C           ;              j -> R22
                        .even
 017C           _SdPage::
 017C 0E940000          xcall push_gset2
 0180                   .dbline -1
 0180                   .dbline 122
 0180           ;                  {
 0180           ;                  SdData(data_hi[j+8*i+8*2*date]);   //为什么要写两次呢?  0--7 +8*0  
 0180           ;            SdData(data_hi[j+8*i+8*2*date]);  //                     0-7  +8*1
 0180           ;                  }
 0180           ;          }
 0180           ; }        
 0180           ; 
 0180           ; //-------------------------------------------------------------------------------
 0180           ; //清屏 
 0180           ; //-------------------------------------------------------------------------------
 0180           ; void SdPage(void)
 0180           ;   {
 0180                   .dbline 124
 0180           ;   UINT8 i, j;         
 0180           ;   SPCR = 0x50;
 0180 80E5              ldi R24,80
 0182 8DB9              out 0xd,R24
 0184                   .dbline 125
 0184           ;   for(i=0;i<12;i++)              // page data
 0184 4427              clr R20
 0186 12C0              xjmp L25
 0188           L22:
 0188                   .dbline 126
 0188           ;     {
 0188                   .dbline 127
 0188           ;       WDR();
 0188 A895              wdr
 018A                   .dbline 128
 018A           ;     SdCmd(0xb0|i );              // select page
 018A 042F              mov R16,R20
 018C 006B              ori R16,176
 018E 9ADF              xcall _SdCmd
 0190                   .dbline 129
 0190           ;     SdCmd(0x10);                 // column address start at 00 (Y7,Y6,Y5)
 0190 00E1              ldi R16,16
 0192 98DF              xcall _SdCmd
 0194                   .dbline 130
 0194           ;     SdCmd(0x00);                 // column address start at 00 (Y4,Y3,Y2,Y1)
 0194 0027              clr R16
 0196 96DF              xcall _SdCmd
 0198                   .dbline 131
 0198           ;     for(j=0;j<128;j++)
 0198 6627              clr R22
 019A 05C0              xjmp L29
 019C           L26:
 019C                   .dbline 132
 019C                   .dbline 133
 019C 0027              clr R16
 019E A0DF              xcall _SdData
 01A0                   .dbline 134
 01A0 0027              clr R16
 01A2 9EDF              xcall _SdData
 01A4                   .dbline 135
 01A4           L27:
 01A4                   .dbline 131
 01A4 6395              inc R22
 01A6           L29:
 01A6                   .dbline 131
 01A6 6038              cpi R22,128
 01A8 C8F3              brlo L26
 01AA                   .dbline 136
 01AA           L23:
 01AA                   .dbline 125
 01AA 4395              inc R20
 01AC           L25:
 01AC                   .dbline 125
 01AC 4C30              cpi R20,12
 01AE 60F3              brlo L22
 01B0                   .dbline 137
 01B0           ;       {
 01B0           ;       SdData(0X00);                        //清屏 
 01B0           ;       SdData(0X00);
 01B0           ;       }
 01B0           ;    }                  
 01B0           ;   SPCR = 0x54; 
 01B0 84E5              ldi R24,84
 01B2 8DB9              out 0xd,R24
 01B4                   .dbline -2
 01B4           L21:
 01B4 0E940000          xcall pop_gset2
 01B8                   .dbline 0 ; func end
 01B8 0895              ret
 01BA                   .dbsym r i 20 c
 01BA                   .dbsym r j 22 c
 01BA                   .dbend
 01BA                   .dbfunc e test _test fV
 01BA           ;              i -> <dead>
 01BA           ;              j -> <dead>
 01BA           ;              k -> R20
 01BA           ;           page -> R22
 01BA           ;           data -> R20
                        .even
 01BA           _test::
 01BA 0E940000          xcall push_gset2
 01BE 622F              mov R22,R18
 01C0 402F              mov R20,R16
 01C2 2397              sbiw R28,3
 01C4                   .dbline -1
 01C4                   .dbline 141
 01C4           ;   }
 01C4           ; 
 01C4           ; void test(UINT8 data,UINT8 page)
 01C4           ; {
 01C4                   .dbline 143
 01C4           ;    UINT8 k,j,i;
 01C4           ;    SPCR = 0x50;
 01C4 80E5              ldi R24,80
 01C6 8DB9              out 0xd,R24
 01C8                   .dbline 144
 01C8           ;    date[0]=(data&0xf0)>>4;
 01C8 842F              mov R24,R20
 01CA 807F              andi R24,240
 01CC 8295              swap R24
 01CE 8F70              andi R24,#0x0F
 01D0 80930000          sts _date,R24
 01D4                   .dbline 145
 01D4           ;    date[1]=data&0x0f;
 01D4 842F              mov R24,R20
 01D6 8F70              andi R24,15

⌨️ 快捷键说明

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