📄 240128.lis
字号:
0024 ; /*******************************************************************************
0024 ; 状态位STA3 如果STA3 = 1 数据自动写状态
0024 ; *******************************************************************************/
0024 ; unsigned char fnSTA3(void)
0024 ; {
0024 .dbline 32
0024 ; if( (LCD_RD_STATUS() & 0x08) == 0x08 ) return(0);
0024 11D0 rcall _LCD_RD_STATUS
0026 802F mov R24,R16
0028 8870 andi R24,8
002A 8830 cpi R24,8
002C 11F4 brne L9
002E .dbline 32
002E 0027 clr R16
0030 01C0 rjmp L8
0032 L9:
0032 .dbline 33
0032 ; else return(1);
0032 01E0 ldi R16,1
0034 .dbline -2
0034 L8:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbend
0036 .dbfunc e fnSTA6 _fnSTA6 fc
.even
0036 _fnSTA6::
0036 .dbline -1
0036 .dbline 39
0036 ; }
0036 ; /*******************************************************************************
0036 ; 状态位STA6 如果STA6 =1 屏读/屏拷贝状态
0036 ; *******************************************************************************/
0036 ; unsigned char fnSTA6(void)
0036 ; {
0036 .dbline 40
0036 ; if( (LCD_RD_STATUS() & 0x40) == 0x40 ) return(0);
0036 08D0 rcall _LCD_RD_STATUS
0038 802F mov R24,R16
003A 8074 andi R24,64
003C 8034 cpi R24,64
003E 11F4 brne L12
0040 .dbline 40
0040 0027 clr R16
0042 01C0 rjmp L11
0044 L12:
0044 .dbline 41
0044 ; else return(1);
0044 01E0 ldi R16,1
0046 .dbline -2
0046 L11:
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbend
0048 .dbfunc e LCD_RD_STATUS _LCD_RD_STATUS fc
0048 ; temp -> R16
.even
0048 _LCD_RD_STATUS::
0048 .dbline -1
0048 .dbline 47
0048 ; }
0048 ; /*******************************************************************************
0048 ; 读LCD状态
0048 ; *******************************************************************************/
0048 ; unsigned char LCD_RD_STATUS(void)
0048 ; {
0048 .dbline 49
0048 ; unsigned char temp;
0048 ; LCD_DDR = 0x00;
0048 2224 clr R2
004A 2AB8 out 0xa,R2
004C .dbline 50
004C ; LCD_CD_H;
004C 289A sbi 0x5,0
004E .dbline 51
004E ; LCD_RD_L;
004E 2A98 cbi 0x5,2
0050 .dbline 52
0050 ; NOP();NOP();NOP();
0050 0000 nop
0052 .dbline 52
0052 0000 nop
0054 .dbline 52
0054 0000 nop
0056 .dbline 53
0056 ; temp = LCD_DATA;
0056 09B1 in R16,0x9
0058 .dbline 54
0058 ; LCD_RD_H;
0058 2A9A sbi 0x5,2
005A .dbline 55
005A ; LCD_DDR = 0xFF;
005A 8FEF ldi R24,255
005C 8AB9 out 0xa,R24
005E .dbline 56
005E ; return(temp);
005E .dbline -2
005E L14:
005E .dbline 0 ; func end
005E 0895 ret
0060 .dbsym r temp 16 c
0060 .dbend
0060 .dbfunc e LCD_RD_DATA _LCD_RD_DATA fc
0060 ; temp -> R16
.even
0060 _LCD_RD_DATA::
0060 .dbline -1
0060 .dbline 62
0060 ; }
0060 ; /*******************************************************************************
0060 ; 读LCD数据
0060 ; *******************************************************************************/
0060 ; unsigned char LCD_RD_DATA(void)
0060 ; {
0060 .dbline 64
0060 ; unsigned char temp;
0060 ; LCD_DDR = 0x00;
0060 2224 clr R2
0062 2AB8 out 0xa,R2
0064 .dbline 65
0064 ; LCD_CD_L;
0064 2898 cbi 0x5,0
0066 .dbline 66
0066 ; LCD_RD_L;
0066 2A98 cbi 0x5,2
0068 .dbline 67
0068 ; NOP();NOP();NOP();
0068 0000 nop
006A .dbline 67
006A 0000 nop
006C .dbline 67
006C 0000 nop
006E .dbline 68
006E ; temp = LCD_DATA;
006E 09B1 in R16,0x9
0070 .dbline 69
0070 ; LCD_RD_H;
0070 2A9A sbi 0x5,2
0072 .dbline 70
0072 ; LCD_DDR = 0xFF;
0072 8FEF ldi R24,255
0074 8AB9 out 0xa,R24
0076 .dbline 71
0076 ; return(temp);
0076 .dbline -2
0076 L15:
0076 .dbline 0 ; func end
0076 0895 ret
0078 .dbsym r temp 16 c
0078 .dbend
0078 .dbfunc e LCD_WR_DATA _LCD_WR_DATA fV
0078 ; data -> R20
.even
0078 _LCD_WR_DATA::
0078 00D0 rcall push_gset1
007A 402F mov R20,R16
007C .dbline -1
007C .dbline 77
007C ; }
007C ; /*******************************************************************************
007C ; 写数据
007C ; *******************************************************************************/
007C ; void LCD_WR_DATA(unsigned char data)
007C ; {
007C L17:
007C .dbline 78
007C L18:
007C .dbline 78
007C ; while( fnSTA01() );
007C C1DF rcall _fnSTA01
007E 0023 tst R16
0080 E9F7 brne L17
0082 .dbline 79
0082 ; LCD_CD_L;
0082 2898 cbi 0x5,0
0084 .dbline 80
0084 ; LCD_WR_L;
0084 2998 cbi 0x5,1
0086 .dbline 82
0086 ; //LCD_DDR = 0XFF;----------------单片机端口必须处于输出状态
0086 ; LCD_PORT = data;
0086 4BB9 out 0xb,R20
0088 .dbline 83
0088 ; LCD_WR_H;
0088 299A sbi 0x5,1
008A .dbline -2
008A L16:
008A 00D0 rcall pop_gset1
008C .dbline 0 ; func end
008C 0895 ret
008E .dbsym r data 20 c
008E .dbend
008E .dbfunc e LCD_WR_CODE _LCD_WR_CODE fV
008E ; code -> R20
.even
008E _LCD_WR_CODE::
008E 00D0 rcall push_gset1
0090 402F mov R20,R16
0092 .dbline -1
0092 .dbline 89
0092 ; }
0092 ; /*******************************************************************************
0092 ; 写无参数命令
0092 ; *******************************************************************************/
0092 ; void LCD_WR_CODE(unsigned char code)
0092 ; {
0092 L21:
0092 .dbline 90
0092 L22:
0092 .dbline 90
0092 ; while( fnSTA01() );
0092 B6DF rcall _fnSTA01
0094 0023 tst R16
0096 E9F7 brne L21
0098 .dbline 91
0098 ; LCD_CD_H;
0098 289A sbi 0x5,0
009A .dbline 92
009A ; LCD_WR_L;
009A 2998 cbi 0x5,1
009C .dbline 94
009C ; //LCD_DDR = 0XFF;----------------单片机端口必须处于输出状态
009C ; LCD_PORT = code;
009C 4BB9 out 0xb,R20
009E .dbline 95
009E ; LCD_WR_H;
009E 299A sbi 0x5,1
00A0 .dbline -2
00A0 L20:
00A0 00D0 rcall pop_gset1
00A2 .dbline 0 ; func end
00A2 0895 ret
00A4 .dbsym r code 20 c
00A4 .dbend
00A4 .dbfunc e LCD_WR_CODE1 _LCD_WR_CODE1 fV
00A4 ; data1 -> R22
00A4 ; code -> R20
.even
00A4 _LCD_WR_CODE1::
00A4 00D0 rcall push_gset2
00A6 622F mov R22,R18
00A8 402F mov R20,R16
00AA .dbline -1
00AA .dbline 101
00AA ; }
00AA ; /*******************************************************************************
00AA ; 写单参数的指令
00AA ; *******************************************************************************/
00AA ; void LCD_WR_CODE1(unsigned char code, unsigned char data1)
00AA ; {
00AA .dbline 102
00AA ; LCD_WR_DATA(data1);
00AA 062F mov R16,R22
00AC E5DF rcall _LCD_WR_DATA
00AE .dbline 103
00AE ; LCD_WR_CODE(code);
00AE 042F mov R16,R20
00B0 EEDF rcall _LCD_WR_CODE
00B2 .dbline -2
00B2 L24:
00B2 00D0 rcall pop_gset2
00B4 .dbline 0 ; func end
00B4 0895 ret
00B6 .dbsym r data1 22 c
00B6 .dbsym r code 20 c
00B6 .dbend
00B6 .dbfunc e LCD_WR_CODE2 _LCD_WR_CODE2 fV
00B6 ; data2 -> y+4
00B6 ; data1 -> R22
00B6 ; code -> R20
.even
00B6 _LCD_WR_CODE2::
00B6 00D0 rcall push_gset2
00B8 622F mov R22,R18
00BA 402F mov R20,R16
00BC .dbline -1
00BC .dbline 109
00BC ; }
00BC ; /*******************************************************************************
00BC ; 写双参数的指令
00BC ; *******************************************************************************/
00BC ; void LCD_WR_CODE2(unsigned char code, unsigned char data1, unsigned char data2)
00BC ; {
00BC .dbline 110
00BC ; LCD_WR_DATA(data1);
00BC 062F mov R16,R22
00BE DCDF rcall _LCD_WR_DATA
00C0 .dbline 111
00C0 ; LCD_WR_DATA(data2);
00C0 0C81 ldd R16,y+4
00C2 DADF rcall _LCD_WR_DATA
00C4 .dbline 112
00C4 ; LCD_WR_CODE(code);
00C4 042F mov R16,R20
00C6 E3DF rcall _LCD_WR_CODE
00C8 .dbline -2
00C8 L25:
00C8 00D0 rcall pop_gset2
00CA .dbline 0 ; func end
00CA 0895 ret
00CC .dbsym l data2 4 c
00CC .dbsym r data1 22 c
00CC .dbsym r code 20 c
00CC .dbend
00CC .dbfunc e LCD_INIT _LCD_INIT fV
.even
00CC _LCD_INIT::
00CC 2197 sbiw R28,1
00CE .dbline -1
00CE .dbline 118
00CE ; }
00CE ; /*******************************************************************************
00CE ; 初始化LCD
00CE ; *******************************************************************************/
00CE ; void LCD_INIT(void)
00CE ; {
00CE .dbline 119
00CE ; LCD_WR_CODE(LCD_MOD_OR);
00CE 00E8 ldi R16,128
00D0 DEDF rcall _LCD_WR_CODE
00D2 .dbline 120
00D2 ; LCD_WR_CODE(0x98); //打开图形显示
00D2 08E9 ldi R16,152
00D4 DCDF rcall _LCD_WR_CODE
00D6 .dbline 121
00D6 ; LCD_WR_CODE2(LCD_TXT_STP,0,0);
00D6 2224 clr R2
00D8 2882 std y+0,R2
00DA 2227 clr R18
00DC 00E4 ldi R16,64
00DE EBDF rcall _LCD_WR_CODE2
00E0 .dbline 122
00E0 ; LCD_WR_CODE2(LCD_TXT_WID,30,0);
00E0 2224 clr R2
00E2 2882 std y+0,R2
00E4 2EE1 ldi R18,30
00E6 01E4 ldi R16,65
00E8 E6DF rcall _LCD_WR_CODE2
00EA .dbline 123
00EA ; LCD_WR_CODE2(LCD_GRH_STP,0,0);
00EA 2224 clr R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -