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

📄 pro.lst

📁 数控电压源程序数控电压源程序数控电压源程序数控电压源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0219 E20E      LDI	R16,0x2E
    021A E010      LDI	R17,0
    021B 940E073E  CALL	_Write_Data
(0114)   Write_Data(VOL_H);
    021D 9100007A  LDS	R16,VOL_H
    021F 9110007B  LDS	R17,VOL_H+1
    0221 940E073E  CALL	_Write_Data
(0115)  // Write_Data(VOL_L0);
(0116)   Write_Position(2,13);
    0223 E02D      LDI	R18,0xD
    0224 E030      LDI	R19,0
    0225 E002      LDI	R16,2
    0226 E010      LDI	R17,0
    0227 940E074E  CALL	_Write_Position
(0117)   Write_String("v");
    0229 ED0B      LDI	R16,0xDB
    022A E010      LDI	R17,0
    022B 940E0768  CALL	_Write_String
    022D 940E08AD  CALL	pop_gset2
    022F 9508      RET
_KeyScan:
  key_return           --> R20
  i                    --> R22
    0230 940E08BC  CALL	push_gset2
(0118)  
(0119) }
(0120) #define key_mask  0b00001111
(0121) uint KeyScan(void)
(0122) {
(0123)  static uint key_value,key_line;
(0124)  uint key_return=16;
    0232 E140      LDI	R20,0x10
    0233 E050      LDI	R21,0
(0125)  uchar i;
(0126)  DDRD=0xf0;
    0234 EF80      LDI	R24,0xF0
    0235 BB81      OUT	0x11,R24
(0127)    key_line=0b00010000;
    0236 E180      LDI	R24,0x10
    0237 E090      LDI	R25,0
    0238 939000E2  STS	key_line+1,R25
    023A 938000E1  STS	key_line,R24
(0128)    for(i=1;i<=4;i++)
    023C E061      LDI	R22,1
    023D C025      RJMP	0x0263
(0129)    {
(0130)    PORTD=~key_line;
    023E 902000E1  LDS	R2,key_line
    0240 903000E2  LDS	R3,key_line+1
    0242 9420      COM	R2
    0243 9430      COM	R3
    0244 BA22      OUT	0x12,R2
(0131)    PORTD=~key_line;
    0245 902000E1  LDS	R2,key_line
    0247 903000E2  LDS	R3,key_line+1
    0249 9420      COM	R2
    024A 9430      COM	R3
    024B BA22      OUT	0x12,R2
(0132)    key_value=key_mask&PIND;
    024C B380      IN	R24,0x10
    024D 2799      CLR	R25
    024E 708F      ANDI	R24,0xF
    024F 7090      ANDI	R25,0
    0250 939000E0  STS	key_value+1,R25
    0252 938000DF  STS	key_value,R24
(0133)    if(key_value==key_mask)
    0254 308F      CPI	R24,0xF
    0255 E0E0      LDI	R30,0
    0256 079E      CPC	R25,R30
    0257 F471      BNE	0x0266
(0134)      key_line<<=1;
    0258 902000E1  LDS	R2,key_line
    025A 903000E2  LDS	R3,key_line+1
    025C 0C22      LSL	R2
    025D 1C33      ROL	R3
    025E 923000E2  STS	key_line+1,R3
    0260 922000E1  STS	key_line,R2
    0262 9563      INC	R22
    0263 E084      LDI	R24,4
    0264 1786      CP	R24,R22
    0265 F6C0      BCC	0x023E
(0135)      else
(0136) 	 break;
(0137)    }
(0138) 	delay_nms(5);
    0266 E005      LDI	R16,5
    0267 E010      LDI	R17,0
    0268 940E010B  CALL	_delay_nms
(0139)   if(key_value==(key_mask&PIND))
    026A B380      IN	R24,0x10
    026B 2799      CLR	R25
    026C 708F      ANDI	R24,0xF
    026D 7090      ANDI	R25,0
    026E 902000DF  LDS	R2,key_value
    0270 903000E0  LDS	R3,key_value+1
    0272 1628      CP	R2,R24
    0273 0639      CPC	R3,R25
    0274 F009      BEQ	0x0276
    0275 C08D      RJMP	0x0303
(0140)    {
(0141)     
(0142)     switch(key_line|key_value)
    0276 916000E1  LDS	R22,key_line
    0278 917000E2  LDS	R23,key_line+1
    027A 2962      OR	R22,R2
    027B 2973      OR	R23,R3
    027C 3267      CPI	R22,0x27
    027D E0E0      LDI	R30,0
    027E 077E      CPC	R23,R30
    027F F409      BNE	0x0281
    0280 C068      RJMP	0x02E9
    0281 326B      CPI	R22,0x2B
    0282 E0E0      LDI	R30,0
    0283 077E      CPC	R23,R30
    0284 F409      BNE	0x0286
    0285 C060      RJMP	0x02E6
    0286 326D      CPI	R22,0x2D
    0287 E0E0      LDI	R30,0
    0288 077E      CPC	R23,R30
    0289 F409      BNE	0x028B
    028A C058      RJMP	0x02E3
    028B 326E      CPI	R22,0x2E
    028C E0E0      LDI	R30,0
    028D 077E      CPC	R23,R30
    028E F409      BNE	0x0290
    028F C050      RJMP	0x02E0
    0290 E28E      LDI	R24,0x2E
    0291 E090      LDI	R25,0
    0292 1786      CP	R24,R22
    0293 0797      CPC	R25,R23
    0294 F0A4      BLT	0x02A9
    0295 3167      CPI	R22,0x17
    0296 E0E0      LDI	R30,0
    0297 077E      CPC	R23,R30
    0298 F409      BNE	0x029A
    0299 C043      RJMP	0x02DD
    029A 316B      CPI	R22,0x1B
    029B E0E0      LDI	R30,0
    029C 077E      CPC	R23,R30
    029D F409      BNE	0x029F
    029E C03B      RJMP	0x02DA
    029F 316D      CPI	R22,0x1D
    02A0 E0E0      LDI	R30,0
    02A1 077E      CPC	R23,R30
    02A2 F409      BNE	0x02A4
    02A3 C033      RJMP	0x02D7
    02A4 316E      CPI	R22,0x1E
    02A5 E0E0      LDI	R30,0
    02A6 077E      CPC	R23,R30
    02A7 F161      BEQ	0x02D4
    02A8 C05A      RJMP	0x0303
    02A9 3467      CPI	R22,0x47
    02AA E0E0      LDI	R30,0
    02AB 077E      CPC	R23,R30
    02AC F409      BNE	0x02AE
    02AD C047      RJMP	0x02F5
    02AE 346B      CPI	R22,0x4B
    02AF E0E0      LDI	R30,0
    02B0 077E      CPC	R23,R30
    02B1 F409      BNE	0x02B3
    02B2 C03F      RJMP	0x02F2
    02B3 346D      CPI	R22,0x4D
    02B4 E0E0      LDI	R30,0
    02B5 077E      CPC	R23,R30
    02B6 F409      BNE	0x02B8
    02B7 C037      RJMP	0x02EF
    02B8 346E      CPI	R22,0x4E
    02B9 E0E0      LDI	R30,0
    02BA 077E      CPC	R23,R30
    02BB F181      BEQ	0x02EC
    02BC 3467      CPI	R22,0x47
    02BD E0E0      LDI	R30,0
    02BE 077E      CPC	R23,R30
    02BF F40C      BGE	0x02C1
    02C0 C042      RJMP	0x0303
    02C1 3867      CPI	R22,0x87
    02C2 E0E0      LDI	R30,0
    02C3 077E      CPC	R23,R30
    02C4 F409      BNE	0x02C6
    02C5 C03B      RJMP	0x0301
    02C6 386B      CPI	R22,0x8B
    02C7 E0E0      LDI	R30,0
    02C8 077E      CPC	R23,R30
    02C9 F409      BNE	0x02CB
    02CA C033      RJMP	0x02FE
    02CB 386D      CPI	R22,0x8D
    02CC E0E0      LDI	R30,0
    02CD 077E      CPC	R23,R30
    02CE F161      BEQ	0x02FB
    02CF 386E      CPI	R22,0x8E
    02D0 E0E0      LDI	R30,0
    02D1 077E      CPC	R23,R30
    02D2 F129      BEQ	0x02F8
    02D3 C02F      RJMP	0x0303
(0143)     {
(0144)     case 0b00011110:key_return=7;
    02D4 E047      LDI	R20,7
    02D5 E050      LDI	R21,0
(0145) 	                break;
    02D6 C02C      RJMP	0x0303
(0146) 	case 0b00011101:key_return=8;
    02D7 E048      LDI	R20,0x8
    02D8 E050      LDI	R21,0
(0147) 	                break;
    02D9 C029      RJMP	0x0303
(0148) 	case 0b00011011:key_return=9;
    02DA E049      LDI	R20,0x9
    02DB E050      LDI	R21,0
(0149) 	                break;	
    02DC C026      RJMP	0x0303
(0150) 	case 0b00010111:key_return=11;
    02DD E04B      LDI	R20,0xB
    02DE E050      LDI	R21,0
(0151) 	                break;	
    02DF C023      RJMP	0x0303
(0152) 	case 0b00101110:key_return=4;
    02E0 E044      LDI	R20,4
    02E1 E050      LDI	R21,0
(0153) 	                break;	
    02E2 C020      RJMP	0x0303
(0154) 	case 0b00101101:key_return=5;
    02E3 E045      LDI	R20,5
    02E4 E050      LDI	R21,0
(0155) 	                break;
    02E5 C01D      RJMP	0x0303
(0156)     case 0b00101011:key_return=6;
    02E6 E046      LDI	R20,6
    02E7 E050      LDI	R21,0
(0157) 	                break;	
    02E8 C01A      RJMP	0x0303
(0158) 	case 0b00100111:key_return=10;
    02E9 E04A      LDI	R20,0xA
    02EA E050      LDI	R21,0
(0159) 	                break;		
    02EB C017      RJMP	0x0303
(0160) 	case 0b01001110:key_return=1;
    02EC E041      LDI	R20,1
    02ED E050      LDI	R21,0
(0161) 	                break;	
    02EE C014      RJMP	0x0303
(0162) 	case 0b01001101:key_return=2;
    02EF E042      LDI	R20,2
    02F0 E050      LDI	R21,0
(0163) 	                break;
    02F1 C011      RJMP	0x0303
(0164) 	case 0b01001011:key_return=3;
    02F2 E043      LDI	R20,3
    02F3 E050      LDI	R21,0
(0165) 	                break;	
    02F4 C00E      RJMP	0x0303
(0166) 	case 0b01000111:key_return=12;
    02F5 E04C      LDI	R20,0xC
    02F6 E050      LDI	R21,0
(0167) 	                break;		
    02F7 C00B      RJMP	0x0303
(0168) 	case 0b10001110:key_return=0;
    02F8 2744      CLR	R20
    02F9 2755      CLR	R21
(0169) 	                break;	
    02FA C008      RJMP	0x0303
(0170) 	case 0b10001101:key_return=13;//小数点
    02FB E04D      LDI	R20,0xD
    02FC E050      LDI	R21,0
(0171) 	                break;		
    02FD C005      RJMP	0x0303
(0172) 	case 0b10001011:key_return=14;//ENTER
    02FE E04E      LDI	R20,0xE
    02FF E050      LDI	R21,0
(0173) 	                break;		
    0300 C002      RJMP	0x0303
(0174) 	case 0b10000111:key_return=15;//启动自动扫描
    0301 E04F      LDI	R20,0xF
    0302 E050      LDI	R21,0
(0175) 	                break;																																
(0176)      }
(0177)   }
(0178)     return key_return;
    0303 018A      MOVW	R16,R20
    0304 940E08AD  CALL	pop_gset2
    0306 9508      RET
_read_keyvalue:
  i                    --> R22
  temp                 --> R20
  keycode              --> R22
    0307 940E08BC  CALL	push_gset2
(0179) }
(0180) 
(0181) 
(0182) void read_keyvalue()
(0183) {  
(0184)    uint temp=0;
    0309 2744      CLR	R20
    030A 2755      CLR	R21
(0185)    uint i=0;
    030B 2766      CLR	R22
    030C 2777      CLR	R23
(0186)    uchar  keycode=16;
    030D E160      LDI	R22,0x10
(0187)    keycode=KeyScan();
    030E DF21      RCALL	_KeyScan
    030F 2F60      MOV	R22,R16
(0188)    if(((keycode >=0)&&(keycode <=9)&&(cn < 4))||((keycode ==13)&&(cn == 1)))
    0310 3000      CPI	R16,0
    0311 F038      BCS	0x0319
    0312 E089      LDI	R24,0x9
    0313 1780      CP	R24,R16
    0314 F020      BCS	0x0319
    0315 91800087  LDS	R24,cn
    0317 3084      CPI	R24,4
    0318 F040      BCS	0x0321
    0319 306D      CPI	R22,0xD
    031A F009      BEQ	0x031C
    031B C105      RJMP	0x0421
    031C 91800087  LDS	R24,cn
    031E 3081      CPI	R24,1
    031F F009      BEQ	0x0321
    0320 C100      RJMP	0x0421
(0189)    {
(0190)     cn++;
    0321 91800087  LDS	R24,cn
    0323 5F8F      SUBI	R24,0xFF
    0324 93800087  STS	cn,R24
(0191)     switch(keycode)
    0326 2777      CLR	R23
    0327 3060      CPI	R22,0
    0328 0767      CPC	R22,R23
    0329 F409      BNE	0x032B
    032A C033      RJMP	0x035E
    032B 3061      CPI	R22,1
    032C E0E0      LDI	R30,0
    032D 077E      CPC	R23,R30
    032E F409      BNE	0x0330
    032F C03C      RJMP	0x036C
    0330 3062      CPI	R22,2
    0331 E0E0      LDI	R30,0
    0332 077E      CPC	R23,R30
    0333 F409      BNE	0x0335
    0334 C045      RJMP	0x037A
    0335 3063      CPI	R22,3
    0336 E0E0      LDI	R30,0
    0337 077E      CPC	R23,R30
    0338 F409      BNE	0x033A
    0339 C04E      RJMP	0x0388
    033A 3064      CPI	R22,4
    033B E0E0      LDI	R30,0
    033C 077E      CPC	R23,R30
    033D F409      BNE	0x033F
    033E C057      RJMP	0x0396
    033F 3065      CPI	R22,5
    0340 E0E0      LDI	R30,0
    0341 077E      CPC	R23,R30
    0342 F409      BNE	0x0344
    0343 C060      RJMP	0x03A4
    0344 3066      CPI	R22,6
    0345 E0E0      LDI	R30,0
    0346 077E      CPC	R23,R30
    0347 F409      BNE	0x0349
    0348 C069      RJMP	0x03B2
    0349 3067      CPI	R22,7
    034A E0E0      LDI	R30,0
    034B 077E      CPC	R23,R30
    034C F409      BNE	0x034E
    034D C072      RJMP	0x03C0
    034E 3068      CPI	R22,0x8
    034F E0E0      LDI	R30,0
    0350 077E      CPC	R23,R30
    0351 F409      BNE	0x0353
    0352 C07B      RJMP	0x03CE
    0353 3069      CPI	R22,0x9
    0354 E0E0      LDI	R30,0
    0355 077E      CPC	R23,R30
    0356 F409      BNE	0x0358
    0357 C084      RJMP	0x03DC
    0358 306D      CPI	R22,0xD
    0359 E0E0      LDI	R30,0
    035A 077E      CPC	R23,R30
    035B F409      BNE	0x035D
    035C C08D      RJMP	0x03EA
    035D C099      RJMP	0x03F7
(0192) 
(0193)       {
(0194) 
(0195)        case 0:temp=0;SET_VALUE[cn]=temp;break;
    035E 2744      CLR	R20
    035F 2755      CLR	R21
    0360 90200087  LDS	R2,cn
    0362 E082      LDI	R24,2
    0363 9D82      MUL	R24,R2
    0364 01F0      MOVW	R30,R0
    0365 EE85      LDI	R24,0xE5
    0366 E090      LDI	R25,0
    0367 0FE8      ADD	R30,R24
    0368 1FF9      ADC	R31,R25
    0369 8351      STD	Z+1,R21
    036A 8340      STD	Z+0,R20
    036B C08B      RJMP	0x03F7
(0196) 
(0197)        case 1:temp=1;SET_VALUE[cn]=temp;break;
    036C E041      LDI	R20,1
    036D E050      LDI	R21,0
    036E 90200087  LDS	R2,cn
    0370 E082      LDI	R24,2
    0371 9D82      MUL	R24,R2
    0372 01F0      MOVW	R30,R0
    0373 EE85      LDI	R24,0xE5
    0374 E090      LDI	R25,0
    0375 0FE8      ADD	R30,R24
    0376 1FF9      ADC	R31,R25
    0377 8351      STD	Z+1,R21
    0378 8340      STD	Z+0,R20
    0379 C07D      RJMP	0x03F7
(0198) 
(0199)        case 2:temp=2;SET_VALUE[cn]=temp;break;
    037A E042      LDI	R20,2
    037B E050      LDI	R21,0
    037C 90200087  LDS	R2,cn
    037E E082      LDI	R24,2
    037F 9D82      MUL	R24,R2
    0380 01F0      MOVW	R30,R0
    0381 EE85      LDI	R24,0xE5
    0382 E090      LDI	R25,0
    0383 0FE8      ADD	R30,R24
    0384 1FF9      ADC	R31,R25
    0385 8351      STD	Z+1,R21
    0386 8340      STD	Z+0,R20
    0387 C06F      RJMP	0x03F7
(0200) 
(0201)        case 3:temp=3;SET_VALUE[cn]=temp;break;
    0388 E043      LDI	R20,3
    0389 E050      LDI	R21,0
    038A 90200087  LDS	R2,cn
    038C E082      LDI	R24,2

⌨️ 快捷键说明

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