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

📄 192lcd.s

📁 使用AVR的mega128进行驱动液晶芯片LMS0192A
💻 S
字号:
	.module _192lcd.c
	.area text(rom, con, rel)
	.dbfile E:\zi\lcd\192lcd\192lcd.c
	.dbfunc e LCD_Command _LCD_Command fV
;              i -> R20,R21
;        command -> R16,R17
	.even
_LCD_Command::
	rcall push_gset1
	.dbline -1
	.dbline 6
; #include "iom8v.h"
; #include "macros.h"
; #include "lcd.h"
; //写操作
; void LCD_Command(unsigned command)
; { 
	.dbline 8
;  unsigned i;  
;  for(i=0;i<=7;i++)
	clr R20
	clr R21
	rjmp L5
L2:
	.dbline 9
;  {
	.dbline 10
;   CLR_A0
	cbi 0x15,2
	.dbline 11
;   CLR_SCL
	cbi 0x15,1
	.dbline 12
;   if(0X80&&command==0)
	cpi R16,0
	cpc R16,R17
	brne L6
X0:
	.dbline 13
; 	 CLR_SI
	cbi 0x15,0
	rjmp L7
L6:
	.dbline 15
;   else
; 	 SBIT_SI
	sbi 0x15,0
L7:
	.dbline 16
	sbi 0x15,1
	.dbline 17
	sbi 0x15,2
	.dbline 18
	lsl R16
	rol R17
	.dbline 19
L3:
	.dbline 8
	subi R20,255  ; offset = 1
	sbci R21,255
L5:
	.dbline 8
	ldi R24,7
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brsh L2
	.dbline -2
L1:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r command 16 i
	.dbend
	.dbfunc e LCD_Data _LCD_Data fV
;              i -> R20,R21
;           data -> R16,R17
	.even
_LCD_Data::
	rcall push_gset1
	.dbline -1
	.dbline 22
;   SBIT_SCL
;   SBIT_A0
;   command=command<<1;
;  } 			  
; }
; void LCD_Data(unsigned data)
; {
	.dbline 24
;  unsigned i;
;  for(i=0;i<=7;i++)
	clr R20
	clr R21
	rjmp L12
L9:
	.dbline 25
;  {
	.dbline 26
;   SBIT_A0
	sbi 0x15,2
	.dbline 27
;   CLR_SCL
	cbi 0x15,1
	.dbline 28
;   if(0x80&&data==0)
	cpi R16,0
	cpc R16,R17
	brne L13
X1:
	.dbline 29
; 	 CLR_SI
	cbi 0x15,0
	rjmp L14
L13:
	.dbline 31
;   else
; 	 SBIT_SI
	sbi 0x15,0
L14:
	.dbline 32
	sbi 0x15,1
	.dbline 33
	cbi 0x15,2
	.dbline 34
	lsr R17
	ror R16
	.dbline 35
L10:
	.dbline 24
	subi R20,255  ; offset = 1
	sbci R21,255
L12:
	.dbline 24
	ldi R24,7
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brsh L9
	.dbline -2
L8:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r data 16 i
	.dbend
	.dbfunc e LCD_Init _LCD_Init fV
	.even
_LCD_Init::
	.dbline -1
	.dbline 39
;   SBIT_SCL
;   CLR_A0
;   data=data>>1;
;  }
; }
; //初始化    
; void LCD_Init(void)
; {
	.dbline 40
;    CLR_RES
	cbi 0x15,3
	.dbline 41
;    Delay_1ms();
	rcall _Delay_1ms
	.dbline 42
;    SBIT_RES
	sbi 0x15,3
	.dbline 43
;    Delay_1ms();
	rcall _Delay_1ms
	.dbline 44
;    LCD_Command(0XAB);//OSC ON
	ldi R16,171
	ldi R17,0
	rcall _LCD_Command
	.dbline 45
;    LCD_Command(0XA2);//BIAS=1/9
	ldi R16,162
	ldi R17,0
	rcall _LCD_Command
	.dbline 46
;    LCD_Command(0XA1);//ADC=1
	ldi R16,161
	ldi R17,0
	rcall _LCD_Command
	.dbline 47
;    LCD_Command(0XC8);//COM=1
	ldi R16,200
	ldi R17,0
	rcall _LCD_Command
	.dbline 48
;    LCD_Command(0X40);//START LINE=0
	ldi R16,64
	ldi R17,0
	rcall _LCD_Command
	.dbline 49
;    LCD_Command(0X2F);//POWER CONTROL
	ldi R16,47
	ldi R17,0
	rcall _LCD_Command
	.dbline 50
;    LCD_Command(0X25);//set internal res
	ldi R16,37
	ldi R17,0
	rcall _LCD_Command
	.dbline 53
;    //LCD_Command(0XA4);//DISPLAY ALL LIGHT=OFF
;    //LCD_Command(0XA6);//DISPLAY NORMAL
;    LCD_Command(0X81);//set v mode
	ldi R16,129
	ldi R17,0
	rcall _LCD_Command
	.dbline 54
;    LCD_Command(0X13);//set v reg
	ldi R16,19
	ldi R17,0
	rcall _LCD_Command
	.dbline 55
;    LCD_Command(0XAF);//DISPLAY ON
	ldi R16,175
	ldi R17,0
	rcall _LCD_Command
	.dbline 56
;    LCD_Command(0XB0);//set page address
	ldi R16,176
	ldi R17,0
	rcall _LCD_Command
	.dbline 57
;    LCD_Command(0X10);//column up-4
	ldi R16,16
	ldi R17,0
	rcall _LCD_Command
	.dbline 58
;    LCD_Command(0X00);//column low-4
	clr R16
	clr R17
	rcall _LCD_Command
	.dbline -2
L15:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e DIS_Lcd_XY _DIS_Lcd_XY fV
;          colum -> R22,R23
;           temp -> R20,R21
;           data -> y+4
;           page -> R20,R21
;         column -> R22,R23
	.even
_DIS_Lcd_XY::
	rcall push_gset2
	movw R20,R18
	movw R22,R16
	.dbline -1
	.dbline 61
; }
; void DIS_Lcd_XY(unsigned column,unsigned page,unsigned data)
; {
	.dbline 63
;  unsigned temp;
;  unsigned colum=column+0x24;
	subi R22,220  ; offset = 36
	sbci R23,255
	.dbline 64
;  temp=page|0xB0;
	ori R20,176
	.dbline 65
;  LCD_Command(temp);/*设置页*/
	movw R16,R20
	rcall _LCD_Command
	.dbline 66
;  temp=((colum>>4)&0x0F)|0x10;
	movw R20,R22
	lsr R21
	ror R20
	lsr R21
	ror R20
	lsr R21
	ror R20
	lsr R21
	ror R20
	andi R20,15
	andi R21,0
	ori R20,16
	.dbline 67
;  LCD_Command(temp);/*设置列高位*/    
	movw R16,R20
	rcall _LCD_Command
	.dbline 68
;  temp=colum&0x0F;
	movw R20,R22
	andi R20,15
	andi R21,0
	.dbline 69
;  LCD_Command(temp);/*设置列低位*/
	movw R16,R20
	rcall _LCD_Command
	.dbline 70
;  LCD_Data(data);
	ldd R16,y+4
	ldd R17,y+5
	rcall _LCD_Data
	.dbline -2
L16:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r colum 22 i
	.dbsym r temp 20 i
	.dbsym l data 4 i
	.dbsym r page 20 i
	.dbsym r column 22 i
	.dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -