📄 lcd1602.lst
字号:
Interrupt Vectors
00000 940C 0038 JMP __start|__text_start
Program Code (text area)
__start|__text_start:
00038 E5CF LDI R28,0x5F
00039 E0D4 LDI R29,4
0003A BFCD OUT 0x3D,R28
0003B BFDE OUT 0x3E,R29
0003C 51CE SUBI R28,0x1E
0003D 40D0 SBCI R29,0
0003E EA0A LDI R16,0xAA
0003F 8308 ST Y,R16
00040 2400 CLR R0
00041 E7EB LDI R30,0x7B
00042 E0F0 LDI R31,0
00043 E010 LDI R17,0
00044 37EB CPI R30,0x7B
00045 07F1 CPC R31,R17
00046 F011 BEQ 0x0049
00047 9201 ST Z+,R0
00048 CFFB RJMP 0x0044
00049 8300 ST Z,R16
0004A E5E4 LDI R30,0x54
0004B E0F0 LDI R31,0
0004C E6A0 LDI R26,0x60
0004D E0B0 LDI R27,0
0004E E010 LDI R17,0
0004F E000 LDI R16,0
00050 BF0B OUT 0x3B,R16
00051 36EF CPI R30,0x6F
00052 07F1 CPC R31,R17
00053 F021 BEQ 0x0058
00054 95C8 LPM
00055 9631 ADIW R30,1
00056 920D ST X+,R0
00057 CFF9 RJMP 0x0051
00058 940E 0088 CALL _main
_exit:
0005A CFFF RJMP _exit
_delay:
i --> R20
j --> R22
ms --> R16
0005B 940E 00D7 CALL push_xgsetF000
FILE: F:\新学习板程序\avr程序\7LCD1603液晶显示\lcd1602.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #define uchar unsigned char
(0004) #define uint unsigned int
(0005)
(0006) //#pragma data:code
(0007)
(0008) const uchar table[]="I LIKE AVR !";
(0009) const uchar table1[]="5 XUE DIANZI ";
(0010)
(0011) void delay(uint ms)
(0012) {
(0013) uint i,j;
(0014) for(i=0;i<ms;i++)
0005D 2744 CLR R20
0005E 2755 CLR R21
0005F C00B RJMP 0x006B
(0015) {
(0016) for(j=0;j<1141;j++);
00060 2766 CLR R22
00061 2777 CLR R23
00062 C002 RJMP 0x0065
00063 5F6F SUBI R22,0xFF
00064 4F7F SBCI R23,0xFF
00065 3765 CPI R22,0x75
00066 E0E4 LDI R30,4
00067 077E CPC R23,R30
00068 F3D0 BCS 0x0063
00069 5F4F SUBI R20,0xFF
0006A 4F5F SBCI R21,0xFF
0006B 1740 CP R20,R16
0006C 0751 CPC R21,R17
0006D F390 BCS 0x0060
0006E 940C 00DC JMP pop_xgsetF000
_write_com:
com --> R10
00070 92AA ST -Y,R10
00071 2EA0 MOV R10,R16
(0017) }
(0018) }
(0019)
(0020)
(0021) void write_com(uchar com)
(0022) {
(0023) PORTA&=~BIT(5);
00072 98DD CBI 0x1B,5
(0024) PORTA&=~BIT(6);
00073 98DE CBI 0x1B,6
(0025) PORTC=com;
00074 BAA5 OUT 0x15,R10
(0026) PORTA|=BIT(7);
00075 9ADF SBI 0x1B,7
(0027) delay(1);
00076 E001 LDI R16,1
00077 E010 LDI R17,0
00078 DFE2 RCALL _delay
(0028) PORTA&=~BIT(7);
00079 98DF CBI 0x1B,7
0007A 90A9 LD R10,Y+
0007B 9508 RET
_write_dat:
dat --> R10
0007C 92AA ST -Y,R10
0007D 2EA0 MOV R10,R16
(0029) }
(0030)
(0031) void write_dat(uchar dat)
(0032) {
(0033) PORTA|=BIT(5);
0007E 9ADD SBI 0x1B,5
(0034) PORTA&=~BIT(6);
0007F 98DE CBI 0x1B,6
(0035) PORTC=dat;
00080 BAA5 OUT 0x15,R10
(0036) PORTA|=BIT(7);
00081 9ADF SBI 0x1B,7
(0037) delay(1);
00082 E001 LDI R16,1
00083 E010 LDI R17,0
00084 DFD6 RCALL _delay
(0038) PORTA&=~BIT(7);
00085 98DF CBI 0x1B,7
00086 90A9 LD R10,Y+
00087 9508 RET
(0039) }
(0040) void main()
(0041) {
(0042) uchar i;
(0043) DDRC=0XFF;
_main:
i --> R20
00088 EF8F LDI R24,0xFF
00089 BB84 OUT 0x14,R24
(0044) DDRA|=BIT(5)|BIT(6)|BIT(7);
0008A B38A IN R24,0x1A
0008B 6E80 ORI R24,0xE0
0008C BB8A OUT 0x1A,R24
(0045) PORTC&=~BIT(7);
0008D 98AF CBI 0x15,7
(0046)
(0047) write_com(0X38);
0008E E308 LDI R16,0x38
0008F DFE0 RCALL _write_com
(0048) delay(5);
00090 E005 LDI R16,5
00091 E010 LDI R17,0
00092 DFC8 RCALL _delay
(0049) write_com(0X01);
00093 E001 LDI R16,1
00094 DFDB RCALL _write_com
(0050) delay(5);
00095 E005 LDI R16,5
00096 E010 LDI R17,0
00097 DFC3 RCALL _delay
(0051) write_com(0X0C);
00098 E00C LDI R16,0xC
00099 DFD6 RCALL _write_com
(0052) delay(5);
0009A E005 LDI R16,5
0009B E010 LDI R17,0
0009C DFBE RCALL _delay
(0053) write_com(0X06);
0009D E006 LDI R16,6
0009E DFD1 RCALL _write_com
(0054) delay(5);
0009F E005 LDI R16,5
000A0 E010 LDI R17,0
000A1 DFB9 RCALL _delay
(0055) write_com(0X80+0X10);
000A2 E900 LDI R16,0x90
000A3 DFCC RCALL _write_com
(0056) delay(5);
000A4 E005 LDI R16,5
000A5 E010 LDI R17,0
000A6 DFB4 RCALL _delay
(0057) for(i=0;i<12;i++)
000A7 2744 CLR R20
000A8 C00C RJMP 0x00B5
(0058) {
(0059) write_dat(table[i]);
000A9 E680 LDI R24,0x60
000AA E090 LDI R25,0
000AB 2FE4 MOV R30,R20
000AC 27FF CLR R31
000AD 0FE8 ADD R30,R24
000AE 1FF9 ADC R31,R25
000AF 8100 LD R16,Z
000B0 DFCB RCALL _write_dat
(0060) delay(5);
000B1 E005 LDI R16,5
000B2 E010 LDI R17,0
000B3 DFA7 RCALL _delay
000B4 9543 INC R20
000B5 304C CPI R20,0xC
000B6 F390 BCS 0x00A9
(0061) }
(0062) write_com(0X80+0X50);
000B7 ED00 LDI R16,0xD0
000B8 DFB7 RCALL _write_com
(0063) delay(5);
000B9 E005 LDI R16,5
000BA E010 LDI R17,0
000BB DF9F RCALL _delay
(0064) for(i=0;i<13;i++)
000BC 2744 CLR R20
000BD C00C RJMP 0x00CA
(0065) {
(0066) write_dat(table1[i]);
000BE E68D LDI R24,0x6D
000BF E090 LDI R25,0
000C0 2FE4 MOV R30,R20
000C1 27FF CLR R31
000C2 0FE8 ADD R30,R24
000C3 1FF9 ADC R31,R25
000C4 8100 LD R16,Z
000C5 DFB6 RCALL _write_dat
(0067) delay(5);
000C6 E005 LDI R16,5
000C7 E010 LDI R17,0
000C8 DF92 RCALL _delay
000C9 9543 INC R20
000CA 304D CPI R20,0xD
000CB F390 BCS 0x00BE
(0068) }
(0069) for(i=0;i<16;i++)
000CC 2744 CLR R20
000CD C006 RJMP 0x00D4
(0070) {
(0071) write_com(0X18);
000CE E108 LDI R16,0x18
000CF DFA0 RCALL _write_com
(0072) delay(500);
FILE: <library>
000D0 EF04 LDI R16,0xF4
000D1 E011 LDI R17,1
000D2 DF88 RCALL _delay
000D3 9543 INC R20
000D4 3140 CPI R20,0x10
000D5 F3C0 BCS 0x00CE
000D6 9508 RET
push_xgsetF000:
000D7 937A ST -Y,R23
000D8 936A ST -Y,R22
000D9 935A ST -Y,R21
000DA 934A ST -Y,R20
000DB 9508 RET
pop_xgsetF000:
000DC 9149 LD R20,Y+
000DD 9159 LD R21,Y+
000DE 9169 LD R22,Y+
000DF 9179 LD R23,Y+
000E0 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -