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

📄 splc051.lst

📁 Atmega16+SPCL051液晶驱动
💻 LST
📖 第 1 页 / 共 5 页
字号:
 827               	/* #NOAPP */
 828               	.LBE11:
 829               	.LBE10:
 830               	.LBE9:
 831               	.LBE8:
 833               	.Ltext4:
  42:SPLC051.c     **** 		for(int i=0;i<50;i++)
 835               	.LM9:
 836 002e 2150      		subi r18,lo8(-(-1))
 837 0030 3040      		sbci r19,hi8(-(-1))
 838 0032 37FF      		sbrs r19,7
 839 0034 F9CF      		rjmp .L27
 840               	.LBE7:
 841 0036 E7CF      		rjmp .L2
 842               	/* epilogue: frame size=0 */
 843               	/* epilogue: noreturn */
 844               	/* epilogue end (size=0) */
 845               	/* function LED_test size 32 (32) */
 865               	.Lscope0:
 867               	.global	F_SPLC501_Initial_IO
 869               	F_SPLC501_Initial_IO:
  43:SPLC051.c     **** 			_delay_ms(250);
  44:SPLC051.c     **** 	}
  45:SPLC051.c     **** }//***************************************************************************//
  46:SPLC051.c     **** //程序:F_SPLC501_Initial_IO()
  47:SPLC051.c     **** //描述:SPLC501接口的初始化程序  C语言调用 
  48:SPLC051.c     **** //参数:无
  49:SPLC051.c     **** // 声明:	手心	20070117	AVRGCC
  50:SPLC051.c     **** //***************************************************************************//
  51:SPLC051.c     **** void F_SPLC501_Initial_IO(void)
  52:SPLC051.c     **** {
 871               	.LM10:
 872               	/* prologue: frame size=0 */
 873               	/* prologue end (size=0) */
  53:SPLC051.c     **** 	DDRA=(1<<A0)|(1<<CS1)|(1<<EP)|(1<<RW);				//定义为输出口,控制LCD
 875               	.LM11:
 876 0038 8DE1      		ldi r24,lo8(29)
 877 003a 8ABB      		out 58-0x20,r24
  54:SPLC051.c     **** 	PORTA=0xff;
 879               	.LM12:
 880 003c 8FEF      		ldi r24,lo8(-1)
 881 003e 8BBB      		out 59-0x20,r24
  55:SPLC051.c     **** 	DDRB=0xff;				//定义为输出口,数据端口
 883               	.LM13:
 884 0040 87BB      		out 55-0x20,r24
  56:SPLC051.c     **** 	PORTB=0xff;
 886               	.LM14:
 887 0042 88BB      		out 56-0x20,r24
 888               	/* epilogue: frame size=0 */
 889 0044 0895      		ret
 890               	/* epilogue end (size=1) */
 891               	/* function F_SPLC501_Initial_IO size 7 (6) */
 893               	.Lscope1:
 896               	.global	F_SPLC501_Write_Com
 898               	F_SPLC501_Write_Com:
  57:SPLC051.c     **** }
  58:SPLC051.c     **** //***************************************************************************//
  59:SPLC051.c     **** //程序:F_SPLC501_Write_Com(unsigned int Command)
  60:SPLC051.c     **** //描述:往SPLC501里写一个字节指令  C语言调用
  61:SPLC051.c     **** //参数:送入要传送的指令
  62:SPLC051.c     **** // 声明:	手心	20070117	AVRGCC
  63:SPLC051.c     **** //注意A0=0,EP=1,RW=0,Cs=0
  64:SPLC051.c     **** //***************************************************************************//
  65:SPLC051.c     **** void F_SPLC501_Write_Com(unsigned int Command)
  66:SPLC051.c     **** {
 900               	.LM15:
 901               	/* prologue: frame size=0 */
 902               	/* prologue end (size=0) */
  67:SPLC051.c     **** 	PORTA=(0<<A0)|(1<<EP)|(0<<RW)|(0<<CS1);	//片选LCD,使能命令模式
 904               	.LM16:
 905 0046 20E1      		ldi r18,lo8(16)
 906 0048 2BBB      		out 59-0x20,r18
  68:SPLC051.c     **** 	DDRB=0xff;				//定义为输出口,数据端口
 908               	.LM17:
 909 004a 2FEF      		ldi r18,lo8(-1)
 910 004c 27BB      		out 55-0x20,r18
  69:SPLC051.c     **** 	PORTB=Command;
 912               	.LM18:
 913 004e 88BB      		out 56-0x20,r24
  70:SPLC051.c     **** 	PORTA|=(1<<CS1);							//取消片选
 915               	.LM19:
 916 0050 D89A      		sbi 59-0x20,0
 917               	/* epilogue: frame size=0 */
 918 0052 0895      		ret
 919               	/* epilogue end (size=1) */
 920               	/* function F_SPLC501_Write_Com size 7 (6) */
 922               	.Lscope2:
 925               	.global	F_SPLC501_Write_Data
 927               	F_SPLC501_Write_Data:
  71:SPLC051.c     **** }
  72:SPLC051.c     **** //***************************************************************************//
  73:SPLC051.c     **** //程序:F_SPLC501_Write_Data(unsigned int SendData)
  74:SPLC051.c     **** //描述:往SPLC501里写一个字节数据  C语言调用
  75:SPLC051.c     **** //参数:送入要传送的数据
  76:SPLC051.c     **** // 声明:	手心	20070117	AVRGCC
  77:SPLC051.c     **** //注意A0=1,EP=1,RW=0,Cs=0
  78:SPLC051.c     **** //***************************************************************************//
  79:SPLC051.c     **** void F_SPLC501_Write_Data(unsigned int SendData)
  80:SPLC051.c     **** {
 929               	.LM20:
 930               	/* prologue: frame size=0 */
 931               	/* prologue end (size=0) */
  81:SPLC051.c     **** 	PORTA=(1<<A0)|(1<<EP)|(0<<RW)|(0<<CS1);	//片选LCD,使能写数据
 933               	.LM21:
 934 0054 24E1      		ldi r18,lo8(20)
 935 0056 2BBB      		out 59-0x20,r18
  82:SPLC051.c     **** 	DDRB=0xff;				//定义为输出口,数据端口
 937               	.LM22:
 938 0058 2FEF      		ldi r18,lo8(-1)
 939 005a 27BB      		out 55-0x20,r18
  83:SPLC051.c     **** 	PORTB=(SendData);
 941               	.LM23:
 942 005c 88BB      		out 56-0x20,r24
  84:SPLC051.c     **** 	PORTA|=(1<<CS1);							//取消片选
 944               	.LM24:
 945 005e D89A      		sbi 59-0x20,0
 946               	/* epilogue: frame size=0 */
 947 0060 0895      		ret
 948               	/* epilogue end (size=1) */
 949               	/* function F_SPLC501_Write_Data size 7 (6) */
 951               	.Lscope3:
 953               	.global	F_SPLC501_Read_Data
 955               	F_SPLC501_Read_Data:
  85:SPLC051.c     **** }
  86:SPLC051.c     **** //***************************************************************************//
  87:SPLC051.c     **** //程序:F_SPLC501_Read_Data()
  88:SPLC051.c     **** //描述:从SPLC501里读一个字节数据  C语言调用
  89:SPLC051.c     **** //参数:输出传送的数据
  90:SPLC051.c     **** // 声明:	手心	20070117	AVRGCC
  91:SPLC051.c     **** //注意A0=1,EP=0,RW=1,Cs=0
  92:SPLC051.c     **** //***************************************************************************//
  93:SPLC051.c     **** unsigned int F_SPLC501_Read_Data(void)
  94:SPLC051.c     **** {
 957               	.LM25:
 958               	/* prologue: frame size=0 */
 959               	/* prologue end (size=0) */
  95:SPLC051.c     **** 	unsigned int temp_data;
  96:SPLC051.c     **** 	PORTA=(1<<A0)|(0<<EP)|(1<<RW)|(0<<CS1);	//片选LCD,使能读数据
 961               	.LM26:
 962 0062 8CE0      		ldi r24,lo8(12)
 963 0064 8BBB      		out 59-0x20,r24
  97:SPLC051.c     **** 	DDRB=0x00;				//定义为输入口,数据端口
 965               	.LM27:
 966 0066 17BA      		out 55-0x20,__zero_reg__
  98:SPLC051.c     **** 	temp_data=PORTB;
 968               	.LM28:
 969 0068 88B3      		in r24,56-0x20
  99:SPLC051.c     **** 	PORTA|=(1<<CS1);							//取消片选
 971               	.LM29:
 972 006a D89A      		sbi 59-0x20,0
 100:SPLC051.c     **** 	return temp_data;
 101:SPLC051.c     **** }
 974               	.LM30:
 975 006c 9927      		clr r25
 976               	/* epilogue: frame size=0 */
 977 006e 0895      		ret
 978               	/* epilogue end (size=1) */
 979               	/* function F_SPLC501_Read_Data size 7 (6) */
 981               	.Lscope4:
 983               	.global	F_SPLC501_Read_Status
 985               	F_SPLC501_Read_Status:
 102:SPLC051.c     **** //***************************************************************************//
 103:SPLC051.c     **** //程序:F_SPLC501_Read_Status()
 104:SPLC051.c     **** //描述:从SPLC501里读状态字数据  C语言调用
 105:SPLC051.c     **** //参数:输出传送的数据
 106:SPLC051.c     **** // 声明:	手心	20070117	AVRGCC
 107:SPLC051.c     **** //注意A0=0,EP=0,RW=1,Cs=0
 108:SPLC051.c     **** //***************************************************************************//
 109:SPLC051.c     **** unsigned int F_SPLC501_Read_Status(void)
 110:SPLC051.c     **** {
 987               	.LM31:
 988               	/* prologue: frame size=0 */
 989               	/* prologue end (size=0) */
 111:SPLC051.c     **** 	unsigned int temp_status;
 112:SPLC051.c     **** 	PORTA=(0<<A0)|(0<<EP)|(1<<RW)|(0<<CS1);	//片选LCD,使能读状态
 991               	.LM32:
 992 0070 88E0      		ldi r24,lo8(8)
 993 0072 8BBB      		out 59-0x20,r24
 113:SPLC051.c     **** 	DDRB=0x00;				//定义为输入口,数据端口
 995               	.LM33:
 996 0074 17BA      		out 55-0x20,__zero_reg__
 114:SPLC051.c     **** 	temp_status=PORTB;
 998               	.LM34:
 999 0076 88B3      		in r24,56-0x20
 115:SPLC051.c     **** 	PORTA|=(1<<CS1);							//取消片选
 1001               	.LM35:
 1002 0078 D89A      		sbi 59-0x20,0
 116:SPLC051.c     **** 	return temp_status;
 117:SPLC051.c     **** }
 1004               	.LM36:
 1005 007a 9927      		clr r25
 1006               	/* epilogue: frame size=0 */
 1007 007c 0895      		ret
 1008               	/* epilogue end (size=1) */
 1009               	/* function F_SPLC501_Read_Status size 7 (6) */
 1011               	.Lscope5:
 1014               	.global	F_LCD_ONOFF
 1016               	F_LCD_ONOFF:
 118:SPLC051.c     **** //***************************************************************************//
 119:SPLC051.c     **** //程序:F_LCD_ON_OFF(unsigned int SetCom)
 120:SPLC051.c     **** //描述:液晶开关函数  C语言调用 
 121:SPLC051.c     **** //参数:unsigned int SetCom		SetCom=0:LCD Off  SetCom!=0:LCD On
 122:SPLC051.c     **** // 声明:	手心	20070117	AVRGCC
 123:SPLC051.c     **** //***************************************************************************//
 124:SPLC051.c     **** void F_LCD_ONOFF(unsigned int SetCom)
 125:SPLC051.c     **** {
 1018               	.LM37:
 1019               	/* prologue: frame size=0 */
 1020               	/* prologue end (size=0) */
 126:SPLC051.c     **** 	if(SetCom)							//ON LCD
 1022               	.LM38:
 1023 007e 892B      		or r24,r25
 1024 0080 19F0      		breq .L38
 127:SPLC051.c     **** 		F_SPLC501_Write_Com(M_LCD_ON);
 1026               	.LM39:
 1027 0082 8FEA      		ldi r24,lo8(175)
 1028 0084 90E0      		ldi r25,hi8(175)
 1029 0086 02C0      		rjmp .L40
 1030               	.L38:
 128:SPLC051.c     **** 	else								//OFF LCD
 129:SPLC051.c     **** 		F_SPLC501_Write_Com(M_LCD_OFF);
 1032               	.LM40:
 1033 0088 8EEA      		ldi r24,lo8(174)
 1034 008a 90E0      		ldi r25,hi8(174)
 1035               	.L40:
 1036 008c 0E94 0000 		call F_SPLC501_Write_Com
 1037 0090 0895      		ret
 1038               	/* epilogue: frame size=0 */
 1039               	/* epilogue: noreturn */
 1040               	/* epilogue end (size=0) */
 1041               	/* function F_LCD_ONOFF size 10 (10) */
 1043               	.Lscope6:
 1046               	.global	LCD501_Init
 1048               	LCD501_Init:
 130:SPLC051.c     **** }
 131:SPLC051.c     **** 
 132:SPLC051.c     **** //***************************************************************************//
 133:SPLC051.c     **** //程序:LCD501_Init(unsigned int InitialData)
 134:SPLC051.c     **** //描述:液晶显示初始化函数  C语言调用 
 135:SPLC051.c     **** //参数:unsigned int InitialData	初始化显示的字
 136:SPLC051.c     **** // 声明:	手心	20070117	AVRGCC
 137:SPLC051.c     **** //***************************************************************************//
 138:SPLC051.c     **** void LCD501_Init(unsigned int InitialData)
 139:SPLC051.c     **** {
 1050               	.LM41:
 1051               	/* prologue: frame size=0 */
 1052 0092 AF92      		push r10
 1053 0094 BF92      		push r11
 1054 0096 CF92      		push r12
 1055 0098 DF92      		push r13
 1056 009a EF92      		push r14
 1057 009c FF92      		push r15
 1058 009e 0F93      		push r16
 1059 00a0 1F93      		push r17
 1060 00a2 CF93      		push r28
 1061 00a4 DF93      		push r29
 1062               	/* prologue end (size=10) */
 1063 00a6 5C01      		movw r10,r24
 140:SPLC051.c     **** 	unsigned int i,j;
 141:SPLC051.c     **** 	F_SPLC501_Initial_IO();						//Initial LCD IO
 1065               	.LM42:
 1066 00a8 0E94 0000 		call F_SPLC501_Initial_IO
 142:SPLC051.c     **** 	F_SPLC501_Write_Com(M_LCD_ON);				//LCD On
 1068               	.LM43:
 1069 00ac 8FEA      		ldi r24,lo8(175)
 1070 00ae 90E0      		ldi r25,hi8(175)
 1071 00b0 0E94 0000 		call F_SPLC501_Write_Com
 143:SPLC051.c     **** 	F_SPLC501_Write_Com(M_LCD_POWER_ALL);		//设置上电控制模式
 1073               	.LM44:
 1074 00b4 8FE2      		ldi r24,lo8(47)
 1075 00b6 90E0      		ldi r25,hi8(47)
 1076 00b8 0E94 0000 		call F_SPLC501_Write_Com
 144:SPLC051.c     **** 	
 145:SPLC051.c     **** 	F_SPLC501_Write_Com(M_LCD_ELE_VOL);			//电量设置模式(显示亮度)
 1078               	.LM45:
 1079 00bc 81E8      		ldi r24,lo8(129)
 1080 00be 90E0      		ldi r25,hi8(129)
 1081 00c0 0E94 0000 		call F_SPLC501_Write_Com
 146:SPLC051.c     **** 	F_SPLC501_Write_Com(0x12);					//指令数据0x00~0x3f
 1083               	.LM46:
 1084 00c4 82E1      		ldi r24,lo8(18)
 1085 00c6 90E0      		ldi r25,hi8(18)
 1086 00c8 0E94 0000 		call F_SPLC501_Write_Com
 147:SPLC051.c     **** 	
 148:SPLC051.c     **** 	F_SPLC501_Write_Com(M_LCD_VDD_SET);			//V5内部电压调节电阻设置
 1088               	.LM47:
 1089 00cc 85E2      		ldi r24,lo8(37)
 1090 00ce 90E0      		ldi r25,hi8(37)
 1091 00d0 0E94 0000 		call F_SPLC501_Write_Com
 149:SPLC051.c     **** 	F_SPLC501_Write_Com(M_LCD_VDD);				//LCD偏压设置,V3时选
 1093               	.LM48:
 1094 00d4 82EA      		ldi r24,lo8(162)
 1095 00d6 90E0      		ldi r25,hi8(162)
 1096 00d8 0E94 0000 		call F_SPLC501_Write_Com
 150:SPLC051.c     **** 	
 151:SPLC051.c     **** 	F_SPLC501_Write_Com(M_LCD_COM_NOR);			//Com 扫描方式设置
 1098               	.LM49:
 1099 00dc 80EC      		ldi r24,lo8(192)
 1100 00de 90E0      		ldi r25,hi8(192)
 1101 00e0 0E94 0000 		call F_SPLC501_Write_Com
 152:SPLC051.c     **** 	F_SPLC501_Write_Com(M_LCD_SEG_REV);			//Segment方向选择
 1103               	.LM50:
 1104 00e4 81EA      		ldi r24,lo8(161)
 1105 00e6 90E0      		ldi r25,hi8(161)
 1106 00e8 0E94 0000 		call F_SPLC501_Write_Com

⌨️ 快捷键说明

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