📄 ex3_utility.lst
字号:
311: * Input int (dec) subroutine
312: * Description : Get the data(word) from user
313: * :
314: * :
315: * Example : N/A
316: * Input : N/A
317: * Output : *i_ptr
318: * Modify : N/A
319: * Return : status [OK for ('0'-'z') or NOTOK for others chars]
320: *********************************************************************/
321: byte input_int(unsigned int *i_ptr) //3046
322: {
Function: input_int
Source : D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\sources\ex3_utility.c
Options : -DNON_BANK -Env"GENPATH=D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\cmd;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\prm;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\sources;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\LIB;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\SRC;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\INCLUDE" -Env"LIBPATH=C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\INCLUDE" -Env"OBJPATH=D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin" -Env"TEXTPATH=D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin" -Lasm=%n.lst -ObjN="D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\S12_Ex5_EEPROM_ICD_CW31_Data\FCS\ObjectCode\ex3_utility.c.o" -Ol0
0000 1b92 LEAS -14,SP
0002 3b PSHD
323: byte echo,cdata,loop=ENABLE;
0003 c601 LDAB #1
0005 6b8d STAB 13,SP
324: int count=0,i,j;
0007 c7 CLRB
0008 87 CLRA
0009 6c84 STD 4,SP
325: unsigned int i_data,i_data1,i_data2;
326:
327:
328: i_data=0;
000b 6c82 STD 2,SP
329: *i_ptr=0;
000d ee80 LDX 0,SP
000f 6c00 STD 0,X
330:
331: while(loop == ENABLE)
332: {
333: echo=rx_char0();
0011 0700 BSR rx_char0
0013 6b88 STAB 8,SP
334: if((echo==ESC)||(echo==DOT)||(echo==CR))
0015 c11b CMPB #27
0017 2708 BEQ *+10 ;abs = 0021
0019 c12e CMPB #46
001b 2704 BEQ *+6 ;abs = 0021
001d c10d CMPB #13
001f 2602 BNE *+4 ;abs = 0023
335: loop = DISABLE; //break the while loop
0021 698d CLR 13,SP
336: if (echo==BS || echo==DEL)
0023 c108 CMPB #8
0025 2704 BEQ *+6 ;abs = 002b
0027 c17f CMPB #127
0029 261e BNE *+32 ;abs = 0049
337: {
338: if(count>0) //del 4 bit data in buffer
002b ee84 LDX 4,SP
002d 2f1a BLE *+28 ;abs = 0049
339: {
340: count--;
002f 09 DEX
0030 6e84 STX 4,SP
341: i_data=i_data>>4;
0032 ec82 LDD 2,SP
0034 49 LSRD
0035 49 LSRD
0036 49 LSRD
0037 49 LSRD
0038 6c82 STD 2,SP
342: tx_char0(echo); //send bs the char on screen
003a e688 LDAB 8,SP
003c 160000 JSR tx_char0
343: tx_char0(' '); //send space to clear the char
003f c620 LDAB #32
0041 160000 JSR tx_char0
344: tx_char0(echo); //send bs again to move back the cursor
0044 e688 LDAB 8,SP
0046 160000 JSR tx_char0
345: }
346: }
347: if (count<4) //update 4 bit data to buffer
0049 ee84 LDX 4,SP
004b 8e0004 CPX #4
004e 2c1f BGE *+33 ;abs = 006f
348: {
349: if((echo<='9') && (echo>='0'))
0050 e688 LDAB 8,SP
0052 c030 SUBB #48
0054 c109 CMPB #9
0056 2217 BHI *+25 ;abs = 006f
350: {
351: // if ((echo>='0') && (echo<='9'))
352: cdata=echo-0x30;
353: count++;
0058 08 INX
0059 6e84 STX 4,SP
354: tx_char0(echo); //send echo to screen
005b 37 PSHB
005c e689 LDAB 9,SP
005e 160000 JSR tx_char0
355: i_data=(i_data<<4);
0061 ec83 LDD 3,SP
0063 59 ASLD
0064 59 ASLD
0065 59 ASLD
0066 59 ASLD
0067 6c83 STD 3,SP
356: i_data+=cdata;
0069 33 PULB
006a 87 CLRA
006b e382 ADDD 2,SP
006d 6c82 STD 2,SP
006f e68d LDAB 13,SP
0071 04119d DBEQ B,*-96 ;abs = 0011
357: }
358: }
359: }
360: if(count!=0 && echo==CR)
0074 ec84 LDD 4,SP
0076 274e BEQ *+80 ;abs = 00c6
0078 e688 LDAB 8,SP
007a c10d CMPB #13
007c 2648 BNE *+74 ;abs = 00c6
361: {
362: for (i=0;i<count;i++)
007e c7 CLRB
007f 87 CLRA
0080 6c86 STD 6,SP
0082 2039 BRA *+59 ;abs = 00bd
363: {
364: i_data1 = ((i_data)>>((unsigned char)(4*i))&0xf);
0084 e687 LDAB 7,SP
0086 58 ASLB
0087 58 ASLB
0088 ed82 LDY 2,SP
008a 160000 JSR _ISHRU
008d c40f ANDB #15
008f 87 CLRA
0090 6c8e STD 14,SP
365: i_data2=1;
0092 02 INY
0093 6d8b STY 11,SP
366: for(j=0;j<i;j++)
0095 c7 CLRB
0096 6c89 STD 9,SP
0098 200d BRA *+15 ;abs = 00a7
367: i_data2 *= 10;
009a c60a LDAB #10
009c 87 CLRA
009d ed8b LDY 11,SP
009f 13 EMUL
00a0 6c8b STD 11,SP
00a2 ee89 LDX 9,SP
00a4 08 INX
00a5 6e89 STX 9,SP
00a7 ec89 LDD 9,SP
00a9 ac86 CPD 6,SP
00ab 2ded BLT *-17 ;abs = 009a
368: *i_ptr+= i_data1*i_data2;
00ad ec8e LDD 14,SP
00af ed8b LDY 11,SP
00b1 13 EMUL
00b2 ee80 LDX 0,SP
00b4 e300 ADDD 0,X
00b6 6c00 STD 0,X
00b8 ee86 LDX 6,SP
00ba 08 INX
00bb 6e86 STX 6,SP
00bd ec86 LDD 6,SP
00bf ac84 CPD 4,SP
00c1 2dc1 BLT *-61 ;abs = 0084
369: }
370: return(OK);
00c3 c601 LDAB #1
00c5 21 SKIP1
371: }
372: else
373: return(NOTOK);
00c6 c7 CLRB
374: }
00c7 1bf010 LEAS 16,SP
00ca 3d RTS
375:
376:
377: /*******************************************************************
378: * Input word (hex) subroutine
379: * Description : Get the data(word) from user
380: * :
381: * :
382: * Example : N/A
383: * Input : N/A
384: * Output : *i_ptr
385: * Modify : N/A
386: * Return : status [OK for ('0'-'z') or NOTOK for others chars]
387: *********************************************************************/
388: byte input_word(unsigned int *i_ptr) //3046
389: {
Function: input_word
Source : D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\sources\ex3_utility.c
Options : -DNON_BANK -Env"GENPATH=D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\cmd;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\prm;D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\sources;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\LIB;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\SRC;C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\INCLUDE" -Env"LIBPATH=C:\Program Files\Metrowerks\CodeWarrior CW12_V3.1\lib\HC12c\INCLUDE" -Env"OBJPATH=D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin" -Env"TEXTPATH=D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\bin" -Lasm=%n.lst -ObjN="D:\Profiles\r63492.FSL\My Documents\Training document\培训教材\HCS12\S12 Ex5 EEPROM ICD CW31\S12_Ex5_EEPROM_ICD_CW31_Data\FCS\ObjectCode\ex3_utility.c.o" -Ol0
0000 6ca9 STD 7,-SP
390: byte echo,cdata,loop=ENABLE;
0002 c601 LDAB #1
0004 6b86 STAB 6,SP
391: int count=0;
0006 c7 CLRB
0007 87 CLRA
0008 6c83 STD 3,SP
392:
393: *i_ptr=0;
000a ee80 LDX 0,SP
000c 6c00 STD 0,X
394:
395: while(loop == ENABLE)
396: {
397: echo=rx_char0();
000e 160000 JSR rx_char0
0011 6b82 STAB 2,SP
398: if((echo==ESC)||(echo==DOT)||(echo==CR))
0013 c11b CMPB #27
0015 2708 BEQ *+10 ;abs = 001f
0017 c12e CMPB #46
0019 2704 BEQ *+6 ;abs = 001f
001b c10d CMPB #13
001d 2602 BNE *+4 ;abs = 0021
399: loop = DISABLE; //break the while loop
001f 6986 CLR 6,SP
400: if (echo==BS || echo==DEL)
0021 c108 CMPB #8
0023 2704 BEQ *+6 ;abs = 0029
0025 c17f CMPB #127
0027 2620 BNE *+34 ;abs = 0049
401: {
402: if(count>0) //del 4 bit data in buffer
0029 ee83 LDX 3,SP
002b 2f1c BLE *+30 ;abs = 0049
403: {
404: count--;
002d 09 DEX
002e 6e83 STX 3,SP
405: *i_ptr=*i_ptr>>4;
0030 ee80 LDX 0,SP
0032 ec00 LDD 0,X
0034 49 LSRD
0035 49 LSRD
0036 49 LSRD
0037 49 LSRD
0038 6c00 STD 0,X
406: tx_char0(echo); //send bs the char on screen
003a e682 LDAB 2,SP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -