📄 posutils.src
字号:
; .\out_sst89e564\posutils.SRC generated from: source\posutils.c
; COMPILER INVOKED BY:
; C:\Keil\C51\BIN\C51.EXE source\posutils.c LARGE BROWSE ORDER NOAREGS DEBUG OBJECTEXTEND PRINT(.\posutils.lst) SRC(.\out_sst89e564\posutils.SRC)
NAME POSUTILS
?PR?_bcd2hex?POSUTILS SEGMENT CODE
?PR?_hex2bcd?POSUTILS SEGMENT CODE
EXTRN CODE (?C?CLDPTR)
EXTRN CODE (?C?IMUL)
EXTRN CODE (?C?CLDOPTR)
EXTRN CODE (?C?CSTPTR)
EXTRN CODE (?C?CILDPTR)
EXTRN CODE (?C?CSTOPTR)
EXTRN CODE (?C?CILDOPTR)
PUBLIC _hex2bcd
PUBLIC _bcd2hex
; #include "posutils.h"
;
; /***************************************************************************
; SUPPOSE dsp CONTAINS THE ASSCII ARRAY "12345F" AND WE EXECUTE THIS FUNCTION
; THEN THE ARRAY AT hex WILL CONTAIN 12H,34H, 5FH
; ****************************************************************************
; void DSP_2_HEX(unsigned char *dsp, unsigned char *hex, int count)
; {
; int i;
;
; for (i = 0; i < count; i++)
; {
; hex[i] = ((dsp[i << 1] <= 0x39) ? dsp[i << 1] - 0x30
; : dsp[i << 1] - 0x41 + 10);
; hex[i] = hex[i] << 4;
; hex[i] += ((dsp[(i << 1) + 1] <= 0x39) ? dsp[(i << 1) + 1] - 0x30
; : dsp[(i << 1) + 1] - 0x41 + 10);
; }
; }
;
; /***************************************************************************
; SUPPOSE HEX CONTAINS THREE BYTES:12H 34H, 5FH AND WE EXECUTE THIS FUNCTION
; THEN dsp WILL CONTAIN ASCII BYTES "12345F"
; **************************************************************************
; void HEX_2_DSP(unsigned char *hex, unsigned char *dsp, int count)
; {
; int i;
; unsigned char ch;
;
; for(i = 0; i < count; i++)
; {
; ch = (hex[i] & 0xf0) >> 4;
; dsp[i << 1] = (ch > 9) ? ch + 0x41 - 10 : ch + 0x30;
; ch = hex[i] & 0xf;
; dsp[(i << 1) + 1] = (ch > 9) ? ch + 0x41 - 10 : ch + 0x30;
; }
; }
;
; /*将两字节bcd码转换成hex码*/
; unsigned int bcd2hex(unsigned char *buf)
RSEG ?PR?_bcd2hex?POSUTILS
_bcd2hex:
USING 0
; SOURCE LINE # 40
;---- Variable 'buf?040' assigned to Register 'R1/R2/R3' ----
; {
; SOURCE LINE # 41
; unsigned int temp;
; temp=(buf[0]>>4)*1000 + (buf[0]&0x0f)*100 + (buf[1]>>4)*10 + (buf[1]&0x0f);
; SOURCE LINE # 43
LCALL ?C?CLDPTR
SWAP A
ANL A,#0FH
MOV R7,A
MOV R6,#00H
MOV R4,#03H
MOV R5,#0E8H
LCALL ?C?IMUL
XCH A,R4
MOV A,R6
XCH A,R4
XCH A,R5
MOV A,R7
XCH A,R5
LCALL ?C?CLDPTR
ANL A,#0FH
MOV B,#064H
MUL AB
ADD A,R5
MOV R5,A
MOV A,R4
ADDC A,B
MOV R4,A
MOV DPTR,#01H
LCALL ?C?CLDOPTR
SWAP A
ANL A,#0FH
MOV B,#0AH
MUL AB
ADD A,R5
MOV R7,A
MOV A,B
ADDC A,R4
MOV R6,A
MOV DPTR,#01H
LCALL ?C?CLDOPTR
ANL A,#0FH
MOV R4,#00H
ADD A,R7
MOV R7,A
MOV A,R4
ADDC A,R6
MOV R6,A
;---- Variable 'temp?041' assigned to Register 'R6/R7' ----
; return(temp);
; SOURCE LINE # 44
; }
; SOURCE LINE # 45
?C0001:
RET
; END OF _bcd2hex
; /***********************************************/
; /* 将整形数字转换成两字节bcd码放入 buf*/
; void hex2bcd(int hexnum, unsigned char *buf)
RSEG ?PR?_hex2bcd?POSUTILS
_hex2bcd:
USING 0
; SOURCE LINE # 48
;---- Variable 'hexnum?142' assigned to Register 'R6/R7' ----
;---- Variable 'buf?143' assigned to Register 'R1/R2/R3' ----
; {
; SOURCE LINE # 49
; // int data th, ha, te, on;
;
; for(buf[0]=0; hexnum >= 1000; buf[0] += 0x10, hexnum -= 1000);
; SOURCE LINE # 52
CLR A
LCALL ?C?CSTPTR
?C0002:
CLR C
MOV A,R7
SUBB A,#0E8H
MOV A,R6
XRL A,#080H
SUBB A,#083H
JC ?C0005
MOV A,#010H
LCALL ?C?CILDPTR
MOV A,#018H
ADD A,R7
MOV R7,A
MOV A,#0FCH
ADDC A,R6
MOV R6,A
SJMP ?C0002
; for( ; hexnum >= 100; buf[0] += 0x01, hexnum -= 100);
; SOURCE LINE # 53
?C0005:
CLR C
MOV A,R7
SUBB A,#064H
MOV A,R6
XRL A,#080H
SUBB A,#080H
JC ?C0006
MOV A,#01H
LCALL ?C?CILDPTR
MOV A,#09CH
ADD A,R7
MOV R7,A
MOV A,#0FFH
ADDC A,R6
MOV R6,A
SJMP ?C0005
?C0006:
; for(buf[1]=0; hexnum >= 10; buf[1] += 0x10, hexnum -= 10);
; SOURCE LINE # 54
MOV DPTR,#01H
CLR A
LCALL ?C?CSTOPTR
?C0008:
CLR C
MOV A,R7
SUBB A,#0AH
MOV A,R6
XRL A,#080H
SUBB A,#080H
JC ?C0009
MOV DPTR,#01H
MOV A,#010H
LCALL ?C?CILDOPTR
MOV A,#0F6H
ADD A,R7
MOV R7,A
MOV A,#0FFH
ADDC A,R6
MOV R6,A
SJMP ?C0008
?C0009:
; buf[1] += hexnum;
; SOURCE LINE # 55
MOV DPTR,#01H
MOV A,R7
LJMP ?C?CILDOPTR
; END OF _hex2bcd
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -