📄 ylf240128a-3.lis
字号:
.module YLF240128A-3.c
.area lit(rom, con, rel)
0000 _EXTCG::
0000 0101 .byte 1,1
0002 FF01 .byte 255,1
0004 3F21 .byte 63,33
0006 3F21 .byte 63,33
0008 0000 .byte 0,0
000A FF00 .byte 255,0
000C FC04 .byte 252,4
000E FC04 .byte 252,4
0010 213F .byte 33,63
0012 050D .byte 5,13
0014 1931 .byte 25,49
0016 E101 .byte 225,1
0018 04FC .byte 4,252
001A 4060 .byte 64,96
001C 301C .byte 48,28
001E 0700 .byte 7,0
0020 0808 .byte 8,8
0022 FF08 .byte 255,8
0024 0901 .byte 9,1
0026 017F .byte 1,127
0028 1010 .byte 16,16
002A FF10 .byte 255,16
002C 1000 .byte 16,0
002E 00FC .byte 0,252
0030 0000 .byte 0,0
0032 0001 .byte 0,1
0034 073C .byte 7,60
0036 E700 .byte 231,0
0038 1830 .byte 24,48
003A 60C0 .byte 96,192
003C 0000 .byte 0,0
003E E03F .byte 224,63
0040 .dbfile D:\单片机编程\iccavr\YLF240128A\YLF240128A-3.c
0040 .dbsym e EXTCG _EXTCG A[64:64]kc
0040 _TXPRT::
0040 3400 .byte 52,0
0042 2F00 .byte 47,0
0044 3300 .byte 51,0
0046 2800 .byte 40,0
0048 2900 .byte 41,0
004A 2200 .byte 34,0
004C 21 .byte 33
004D .dbsym e TXPRT _TXPRT A[13:13]kc
004D _EXPRT1::
004D 8081 .byte 128,129
004F 0000 .byte 0,0
0051 8485 .byte 132,133
0053 .dbsym e EXPRT1 _EXPRT1 A[6:6]kc
0053 _EXPRT2::
0053 8283 .byte 130,131
0055 0000 .byte 0,0
0057 8687 .byte 134,135
0059 .dbsym e EXPRT2 _EXPRT2 A[6:6]kc
.area text(rom, con, rel)
0000 .dbfile D:\单片机编程\iccavr\YLF240128A\YLF240128A-3.c
0000 .dbfunc e readstate _readstate fc
0000 ; lcd_state -> R16
.even
0000 _readstate::
0000 .dbline -1
0000 .dbline 61
0000 ; /*ATMega16 */
0000 ; /* T6963C LCD Controller */
0000 ; /*
0000 ; D0-D7 -- PORTB
0000 ; C/D -- PORTA.1
0000 ; RD -- PORTA.2
0000 ; WR -- PORTA.3
0000 ; */
0000 ; /***********************************************************
0000 ; 内置T6963C液晶控制器驱动程序(间接方式)
0000 ; ***********************************************************/
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; //文字地址
0000 ; #define TXHOME 0x40
0000 ;
0000 ; //文字区域
0000 ; #define TXAREA 0x41
0000 ;
0000 ; //图形地址
0000 ; #define GRHOME 0x42
0000 ;
0000 ; //图形区域
0000 ; #define GRAREA 0x43
0000 ;
0000 ; //偏移****特别注意
0000 ; #define OFFSET 0x22
0000 ;
0000 ; //设置指针
0000 ; #define ADPSET 0x24
0000 ;
0000 ; //自动写打开
0000 ; #define AWRON 0xB0
0000 ;
0000 ; //自动写关闭
0000 ; #define AWROFF 0xB2
0000 ;
0000 ; //偏移地址量
0000 ; #define OFFSET 0x22
0000 ;
0000 ; const uchar EXTCG[64]={0x01,0x01,0xff,0x01,0x3f,0x21,0x3f,0x21,//upper left dong 80H
0000 ; 0x00,0x00,0xff,0x00,0xfc,0x04,0xfc,0x04,//upper right dong 81H
0000 ; 0x21,0x3f,0x05,0x0d,0x19,0x31,0xe1,0x01,//lower left dong 82H
0000 ; 0x04,0xfc,0x40,0x60,0x30,0x1c,0x07,0x00,//lower right dong 83
0000 ; 0x08,0x08,0xff,0x08,0x09,0x01,0x01,0x7f,//upper left zhi 84H
0000 ; 0x10,0x10,0xff,0x10,0x10,0x00,0x00,0xfc,//upper right zhi 85H
0000 ; 0x00,0x00,0x00,0x01,0x07,0x3c,0xe7,0x00,//lower left zhi 86H
0000 ; 0x18,0x30,0x60,0xc0,0x00,0x00,0xe0,0x3f};//lower right zhi 87H
0000 ;
0000 ; const uchar TXPRT[13]={0x34,0x00,0x2f,0x00,0x33,0x00,
0000 ; 0x28,0x00,0x29,0x00,0x22,0x00,0x21};//TOSHIBA
0000 ;
0000 ; const uchar EXPRT1[6]={0x80,0x81,0x00,0x00,0x84,0x85};//东芝上半部分
0000 ; const uchar EXPRT2[6]={0x82,0x83,0x00,0x00,0x86,0x87};//东芝下半部分
0000 ;
0000 ; //读取LCD状态字
0000 ; uchar readstate(void)
0000 ; {
0000 .dbline 63
0000 ; uchar lcd_state;
0000 ; DDRB=0x00;
0000 2224 clr R2
0002 27BA out 0x17,R2
0004 .dbline 64
0004 ; DDRA|=(1<<1);
0004 D19A sbi 0x1a,1
0006 .dbline 65
0006 ; DDRA|=(1<<2); // /RD
0006 D29A sbi 0x1a,2
0008 .dbline 66
0008 ; PORTA|=(1<<1); // C/D=1
0008 D99A sbi 0x1b,1
000A .dbline 67
000A ; PORTA&=~(1<<2); // /RD=0
000A DA98 cbi 0x1b,2
000C .dbline 68
000C ; lcd_state=PINB&0xff; // 读取引脚B物理电平
000C 06B3 in R16,0x16
000E 0F7F andi R16,255
0010 .dbline 69
0010 ; NOP();
0010 0000 nop
0012 .dbline 70
0012 ; NOP();
0012 0000 nop
0014 .dbline 71
0014 ; PORTA|=(1<<2); // /RD=1
0014 DA9A sbi 0x1b,2
0016 .dbline 72
0016 ; return lcd_state;
0016 .dbline -2
0016 L1:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbsym r lcd_state 16 c
0018 .dbend
0018 .dbfunc e st01 _st01 fV
.even
0018 _st01::
0018 .dbline -1
0018 .dbline 77
0018 ; }
0018 ;
0018 ; //判断指令(数据)读写状态
0018 ; void st01(void)
0018 ; {
0018 L3:
0018 .dbline 79
0018 L4:
0018 .dbline 78
0018 ; while((readstate()&0x03)!=3)
0018 F3DF xcall _readstate
001A 802F mov R24,R16
001C 8370 andi R24,3
001E 8330 cpi R24,3
0020 D9F7 brne L3
0022 .dbline -2
0022 L2:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
0024 .dbfunc e st2 _st2 fV
.even
0024 _st2::
0024 .dbline -1
0024 .dbline 84
0024 ; ;
0024 ; }
0024 ;
0024 ; //判断数据自动读状态
0024 ; void st2(void)
0024 ; {
0024 L7:
0024 .dbline 86
0024 L8:
0024 .dbline 85
0024 ; while((readstate()&0x04)!=4)
0024 EDDF xcall _readstate
0026 802F mov R24,R16
0028 8470 andi R24,4
002A 8430 cpi R24,4
002C D9F7 brne L7
002E .dbline -2
002E L6:
002E .dbline 0 ; func end
002E 0895 ret
0030 .dbend
0030 .dbfunc e st3 _st3 fV
.even
0030 _st3::
0030 .dbline -1
0030 .dbline 91
0030 ; ;
0030 ; }
0030 ;
0030 ; //判断数据自动写状态
0030 ; void st3(void)
0030 ; {
0030 L11:
0030 .dbline 93
0030 L12:
0030 .dbline 92
0030 ; while((readstate()&0x08)!=8)
0030 E7DF xcall _readstate
0032 802F mov R24,R16
0034 8870 andi R24,8
0036 8830 cpi R24,8
0038 D9F7 brne L11
003A .dbline -2
003A L10:
003A .dbline 0 ; func end
003A 0895 ret
003C .dbend
003C .dbfunc e writecode _writecode fV
003C ; comd0 -> R20
.even
003C _writecode::
003C 0E940000 xcall push_gset1
0040 402F mov R20,R16
0042 .dbline -1
0042 .dbline 98
0042 ; ;
0042 ; }
0042 ;
0042 ; //指令写入函数
0042 ; void writecode(uchar comd0)
0042 ; {
0042 .dbline 99
0042 ; st01();
0042 EADF xcall _st01
0044 .dbline 100
0044 ; DDRA|=(1<<1);
0044 D19A sbi 0x1a,1
0046 .dbline 101
0046 ; PORTA|=(1<<1); // C/D=0,数据通道
0046 D99A sbi 0x1b,1
0048 .dbline 102
0048 ; DDRB=0xff; //B口方向为输出
0048 8FEF ldi R24,255
004A 87BB out 0x17,R24
004C .dbline 103
004C ; PORTB=comd0; //送数据到B口寄存器
004C 48BB out 0x18,R20
004E .dbline 104
004E ; DDRA|=(1<<3);
004E D39A sbi 0x1a,3
0050 .dbline 105
0050 ; PORTA&=~(1<<3); // /WR=0
0050 DB98 cbi 0x1b,3
0052 .dbline 106
0052 ; NOP();
0052 0000 nop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -