⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 192.lst

📁 使用AVR的mega128进行驱动液晶芯片LMS0192A
💻 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 + -