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

📄 lcd.lis

📁 已经上传的YF-320240-3.5寸彩屏(可由单片机控制)的测试程序。主CPU为MEGA128
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module lcd.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\Relations\sf6_system\measure\LCDtest\lcd.c
 0000                   .dbfunc e Clear_Display _Clear_Display fV
 0000           ;          color -> R20
                        .even
 0000           _Clear_Display::
 0000 0E940000          xcall push_gset1
 0004 402F              mov R20,R16
 0006                   .dbline -1
 0006                   .dbline 6
 0006           ; #include <iom128v.h>
 0006           ; #include "lcd.h"
 0006           ; #include <macros.h>
 0006           ; 
 0006           ; void Clear_Display(unsigned char color)
 0006           ; {   
 0006                   .dbline 7
 0006           ;     CMD = LCD_MODE_2;
 0006 84E0              ldi R24,4
 0008 80930280          sts 32770,R24
 000C                   .dbline 8
 000C           ;       DAT = color;
 000C 40930380          sts 32771,R20
 0010                   .dbline 9
 0010           ;       CMD = LCD_CLEAR_EN;
 0010 88E0              ldi R24,8
 0012 80930280          sts 32770,R24
 0016                   .dbline 10
 0016           ;       Delayx10ms(1);
 0016 01E0              ldi R16,1
 0018 10E0              ldi R17,0
 001A 0E940000          xcall _Delayx10ms
 001E                   .dbline 11
 001E           ;       CMD = LCD_CLEAR_DIS;
 001E 2224              clr R2
 0020 20920280          sts 32770,R2
 0024                   .dbline -2
 0024           L1:
 0024 0E940000          xcall pop_gset1
 0028                   .dbline 0 ; func end
 0028 0895              ret
 002A                   .dbsym r color 20 c
 002A                   .dbend
 002A                   .dbfunc e Dis_Rect _Dis_Rect fV
 002A           ;              i -> R20
 002A           ;              j -> R14,R15
 002A           ;          color -> R22
 002A           ;          width -> R10
 002A           ;          lenth -> R12,R13
 002A           ;              y -> R18
 002A           ;              x -> R16,R17
                        .even
 002A           _Dis_Rect::
 002A 0E940000          xcall push_gset5
 002E CA84              ldd R12,y+10
 0030 DB84              ldd R13,y+11
 0032 AC84              ldd R10,y+12
 0034 6E85              ldd R22,y+14
 0036                   .dbline -1
 0036                   .dbline 24
 0036           ; }
 0036           ; 
 0036           ; 
 0036           ; /* 编写:2005.11.29
 0036           ;     编写者:赫树开
 0036           ;   功能:画一个矩形
 0036           ;   参数。 X为矩形左上角的X坐标,
 0036           ;       Y为左上角Y坐标值,
 0036           ;       lenth为矩形长度,
 0036           ;       width 为矩形宽度
 0036           ;       color为矩形的颜色,*/
 0036           ; void Dis_Rect(unsigned int x,unsigned char y,unsigned int lenth,unsigned char width,unsigned char color)
 0036           ; {
 0036                   .dbline 27
 0036           ;     unsigned char i;
 0036           ;       unsigned int j;
 0036           ;       CMD = LCD_MODE_0+LCD_DOT1;
 0036 2224              clr R2
 0038 20920280          sts 32770,R2
 003C                   .dbline 28
 003C           ;     for(i=y;i<y+width;i++)
 003C 422F              mov R20,R18
 003E 15C0              xjmp L6
 0040           L3:
 0040                   .dbline 29
 0040           ;     {
 0040                   .dbline 30
 0040           ;         X_ADDR = x;
 0040 00930080          sts 32768,R16
 0044                   .dbline 31
 0044           ;               X_ADDR = x/256;
 0044 1801              movw R2,R16
 0046 232C              mov R2,R3
 0048 3324              clr R3
 004A 20920080          sts 32768,R2
 004E                   .dbline 32
 004E           ;         Y_ADDR = i;
 004E 40930180          sts 32769,R20
 0052                   .dbline 33
 0052           ;         for(j=0;j<lenth;j++)
 0052 EE24              clr R14
 0054 FF24              clr R15
 0056 05C0              xjmp L10
 0058           L7:
 0058                   .dbline 34
 0058                   .dbline 35
 0058 60930380          sts 32771,R22
 005C                   .dbline 36
 005C           L8:
 005C                   .dbline 33
 005C C701              movw R24,R14
 005E 0196              adiw R24,1
 0060 7C01              movw R14,R24
 0062           L10:
 0062                   .dbline 33
 0062 EC14              cp R14,R12
 0064 FD04              cpc R15,R13
 0066 C0F3              brlo L7
 0068                   .dbline 37
 0068           L4:
 0068                   .dbline 28
 0068 4395              inc R20
 006A           L6:
 006A                   .dbline 28
 006A 222E              mov R2,R18
 006C 2A0C              add R2,R10
 006E 4215              cp R20,R2
 0070 38F3              brlo L3
 0072                   .dbline -2
 0072           L2:
 0072 0E940000          xcall pop_gset5
 0076                   .dbline 0 ; func end
 0076 0895              ret
 0078                   .dbsym r i 20 c
 0078                   .dbsym r j 14 i
 0078                   .dbsym r color 22 c
 0078                   .dbsym r width 10 c
 0078                   .dbsym r lenth 12 i
 0078                   .dbsym r y 18 c
 0078                   .dbsym r x 16 i
 0078                   .dbend
 0078                   .dbfunc e bytekzh _bytekzh fV
 0078           ;              i -> R20
 0078           ;              j -> R22
 0078           ;           back -> R10
 0078           ;          front -> R18
 0078           ;         datain -> R16
                        .even
 0078           _bytekzh::
 0078 0E940000          xcall push_gset4
 007C A884              ldd R10,y+8
 007E                   .dbline -1
 007E                   .dbline 41
 007E           ;         {
 007E           ;             DAT = color;
 007E           ;         }
 007E           ;     }
 007E           ; }
 007E           ; //单色字节扩展函数
 007E           ; void bytekzh( unsigned char datain,unsigned char front, unsigned char back )
 007E           ; {
 007E                   .dbline 43
 007E           ; unsigned char i,j;
 007E           ; for( i=0,j=0x80; i<8; i++,j=(j>>1))
 007E 4427              clr R20
 0080 60E8              ldi R22,128
 0082 0CC0              xjmp L15
 0084           L12:
 0084                   .dbline 44
 0084           ; {
 0084                   .dbline 45
 0084           ;     DAT=datain&j ? front: back;
 0084 202E              mov R2,R16
 0086 2622              and R2,R22
 0088 19F0              breq L16
 008A C22E              mov R12,R18
 008C DD24              clr R13
 008E 02C0              xjmp L17
 0090           L16:
 0090 CA2C              mov R12,R10
 0092 DD24              clr R13
 0094           L17:
 0094 C0920380          sts 32771,R12
 0098                   .dbline 46
 0098           L13:
 0098                   .dbline 43
 0098 4395              inc R20
 009A 6695              lsr R22
 009C           L15:
 009C                   .dbline 43
 009C 4830              cpi R20,8
 009E 90F3              brlo L12
 00A0                   .dbline -2
 00A0           L11:
 00A0 0E940000          xcall pop_gset4
 00A4                   .dbline 0 ; func end
 00A4 0895              ret
 00A6                   .dbsym r i 20 c
 00A6                   .dbsym r j 22 c
 00A6                   .dbsym r back 10 c
 00A6                   .dbsym r front 18 c
 00A6                   .dbsym r datain 16 c
 00A6                   .dbend
 00A6                   .dbfunc e Dis_Ascii _Dis_Ascii fV
 00A6           ;              k -> R20
 00A6           ;              j -> R22
 00A6           ;           back -> y+10
 00A6           ;          front -> y+8
 00A6           ;            dat -> R10
 00A6           ;              y -> R18
 00A6           ;              x -> R16,R17
                        .even
 00A6           _Dis_Ascii::
 00A6 0E940000          xcall push_gset3
 00AA AE80              ldd R10,y+6
 00AC                   .dbline -1
 00AC                   .dbline 50
 00AC           ; }
 00AC           ; }
 00AC           ; 
 00AC           ; void Dis_Ascii(unsigned int x,unsigned char y,unsigned char dat,unsigned char front,unsigned back)
 00AC           ; {
 00AC                   .dbline 52
 00AC           ;          unsigned char j,k;
 00AC           ;          k = 0;
 00AC 4427              clr R20
 00AE                   .dbline 53
 00AE           ;          dat -= 0x20;
 00AE 8A2D              mov R24,R10
 00B0 8052              subi R24,32
 00B2 A82E              mov R10,R24
 00B4                   .dbline 54
 00B4           ;                CMD = LCD_MODE_1;
 00B4 82E0              ldi R24,2
 00B6 80930280          sts 32770,R24
 00BA                   .dbline 55
 00BA           ;                DAT = front;
 00BA 0884              ldd R0,y+8
 00BC 00920380          sts 32771,R0
 00C0                   .dbline 56
 00C0           ;                CMD = LCD_MODE_2;
 00C0 84E0              ldi R24,4
 00C2 80930280          sts 32770,R24
 00C6                   .dbline 57
 00C6           ;                DAT = back;
 00C6 2A84              ldd R2,y+10
 00C8 3B84              ldd R3,y+11
 00CA 20920380          sts 32771,R2
 00CE                   .dbline 58
 00CE           ;                CMD = LCD_MODE_0+LCD_DOT8;
 00CE 81E0              ldi R24,1
 00D0 80930280          sts 32770,R24
 00D4                   .dbline 59
 00D4           ;          for(j=y;j<y+16;j++)
 00D4 622F              mov R22,R18
 00D6 1BC0              xjmp L22
 00D8           L19:
 00D8                   .dbline 60
 00D8                   .dbline 61
 00D8 60930180          sts 32769,R22
 00DC                   .dbline 62
 00DC 00930080          sts 32768,R16
 00E0                   .dbline 63
 00E0 1801              movw R2,R16
 00E2 232C              mov R2,R3
 00E4 3324              clr R3
 00E6 20920080          sts 32768,R2
 00EA                   .dbline 64
 00EA 242E              mov R2,R20
 00EC 3324              clr R3
 00EE 4F5F              subi R20,255    ; addi 1
 00F0 80E1              ldi R24,16
 00F2 8A9D              mul R24,R10
 00F4 2001              movw R4,R0
 00F6 80E0              ldi R24,<_ASC_MSK
 00F8 90E0              ldi R25,>_ASC_MSK
 00FA 480E              add R4,R24
 00FC 591E              adc R5,R25
 00FE E22D              mov R30,R2
 0100 FF27              clr R31
 0102 E40D              add R30,R4
 0104 F51D              adc R31,R5
 0106 E691              elpm R30,Z
 0108 E0930380          sts 32771,R30
 010C                   .dbline 65
 010C           L20:
 010C                   .dbline 59
 010C 6395              inc R22
 010E           L22:
 010E                   .dbline 59
 010E 822F              mov R24,R18
 0110 805F              subi R24,240    ; addi 16
 0112 6817              cp R22,R24
 0114 08F3              brlo L19
 0116                   .dbline -2
 0116           L18:
 0116 0E940000          xcall pop_gset3
 011A                   .dbline 0 ; func end
 011A 0895              ret
 011C                   .dbsym r k 20 c
 011C                   .dbsym r j 22 c
 011C                   .dbsym l back 10 i
 011C                   .dbsym l front 8 c
 011C                   .dbsym r dat 10 c
 011C                   .dbsym r y 18 c
 011C                   .dbsym r x 16 i
 011C                   .dbend
 011C                   .dbfunc e Dis_Ascii_Big _Dis_Ascii_Big fV
 011C           ;              k -> R20
 011C           ;              j -> R22
 011C           ;           back -> y+10
 011C           ;          front -> y+8
 011C           ;            dat -> R10
 011C           ;              y -> R18
 011C           ;              x -> R16,R17
                        .even
 011C           _Dis_Ascii_Big::
 011C 0E940000          xcall push_gset3
 0120 AE80              ldd R10,y+6
 0122                   .dbline -1
 0122                   .dbline 71
 0122           ;          {
 0122           ;              Y_ADDR = j;
 0122           ;              X_ADDR = x;
 0122           ;                        X_ADDR = x/256;
 0122           ;                        DAT = ASC_MSK[dat][k++];
 0122           ;          }
 0122           ; }
 0122           ; /*
 0122           ; 16*24 字符单个字符显示
 0122           ; */
 0122           ; void Dis_Ascii_Big(unsigned int x,unsigned char y,unsigned char dat,unsigned char front,unsigned back)
 0122           ; {
 0122                   .dbline 73
 0122           ;          unsigned char j,k;
 0122           ;                k=0;
 0122 4427              clr R20
 0124                   .dbline 74
 0124           ;                dat-=0x20;
 0124 8A2D              mov R24,R10

⌨️ 快捷键说明

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