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

📄 main.s

📁 数控电压源程序数控电压源程序数控电压源程序数控电压源程序
💻 S
📖 第 1 页 / 共 3 页
字号:
	.dbline 157
; 	                break;	
	xjmp L27
L36:
	.dbline 158
; 	case 0b00100111:key_return=10;
	ldi R20,10
	ldi R21,0
	.dbline 159
; 	                break;		
	xjmp L27
L37:
	.dbline 160
; 	case 0b01001110:key_return=1;
	ldi R20,1
	ldi R21,0
	.dbline 161
; 	                break;	
	xjmp L27
L38:
	.dbline 162
; 	case 0b01001101:key_return=2;
	ldi R20,2
	ldi R21,0
	.dbline 163
; 	                break;
	xjmp L27
L39:
	.dbline 164
; 	case 0b01001011:key_return=3;
	ldi R20,3
	ldi R21,0
	.dbline 165
; 	                break;	
	xjmp L27
L40:
	.dbline 166
; 	case 0b01000111:key_return=12;
	ldi R20,12
	ldi R21,0
	.dbline 167
; 	                break;		
	xjmp L27
L41:
	.dbline 168
; 	case 0b10001110:key_return=0;
	clr R20
	clr R21
	.dbline 169
; 	                break;	
	xjmp L27
L42:
	.dbline 170
; 	case 0b10001101:key_return=13;//小数点
	ldi R20,13
	ldi R21,0
	.dbline 171
; 	                break;		
	xjmp L27
L43:
	.dbline 172
; 	case 0b10001011:key_return=14;//ENTER
	ldi R20,14
	ldi R21,0
	.dbline 173
; 	                break;		
	xjmp L27
L44:
	.dbline 174
; 	case 0b10000111:key_return=15;//启动自动扫描
	ldi R20,15
	ldi R21,0
	.dbline 175
; 	                break;																																
L26:
L27:
	.dbline 177
;      }
;   }
L24:
	.dbline 178
;     return key_return;
	movw R16,R20
	.dbline -2
L15:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r key_return 20 i
	.dbsym r i 22 c
	.dbend
	.dbfunc e read_keyvalue _read_keyvalue fV
;              i -> R22,R23
;           temp -> R20,R21
;        keycode -> R22
	.even
_read_keyvalue::
	xcall push_gset2
	.dbline -1
	.dbline 183
; }
; 
; 
; void read_keyvalue()
; {  
	.dbline 184
;    uint temp=0;
	clr R20
	clr R21
	.dbline 185
;    uint i=0;
	clr R22
	clr R23
	.dbline 186
;    uchar  keycode=16;
	ldi R22,16
	.dbline 187
;    keycode=KeyScan();
	xcall _KeyScan
	mov R22,R16
	.dbline 188
;    if(((keycode >=0)&&(keycode <=9)&&(cn < 4))||((keycode ==13)&&(cn == 1)))
	cpi R16,0
	brlo L53
	ldi R24,9
	cp R24,R16
	brlo L53
	lds R24,_cn
	cpi R24,4
	brlo L51
L53:
	cpi R22,13
	breq X17
	xjmp L49
X17:
	lds R24,_cn
	cpi R24,1
	breq X18
	xjmp L49
X18:
L51:
	.dbline 189
;    {
	.dbline 190
;     cn++;
	lds R24,_cn
	subi R24,255    ; addi 1
	sts _cn,R24
	.dbline 191
;     switch(keycode)
	clr R23
	cpi R22,0
	cpc R22,R23
	brne X19
	xjmp L57
X19:
X15:
	cpi R22,1
	ldi R30,0
	cpc R23,R30
	brne X20
	xjmp L58
X20:
	cpi R22,2
	ldi R30,0
	cpc R23,R30
	brne X21
	xjmp L59
X21:
	cpi R22,3
	ldi R30,0
	cpc R23,R30
	brne X22
	xjmp L60
X22:
	cpi R22,4
	ldi R30,0
	cpc R23,R30
	brne X23
	xjmp L61
X23:
	cpi R22,5
	ldi R30,0
	cpc R23,R30
	brne X24
	xjmp L62
X24:
	cpi R22,6
	ldi R30,0
	cpc R23,R30
	brne X25
	xjmp L63
X25:
	cpi R22,7
	ldi R30,0
	cpc R23,R30
	brne X26
	xjmp L64
X26:
	cpi R22,8
	ldi R30,0
	cpc R23,R30
	brne X27
	xjmp L65
X27:
	cpi R22,9
	ldi R30,0
	cpc R23,R30
	brne X28
	xjmp L66
X28:
	cpi R22,13
	ldi R30,0
	cpc R23,R30
	brne X29
	xjmp L67
X29:
	xjmp L54
X16:
	.dbline 193
; 
;       {
L57:
	.dbline 195
; 
;        case 0:temp=0;SET_VALUE[cn]=temp;break;
	clr R20
	clr R21
	.dbline 195
	lds R2,_cn
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_SET_VALUE
	ldi R25,>_SET_VALUE
	add R30,R24
	adc R31,R25
	std z+1,R21
	std z+0,R20
	.dbline 195
	xjmp L55
L58:
	.dbline 197
; 
;        case 1:temp=1;SET_VALUE[cn]=temp;break;
	ldi R20,1
	ldi R21,0
	.dbline 197
	lds R2,_cn
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_SET_VALUE
	ldi R25,>_SET_VALUE
	add R30,R24
	adc R31,R25
	std z+1,R21
	std z+0,R20
	.dbline 197
	xjmp L55
L59:
	.dbline 199
; 
;        case 2:temp=2;SET_VALUE[cn]=temp;break;
	ldi R20,2
	ldi R21,0
	.dbline 199
	lds R2,_cn
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_SET_VALUE
	ldi R25,>_SET_VALUE
	add R30,R24
	adc R31,R25
	std z+1,R21
	std z+0,R20
	.dbline 199
	xjmp L55
L60:
	.dbline 201
; 
;        case 3:temp=3;SET_VALUE[cn]=temp;break;
	ldi R20,3
	ldi R21,0
	.dbline 201
	lds R2,_cn
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_SET_VALUE
	ldi R25,>_SET_VALUE
	add R30,R24
	adc R31,R25
	std z+1,R21
	std z+0,R20
	.dbline 201
	xjmp L55
L61:
	.dbline 203
; 
;        case 4:temp=4;SET_VALUE[cn]=temp;break;
	ldi R20,4
	ldi R21,0
	.dbline 203
	lds R2,_cn
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_SET_VALUE
	ldi R25,>_SET_VALUE
	add R30,R24
	adc R31,R25
	std z+1,R21
	std z+0,R20
	.dbline 203
	xjmp L55
L62:
	.dbline 205
; 
;        case 5:temp=5;SET_VALUE[cn]=temp;break;
	ldi R20,5
	ldi R21,0
	.dbline 205
	lds R2,_cn
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_SET_VALUE
	ldi R25,>_SET_VALUE
	add R30,R24
	adc R31,R25
	std z+1,R21
	std z+0,R20
	.dbline 205
	xjmp L55
L63:
	.dbline 207
; 
;        case 6:temp=6;SET_VALUE[cn]=temp;break;
	ldi R20,6
	ldi R21,0
	.dbline 207
	lds R2,_cn
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_SET_VALUE
	ldi R25,>_SET_VALUE
	add R30,R24
	adc R31,R25
	std z+1,R21
	std z+0,R20
	.dbline 207
	xjmp L55
L64:
	.dbline 209
; 
;        case 7:temp=7;SET_VALUE[cn]=temp;break;
	ldi R20,7
	ldi R21,0
	.dbline 209
	lds R2,_cn
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_SET_VALUE
	ldi R25,>_SET_VALUE
	add R30,R24
	adc R31,R25
	std z+1,R21
	std z+0,R20
	.dbline 209
	xjmp L55
L65:
	.dbline 211
; 
;        case 8:temp=8;SET_VALUE[cn]=temp;break;
	ldi R20,8
	ldi R21,0
	.dbline 211
	lds R2,_cn
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_SET_VALUE
	ldi R25,>_SET_VALUE
	add R30,R24
	adc R31,R25
	std z+1,R21
	std z+0,R20
	.dbline 211
	xjmp L55
L66:
	.dbline 213
; 
;        case 9:temp=9;SET_VALUE[cn]=temp;break;
	ldi R20,9
	ldi R21,0
	.dbline 213
	lds R2,_cn
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_SET_VALUE
	ldi R25,>_SET_VALUE
	add R30,R24
	adc R31,R25
	std z+1,R21
	std z+0,R20
	.dbline 213
	xjmp L55
L67:
	.dbline 215
; 	 
;        case 13:temp=0x2e;SET_VALUE[cn]=temp;break;
	ldi R20,46
	ldi R21,0
	.dbline 215
	lds R2,_cn
	ldi R24,2
	mul R24,R2
	movw R30,R0
	ldi R24,<_SET_VALUE
	ldi R25,>_SET_VALUE
	add R30,R24
	adc R31,R25
	std z+1,R21
	std z+0,R20
	.dbline 215
L54:
L55:
	.dbline 220
; 	    
; 
;      }
; 	
; 	  if((cn==2)&&(SET_VALUE[2]!=0x2e))
	lds R24,_cn
	cpi R24,2
	brne L68
	lds R24,_SET_VALUE+4
	lds R25,_SET_VALUE+4+1
	cpi R24,46
	ldi R30,0
	cpc R25,R30
	breq L68
	.dbline 221
; 	  {
	.dbline 222
; 	  Write_Position(1,5); 
	ldi R18,5
	ldi R19,0
	ldi R16,1
	ldi R17,0
	xcall _Write_Position
	.dbline 223
; 	  Write_String(error);
	ldi R16,<_error
	ldi R17,>_error
	xcall _Write_String
	.dbline 224
; 	  } 
L68:
	.dbline 225
; 	 Set_Value=10*SET_VALUE[1]+SET_VALUE[3];
	lds R18,_SET_VALUE+2
	lds R19,_SET_VALUE+2+1
	ldi R16,10
	ldi R17,0
	xcall empy16s
	movw R2,R16
	lds R4,_SET_VALUE+6
	lds R5,_SET_VALUE+6+1
	add R2,R4
	adc R3,R5
	sts _Set_Value+1,R3
	sts _Set_Value,R2
	.dbline 226
; 	 Display_VOL();
	xcall _Display_VOL
	.dbline 227
;    }
L49:
	.dbline 229
;   
;    if(cn == 3)//输入预定电压值完毕
	lds R24,_cn
	cpi R24,3
	brne L73
	.dbline 230
;    {
	.dbline 232
;      
;      if(KeyScan()==14)//等待ENTER键按下
	xcall _KeyScan
	cpi R16,14
	ldi R30,0
	cpc R17,R30
	brne L75
	.dbline 233
; 	 {
	.dbline 234
; 	  cn=0;
	clr R2
	sts _cn,R2
	.dbline 235
; 	  ENTER=1;
	ldi R24,1
	sts _ENTER,R24
	.dbline 236
; 	 }
L75:
	.dbline 237
;    }
L73:
	.dbline 239
;      
;    if(KeyScan()==11)
	xcall _KeyScan
	cpi R16,11
	ldi R30,0
	cpc R17,R30
	brne L77
	.dbline 240
; 	{
	.dbline 241
; 	  ahead_flag=1;
	ldi R24,1
	sts _ahead_flag,R24
	.dbline 242
; 	}
L77:
	.dbline 243
; 	if(KeyScan()==10) 
	xcall _KeyScan
	cpi R16,10
	ldi R30,0
	cpc R17,R30
	brne L79
	.dbline 244
; 	{ 
	.dbline 245
; 	 back_flag=1;
	ldi R24,1
	sts _back_flag,R24
	.dbline 246
; 	}
L79:
	.dbline 247
	xcall _KeyScan
	cpi R16,12
	ldi R30,0
	cpc R17,R30
	brne L81
	.dbline 248
	.dbline 249
	ldi R24,1
	sts _clear_flag,R24
	.dbline 250
L81:
	.dbline -2
L48:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 22 i
	.dbsym r temp 20 i
	.dbsym r keycode 22 c
	.dbend
	.area data(ram, con, rel)
	.dbfile E:\张秋伟\我的实验\数控电压源\main.c
_auto_flag:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\张秋伟\我的实验\数控电压源\main.c
	.dbsym s auto_flag _auto_flag c
	.area text(rom, con, rel)
	.dbfile E:\张秋伟\我的实验\数控电压源\main.c
	.dbfunc e signal_function _signal_function fV
;              i -> R20,R21
	.even
_signal_function::
	xcall push_gset1
	.dbline -1
	.dbline 258
;      if(KeyScan()== 12)
; 	 {    
; 	  clear_flag=1;
; 	 }   
;  
;  
;     
; } 
; 
; static uchar auto_flag=0;
; void signal_function(void)
; {
	.dbline 259
;   switch(auto_flag)
	lds R20,_auto_flag
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L87
X30:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L91
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	brne X34
	xjmp L97
X34:
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	brne X35
	xjmp L103
X35:
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	brne X36
	xjmp L110
X36:
	xjmp L84
X31:
	.dbline 260
;   {
L87:
	.dbline 261
;   case 0:Write_Position(1,12);
	ldi R18,12
	ldi R19,0
	ldi R16,1
	ldi R17,0
	xcall _Write_Position
	.dbline 262
;          Write_String("off");
	ldi R16,<L88
	ldi R17,>L88
	xcall _Write_String
	.dbline 263
; 		 if(KeyScan()==15)  
	xcall _KeyScan
	cpi R16,15
	ldi R30,0
	cpc R17,R30
	breq X37
	xjmp L85
X37:
	.dbline 264
;           auto_flag=1; 
	ldi R24,1
	sts _auto_flag,R24
	.dbline 265
;          break;
	xjmp L85
L91:
	.dbline 267
;   case 1:
;          Write_Position(1,12);
	ldi R18,12
	ldi R19,0
	ldi R16,1
	ldi R17,0
	xcall _Write_Position
	.dbline 268
;          Write_String("+  ");
	ldi R16,<L92
	ldi R17,>L92
	xcall _Write_String
	.dbline 269
;          if(Set_Value<99)
	lds R24,_Set_Value
	lds R25,_Set_Value+1
	cpi R24,99
	ldi R30,0
	cpc R25,R30
	brsh L93
	.dbline 270
;          {
	.dbline 271
;           Set_Value++;
	adiw R24,1
	sts _Set_Value+1,R25
	sts _Set_Value,R24
	.dbline 272
;           DAC_DATA=Set_Value;
	out 0x18,R24
	.dbline 273
; 		  control();
	xcall _control
	.dbline 274
;          }
	xjmp L94
L93:
	.dbline 276
; 		 else
; 		   auto_flag=2;
	ldi R24,2
	sts _auto_flag,R24
L94:
	.dbline 277
; 		 if(KeyScan()==15)
	xcall _KeyScan
	cpi R16,15
	ldi R30,0
	cpc R17,R30
	breq X38
	xjmp L85
X38:
	.dbline 278
;           auto_flag=2;
	ldi R24,2
	sts _auto_flag,R24
	.dbline 279
;           break;
	xjmp L85
L97:
	.dbline 281
;   case 2:
;        Write_Position(1,12);
	ldi R18,12
	ldi R19,0
	ldi R16,1
	ldi R17,0
	xcall _Write_Position
	.dbline 282
;        Write_String("-  ");
	ldi R16,<L98
	ldi R17,>L98
	xcall _Write_String
	.dbline 283
;         if(Set_Value>0)
	lds R2,_Set_Value
	lds R3,_Set_Value+1
	tst R2
	brne X32
	tst R3
	breq L99
X32:
	.dbline 284
;         {
	.dbline 285
;          Set_Value--;
	lds R24,_Set_Value
	lds R25,_Set_Value+1
	sbiw R24,1
	sts _Set_Value+1,R25
	sts _Set_Value,R24
	.dbline 286
;          DAC_DATA=Set_Value;
	out 0x18,R24
	.dbline 287
; 		 control();
	xcall _control
	.dbline 288
;         }
	xjmp L100
L99:
	.dbline 290
; 		 else
; 		  auto_flag=1;
	ldi R24,1
	sts _auto_flag,R24
L100:
	.dbline 291
; 		 if(KeyScan()==15) 
	xcall _KeyScan
	cpi R16,15
	ldi R30,0
	cpc R17,R30
	breq X39
	xjmp L85
X39:
	.dbline 292
;           auto_flag=3;
	ldi R24,3
	sts _auto_flag,R24
	.dbline 293
;           break;
	xjmp L85
L103:
	.dbline 294
;   case 3:Write_Position(1,12);
	ldi R18,12
	ldi R19,0
	ldi R16,1
	ldi R17,0
	xcall _Write_Position
	.dbline 295
;          Write_String("squ");
	ldi R16,<L104
	ldi R17,>L104
	xcall _Write_String
	xjmp L106
L105:
	.dbline 297
; 		 while(auto_flag ==3)
;          {
	.dbline 298
;           DAC_DATA=0x00;
	clr R2
	out 0x18,R2
	.dbline 299
;           delay_nms(50);
	ldi R16,50
	ldi R17,0
	xcall _delay_nms
	.dbline 300
;           DAC_DATA=0xff;
	ldi R24,255
	out 0x18,R24
	.dbline 301
;           delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 302
;           if(KeyScan()==15)
	xcall _KeyScan
	cpi R16,15
	ldi R30,0
	cpc R17,R30
	brne L108
	.dbline 303
; 	       auto_flag=4;
	ldi R24,4
	sts _auto_flag,R24
L108:
	.dbline 304
L106:
	.dbline 296
	lds R24,_auto_flag
	cpi R24,3
	breq L105
	.dbline 305
;          }
;          break;
	xjmp L85
L110:
	.dbline 307
;   case 4:
;          Write_Position(1,12);
	ldi R18,12
	ldi R19,0
	ldi R16,1
	ldi R17,0
	xcall _Write_Position
	.dbline 308
;          Write_String("saw");
	ldi R16,<L111
	ldi R17,>L111
	xcall _Write_String
	xjmp L113
L112:
	.dbline 310
; 		 while(auto_flag == 4)
;          {
	.dbline 311
;           uint  i=255;
	ldi R20,255
	ldi R21,0
	.dbline 313
; 		  
;           for(;i>0;i--)
	xjmp L118
L115:
	.dbline 314
	.dbline 315
	out 0x18,R20
	.dbline 316
	ldi R16,10
	ldi R17,0
	xcall _delay_nus
	.dbline 317
L116:
	.dbline 313
	subi R20,1
	sbci R21,0
L118:
	.dbline 313
	cpi R20,0
	cpc R20,R21
	brne L115
X33:
	.dbline 318
; 		  {
; 		    DAC_DATA=i;
; 			delay_nus(10);
; 	      }
; 		 if(KeyScan()==15)
	xcall _KeyScan
	cpi R16,15
	ldi R30,0
	cpc R17,R30
	brne L119
	.dbline 319
; 	      auto_flag=0;

⌨️ 快捷键说明

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