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

📄 lcd.lis

📁 已经上传的YF-320240-3.5寸彩屏(可由单片机控制)的测试程序。主CPU为MEGA128
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0126 8052              subi R24,32
 0128 A82E              mov R10,R24
 012A                   .dbline 75
 012A           ;                CMD = LCD_MODE_1;
 012A 82E0              ldi R24,2
 012C 80930280          sts 32770,R24
 0130                   .dbline 76
 0130           ;                DAT = front;
 0130 0884              ldd R0,y+8
 0132 00920380          sts 32771,R0
 0136                   .dbline 77
 0136           ;                CMD = LCD_MODE_2;
 0136 84E0              ldi R24,4
 0138 80930280          sts 32770,R24
 013C                   .dbline 78
 013C           ;                DAT = back;
 013C 2A84              ldd R2,y+10
 013E 3B84              ldd R3,y+11
 0140 20920380          sts 32771,R2
 0144                   .dbline 79
 0144           ;                CMD = LCD_MODE_0+LCD_DOT8;
 0144 81E0              ldi R24,1
 0146 80930280          sts 32770,R24
 014A                   .dbline 80
 014A           ;                for(j=y;j<y+24;j++)
 014A 622F              mov R22,R18
 014C 2CC0              xjmp L27
 014E           L24:
 014E                   .dbline 81
 014E                   .dbline 82
 014E 60930180          sts 32769,R22
 0152                   .dbline 83
 0152 00930080          sts 32768,R16
 0156                   .dbline 84
 0156 1801              movw R2,R16
 0158 232C              mov R2,R3
 015A 3324              clr R3
 015C 20920080          sts 32768,R2
 0160                   .dbline 85
 0160 242E              mov R2,R20
 0162 3324              clr R3
 0164 4F5F              subi R20,255    ; addi 1
 0166 80E3              ldi R24,48
 0168 8A9D              mul R24,R10
 016A 2001              movw R4,R0
 016C 80E0              ldi R24,<_Cdot1624
 016E 90E0              ldi R25,>_Cdot1624
 0170 480E              add R4,R24
 0172 591E              adc R5,R25
 0174 E22D              mov R30,R2
 0176 FF27              clr R31
 0178 E40D              add R30,R4
 017A F51D              adc R31,R5
 017C E691              elpm R30,Z
 017E E0930380          sts 32771,R30
 0182                   .dbline 86
 0182 242E              mov R2,R20
 0184 3324              clr R3
 0186 4F5F              subi R20,255    ; addi 1
 0188 80E3              ldi R24,48
 018A 8A9D              mul R24,R10
 018C 2001              movw R4,R0
 018E 80E0              ldi R24,<_Cdot1624
 0190 90E0              ldi R25,>_Cdot1624
 0192 480E              add R4,R24
 0194 591E              adc R5,R25
 0196 E22D              mov R30,R2
 0198 FF27              clr R31
 019A E40D              add R30,R4
 019C F51D              adc R31,R5
 019E E691              elpm R30,Z
 01A0 E0930380          sts 32771,R30
 01A4                   .dbline 87
 01A4           L25:
 01A4                   .dbline 80
 01A4 6395              inc R22
 01A6           L27:
 01A6                   .dbline 80
 01A6 822F              mov R24,R18
 01A8 885E              subi R24,232    ; addi 24
 01AA 6817              cp R22,R24
 01AC 80F2              brlo L24
 01AE                   .dbline -2
 01AE           L23:
 01AE 0E940000          xcall pop_gset3
 01B2                   .dbline 0 ; func end
 01B2 0895              ret
 01B4                   .dbsym r k 20 c
 01B4                   .dbsym r j 22 c
 01B4                   .dbsym l back 10 i
 01B4                   .dbsym l front 8 c
 01B4                   .dbsym r dat 10 c
 01B4                   .dbsym r y 18 c
 01B4                   .dbsym r x 16 i
 01B4                   .dbend
 01B4                   .dbfunc e Dis_Chinese _Dis_Chinese fV
 01B4           ;              k -> R20
 01B4           ;              j -> R22
 01B4           ;           back -> y+14
 01B4           ;          front -> y+12
 01B4           ;            dat -> R12,R13
 01B4           ;              y -> R14
 01B4           ;              x -> R10,R11
                        .even
 01B4           _Dis_Chinese::
 01B4 0E940000          xcall push_gset5
 01B8 E22E              mov R14,R18
 01BA 5801              movw R10,R16
 01BC CA84              ldd R12,y+10
 01BE DB84              ldd R13,y+11
 01C0                   .dbline -1
 01C0                   .dbline 90
 01C0           ;                {
 01C0           ;                    Y_ADDR = j;
 01C0           ;                        X_ADDR = x;
 01C0           ;                        X_ADDR = x/256;
 01C0           ;                        DAT = Cdot1624[dat][k++];
 01C0           ;                        DAT = Cdot1624[dat][k++];
 01C0           ;                }
 01C0           ; }
 01C0           ; void Dis_Chinese(unsigned int x,unsigned char y,unsigned int dat,unsigned char front,unsigned back)
 01C0           ; {
 01C0                   .dbline 92
 01C0           ;          unsigned char j,k;
 01C0           ;          k = 0;
 01C0 4427              clr R20
 01C2                   .dbline 93
 01C2           ;                CMD = LCD_MODE_1;
 01C2 82E0              ldi R24,2
 01C4 80930280          sts 32770,R24
 01C8                   .dbline 94
 01C8           ;                DAT = front;
 01C8 0C84              ldd R0,y+12
 01CA 00920380          sts 32771,R0
 01CE                   .dbline 95
 01CE           ;                CMD = LCD_MODE_2;
 01CE 84E0              ldi R24,4
 01D0 80930280          sts 32770,R24
 01D4                   .dbline 96
 01D4           ;                DAT = back;
 01D4 2E84              ldd R2,y+14
 01D6 3F84              ldd R3,y+15
 01D8 20920380          sts 32771,R2
 01DC                   .dbline 97
 01DC           ;                CMD = LCD_MODE_0+LCD_DOT8;
 01DC 81E0              ldi R24,1
 01DE 80930280          sts 32770,R24
 01E2                   .dbline 98
 01E2           ;          for(j=y;j<y+16;j++)
 01E2 6E2D              mov R22,R14
 01E4 32C0              xjmp L32
 01E6           L29:
 01E6                   .dbline 99
 01E6                   .dbline 100
 01E6 60930180          sts 32769,R22
 01EA                   .dbline 101
 01EA A0920080          sts 32768,R10
 01EE                   .dbline 102
 01EE 1501              movw R2,R10
 01F0 232C              mov R2,R3
 01F2 3324              clr R3
 01F4 20920080          sts 32768,R2
 01F8                   .dbline 103
 01F8 242E              mov R2,R20
 01FA 3324              clr R3
 01FC 4F5F              subi R20,255    ; addi 1
 01FE 02E2              ldi R16,34
 0200 10E0              ldi R17,0
 0202 9601              movw R18,R12
 0204 0E940000          xcall empy16s
 0208 2801              movw R4,R16
 020A 80E0              ldi R24,<_Cdotlib+2
 020C 90E0              ldi R25,>_Cdotlib+2
 020E 480E              add R4,R24
 0210 591E              adc R5,R25
 0212 E22D              mov R30,R2
 0214 FF27              clr R31
 0216 E40D              add R30,R4
 0218 F51D              adc R31,R5
 021A E691              elpm R30,Z
 021C E0930380          sts 32771,R30
 0220                   .dbline 104
 0220 242E              mov R2,R20
 0222 3324              clr R3
 0224 4F5F              subi R20,255    ; addi 1
 0226 02E2              ldi R16,34
 0228 10E0              ldi R17,0
 022A 9601              movw R18,R12
 022C 0E940000          xcall empy16s
 0230 2801              movw R4,R16
 0232 80E0              ldi R24,<_Cdotlib+2
 0234 90E0              ldi R25,>_Cdotlib+2
 0236 480E              add R4,R24
 0238 591E              adc R5,R25
 023A E22D              mov R30,R2
 023C FF27              clr R31
 023E E40D              add R30,R4
 0240 F51D              adc R31,R5
 0242 E691              elpm R30,Z
 0244 E0930380          sts 32771,R30
 0248                   .dbline 105
 0248           L30:
 0248                   .dbline 98
 0248 6395              inc R22
 024A           L32:
 024A                   .dbline 98
 024A 8E2D              mov R24,R14
 024C 805F              subi R24,240    ; addi 16
 024E 6817              cp R22,R24
 0250 08F4              brsh X0
 0252 C9CF              xjmp L29
 0254           X0:
 0254                   .dbline -2
 0254           L28:
 0254 0E940000          xcall pop_gset5
 0258                   .dbline 0 ; func end
 0258 0895              ret
 025A                   .dbsym r k 20 c
 025A                   .dbsym r j 22 c
 025A                   .dbsym l back 14 i
 025A                   .dbsym l front 12 c
 025A                   .dbsym r dat 12 i
 025A                   .dbsym r y 14 c
 025A                   .dbsym r x 10 i
 025A                   .dbend
 025A                   .dbfunc e Display _Display fV
 025A           ;           uLen -> R20
 025A           ;              i -> R22
 025A           ;            dat -> R10,R11
 025A           ;           back -> R12
 025A           ;          front -> R14
 025A           ;           font -> y+18
 025A           ;            ptr -> y+16
 025A           ;              y -> R4
 025A           ;              x -> R6,R7
                        .even
 025A           _Display::
 025A 0E940000          xcall push_gset5
 025E 422E              mov R4,R18
 0260 3801              movw R6,R16
 0262 2697              sbiw R28,6
 0264 EC88              ldd R14,y+20
 0266 CE88              ldd R12,y+22
 0268                   .dbline -1
 0268                   .dbline 126
 0268           ;          {
 0268           ;              Y_ADDR = j;
 0268           ;              X_ADDR = x;
 0268           ;                        X_ADDR = x/256;
 0268           ;                        DAT = Cdotlib[dat].Msk[k++];
 0268           ;                        DAT = Cdotlib[dat].Msk[k++];
 0268           ;          }
 0268           ; }
 0268           ; /*
 0268           ;      显示dat[32]数组中的汉字
 0268           ;        输入:显示汉字位置,汉字点阵指针、着色
 0268           ;        输入:无
 0268           ;        编者:赫树开
 0268           ;        日期:二○○六年三月十一日
 0268           ; */
 0268           ; 
 0268           ; 
 0268           ; /*=============================================================================
 0268           ;   ASCII(8*16) 及 汉字(16*16) 混合字符串显示函数
 0268           ;   输入参数约定:
 0268           ;   x,y显示字符串的左上角xy坐标.x..8点一字节位置; y..一条扫描线定位
 0268           ;   *ptr...字符串指针,本函数所指的是flash字串
 0268           ;  cursor 为光标标志,1 为光标 0 为不是光标
 0268           ;  返回参数:输出字串长度,留意汉字一个算两个
 0268           ;  其它假定:调用时汉字必须在字库数组中已经存在,否则将输出不正确的结果
 0268           ; ==============================================================================*/
 0268           ; void Display(unsigned int x,unsigned char y,unsigned char *ptr,unsigned char font,unsigned char front,unsigned char back)
 0268           ; {
 0268                   .dbline 127
 0268           ;         unsigned char uLen,i=0;
 0268 6627              clr R22
 026A                   .dbline 129
 026A           ;         unsigned int  dat;
 026A           ;         uLen=0;
 026A 4427              clr R20
 026C 01C0              xjmp L37
 026E           L36:
 026E                   .dbline 130
 026E                   .dbline 130
 026E 4395              inc R20
 0270                   .dbline 130
 0270           L37:
 0270                   .dbline 130
 0270           ;           while ( (unsigned char)ptr[uLen] >= 0x10 ){uLen++;};        //探测字串长度
 0270 E42F              mov R30,R20
 0272 FF27              clr R31
 0274 0888              ldd R0,y+16
 0276 1988              ldd R1,y+17
 0278 E00D              add R30,R0
 027A F11D              adc R31,R1
 027C 8081              ldd R24,z+0
 027E 8031              cpi R24,16
 0280 B0F7              brsh L36
 0282                   .dbline 130
 0282 B3C0              xjmp L40
 0284           L39:
 0284                   .dbline 133
 0284           ;               //uLen = strlen(ptr);
 0284           ;         while(i<uLen)
 0284           ;         {
 0284                   .dbline 135
 0284           ; 
 0284           ;              if((unsigned char)ptr[i]<128)   //ascii字符与汉字内码的区别在于128做分界,大于界线的为汉字码
 0284 E62F              mov R30,R22
 0286 FF27              clr R31
 0288 0888              ldd R0,y+16
 028A 1988              ldd R1,y+17
 028C E00D              add R30,R0
 028E F11D              adc R31,R1
 0290 8081              ldd R24,z+0
 0292 8038              cpi R24,128
 0294 08F0              brlo X1
 0296 4DC0              xjmp L42
 0298           X1:
 0298                   .dbline 136
 0298           ;              {  //此字符为ascii
 0298                   .dbline 137
 0298           ;                             if(font == BIG)
 0298 8A89              ldd R24,y+18
 029A 8130              cpi R24,1
 029C 21F5              brne L44
 029E                   .dbline 138
 029E           ;                         {
 029E                   .dbline 139
 029E           ;                             Dis_Ascii_Big(x,y,ptr[i],front,back);
 029E 2C2C              mov R2,R12
 02A0 3324              clr R3
 02A2 3D82              std y+5,R3
 02A4 2C82              std y+4,R2
 02A6 EA82              std y+2,R14
 02A8 E62F              mov R30,R22
 02AA FF27              clr R31
 02AC E00D              add R30,R0
 02AE F11D              adc R31,R1
 02B0 2080              ldd R2,z+0
 02B2 2882              std y+0,R2

⌨️ 快捷键说明

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