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

📄 key_display.src

📁 motor_control.zip
💻 SRC
📖 第 1 页 / 共 3 页
字号:
			; SOURCE LINE # 137
; 	for(i=0;i!=12;i++)				//送入12位数据,低位在前
			; SOURCE LINE # 138
;---- Variable 'i?1049' assigned to Register 'R5' ----
	CLR  	A
	MOV  	R5,A
?C0022:
; 	{
			; SOURCE LINE # 139
; 	 if (cmd&1) {CH452_DIN_SET;}
			; SOURCE LINE # 140
	MOV  	A,R7
	JNB  	ACC.0,?C0025
	SETB 	CH452_DIN
	SJMP 	?C0026
?C0025:
; 	    else {CH452_DIN_CLR;}  // 输出位数据
			; SOURCE LINE # 141
	CLR  	CH452_DIN
?C0026:
;                                    // 另外的表达CH452_DIN=cmd&1;
;     	 CH452_DCLK_CLR;
			; SOURCE LINE # 143
	CLR  	CH452_DCLK
;     	 cmd>>=1;
			; SOURCE LINE # 144
	MOV  	A,R6
	CLR  	C
	RRC  	A
	MOV  	R6,A
	MOV  	A,R7
	RRC  	A
	MOV  	R7,A
; 	 DELAY_1US;
			; SOURCE LINE # 145
	NOP  	
	NOP  	
; 	 DELAY_1US;	
			; SOURCE LINE # 146
	NOP  	
	NOP  	
; 	   CH452_DCLK_SET;             //上升沿有效
			; SOURCE LINE # 147
	SETB 	CH452_DCLK
; 	}
			; SOURCE LINE # 148
	INC  	R5
	CJNE 	R5,#0CH,?C0022
?C0023:
;   	CH452_LOAD_SET;         //加载数据,LOAD上升沿
			; SOURCE LINE # 149
	SETB 	CH452_LOAD
; 	DELAY_1US;				//命令数据加载周期不小于6US,CH451不需要该周期
			; SOURCE LINE # 150
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 151
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 152
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 153
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 154
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 155
	NOP  	
	NOP  	
; 	DELAY_1US;				//命令数据加载周期不小于6US,CH451不需要该周期
			; SOURCE LINE # 156
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 157
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 158
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 159
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 160
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 161
	NOP  	
	NOP  	
; 	DELAY_1US;				//命令数据加载周期不小于6US,CH451不需要该周期
			; SOURCE LINE # 162
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 163
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 164
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 165
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 166
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 167
	NOP  	
	NOP  	
; 	
;   	ENABLE_KEY_INTERRUPT;
			; SOURCE LINE # 169
	ORL  	EIE2,#020H
; }
			; SOURCE LINE # 170
	RET  	
; END OF _CH452_Write

; 
; 
; 
; /***********CH452读出*********************/
; uchar CH452_Read( void )

	RSEG  ?PR?CH452_Read?KEY_DISPLAY
CH452_Read:
	USING	0
			; SOURCE LINE # 175
; {
			; SOURCE LINE # 176
; 	uchar i;
			; SOURCE LINE # 177
;   	uchar cmd,keycode;		//定义命令字,和数据存储器
;   	DISABLE_KEY_INTERRUPT;			//禁止键盘中断,防止传输过程中被CH452中断而进入中断服务程序中再次传输	
			; SOURCE LINE # 179
	ANL  	EIE2,#0DFH
;   	cmd=0x07;			        //读按键的命令字
			; SOURCE LINE # 180
;---- Variable 'cmd?1151' assigned to Register 'R7' ----
	MOV  	R7,#07H
;   	CH452_LOAD_CLR;
			; SOURCE LINE # 181
	CLR  	CH452_LOAD
;   	for(i=0;i!=4;i++)                       // 只需要发出高4位,多发也可以,但应该确保最后留下的4位是该命令码
			; SOURCE LINE # 182
;---- Variable 'i?1150' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0028:
; 	{
			; SOURCE LINE # 183
; 		if (cmd&1) {CH452_DIN_SET;}
			; SOURCE LINE # 184
	MOV  	A,R7
	JNB  	ACC.0,?C0031
	SETB 	CH452_DIN
	SJMP 	?C0032
?C0031:
; 		else {CH452_DIN_CLR;}           // 输出位数据
			; SOURCE LINE # 185
	CLR  	CH452_DIN
?C0032:
;     	CH452_DCLK_CLR;			 
			; SOURCE LINE # 186
	CLR  	CH452_DCLK
;     	cmd>>=1;			        //往右移一位
			; SOURCE LINE # 187
	MOV  	A,R7
	CLR  	C
	RRC  	A
	MOV  	R7,A
;     	CH452_DCLK_SET;			        //产生时钟上升沿锁通知CH451输入位数据
			; SOURCE LINE # 188
	SETB 	CH452_DCLK
;  	}
			; SOURCE LINE # 189
	INC  	R6
	CJNE 	R6,#04H,?C0028
?C0029:
;   	CH452_LOAD_SET;				//产生加载上升沿通知CH451处理命令数据
			; SOURCE LINE # 190
	SETB 	CH452_LOAD
;   	keycode=0;				//清除keycode
			; SOURCE LINE # 191
;---- Variable 'keycode?1152' assigned to Register 'R7' ----
	CLR  	A
	MOV  	R7,A
;   	for(i=0;i!=7;i++)
			; SOURCE LINE # 192
	MOV  	R6,A
?C0033:
; 	{
			; SOURCE LINE # 193
; 		keycode<<=1;			//数据移入keycode,高位在前,低位在后
			; SOURCE LINE # 194
	MOV  	A,R7
	ADD  	A,ACC
	MOV  	R7,A
; 		if (CH452_DOUT) keycode++;      //从高到低读入451的数据
			; SOURCE LINE # 195
	JNB  	CH452_DOUT,?C0036
	INC  	R7
?C0036:
;     	CH452_DCLK_CLR;			        //产生时钟下升沿通知CH451输出下一位
			; SOURCE LINE # 196
	CLR  	CH452_DCLK
;     	CH452_DCLK_SET;
			; SOURCE LINE # 197
	SETB 	CH452_DCLK
;  	}
			; SOURCE LINE # 198
	INC  	R6
	CJNE 	R6,#07H,?C0033
?C0034:
;   	CLEAR_KEY_INTER_FLAG;	                //清中断标志
			; SOURCE LINE # 199
	ANL  	P3IF,#07FH
;   	ENABLE_KEY_INTERRUPT;
			; SOURCE LINE # 200
	ORL  	EIE2,#020H
;   	return(keycode);		        //反回键值
			; SOURCE LINE # 201
; }
			; SOURCE LINE # 202
?C0037:
	RET  	
; END OF CH452_Read

; /***********CH452初始化*********************/
; void CH452_Init(void)            

	RSEG  ?PR?CH452_Init?KEY_DISPLAY
CH452_Init:
	USING	0
			; SOURCE LINE # 204
; {
			; SOURCE LINE # 205
;     //CH452_Write(CH452_RESET);     //此套020板子千万不可用020复位,否则数码管不亮
;     DELAY_1US;
			; SOURCE LINE # 207
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 208
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 209
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 210
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 211
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 212
	NOP  	
	NOP  	
;     CH452_Write( CH452_SYSON2 );                    /* 启用键盘和数码管 */
			; SOURCE LINE # 213
	MOV  	R7,#03H
	MOV  	R6,#04H
	LCALL	_CH452_Write
;     CH452_Write( CH452_BCD );   /* BCD译码,8个数码管 */	//	| CH452_SCANLIMIT_7 
			; SOURCE LINE # 214
	MOV  	R7,#080H
	MOV  	R6,#05H
	LCALL	_CH452_Write
;     DELAY_1US;
			; SOURCE LINE # 215
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 216
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 217
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 218
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 219
	NOP  	
	NOP  	
; 	DELAY_1US;
			; SOURCE LINE # 220
	NOP  	
	NOP  	
; }
			; SOURCE LINE # 221
	RET  	
; END OF CH452_Init

; /***********键盘数字转换(0-9)******************/
; uchar key_tran(uchar x)

	RSEG  ?PR?_key_tran?KEY_DISPLAY
_key_tran:
	USING	0
			; SOURCE LINE # 223
;---- Variable 'a?1354' assigned to Register 'R6' ----
;---- Variable 'x?1353' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 224
; 
; 	 uchar a;	 
; 	 if(x==0x78){a=1;}
			; SOURCE LINE # 227
	CJNE 	R7,#078H,?C0039
	MOV  	R6,#01H
?C0039:
; 	 if(x==0x50){a=2;}
			; SOURCE LINE # 228
	CJNE 	R7,#050H,?C0040
	MOV  	R6,#02H
?C0040:
; 	 if(x==0x58){a=3;}
			; SOURCE LINE # 229
	CJNE 	R7,#058H,?C0041
	MOV  	R6,#03H
?C0041:
; 	 if(x==0x79){a=4;}
			; SOURCE LINE # 230
	CJNE 	R7,#079H,?C0042
	MOV  	R6,#04H
?C0042:
; 	 if(x==0x51){a=5;}
			; SOURCE LINE # 231
	CJNE 	R7,#051H,?C0043
	MOV  	R6,#05H
?C0043:
; 	 if(x==0x59){a=6;}
			; SOURCE LINE # 232
	CJNE 	R7,#059H,?C0044
	MOV  	R6,#06H
?C0044:
;      if(x==0x7A){a=7;}
			; SOURCE LINE # 233
	CJNE 	R7,#07AH,?C0045
	MOV  	R6,#07H
?C0045:
;      if(x==0x52){a=8;}
			; SOURCE LINE # 234
	CJNE 	R7,#052H,?C0046
	MOV  	R6,#08H
?C0046:
;      if(x==0x5A){a=9;}
			; SOURCE LINE # 235
	CJNE 	R7,#05AH,?C0047
	MOV  	R6,#09H
?C0047:
;      if(x==0x7B){a=0;}
			; SOURCE LINE # 236
	CJNE 	R7,#07BH,?C0048
	CLR  	A
	MOV  	R6,A
?C0048:
; 	 return(a);	 
			; SOURCE LINE # 237
	XCH  	A,R7
	MOV  	A,R6
	XCH  	A,R7
;  	
; }
			; SOURCE LINE # 239
?C0049:
	RET  	
; END OF _key_tran

; 
; /***********在数码管上0-3显示数字(包括小数点和负数)*****************/
; void BCDdisplay_l(float n)

	RSEG  ?PR?_BCDdisplay_l?KEY_DISPLAY
_BCDdisplay_l:
	USING	0
			; SOURCE LINE # 242
	MOV  	n?1455+03H,R7
	MOV  	n?1455+02H,R6
	MOV  	n?1455+01H,R5
	MOV  	n?1455,R4
; { 
			; SOURCE LINE # 243
; 	signed int x;
; 	signed char a[4],b,t;
; 	x=abs((int)n);
			; SOURCE LINE # 246
	LCALL	?C?CASTF
	LCALL	_abs
	MOV  	x?1456,R6
	MOV  	x?1456+01H,R7
; 	for(t=0;t<4;t++)
			; SOURCE LINE # 247
	CLR  	A
	MOV  	t?1459,A
?C0050:
;   		CH452_Write((CH452_DIG0+ (t<<8))|16);
			; SOURCE LINE # 248
	MOV  	R7,t?1459
	LCALL	L?0093
	INC  	t?1459
	CLR  	C
	MOV  	A,t?1459
	XRL  	A,#080H
	SUBB 	A,#084H
	JC   	?C0050
?C0051:
; 	//if( ( n < 0.00000001 ) || ( n > -0.00000001 ) )  	CH452_Write((CH452_DIG0));
; 	//else 
; 	//{
; 		for(t=0;t<4;t++)
			; SOURCE LINE # 252
	CLR  	A
	MOV  	t?1459,A
?C0053:
; 		{ 
			; SOURCE LINE # 253
; 			a[t]=x%10;
			; SOURCE LINE # 254
	MOV  	R6,x?1456
	MOV  	R7,x?1456+01H
	MOV  	R4,#00H
	MOV  	R5,#0AH
	LCALL	?C?SIDIV
	MOV  	A,#LOW (a?1457)
	ADD  	A,t?1459
	MOV  	R0,A
	XCH  	A,@R0
	MOV  	A,R5
	XCH  	A,@R0
;     		x=x/10;
			; SOURCE LINE # 255
	MOV  	R6,x?1456
	MOV  	R7,x?1456+01H
	MOV  	R4,#00H
	MOV  	R5,#0AH
	LCALL	?C?SIDIV
	MOV  	x?1456,R6
	MOV  	x?1456+01H,R7
; 			if(a[t]) b=t;
			; SOURCE LINE # 256
	MOV  	A,#LOW (a?1457)
	ADD  	A,t?1459
	MOV  	R0,A
	MOV  	A,@R0
	JZ   	?C0055
	MOV  	b?1458,t?1459
; 		}
			; SOURCE LINE # 257
?C0055:
	INC  	t?1459
	MOV  	A,t?1459
	CJNE 	A,#04H,?C0053
?C0054:
; 
; 		x=abs((int)n);
			; SOURCE LINE # 259
	MOV  	R7,n?1455+03H
	MOV  	R6,n?1455+02H
	MOV  	R5,n?1455+01H
	MOV  	R4,n?1455
	LCALL	?C?CASTF
	LCALL	_abs
	MOV  	x?1456,R6
	MOV  	x?1456+01H,R7
; 		if(x-(int)n)
			; SOURCE LINE # 260
	MOV  	R7,n?1455+03H
	MOV  	R6,n?1455+02H
	MOV  	R5,n?1455+01H
	MOV  	R4,n?1455
	LCALL	?C?CASTF
	CLR  	C
	MOV  	A,x?1456+01H
	SUBB 	A,R7
	MOV  	R7,A
	MOV  	A,x?1456
	SUBB 	A,R6
	ORL  	A,R7
	JZ   	?C0057
;   		{   
			; SOURCE LINE # 261
; 			x=b+1;x<<=8;
			; SOURCE LINE # 262
	MOV  	R7,b?1458
	MOV  	A,R7
	RLC  	A
	SUBB 	A,ACC
	MOV  	R6,A
	MOV  	A,R7
	ADD  	A,#01H
	MOV  	x?1456+01H,A
	CLR  	A
	ADDC 	A,R6
	MOV  	x?1456,A
	MOV  	A,x?1456+01H
	MOV  	x?1456+01H,#00H
	MOV  	x?1456,A
;       		CH452_Write((CH452_DIG1+x)|18);
			; SOURCE LINE # 263
	CLR  	A
	ADD  	A,x?1456+01H
	MOV  	R7,A
	MOV  	A,x?1456
	ADDC 	A,#09H
	MOV  	R6,A
	MOV  	A,R7
	ORL  	A,#012H
	MOV  	R7,A
	LCALL	_CH452_Write
;       		DELAY_1US;
			; SOURCE LINE # 264
	NOP  	
	NOP  	
;       		DELAY_1US;
			; SOURCE LINE # 265
	NOP  	
	NOP  	
;       		DELAY_1US;
			; SOURCE LINE # 266
	NOP  	
	NOP  	
;       		DELAY_1US;
			; SOURCE LINE # 267
	NOP  	
	NOP  	
;       		DELAY_1US;
			; SOURCE LINE # 268
	NOP  	
	NOP  	
;   		}
			; SOURCE LINE # 269
?C0057:
;   		for(t=0;t<=b;t++)
			; SOURCE LINE # 270
	CLR  	A
	MOV  	t?1459,A
?C0058:
	SETB 	C
	MOV  	A,b?1458
	XRL  	A,#080H
	MOV  	R0,A
	MOV  	A,t?1459
	XRL  	A,#080H
	SUBB 	A,R0
	JNC  	?C0059
;   		{ 
			; SOURCE LINE # 271
;      		x=t;x<<=8;
			; SOURCE LINE # 272
	MOV  	R7,t?1459
	MOV  	A,R7
	RLC  	A
	SUBB 	A,ACC
	MOV  	x?1456,A
	MOV  	x?1456+01H,R7
	MOV  	A,x?1456+01H
	MOV  	x?1456+01H,#00H
	MOV  	x?1456,A
;       		CH452_Write((CH452_DIG1+x)|a[t]);
			; SOURCE LINE # 273
	MOV  	A,#LOW (a?1457)
	ADD  	A,R7
	MOV  	R0,A
	MOV  	A,@R0
	MOV  	R7,A
	RLC  	A
	SUBB 	A,ACC
	MOV  	R6,A
	CLR  	A
	ADD  	A,x?1456+01H
	MOV  	R5,A
	MOV  	A,x?1456
	ADDC 	A,#09H
	ORL  	A,R6
	MOV  	R6,A
	MOV  	A,R5
	ORL  	A,R7
	MOV  	R7,A
	LCALL	_CH452_Write
;       		DELAY_1US;
			; SOURCE LINE # 274
	NOP  	
	NOP  	
;       		DELAY_1US;
			; SOURCE LINE # 275
	NOP  	
	NOP  	
;       		DELAY_1US;
			; SOURCE LINE # 276
	NOP  	
	NOP  	
;       		DELAY_1US;
			; SOURCE LINE # 277
	NOP  	
	NOP  	
;       		DELAY_1US;
			; SOURCE LINE # 278
	NOP  	
	NOP  	
;     
;   		}
			; SOURCE LINE # 280
	INC  	t?1459
	SJMP 	?C0058
?C0059:
;   	
;   		CH452_Write(0x1F9);//写小数点
			; SOURCE LINE # 282
	MOV  	R7,#0F9H
	MOV  	R6,#01H
	LCALL	_CH452_Write
;   		n=(n-(int)n);
			; SOURCE LINE # 283
	MOV  	R7,n?1455+03H
	MOV  	R6,n?1455+02H
	MOV  	R5,n?1455+01H
	MOV  	R4,n?1455
	MOV  	A,R4
	PUSH 	ACC
	MOV  	A,R5
	PUSH 	ACC
	MOV  	A,R6
	PUSH 	ACC
	MOV  	A,R7
	PUSH 	ACC
	LCALL	?C?CASTF
	XCH  	A,R5
	MOV  	A,R7
	XCH  	A,R5
	XCH  	A,R4
	MOV  	A,R6
	XCH  	A,R4
	MOV  	A,R4
	LCALL	?C?FCASTI
	XCH  	A,R0
	MOV  	A,R4
	XCH  	A,R0
	XCH  	A,R1
	MOV  	A,R5
	XCH  	A,R1
	XCH  	A,R2
	MOV  	A,R6
	XCH  	A,R2
	XCH  	A,R3
	MOV  	A,R7
	XCH  	A,R3
	POP  	ACC
	MOV  	R7,A
	POP  	ACC
	MOV  	R6,A
	POP  	ACC
	MOV  	R5,A
	POP  	ACC
	MOV  	R4,A
	LCALL	?C?FPSUB
	MOV  	n?1455+03H,R7
	MOV  	n?1455+02H,R6
	MOV  	n?1455+01H,R5

⌨️ 快捷键说明

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