📄 main.lis
字号:
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 20
0000 ; //访问外部ram的总线端口
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 21
0004 ; DDRA = 0x00;
0004 2ABA out 0x1a,R2
0006 .dbline 22
0006 ; PORTC = 0x00;
0006 25BA out 0x15,R2
0008 .dbline 23
0008 ; DDRC = 0xFF;
0008 8FEF ldi R24,255
000A 84BB out 0x14,R24
000C .dbline -2
000C .dbline 24
000C ; }
000C L1:
000C .dbline 0 ; func end
000C 0895 ret
000E .dbend
000E .dbfunc e check_busy _check_busy fV
000E ; temp -> R20
000E ; cs -> R16
.even
000E _check_busy::
000E 0E940000 xcall push_gset1
0012 .dbline -1
0012 .dbline 27
0012 ;
0012 ; void check_busy(uchar cs)
0012 ; {
0012 09C0 xjmp L4
0014 L3:
0014 .dbline 30
0014 ; uchar temp;
0014 ; while(temp)
0014 ; {
0014 .dbline 31
0014 ; if(cs)
0014 0023 tst R16
0016 21F0 breq L6
0018 .dbline 32
0018 ; temp=R_staus&0X80; //将忙状态读到temp中进行确定
0018 40910520 lds R20,8197
001C 4078 andi R20,128
001E 03C0 xjmp L7
0020 L6:
0020 .dbline 34
0020 ; else
0020 ; temp=L_staus&0X80;
0020 40910920 lds R20,8201
0024 4078 andi R20,128
0026 L7:
0026 .dbline 35
0026 L4:
0026 .dbline 29
0026 4423 tst R20
0028 A9F7 brne L3
002A .dbline -2
002A .dbline 36
002A ; }
002A ; }
002A L2:
002A 0E940000 xcall pop_gset1
002E .dbline 0 ; func end
002E 0895 ret
0030 .dbsym r temp 20 c
0030 .dbsym r cs 16 c
0030 .dbend
0030 .dbfunc e LCD_Clean _LCD_Clean fV
0030 ; page -> R20
0030 ; y -> R22
.even
0030 _LCD_Clean::
0030 0E940000 xcall push_gset2
0034 .dbline -1
0034 .dbline 39
0034 ;
0034 ; void LCD_Clean(void)
0034 ; {
0034 .dbline 40
0034 ; unsigned char page=0,y; //定义表示页和列的局部变量
0034 4427 clr R20
0036 .dbline 42
0036 ;
0036 ; for(page=0;page<8;page++)
0036 21C0 xjmp L12
0038 L9:
0038 .dbline 43
0038 ; {
0038 .dbline 45
0038 ; //LCD左半屏的操作
0038 ; check_busy(0);
0038 0027 clr R16
003A E9DF xcall _check_busy
003C .dbline 46
003C ; L_command=LCD_PAGE+page; //设置LCD左半屏页地址
003C 842F mov R24,R20
003E 8854 subi R24,72 ; addi 184
0040 80930820 sts 8200,R24
0044 .dbline 47
0044 ; check_busy(0);
0044 0027 clr R16
0046 E3DF xcall _check_busy
0048 .dbline 48
0048 ; L_command=LCD_Y;
0048 80E4 ldi R24,64
004A 80930820 sts 8200,R24
004E .dbline 50
004E ; //LCD右半屏的操作
004E ; check_busy(1);
004E 01E0 ldi R16,1
0050 DEDF xcall _check_busy
0052 .dbline 51
0052 ; R_command=LCD_PAGE+page; //设置LCD右半屏页地址
0052 842F mov R24,R20
0054 8854 subi R24,72 ; addi 184
0056 80930420 sts 8196,R24
005A .dbline 52
005A ; check_busy(1);
005A 01E0 ldi R16,1
005C D8DF xcall _check_busy
005E .dbline 53
005E ; R_command=LCD_Y;
005E 80E4 ldi R24,64
0060 80930420 sts 8196,R24
0064 .dbline 55
0064 ;
0064 ; for(y=0;y<64;y++)
0064 6627 clr R22
0066 06C0 xjmp L16
0068 L13:
0068 .dbline 56
0068 .dbline 57
0068 2224 clr R2
006A 20920A20 sts 8202,R2
006E .dbline 58
006E 20920620 sts 8198,R2
0072 .dbline 59
0072 L14:
0072 .dbline 55
0072 6395 inc R22
0074 L16:
0074 .dbline 55
0074 6034 cpi R22,64
0076 C0F3 brlo L13
0078 .dbline 60
0078 L10:
0078 .dbline 42
0078 4395 inc R20
007A L12:
007A .dbline 42
007A 4830 cpi R20,8
007C E8F2 brlo L9
007E .dbline -2
007E .dbline 61
007E ; {
007E ; L_data=0x00;
007E ; R_data=0x00;
007E ; }
007E ; }
007E ; }
007E L8:
007E 0E940000 xcall pop_gset2
0082 .dbline 0 ; func end
0082 0895 ret
0084 .dbsym r page 20 c
0084 .dbsym r y 22 c
0084 .dbend
0084 .dbfunc e LCD_Init _LCD_Init fV
.even
0084 _LCD_Init::
0084 .dbline -1
0084 .dbline 64
0084 ;
0084 ; void LCD_Init(void) //LCD初始化子函数
0084 ; {
0084 .dbline 66
0084 ; /*首先关闭12864的显示*/
0084 ; check_busy(0); //LCD左半屏正在工作,等待......
0084 0027 clr R16
0086 C3DF xcall _check_busy
0088 .dbline 67
0088 ; L_command=LCD_OFF; //先关闭LCD左半屏的显示
0088 8EE3 ldi R24,62
008A 80930820 sts 8200,R24
008E .dbline 68
008E ; check_busy(1); //LCD右半屏正在工作,等待......
008E 01E0 ldi R16,1
0090 BEDF xcall _check_busy
0092 .dbline 69
0092 ; R_command=LCD_OFF; //先关闭LCD右半屏的显示
0092 8EE3 ldi R24,62
0094 80930420 sts 8196,R24
0098 .dbline 72
0098 ;
0098 ; /*开启12864的显示*/
0098 ; check_busy(0);
0098 0027 clr R16
009A B9DF xcall _check_busy
009C .dbline 73
009C ; L_command=LCD_ON; //打开LCD左半屏的显示
009C 8FE3 ldi R24,63
009E 80930820 sts 8200,R24
00A2 .dbline 74
00A2 ; check_busy(1);
00A2 01E0 ldi R16,1
00A4 B4DF xcall _check_busy
00A6 .dbline 75
00A6 ; R_command=LCD_ON; //打开LCD右半屏的显示
00A6 8FE3 ldi R24,63
00A8 80930420 sts 8196,R24
00AC .dbline 78
00AC ;
00AC ; /*设置LCD显示的起始行*/
00AC ; check_busy(0);
00AC 0027 clr R16
00AE AFDF xcall _check_busy
00B0 .dbline 79
00B0 ; L_command=LCD_X; //LCD左半屏起始行为0
00B0 80EC ldi R24,192
00B2 80930820 sts 8200,R24
00B6 .dbline 80
00B6 ; check_busy(1);
00B6 01E0 ldi R16,1
00B8 AADF xcall _check_busy
00BA .dbline 81
00BA ; R_command=LCD_X; //LCD右半屏起始行为0
00BA 80EC ldi R24,192
00BC 80930420 sts 8196,R24
00C0 .dbline -2
00C0 .dbline 82
00C0 ; }
00C0 L17:
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbend
00C2 .dbfunc e init_devices _init_devices fV
.even
00C2 _init_devices::
00C2 .dbline -1
00C2 .dbline 85
00C2 ;
00C2 ; void init_devices(void)
00C2 ; {
00C2 .dbline 86
00C2 ; XMCRA = 0x00; //外部存储器控制
00C2 2224 clr R2
00C4 20926D00 sts 109,R2
00C8 .dbline 87
00C8 ; XMCRB = (1<<XMM2)|(1<<XMM1)|(1<<XMM0); //外存储高位地址屏蔽,释放端口C
00C8 87E0 ldi R24,7
00CA 80936C00 sts 108,R24
00CE .dbline 88
00CE ; port_init();
00CE 98DF xcall _port_init
00D0 .dbline 89
00D0 ; MCUCR = 0x80; //外部SRAM使能
00D0 80E8 ldi R24,128
00D2 85BF out 0x35,R24
00D4 .dbline -2
00D4 .dbline 90
00D4 ; }
00D4 L18:
00D4 .dbline 0 ; func end
00D4 0895 ret
00D6 .dbend
00D6 .dbfunc e ch_pos _ch_pos fV
00D6 ; n -> R20
00D6 ; cs -> R22
.even
00D6 _ch_pos::
00D6 0E940000 xcall push_gset2
00DA 422F mov R20,R18
00DC 602F mov R22,R16
00DE .dbline -1
00DE .dbline 93
00DE ;
00DE ; void ch_pos(unsigned char cs,unsigned char n) //屏选和页码设置函数
00DE ; {
00DE .dbline 94
00DE ; if(cs)
00DE 6623 tst R22
00E0 61F0 breq L20
00E2 .dbline 95
00E2 ; {
00E2 .dbline 96
00E2 ; check_busy(1);
00E2 01E0 ldi R16,1
00E4 94DF xcall _check_busy
00E6 .dbline 97
00E6 ; R_command=LCD_PAGE+n; //设置LCD右半屏页地址
00E6 842F mov R24,R20
00E8 8854 subi R24,72 ; addi 184
00EA 80930420 sts 8196,R24
00EE .dbline 98
00EE ; check_busy(1);
00EE 01E0 ldi R16,1
00F0 8EDF xcall _check_busy
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -