📄 display.lis
字号:
.module DISPLAY.C
.area text(rom, con, rel)
0000 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM/delay.h
0000 .dbfunc e delay_1us _delay_1us fV
.even
0000 _delay_1us::
0000 .dbline -1
0000 .dbline 14
0000 ; /*
0000 ; KS0108 128*64 LCD C语言驱动
0000 ; LCD引脚定义
0000 ; 1---GND
0000 ; 2---VCC
0000 ; 3---VLCD
0000 ; 4---D/I
0000 ; 5---R/W
0000 ; 6---E
0000 ; 7到14 D0-D7
0000 ; 15--CS1
0000 ; 16--CS2
0000 ; 17--RESET
0000 ; 18--VEE
0000 .dbline 15
0000 ; 19--SW
0000 0000 nop
0002 .dbline -2
0002 .dbline 16
0002 ; 20--NC
0002 L1:
0002 .dbline 0 ; func end
0002 0895 ret
0004 .dbend
0004 .dbfunc e delay_nus _delay_nus fV
0004 ; i -> R20,R21
0004 ; n -> R22,R23
.even
0004 _delay_nus::
0004 0E940000 xcall push_gset2
0008 B801 movw R22,R16
000A .dbline -1
000A .dbline 19
000A ; */
000A ; #include <iom32v.h>
000A ; #include <macros.h>
000A .dbline 20
000A ; #include "delay.h"
000A 4427 clr R20
000C 5527 clr R21
000E .dbline 21
000E ; unsigned char CurOffset,CurRow,CurPage,CurCol;
000E 03C0 xjmp L6
0010 L3:
0010 .dbline 22
0010 F7DF xcall _delay_1us
0012 L4:
0012 .dbline 21
0012 4F5F subi R20,255 ; offset = 1
0014 5F4F sbci R21,255
0016 L6:
0016 .dbline 21
0016 4617 cp R20,R22
0018 5707 cpc R21,R23
001A D0F3 brlo L3
001C .dbline -2
001C .dbline 23
001C ; #define uchar unsigned char
001C ; /* 常量定义 */
001C L2:
001C 0E940000 xcall pop_gset2
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r i 20 i
0022 .dbsym r n 22 i
0022 .dbend
0022 .dbfunc e delay_1ms _delay_1ms fV
0022 ; i -> R16,R17
.even
0022 _delay_1ms::
0022 .dbline -1
0022 .dbline 26
0022 ; #define LCD_STATUS_BUSY 0x80
0022 ; #define START_LINE0 0xc0
0022 ; #define DISPLAY_ON 0x3f
0022 .dbline 28
0022 0027 clr R16
0024 1127 clr R17
0026 02C0 xjmp L11
0028 L8:
0028 .dbline 28
0028 L9:
0028 .dbline 28
0028 0F5F subi R16,255 ; offset = 1
002A 1F4F sbci R17,255
002C L11:
002C .dbline 28
002C ; #define DISPLAY_OFF 0x3e
002C ; #define PARA1 0x40
002C 0437 cpi R16,116
002E E4E0 ldi R30,4
0030 1E07 cpc R17,R30
0032 D0F3 brlo L8
0034 .dbline -2
0034 .dbline 29
0034 ; //#define BIT(x) (1<<x)
0034 L7:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r i 16 i
0036 .dbend
0036 .dbfunc e delay_nms _delay_nms fV
0036 ; i -> R20,R21
0036 ; n -> R22,R23
.even
0036 _delay_nms::
0036 0E940000 xcall push_gset2
003A B801 movw R22,R16
003C .dbline -1
003C .dbline 32
003C ; //PORTA---数据口 PORTB----控制口
003C ; volatile unsigned char *LCD_DIR_PORT = &DDRA;
003C ; volatile unsigned char *LCD_IP_PORT = &PINA;
003C .dbline 33
003C ; volatile unsigned char *LCD_OP_PORT = &PORTA;
003C 4427 clr R20
003E 5527 clr R21
0040 .dbline 34
0040 ;
0040 03C0 xjmp L16
0042 L13:
0042 .dbline 35
0042 .dbline 36
0042 EFDF xcall _delay_1ms
0044 .dbline 37
0044 L14:
0044 .dbline 34
0044 4F5F subi R20,255 ; offset = 1
0046 5F4F sbci R21,255
0048 L16:
0048 .dbline 34
0048 4617 cp R20,R22
004A 5707 cpc R21,R23
004C D0F3 brlo L13
004E .dbline -2
004E .dbline 38
004E ; volatile unsigned char *LCD_EN_PORT = &PORTB;
004E ; volatile unsigned char *LCD_CS2_PORT = &PORTC;
004E ; volatile unsigned char *LCD_CS1_PORT = &PORTC;
004E ; volatile unsigned char *LCD_RW_PORT = &PORTC;
004E L12:
004E 0E940000 xcall pop_gset2
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbsym r i 20 i
0054 .dbsym r n 22 i
0054 .dbend
.area data(ram, con, rel)
0000 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM/delay.h
0000 _LCD_DIR_PORT::
0000 .blkb 2
.area idata
0000 3A00 .word 58
.area data(ram, con, rel)
0002 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM/delay.h
0002 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
0002 .dbsym e LCD_DIR_PORT _LCD_DIR_PORT pc
0002 _LCD_IP_PORT::
0002 .blkb 2
.area idata
0002 3900 .word 57
.area data(ram, con, rel)
0004 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
0004 .dbsym e LCD_IP_PORT _LCD_IP_PORT pc
0004 _LCD_OP_PORT::
0004 .blkb 2
.area idata
0004 3B00 .word 59
.area data(ram, con, rel)
0006 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
0006 .dbsym e LCD_OP_PORT _LCD_OP_PORT pc
0006 _LCD_EN_PORT::
0006 .blkb 2
.area idata
0006 3800 .word 56
.area data(ram, con, rel)
0008 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
0008 .dbsym e LCD_EN_PORT _LCD_EN_PORT pc
0008 _LCD_CS2_PORT::
0008 .blkb 2
.area idata
0008 3500 .word 53
.area data(ram, con, rel)
000A .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
000A .dbsym e LCD_CS2_PORT _LCD_CS2_PORT pc
000A _LCD_CS1_PORT::
000A .blkb 2
.area idata
000A 3500 .word 53
.area data(ram, con, rel)
000C .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
000C .dbsym e LCD_CS1_PORT _LCD_CS1_PORT pc
000C _LCD_RW_PORT::
000C .blkb 2
.area idata
000C 3500 .word 53
.area data(ram, con, rel)
000E .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
000E .dbsym e LCD_RW_PORT _LCD_RW_PORT pc
000E _LCD_DI_PORT::
000E .blkb 2
.area idata
000E 3500 .word 53
.area data(ram, con, rel)
0010 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
0010 .dbsym e LCD_DI_PORT _LCD_DI_PORT pc
0010 _LCD_EN_BIT::
0010 .blkb 1
.area idata
0010 10 .byte 16
.area data(ram, con, rel)
0011 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
0011 .dbsym e LCD_EN_BIT _LCD_EN_BIT c
0011 _LCD_CS2_BIT::
0011 .blkb 1
.area idata
0011 08 .byte 8
.area data(ram, con, rel)
0012 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
0012 .dbsym e LCD_CS2_BIT _LCD_CS2_BIT c
0012 _LCD_CS1_BIT::
0012 .blkb 1
.area idata
0012 04 .byte 4
.area data(ram, con, rel)
0013 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
0013 .dbsym e LCD_CS1_BIT _LCD_CS1_BIT c
0013 _LCD_RW_BIT::
0013 .blkb 1
.area idata
0013 20 .byte 32
.area data(ram, con, rel)
0014 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
0014 .dbsym e LCD_RW_BIT _LCD_RW_BIT c
0014 _LCD_DI_BIT::
0014 .blkb 1
.area idata
0014 10 .byte 16
.area data(ram, con, rel)
0015 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
0015 .dbsym e LCD_DI_BIT _LCD_DI_BIT c
.area text(rom, con, rel)
0054 .dbfile E:\PROTEU~1.7\User\MEGA32-LCM\MEGA32-LCM\DISPLAY.C
0054 .dbfunc e LCD_BUSY _LCD_BUSY fV
0054 ; status -> <dead>
0054 ; lr -> R16
.even
0054 _LCD_BUSY::
0054 .dbline -1
0054 .dbline 68
0054 ; volatile unsigned char *LCD_DI_PORT = &PORTC;
0054 ;
0054 ; char LCD_EN_BIT = BIT(4);
0054 ; char LCD_CS2_BIT = BIT(3);
0054 ; char LCD_CS1_BIT = BIT(2);
0054 ; char LCD_RW_BIT = BIT(5);
0054 ; char LCD_DI_BIT = BIT(4);
0054 ;
0054 ; #define SET_LCD_E *LCD_EN_PORT |= LCD_EN_BIT //LCD使能
0054 ; #define CLEAR_LCD_E *LCD_EN_PORT &= ~LCD_EN_BIT //LCD禁止
0054 ;
0054 ; #define SET_LCD_DATA *LCD_DI_PORT |= LCD_DI_BIT //选择指令端口
0054 ; #define SET_LCD_CMD *LCD_DI_PORT &= ~LCD_DI_BIT //选择数据端口
0054 ;
0054 ; #define SET_LCD_READ *LCD_RW_PORT |= LCD_RW_BIT //读模式
0054 ; #define SET_LCD_WRITE *LCD_RW_PORT &= ~LCD_RW_BIT //写模式
0054 ;
0054 ; #define SET_LCD_CS2 *LCD_CS2_PORT |= LCD_CS2_BIT //左屏选择禁止
0054 ; #define CLEAR_LCD_CS2 *LCD_CS2_PORT &= ~LCD_CS2_BIT //左屏选择使能
0054 ;
0054 ; #define SET_LCD_CS1 *LCD_CS1_PORT |= LCD_CS1_BIT //左屏选择禁止
0054 ; #define CLEAR_LCD_CS1 *LCD_CS1_PORT &= ~LCD_CS1_BIT //左屏选择使能
0054 ;
0054 ; #define LEFT 0
0054 ; #define RIGHT 1
0054 ; #define CMD 0
0054 ; #define DATA 1
0054 ;
0054 ; void LCD_BUSY(unsigned char lr) //判断忙标志
0054 ; {
0054 .dbline 70
0054 ; unsigned char status;
0054 ; _CLI();
0054 F894 cli
0056 .dbline 71
0056 ; if(lr==LEFT)
0056 0023 tst R16
0058 A1F4 brne L18
005A .dbline 72
005A ; {
005A .dbline 73
005A ; CLEAR_LCD_CS2; //cs2=0
005A 20901100 lds R2,_LCD_CS2_BIT
005E 2094 com R2
0060 E0910800 lds R30,_LCD_CS2_PORT
0064 F0910900 lds R31,_LCD_CS2_PORT+1
0068 3080 ldd R3,z+0
006A 3220 and R3,R2
006C 3082 std z+0,R3
006E .dbline 74
006E ; SET_LCD_CS1; //cs1=1
006E 20901200 lds R2,_LCD_CS1_BIT
0072 E0910A00 lds R30,_LCD_CS1_PORT
0076 F0910B00 lds R31,_LCD_CS1_PORT+1
007A 3080 ldd R3,z+0
007C 3228 or R3,R2
007E 3082 std z+0,R3
0080 .dbline 75
0080 ; }
0080 13C0 xjmp L19
0082 L18:
0082 .dbline 77
0082 ; else
0082 ; {
0082 .dbline 78
0082 ; SET_LCD_CS2; //cs2=1
0082 20901100 lds R2,_LCD_CS2_BIT
0086 E0910800 lds R30,_LCD_CS2_PORT
008A F0910900 lds R31,_LCD_CS2_PORT+1
008E 3080 ldd R3,z+0
0090 3228 or R3,R2
0092 3082 std z+0,R3
0094 .dbline 79
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -