📄 192.lst
字号:
__text_start:
__start:
0013 E5CF LDI R28,0x5F
0014 E0D4 LDI R29,4
0015 BFCD OUT 0x3D,R28
0016 BFDE OUT 0x3E,R29
0017 51C0 SUBI R28,0x10
0018 40D0 SBCI R29,0
0019 EA0A LDI R16,0xAA
001A 8308 STD Y+0,R16
001B 2400 CLR R0
001C E6E0 LDI R30,0x60
001D E0F0 LDI R31,0
001E E010 LDI R17,0
001F 36E0 CPI R30,0x60
0020 07F1 CPC R31,R17
0021 F011 BEQ 0x0024
0022 9201 ST R0,Z+
0023 CFFB RJMP 0x001F
0024 8300 STD Z+0,R16
0025 E2E6 LDI R30,0x26
0026 E0F0 LDI R31,0
0027 E6A0 LDI R26,0x60
0028 E0B0 LDI R27,0
0029 E010 LDI R17,0
002A 32E6 CPI R30,0x26
002B 07F1 CPC R31,R17
002C F021 BEQ 0x0031
002D 95C8 LPM
002E 9631 ADIW R30,1
002F 920D ST R0,X+
0030 CFF9 RJMP 0x002A
0031 D0A5 RCALL _main
_exit:
0032 CFFF RJMP _exit
_LCD_Command:
i --> R20
command --> R16
0033 D0C2 RCALL push_gset1
FILE: E:\zi\lcd\192lcd\192lcd.c
(0001) #include "iom8v.h"
(0002) #include "macros.h"
(0003) #include "lcd.h"
(0004) //写操作
(0005) void LCD_Command(unsigned command)
(0006) {
(0007) unsigned i;
(0008) for(i=0;i<=7;i++)
0034 2744 CLR R20
0035 2755 CLR R21
0036 C00E RJMP 0x0045
(0009) {
(0010) CLR_A0
0037 98AA CBI 0x15,2
(0011) CLR_SCL
0038 98A9 CBI 0x15,1
(0012) if(0X80&&command==0)
0039 3000 CPI R16,0
003A 0701 CPC R16,R17
003B F411 BNE 0x003E
(0013) CLR_SI
003C 98A8 CBI 0x15,0
003D C001 RJMP 0x003F
(0014) else
(0015) SBIT_SI
003E 9AA8 SBI 0x15,0
(0016) SBIT_SCL
003F 9AA9 SBI 0x15,1
(0017) SBIT_A0
0040 9AAA SBI 0x15,2
(0018) command=command<<1;
0041 0F00 LSL R16
0042 1F11 ROL R17
0043 5F4F SUBI R20,0xFF
0044 4F5F SBCI R21,0xFF
0045 E087 LDI R24,7
0046 E090 LDI R25,0
0047 1784 CP R24,R20
0048 0795 CPC R25,R21
0049 F768 BCC 0x0037
004A D0AE RCALL pop_gset1
004B 9508 RET
_LCD_Data:
i --> R20
data --> R16
004C D0A9 RCALL push_gset1
(0019) }
(0020) }
(0021) void LCD_Data(unsigned data)
(0022) {
(0023) unsigned i;
(0024) for(i=0;i<=7;i++)
004D 2744 CLR R20
004E 2755 CLR R21
004F C00E RJMP 0x005E
(0025) {
(0026) SBIT_A0
0050 9AAA SBI 0x15,2
(0027) CLR_SCL
0051 98A9 CBI 0x15,1
(0028) if(0x80&&data==0)
0052 3000 CPI R16,0
0053 0701 CPC R16,R17
0054 F411 BNE 0x0057
(0029) CLR_SI
0055 98A8 CBI 0x15,0
0056 C001 RJMP 0x0058
(0030) else
(0031) SBIT_SI
0057 9AA8 SBI 0x15,0
(0032) SBIT_SCL
0058 9AA9 SBI 0x15,1
(0033) CLR_A0
0059 98AA CBI 0x15,2
(0034) data=data>>1;
005A 9516 LSR R17
005B 9507 ROR R16
005C 5F4F SUBI R20,0xFF
005D 4F5F SBCI R21,0xFF
005E E087 LDI R24,7
005F E090 LDI R25,0
0060 1784 CP R24,R20
0061 0795 CPC R25,R21
0062 F768 BCC 0x0050
0063 D095 RCALL pop_gset1
0064 9508 RET
(0035) }
(0036) }
(0037) //初始化
(0038) void LCD_Init(void)
(0039) {
(0040) CLR_RES
_LCD_Init:
0065 98AB CBI 0x15,3
(0041) Delay_1ms();
0066 D059 RCALL _Delay_1ms
(0042) SBIT_RES
0067 9AAB SBI 0x15,3
(0043) Delay_1ms();
0068 D057 RCALL _Delay_1ms
(0044) LCD_Command(0XAB);//OSC ON
0069 EA0B LDI R16,0xAB
006A E010 LDI R17,0
006B DFC7 RCALL _LCD_Command
(0045) LCD_Command(0XA2);//BIAS=1/9
006C EA02 LDI R16,0xA2
006D E010 LDI R17,0
006E DFC4 RCALL _LCD_Command
(0046) LCD_Command(0XA1);//ADC=1
006F EA01 LDI R16,0xA1
0070 E010 LDI R17,0
0071 DFC1 RCALL _LCD_Command
(0047) LCD_Command(0XC8);//COM=1
0072 EC08 LDI R16,0xC8
0073 E010 LDI R17,0
0074 DFBE RCALL _LCD_Command
(0048) LCD_Command(0X40);//START LINE=0
0075 E400 LDI R16,0x40
0076 E010 LDI R17,0
0077 DFBB RCALL _LCD_Command
(0049) LCD_Command(0X2F);//POWER CONTROL
0078 E20F LDI R16,0x2F
0079 E010 LDI R17,0
007A DFB8 RCALL _LCD_Command
(0050) LCD_Command(0X25);//set internal res
007B E205 LDI R16,0x25
007C E010 LDI R17,0
007D DFB5 RCALL _LCD_Command
(0051) //LCD_Command(0XA4);//DISPLAY ALL LIGHT=OFF
(0052) //LCD_Command(0XA6);//DISPLAY NORMAL
(0053) LCD_Command(0X81);//set v mode
007E E801 LDI R16,0x81
007F E010 LDI R17,0
0080 DFB2 RCALL _LCD_Command
(0054) LCD_Command(0X13);//set v reg
0081 E103 LDI R16,0x13
0082 E010 LDI R17,0
0083 DFAF RCALL _LCD_Command
(0055) LCD_Command(0XAF);//DISPLAY ON
0084 EA0F LDI R16,0xAF
0085 E010 LDI R17,0
0086 DFAC RCALL _LCD_Command
(0056) LCD_Command(0XB0);//set page address
0087 EB00 LDI R16,0xB0
0088 E010 LDI R17,0
0089 DFA9 RCALL _LCD_Command
(0057) LCD_Command(0X10);//column up-4
008A E100 LDI R16,0x10
008B E010 LDI R17,0
008C DFA6 RCALL _LCD_Command
(0058) LCD_Command(0X00);//column low-4
008D 2700 CLR R16
008E 2711 CLR R17
008F DFA3 RCALL _LCD_Command
0090 9508 RET
_DIS_Lcd_XY:
colum --> R22
temp --> R20
data --> Y+4
page --> R20
column --> R22
0091 D062 RCALL push_gset2
0092 01A9 MOVW R20,R18
0093 01B8 MOVW R22,R16
(0059) }
(0060) void DIS_Lcd_XY(unsigned column,unsigned page,unsigned data)
(0061) {
(0062) unsigned temp;
(0063) unsigned colum=column+0x24;
0094 5D6C SUBI R22,0xDC
0095 4F7F SBCI R23,0xFF
(0064) temp=page|0xB0;
0096 6B40 ORI R20,0xB0
(0065) LCD_Command(temp);/*设置页*/
0097 018A MOVW R16,R20
0098 DF9A RCALL _LCD_Command
(0066) temp=((colum>>4)&0x0F)|0x10;
0099 01AB MOVW R20,R22
009A 9556 LSR R21
009B 9547 ROR R20
009C 9556 LSR R21
009D 9547 ROR R20
009E 9556 LSR R21
009F 9547 ROR R20
00A0 9556 LSR R21
00A1 9547 ROR R20
00A2 704F ANDI R20,0xF
00A3 7050 ANDI R21,0
00A4 6140 ORI R20,0x10
(0067) LCD_Command(temp);/*设置列高位*/
00A5 018A MOVW R16,R20
00A6 DF8C RCALL _LCD_Command
(0068) temp=colum&0x0F;
00A7 01AB MOVW R20,R22
00A8 704F ANDI R20,0xF
00A9 7050 ANDI R21,0
(0069) LCD_Command(temp);/*设置列低位*/
00AA 018A MOVW R16,R20
00AB DF87 RCALL _LCD_Command
(0070) LCD_Data(data);
00AC 810C LDD R16,Y+4
00AD 811D LDD R17,Y+5
00AE DF9D RCALL _LCD_Data
00AF D03C RCALL pop_gset2
00B0 9508 RET
FILE: E:\zi\lcd\192lcd\delay.c
(0001) /*-----------------------------------------------------------------------
(0002) 延时函数
(0003) 系统时钟:8M
(0004) -----------------------------------------------------------------------*/
(0005) void Delay_1us(void) //1us延时函数
(0006) {
(0007) asm("nop");
_Delay_1us:
00B1 0000 NOP
00B2 9508 RET
_Delay_Nus:
i --> R20
n --> R22
00B3 D040 RCALL push_gset2
00B4 01B8 MOVW R22,R16
(0008) }
(0009)
(0010) void Delay_Nus(unsigned int n) //N us延时函数
(0011) {
(0012) unsigned int i=0;
00B5 2744 CLR R20
00B6 2755 CLR R21
(0013) for (i=0;i<n;i++)
00B7 C003 RJMP 0x00BB
(0014) Delay_1us();
00B8 DFF8 RCALL _Delay_1us
00B9 5F4F SUBI R20,0xFF
00BA 4F5F SBCI R21,0xFF
00BB 1746 CP R20,R22
00BC 0757 CPC R21,R23
00BD F3D0 BCS 0x00B8
00BE D02D RCALL pop_gset2
00BF 9508 RET
(0015) }
(0016)
(0017) void Delay_1ms(void) //1ms延时函数
(0018) {
(0019) unsigned int i;
(0020) for (i=0;i<1140;i++);
_Delay_1ms:
i --> R16
00C0 2700 CLR R16
00C1 2711 CLR R17
00C2 C002 RJMP 0x00C5
00C3 5F0F SUBI R16,0xFF
00C4 4F1F SBCI R17,0xFF
00C5 3704 CPI R16,0x74
00C6 E0E4 LDI R30,4
00C7 071E CPC R17,R30
00C8 F3D0 BCS 0x00C3
00C9 9508 RET
_Delay_Nms:
i --> R20
n --> R22
00CA D029 RCALL push_gset2
00CB 01B8 MOVW R22,R16
(0021) }
(0022)
(0023) void Delay_Nms(unsigned int n) //N ms延时函数
(0024) {
(0025) unsigned int i=0;
00CC 2744 CLR R20
00CD 2755 CLR R21
(0026) for (i=0;i<n;i++)
00CE C003 RJMP 0x00D2
(0027) Delay_1ms();
00CF DFF0 RCALL _Delay_1ms
00D0 5F4F SUBI R20,0xFF
00D1 4F5F SBCI R21,0xFF
00D2 1746 CP R20,R22
00D3 0757 CPC R21,R23
00D4 F3D0 BCS 0x00CF
00D5 D016 RCALL pop_gset2
00D6 9508 RET
_main:
00D7 9722 SBIW R28,2
FILE: E:\zi\lcd\192lcd\lcdtest.c
(0001) #include "iom8v.h"
(0002) #include "macros.h"
(0003) #include "lcd.h"
(0004) void main(void)
(0005) {
(0006) DDRC|=0X0f;
00D8 B384 IN R24,0x14
00D9 608F ORI R24,0xF
00DA BB84 OUT 0x14,R24
(0007) LCD_Init();
00DB DF89 RCALL _LCD_Init
00DC C00C RJMP 0x00E9
(0008) while(1)
(0009) {
(0010) DIS_Lcd_XY(120,4,0xaa);
00DD EA8A LDI R24,0xAA
00DE E090 LDI R25,0
00DF 8399 STD Y+1,R25
00E0 8388 STD Y+0,R24
00E1 E024 LDI R18,4
00E2 E030 LDI R19,0
00E3 E708 LDI R16,0x78
00E4 E010 LDI R17,0
00E5 DFAB RCALL _DIS_Lcd_XY
(0011) Delay_Nms(0);
FILE: <library>
00E6 2700 CLR R16
00E7 2711 CLR R17
00E8 DFE1 RCALL _Delay_Nms
00E9 CFF3 RJMP 0x00DD
00EA 9622 ADIW R28,2
00EB 9508 RET
pop_gset2:
00EC E0E2 LDI R30,2
00ED C00C RJMP pop
push_gset5:
00EE 92FA ST R15,-Y
00EF 92EA ST R14,-Y
push_gset4:
00F0 92DA ST R13,-Y
00F1 92CA ST R12,-Y
push_gset3:
00F2 92BA ST R11,-Y
00F3 92AA ST R10,-Y
push_gset2:
00F4 937A ST R23,-Y
00F5 936A ST R22,-Y
push_gset1:
00F6 935A ST R21,-Y
00F7 934A ST R20,-Y
00F8 9508 RET
pop_gset1:
00F9 E0E1 LDI R30,1
pop:
00FA 9149 LD R20,Y+
00FB 9159 LD R21,Y+
00FC FDE0 SBRC R30,0
00FD 9508 RET
00FE 9169 LD R22,Y+
00FF 9179 LD R23,Y+
0100 FDE1 SBRC R30,1
0101 9508 RET
0102 90A9 LD R10,Y+
0103 90B9 LD R11,Y+
0104 FDE2 SBRC R30,2
0105 9508 RET
0106 90C9 LD R12,Y+
0107 90D9 LD R13,Y+
0108 FDE3 SBRC R30,3
0109 9508 RET
010A 90E9 LD R14,Y+
010B 90F9 LD R15,Y+
010C 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -