📄 lcd1602.lis
字号:
.module lcd1602.c
.area text(rom, con, rel)
0000 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\015-DS1302-LCD1602\lcd1602.c
0000 .dbfunc e delay_us _delay_us fV
0000 ; n -> R16,R17
.even
0000 _delay_us::
0000 .dbline -1
0000 .dbline 25
0000 ; /*
0000 ; LCD1602液晶屏驱动模块
0000 ; 1、可直接嵌入到项目中使用
0000 ; 2、晶振频率:1M
0000 ; 3、如晶振提高低层驱动延时要作相应修改
0000 ;
0000 ; AVR_AFA
0000 ; www.iccavr.com
0000 ; 程序编写过程中参照了peak的4线显示程序
0000 ; peak:AVR论坛技术版版主
0000 ; */
0000 ;
0000 ; #include <iom128v.h>
0000 ;
0000 ; #define RS_CLR PORTC &= ~(1 << PC2)
0000 ; #define RS_SET PORTC |= (1 << PC2)
0000 ;
0000 ; #define RW_CLR PORTC &= ~(1 << PC3)
0000 ; #define RW_SET PORTC |= (1 << PC3)
0000 ;
0000 ; #define EN_CLR PORTC &= ~(1 << PC4)
0000 ; #define EN_SET PORTC |= (1 << PC4)
0000 ;
0000 ; /*延时函数*/
0000 ; void delay_us(unsigned int n) {
0000 .dbline 27
0000 ;
0000 ; if (n == 0) {
0000 0030 cpi R16,0
0002 0107 cpc R16,R17
0004 09F4 brne L5
0006 X0:
0006 .dbline 27
0006 .dbline 28
0006 ; return ;
0006 06C0 xjmp L1
0008 L4:
0008 .dbline 30
0008 L5:
0008 .dbline 30
0008 ; }
0008 ; while (--n);
0008 C801 movw R24,R16
000A 0197 sbiw R24,1
000C 8C01 movw R16,R24
000E 0030 cpi R16,0
0010 0107 cpc R16,R17
0012 D1F7 brne L4
0014 X1:
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbsym r n 16 i
0016 .dbend
0016 .dbfunc e delay_ms _delay_ms fV
0016 ; a -> R20
0016 ; b -> R22
0016 ; i -> R16
.even
0016 _delay_ms::
0016 0E940000 xcall push_gset2
001A .dbline -1
001A .dbline 34
001A ; }
001A ;
001A ; /*延时函数*/
001A ; void delay_ms(unsigned char i) {
001A .dbline 37
001A 41E0 ldi R20,1
001C 06C0 xjmp L11
001E L8:
001E .dbline 37
001E ;
001E ; unsigned char a, b;
001E ; for (a = 1; a < i; a++) {
001E .dbline 38
001E 61E0 ldi R22,1
0020 01C0 xjmp L15
0022 L12:
0022 .dbline 38
0022 .dbline 39
0022 .dbline 40
0022 L13:
0022 .dbline 38
0022 6395 inc R22
0024 L15:
0024 .dbline 38
0024 6623 tst R22
0026 E9F7 brne L12
0028 .dbline 41
0028 L9:
0028 .dbline 37
0028 4395 inc R20
002A L11:
002A .dbline 37
002A 4017 cp R20,R16
002C C0F3 brlo L8
002E .dbline -2
002E L7:
002E 0E940000 xcall pop_gset2
0032 .dbline 0 ; func end
0032 0895 ret
0034 .dbsym r a 20 c
0034 .dbsym r b 22 c
0034 .dbsym r i 16 c
0034 .dbend
0034 .dbfunc e LCD_write_com _LCD_write_com fV
0034 ; com -> R20
.even
0034 _LCD_write_com::
0034 0E940000 xcall push_gset1
0038 402F mov R20,R16
003A .dbline -1
003A .dbline 45
003A ; for (b = 1; b; b++) {
003A ; ;
003A ; }
003A ; }
003A ; }
003A ;
003A ; /*显示屏命令写入函数*/
003A ; void LCD_write_com(unsigned char com) {
003A .dbline 47
003A ;
003A ; RS_CLR;
003A AA98 cbi 0x15,2
003C .dbline 48
003C ; RW_CLR;
003C AB98 cbi 0x15,3
003E .dbline 49
003E ; EN_SET;
003E AC9A sbi 0x15,4
0040 .dbline 50
0040 ; PORTA = com;
0040 4BBB out 0x1b,R20
0042 .dbline 51
0042 ; delay_us(5);
0042 05E0 ldi R16,5
0044 10E0 ldi R17,0
0046 DCDF xcall _delay_us
0048 .dbline 52
0048 ; EN_CLR;
0048 AC98 cbi 0x15,4
004A .dbline -2
004A L16:
004A 0E940000 xcall pop_gset1
004E .dbline 0 ; func end
004E 0895 ret
0050 .dbsym r com 20 c
0050 .dbend
0050 .dbfunc e LCD_write_data _LCD_write_data fV
0050 ; data -> R20
.even
0050 _LCD_write_data::
0050 0E940000 xcall push_gset1
0054 402F mov R20,R16
0056 .dbline -1
0056 .dbline 56
0056 ; }
0056 ;
0056 ; /*显示屏命令写入函数*/
0056 ; void LCD_write_data(unsigned char data) {
0056 .dbline 58
0056 ;
0056 ; RS_SET;
0056 AA9A sbi 0x15,2
0058 .dbline 59
0058 ; RW_CLR;
0058 AB98 cbi 0x15,3
005A .dbline 60
005A ; EN_SET;
005A AC9A sbi 0x15,4
005C .dbline 61
005C ; PORTA = data;
005C 4BBB out 0x1b,R20
005E .dbline 62
005E ; delay_us(5);
005E 05E0 ldi R16,5
0060 10E0 ldi R17,0
0062 CEDF xcall _delay_us
0064 .dbline 63
0064 ; EN_CLR;
0064 AC98 cbi 0x15,4
0066 .dbline -2
0066 L17:
0066 0E940000 xcall pop_gset1
006A .dbline 0 ; func end
006A 0895 ret
006C .dbsym r data 20 c
006C .dbend
006C .dbfunc e LCD_clear _LCD_clear fV
.even
006C _LCD_clear::
006C .dbline -1
006C .dbline 67
006C ; }
006C ;
006C ; /*显示屏清空显示*/
006C ; void LCD_clear(void) {
006C .dbline 69
006C ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -