📄 main.lis
字号:
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 write_chineseH _write_chineseH fV
00D6 ; i -> R20
00D6 ; datas -> R22,R23
00D6 ; y -> y+4
00D6 ; page -> R18
00D6 ; cs -> R16
.even
00D6 _write_chineseH::
00D6 0E940000 xcall push_gset2
00DA 6E81 ldd R22,y+6
00DC 7F81 ldd R23,y+7
00DE .dbline -1
00DE .dbline 98
00DE ;
00DE ;
00DE ; /*******************cs为左右屏选,page为页数选择(0~15)********************************
00DE ; *******************y为水平位置选择(0~3),datas指针指向汉字存储的数组地址 ********************/
00DE ;
00DE ;
00DE ; void write_chineseH(uchar cs,uchar page,uchar y,const unsigned char *datas) //上半部分显示
00DE ; {
00DE .dbline 100
00DE ; uchar i;
00DE ; R_command=LCD_PAGE+page; //设置LCD右半屏页地址
00DE 822F mov R24,R18
00E0 8854 subi R24,72 ; addi 184
00E2 80930420 sts 8196,R24
00E6 .dbline 101
00E6 ; L_command=LCD_PAGE+page; //设置LCD左半屏页地址
00E6 822F mov R24,R18
00E8 8854 subi R24,72 ; addi 184
00EA 80930820 sts 8200,R24
00EE .dbline 102
00EE ; R_command=LCD_Y+y*16; //设置水平显示位置
00EE 80E1 ldi R24,16
00F0 0C80 ldd R0,y+4
00F2 809D mul R24,R0
00F4 802D mov R24,R0
00F6 805C subi R24,192 ; addi 64
00F8 80930420 sts 8196,R24
00FC .dbline 103
00FC ; L_command=LCD_Y+y*16;
00FC 80E1 ldi R24,16
00FE 0C80 ldd R0,y+4
0100 809D mul R24,R0
0102 802D mov R24,R0
0104 805C subi R24,192 ; addi 64
0106 80930820 sts 8200,R24
010A .dbline 104
010A ; for(i=0;i<16;i++)
010A 4427 clr R20
010C 0EC0 xjmp L23
010E L20:
010E .dbline 105
010E ; {
010E .dbline 106
010E ; if(cs) R_data=*datas; //右半屏显示
010E 0023 tst R16
0110 29F0 breq L24
0112 .dbline 106
0112 FB01 movw R30,R22
0114 E491 lpm R30,Z
0116 E0930620 sts 8198,R30
011A 04C0 xjmp L25
011C L24:
011C .dbline 107
011C ; else L_data=*datas; //左半屏显示
011C FB01 movw R30,R22
011E E491 lpm R30,Z
0120 E0930A20 sts 8202,R30
0124 L25:
0124 .dbline 108
0124 6F5F subi R22,255 ; offset = 1
0126 7F4F sbci R23,255
0128 .dbline 109
0128 L21:
0128 .dbline 104
0128 4395 inc R20
012A L23:
012A .dbline 104
012A 4031 cpi R20,16
012C 80F3 brlo L20
012E .dbline -2
012E .dbline 110
012E ; *datas++;
012E ; }
012E ; }
012E L19:
012E 0E940000 xcall pop_gset2
0132 .dbline 0 ; func end
0132 0895 ret
0134 .dbsym r i 20 c
0134 .dbsym r datas 22 pkc
0134 .dbsym l y 4 c
0134 .dbsym r page 18 c
0134 .dbsym r cs 16 c
0134 .dbend
0134 .dbfunc e write_chineseL _write_chineseL fV
0134 ; i -> R20
0134 ; datas -> R22,R23
0134 ; y -> y+6
0134 ; page -> R20
0134 ; cs -> R10
.even
0134 _write_chineseL::
0134 0E940000 xcall push_gset3
0138 422F mov R20,R18
013A A02E mov R10,R16
013C 6885 ldd R22,y+8
013E 7985 ldd R23,y+9
0140 .dbline -1
0140 .dbline 113
0140 ;
0140 ; void write_chineseL(uchar cs,uchar page,uchar y,const unsigned char *datas) //下半部分显示
0140 ; {
0140 .dbline 115
0140 ; uchar i;
0140 ; check_busy(1);
0140 01E0 ldi R16,1
0142 65DF xcall _check_busy
0144 .dbline 116
0144 ; R_command=LCD_PAGE+page; //设置LCD右半屏页地址
0144 842F mov R24,R20
0146 8854 subi R24,72 ; addi 184
0148 80930420 sts 8196,R24
014C .dbline 117
014C ; L_command=LCD_PAGE+page; //设置LCD左半屏页地址
014C 842F mov R24,R20
014E 8854 subi R24,72 ; addi 184
0150 80930820 sts 8200,R24
0154 .dbline 118
0154 ; R_command=LCD_Y+y*16; //设置水平显示位置
0154 80E1 ldi R24,16
0156 0E80 ldd R0,y+6
0158 809D mul R24,R0
015A 802D mov R24,R0
015C 805C subi R24,192 ; addi 64
015E 80930420 sts 8196,R24
0162 .dbline 119
0162 ; L_command=LCD_Y+y*16;
0162 80E1 ldi R24,16
0164 0E80 ldd R0,y+6
0166 809D mul R24,R0
0168 802D mov R24,R0
016A 805C subi R24,192 ; addi 64
016C 80930820 sts 8200,R24
0170 .dbline 120
0170 ; for(i=0;i<16;i++)
0170 4427 clr R20
0172 0EC0 xjmp L30
0174 L27:
0174 .dbline 121
0174 ; {
0174 .dbline 122
0174 ; if(cs) R_data=*datas; //右半屏显示
0174 AA20 tst R10
0176 29F0 breq L31
0178 .dbline 122
0178 FB01 movw R30,R22
017A E491 lpm R30,Z
017C E0930620 sts 8198,R30
0180 04C0 xjmp L32
0182 L31:
0182 .dbline 123
0182 ; else L_data=*datas; //左半屏显示
0182 FB01 movw R30,R22
0184 E491 lpm R30,Z
0186 E0930A20 sts 8202,R30
018A L32:
018A .dbline 124
018A 6F5F subi R22,255 ; offset = 1
018C 7F4F sbci R23,255
018E .dbline 125
018E L28:
018E .dbline 120
018E 4395 inc R20
0190 L30:
0190 .dbline 120
0190 4031 cpi R20,16
0192 80F3 brlo L27
0194 .dbline -2
0194 .dbline 126
0194 ; *datas++;
0194 ; }
0194 ; }
0194 L26:
0194 0E940000 xcall pop_gset3
0198 .dbline 0 ; func end
0198 0895 ret
019A .dbsym r i 20 c
019A .dbsym r datas 22 pkc
019A .dbsym l y 6 c
019A .dbsym r page 20 c
019A .dbsym r cs 10 c
019A .dbend
019A .dbfunc e main _main fV
.even
019A _main::
019A 2497 sbiw R28,4
019C .dbline -1
019C .dbline 129
019C ;
019C ; void main(void)
019C ; {
019C .dbline 130
019C ; init_devices();
019C 92DF xcall _init_devices
019E .dbline 131
019E ; LCD_Clean();
019E 48DF xcall _LCD_Clean
01A0 .dbline 132
01A0 ; LCD_Init();
01A0 71DF xcall _LCD_Init
01A2 .dbline 133
01A2 ; write_chineseH(0,0,2,you1);
01A2 80E0 ldi R24,<_you1
01A4 90E0 ldi R25,>_you1
01A6 9B83 std y+3,R25
01A8 8A83 std y+2,R24
01AA 82E0 ldi R24,2
01AC 8883 std y+0,R24
01AE 2227 clr R18
01B0 0027 clr R16
01B2 91DF xcall _write_chineseH
01B4 .dbline -2
01B4 .dbline 137
01B4 ; // write_chineseL(0,1,2,you2);
01B4 ; // write_chineseH(1,0,0,hu1);
01B4 ; //write_chineseL(1,1,0,hu2);
01B4 ; }
01B4 L33:
01B4 2496 adiw R28,4
01B6 .dbline 0 ; func end
01B6 0895 ret
01B8 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\zhuji\桌面\新建文~2\main.c
0000 _flag::
0000 .blkb 1
0001 .dbsym e flag _flag c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -