📄 hd61202.lis
字号:
004C AB9A sbi 0x15,3
004E .dbline 62
004E ; PORTC&=~BIT(E);
004E AB98 cbi 0x15,3
0050 .dbline 63
0050 ; PORTC|=BIT(CS1);
0050 A89A sbi 0x15,0
0052 .dbline 64
0052 ; PORTC|=BIT(CS2);
0052 A99A sbi 0x15,1
0054 .dbline -2
0054 L15:
0054 0E940000 xcall pop_gset1
0058 .dbline 0 ; func end
0058 0895 ret
005A .dbsym r x 20 c
005A .dbend
005A .dbfunc e LCD_Write_DatL _LCD_Write_DatL fV
005A ; x -> R20
.even
005A _LCD_Write_DatL::
005A 0E940000 xcall push_gset1
005E 402F mov R20,R16
0060 .dbline -1
0060 .dbline 71
0060 ; }
0060 ;
0060 ; //===================
0060 ; //LCD左半屏写数据
0060 ; //===================
0060 ; void LCD_Write_DatL(unsigned char x)
0060 ; {
0060 .dbline 72
0060 ; PORTC&=~BIT(CS1);
0060 A898 cbi 0x15,0
0062 .dbline 73
0062 ; PORTC|=BIT(CS2);
0062 A99A sbi 0x15,1
0064 .dbline 74
0064 ; LCD_NOP();
0064 CDDF xcall _LCD_NOP
0066 .dbline 75
0066 ; PORTC&=~BIT(RS);
0066 AD98 cbi 0x15,5
0068 .dbline 76
0068 ; PORTC|=BIT(E);
0068 AB9A sbi 0x15,3
006A .dbline 77
006A ; LCD_NOP();
006A CADF xcall _LCD_NOP
006C .dbline 78
006C ; PORTC|=BIT(RS);
006C AD9A sbi 0x15,5
006E .dbline 79
006E ; PORTC&=~BIT(RW);
006E AC98 cbi 0x15,4
0070 .dbline 80
0070 ; PORTA=x;
0070 4BBB out 0x1b,R20
0072 .dbline 81
0072 ; PORTC|=BIT(E);
0072 AB9A sbi 0x15,3
0074 .dbline 82
0074 ; PORTC&=~BIT(E);
0074 AB98 cbi 0x15,3
0076 .dbline 83
0076 ; PORTC|=BIT(CS1);
0076 A89A sbi 0x15,0
0078 .dbline 84
0078 ; PORTC|=BIT(CS2);
0078 A99A sbi 0x15,1
007A .dbline -2
007A L16:
007A 0E940000 xcall pop_gset1
007E .dbline 0 ; func end
007E 0895 ret
0080 .dbsym r x 20 c
0080 .dbend
0080 .dbfunc e LCD_Write_ComR _LCD_Write_ComR fV
0080 ; x -> R20
.even
0080 _LCD_Write_ComR::
0080 0E940000 xcall push_gset1
0084 402F mov R20,R16
0086 .dbline -1
0086 .dbline 91
0086 ; }
0086 ;
0086 ; //===================
0086 ; //LCD右半屏写命令字
0086 ; //===================
0086 ; void LCD_Write_ComR(unsigned char x)
0086 ; {
0086 .dbline 92
0086 ; PORTC|=BIT(CS1);
0086 A89A sbi 0x15,0
0088 .dbline 93
0088 ; PORTC&=~BIT(CS2);
0088 A998 cbi 0x15,1
008A .dbline 94
008A ; LCD_NOP();
008A BADF xcall _LCD_NOP
008C .dbline 95
008C ; PORTC&=~BIT(RS);
008C AD98 cbi 0x15,5
008E .dbline 96
008E ; PORTC|=BIT(E);
008E AB9A sbi 0x15,3
0090 .dbline 97
0090 ; LCD_NOP();
0090 B7DF xcall _LCD_NOP
0092 .dbline 98
0092 ; PORTC&=~BIT(RW);
0092 AC98 cbi 0x15,4
0094 .dbline 99
0094 ; PORTA=x;
0094 4BBB out 0x1b,R20
0096 .dbline 100
0096 ; PORTC|=BIT(E);
0096 AB9A sbi 0x15,3
0098 .dbline 101
0098 ; PORTC&=~BIT(E);
0098 AB98 cbi 0x15,3
009A .dbline 102
009A ; PORTC|=BIT(CS1);
009A A89A sbi 0x15,0
009C .dbline 103
009C ; PORTC|=BIT(CS2);
009C A99A sbi 0x15,1
009E .dbline -2
009E L17:
009E 0E940000 xcall pop_gset1
00A2 .dbline 0 ; func end
00A2 0895 ret
00A4 .dbsym r x 20 c
00A4 .dbend
00A4 .dbfunc e LCD_Write_DatR _LCD_Write_DatR fV
00A4 ; x -> R20
.even
00A4 _LCD_Write_DatR::
00A4 0E940000 xcall push_gset1
00A8 402F mov R20,R16
00AA .dbline -1
00AA .dbline 110
00AA ; }
00AA ;
00AA ; //===================
00AA ; //LCD右半屏写数据
00AA ; //===================
00AA ; void LCD_Write_DatR(unsigned char x)
00AA ; {
00AA .dbline 111
00AA ; PORTC|=BIT(CS1);
00AA A89A sbi 0x15,0
00AC .dbline 112
00AC ; PORTC&=~BIT(CS2);
00AC A998 cbi 0x15,1
00AE .dbline 113
00AE ; LCD_NOP();
00AE A8DF xcall _LCD_NOP
00B0 .dbline 114
00B0 ; PORTC&=~BIT(RS);
00B0 AD98 cbi 0x15,5
00B2 .dbline 115
00B2 ; PORTC|=BIT(E);
00B2 AB9A sbi 0x15,3
00B4 .dbline 116
00B4 ; LCD_NOP();
00B4 A5DF xcall _LCD_NOP
00B6 .dbline 117
00B6 ; PORTC|=BIT(RS);
00B6 AD9A sbi 0x15,5
00B8 .dbline 118
00B8 ; PORTC&=~BIT(RW);
00B8 AC98 cbi 0x15,4
00BA .dbline 119
00BA ; PORTA=x;
00BA 4BBB out 0x1b,R20
00BC .dbline 120
00BC ; PORTC|=BIT(E);
00BC AB9A sbi 0x15,3
00BE .dbline 121
00BE ; PORTC&=~BIT(E);
00BE AB98 cbi 0x15,3
00C0 .dbline 122
00C0 ; PORTC|=BIT(CS1);
00C0 A89A sbi 0x15,0
00C2 .dbline 123
00C2 ; PORTC|=BIT(CS2);
00C2 A99A sbi 0x15,1
00C4 .dbline -2
00C4 L18:
00C4 0E940000 xcall pop_gset1
00C8 .dbline 0 ; func end
00C8 0895 ret
00CA .dbsym r x 20 c
00CA .dbend
00CA .dbfunc e LCD_Init _LCD_Init fV
.even
00CA _LCD_Init::
00CA .dbline -1
00CA .dbline 128
00CA ; }
00CA ;
00CA ; //LCD初始化
00CA ; void LCD_Init(void)
00CA ; {
00CA .dbline 129
00CA ; LCD_Write_ComL(0x3e); LCD_Write_ComR(0x3e); //关闭显示器
00CA 0EE3 ldi R16,62
00CC B4DF xcall _LCD_Write_ComL
00CE .dbline 129
00CE 0EE3 ldi R16,62
00D0 D7DF xcall _LCD_Write_ComR
00D2 .dbline 130
00D2 ; LCD_Write_ComL(0x3f); LCD_Write_ComR(0x3f); //打开显示器
00D2 0FE3 ldi R16,63
00D4 B0DF xcall _LCD_Write_ComL
00D6 .dbline 130
00D6 0FE3 ldi R16,63
00D8 D3DF xcall _LCD_Write_ComR
00DA .dbline 131
00DA ; LCD_Write_ComL(0xc0); LCD_Write_ComR(0xc0); //设置左右半屏起始行,从0行开始
00DA 00EC ldi R16,192
00DC ACDF xcall _LCD_Write_ComL
00DE .dbline 131
00DE 00EC ldi R16,192
00E0 CFDF xcall _LCD_Write_ComR
00E2 .dbline -2
00E2 L19:
00E2 .dbline 0 ; func end
00E2 0895 ret
00E4 .dbend
00E4 .dbfunc e LCD_Clr _LCD_Clr fV
00E4 ; j -> R20
00E4 ; i -> R22
.even
00E4 _LCD_Clr::
00E4 0E940000 xcall push_gset2
00E8 .dbline -1
00E8 .dbline 137
00E8 ; }
00E8 ;
00E8 ;
00E8 ; //LCD清屏
00E8 ; void LCD_Clr(void)
00E8 ; {
00E8 .dbline 140
00E8 ; unsigned char i,j;
00E8 ;
00E8 ; for(j=0;j<8;j++)
00E8 4427 clr R20
00EA 14C0 xjmp L24
00EC L21:
00EC .dbline 141
00EC ; {
00EC .dbline 142
00EC ; LCD_Write_ComL(0xb8|j); //左半屏页设置指令
00EC 042F mov R16,R20
00EE 086B ori R16,184
00F0 A2DF xcall _LCD_Write_ComL
00F2 .dbline 143
00F2 ; LCD_Write_ComL(0x40); //左半屏列地址设置指令
00F2 00E4 ldi R16,64
00F4 A0DF xcall _LCD_Write_ComL
00F6 .dbline 144
00F6 ; LCD_Write_ComR(0xb8|j); //右半屏页设置指令
00F6 042F mov R16,R20
00F8 086B ori R16,184
00FA C2DF xcall _LCD_Write_ComR
00FC .dbline 145
00FC ; LCD_Write_ComR(0x40); //右半屏列地址设置指令
00FC 00E4 ldi R16,64
00FE C0DF xcall _LCD_Write_ComR
0100 .dbline 146
0100 ; for(i=0; i<64; i++)
0100 6627 clr R22
0102 05C0 xjmp L28
0104 L25:
0104 .dbline 147
0104 .dbline 148
0104 0027 clr R16
0106 A9DF xcall _LCD_Write_DatL
0108 .dbline 149
0108 0027 clr R16
010A CCDF xcall _LCD_Write_DatR
010C .dbline 150
010C L26:
010C .dbline 146
010C 6395 inc R22
010E L28:
010E .dbline 146
010E 6034 cpi R22,64
0110 C8F3 brlo L25
0112 .dbline 151
0112 L22:
0112 .dbline 140
0112 4395 inc R20
0114 L24:
0114 .dbline 140
0114 4830 cpi R20,8
0116 50F3 brlo L21
0118 .dbline -2
0118 L20:
0118 0E940000 xcall pop_gset2
011C .dbline 0 ; func end
011C 0895 ret
011E .dbsym r j 20 c
011E .dbsym r i 22 c
011E .dbend
011E .dbfunc e LCD_WrCHr8x16 _LCD_WrCHr8x16 fV
011E ; chr_m -> R20,R21
011E ; i -> R22
011E ; chrx -> y+8
011E ; y -> R10
011E ; x -> R12
.even
011E _LCD_WrCHr8x16::
011E 0E940000 xcall push_gset4
0122 A22E mov R10,R18
0124 C02E mov R12,R16
0126 .dbline -1
0126 .dbline 159
0126 ; {
0126 ; LCD_Write_DatL(0x00); //左半屏写0;
0126 ; LCD_Write_DatR(0x00); //右半屏写0;
0126 ; }
0126 ; }
0126 ; }
0126 ;
0126 ; //====================================================================
0126 ; //功能: 显示8x16字符,位置按8x8一个点来定
0126 ; // x:行坐标(x=(0--8)) y:列坐标(y=0--15) chrx:显示字符
0126 ; //====================================================================
0126 ; void LCD_WrCHr8x16(unsigned char x,unsigned char y,unsigned char chrx)
0126 ; {
0126 .dbline 162
0126 ; unsigned char i;
0126 ; unsigned int chr_m;
0126 ; chr_m=chrx;
0126 4885 ldd R20,y+8
0128 5527 clr R21
012A .dbline 163
012A ; chr_m=chr_m*16;
012A 00E1 ldi R16,16
012C 10E0 ldi R17,0
012E 9A01 movw R18,R20
0130 0E940000 xcall empy16s
0134 A801 movw R20,R16
0136 .dbline 164
0136 ; if(y >= 8)
0136 8A2D mov R24,R10
0138 8830 cpi R24,8
013A 08F4 brsh X0
0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -