📄 hexdec-lcd.a51.lst
字号:
295: 08 MOV R2,#0
^
@@@@@ only allowed in CODE segment @@@@@
;&column,start from home pos.
296: 08 CStringSkip2: INC DPTR ;next chacter
^
@@@@@ only allowed in CODE segment @@@@@
297: 08 AJMP WriteCString
^
@@@@@ only allowed in CODE segment @@@@@
298:
299: ;write a string from ram memory
300: ;R0=address of string in ram memory
301: ;R1=row number
302: ;R2=column number
303: 08 WriteAString: MOV A,@R0 ;first char from ram
^
@@@@@ only allowed in CODE segment @@@@@
position to acc.
304: 08 CJNE A,#0,WriteASkip1 ;is it the e
^
@@@@@ only allowed in CODE segment @@@@@
nd code?
305: 08 RET
^
@@@@@ only allowed in CODE segment @@@@@
306: 08 WriteASkip1: MOV R3,A
^
@@@@@ only allowed in CODE segment @@@@@
307: 08 MOV A,R0
^
@@@@@ only allowed in CODE segment @@@@@
;ro save
308: 08 PUSH ACC
^
@@@@@ only allowed in CODE segment @@@@@
309: 08 CALL PutCharOnLCD ;display cha
^
@@@@@ only allowed in CODE segment @@@@@
r.
310: 08 POP ACC
^
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 17
Line I Addr Code Source
@@@@@ only allowed in CODE segment @@@@@
;r0 restore
311: 08 MOV R0,A
^
@@@@@ only allowed in CODE segment @@@@@
312: 08 INC R2
^
@@@@@ only allowed in CODE segment @@@@@
;next column
313: 08 CJNE R2,#LCDLineLength,AStringSkip2 ;is it max n
^
@@@@@ only allowed in CODE segment @@@@@
umber of column?
314: 08 MOV R2,#0
^
@@@@@ only allowed in CODE segment @@@@@
;yes,clear column number
315: 08 INC R1
^
@@@@@ only allowed in CODE segment @@@@@
;and go to the next row
316: 08 CJNE A,#LCDRowsNum,AStringSkip2 ;is it the m
^
@@@@@ only allowed in CODE segment @@@@@
ax number of row?
317: 08 MOV R1,#0
^
@@@@@ only allowed in CODE segment @@@@@
;yes,clear row number and
318: 08 MOV R2,#0
^
@@@@@ only allowed in CODE segment @@@@@
;go to the first row
319: 08 AStringSkip2: INC R0 ;increment p
^
@@@@@ only allowed in CODE segment @@@@@
ointer address
320: 08 JMP WriteAString
^
@@@@@ only allowed in CODE segment @@@@@
321:
322: ;3 bytes of hex number to decimal convertion routine
323: ;number in r5,r6,r7 (r5-msb,..,r7-lsb), result in r4,r5,r6,r7
324: ;the routine counts, how many times you can subtract the 1000000 from numer, then 100000,10000,1000,
100,10,1
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 18
Line I Addr Code Source
325: ;each counter equals position of decimal number f.e.:
326: ; 1E74 hex - you can subtract 1000 seven (7) times, 100 seven (7) times, 10 nine (9) times and the r
est
327: ;is six (6), so your result of conversion is 7796 (equals 1E74)
328: 08 Hex3DecConv: CLR C
^
@@@@@ only allowed in CODE segment @@@@@
329: 08 MOV R4,#0
^
@@@@@ only allowed in CODE segment @@@@@
;milion counter clear
330:
331: 08 Hex3DecLoop1: MOV A,R7 ;how many time we ca
^
@@@@@ only allowed in CODE segment @@@@@
n subtract 10000000 without carry (989680H)
332: 08 SUBB A,#80H
^
@@@@@ only allowed in CODE segment @@@@@
333: 08 MOV R7,A
^
@@@@@ only allowed in CODE segment @@@@@
334: 08 MOV A,R6
^
@@@@@ only allowed in CODE segment @@@@@
335: 08 SUBB A,#96H
^
@@@@@ only allowed in CODE segment @@@@@
336: 08 MOV R6,A
^
@@@@@ only allowed in CODE segment @@@@@
337: 08 MOV A,R5
^
@@@@@ only allowed in CODE segment @@@@@
338: 08 SUBB A,#98H
^
@@@@@ only allowed in CODE segment @@@@@
339: 08 MOV R5,A
^
@@@@@ only allowed in CODE segment @@@@@
340: 08 JC Hex3DecSkip1
^
@@@@@ only allowed in CODE segment @@@@@
341: 08 INC R4
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 19
Line I Addr Code Source
^
@@@@@ only allowed in CODE segment @@@@@
342: 08 JMP Hex3DecLoop1
^
@@@@@ only allowed in CODE segment @@@@@
343: 08 Hex3DecSkip1: MOV A,R4
^
@@@@@ only allowed in CODE segment @@@@@
344: 08 PUSH ACC
^
@@@@@ only allowed in CODE segment @@@@@
;push counter onto stack
345: 08 MOV A,R7
^
@@@@@ only allowed in CODE segment @@@@@
346: 08 ADD A,#80H
^
@@@@@ only allowed in CODE segment @@@@@
347: 08 MOV R7,A
^
@@@@@ only allowed in CODE segment @@@@@
348: 08 MOV A,R6
^
@@@@@ only allowed in CODE segment @@@@@
349: 08 ADDC A,#96H
^
@@@@@ only allowed in CODE segment @@@@@
350: 08 MOV R6,A
^
@@@@@ only allowed in CODE segment @@@@@
351: 08 MOV A,R5
^
@@@@@ only allowed in CODE segment @@@@@
352: 08 ADDC A,#98H
^
@@@@@ only allowed in CODE segment @@@@@
353: 08 MOV R5,A
^
@@@@@ only allowed in CODE segment @@@@@
354: 08 CLR C
^
@@@@@ only allowed in CODE segment @@@@@
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 20
Line I Addr Code Source
355: 08 MOV R4,#0
^
@@@@@ only allowed in CODE segment @@@@@
356: 08 Hex3DecLoop2: MOV A,R7 ;how many times we c
^
@@@@@ only allowed in CODE segment @@@@@
an subtract 1000000 (F4240H) without carry
357: 08 SUBB A,#40H
^
@@@@@ only allowed in CODE segment @@@@@
358: 08 MOV R7,A
^
@@@@@ only allowed in CODE segment @@@@@
359: 08 MOV A,R6
^
@@@@@ only allowed in CODE segment @@@@@
360: 08 SUBB A,#42H
^
@@@@@ only allowed in CODE segment @@@@@
361: 08 MOV R6,A
^
@@@@@ only allowed in CODE segment @@@@@
362: 08 MOV A,R5
^
@@@@@ only allowed in CODE segment @@@@@
363: 08 SUBB A,#0FH
^
@@@@@ only allowed in CODE segment @@@@@
364: 08 MOV R5,A
^
@@@@@ only allowed in CODE segment @@@@@
365: 08 JC Hex3DecSkip2
^
@@@@@ only allowed in CODE segment @@@@@
366: 08 INC R4
^
@@@@@ only allowed in CODE segment @@@@@
367: 08 JMP Hex3DecLoop2
^
@@@@@ only allowed in CODE segment @@@@@
368: 08 Hex3DecSkip2: MOV A,R4
^
@@@@@ only allowed in CODE segment @@@@@
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 21
Line I Addr Code Source
369: 08 PUSH ACC
^
@@@@@ only allowed in CODE segment @@@@@
;push counter onto stack
370: 08 MOV A,R7
^
@@@@@ only allowed in CODE segment @@@@@
371: 08 ADD A,#40H
^
@@@@@ only allowed in CODE segment @@@@@
372: 08 MOV R7,A
^
@@@@@ only allowed in CODE segment @@@@@
373: 08 MOV A,R6
^
@@@@@ only allowed in CODE segment @@@@@
374: 08 ADDC A,#42H
^
@@@@@ only allowed in CODE segment @@@@@
375: 08 MOV R6,A
^
@@@@@ only allowed in CODE segment @@@@@
376: 08 MOV A,R5
^
@@@@@ only allowed in CODE segment @@@@@
377: 08 ADDC A,#0FH
^
@@@@@ only allowed in CODE segment @@@@@
378: 08 MOV R5,A
^
@@@@@ only allowed in CODE segment @@@@@
379: 08 CLR C
^
@@@@@ only allowed in CODE segment @@@@@
380: 08 MOV R4,#0
^
@@@@@ only allowed in CODE segment @@@@@
381: 08 Hex3DecLoop3: MOV A,R7 ;100000 (186A0H)?
^
@@@@@ only allowed in CODE segment @@@@@
382: 08 SUBB A,#0A0H
^
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 22
Line I Addr Code Source
@@@@@ only allowed in CODE segment @@@@@
383: 08 MOV R7,A
^
@@@@@ only allowed in CODE segment @@@@@
384: 08 MOV A,R6
^
@@@@@ only allowed in CODE segment @@@@@
385: 08 SUBB A,#86H
^
@@@@@ only allowed in CODE segment @@@@@
386: 08 MOV R6,A
^
@@@@@ only allowed in CODE segment @@@@@
387: 08 MOV A,R5
^
@@@@@ only allowed in CODE segment @@@@@
388: 08 SUBB A,#01H
^
@@@@@ only allowed in CODE segment @@@@@
389: 08 MOV R5,A
^
@@@@@ only allowed in CODE segment @@@@@
390: 08 JC Hex3DecSkip3
^
@@@@@ only allowed in CODE segment @@@@@
391: 08 INC R4
^
@@@@@ only allowed in CODE segment @@@@@
392: 08 JMP Hex3DecLoop3
^
@@@@@ only allowed in CODE segment @@@@@
393:
394: 08 Hex3DecSkip3: MOV A,R4
^
@@@@@ only allowed in CODE segment @@@@@
395: 08 PUSH ACC ;onto stack
^
@@@@@ only allowed in CODE segment @@@@@
396: 08 MOV A,R7
^
@@@@@ only allowed in CODE segment @@@@@
397: 08 ADD A,#0A0H
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 23
Line I Addr Code Source
^
@@@@@ only allowed in CODE segment @@@@@
398: 08 MOV R7,A
^
@@@@@ only allowed in CODE segment @@@@@
399: 08 MOV A,R6
^
@@@@@ only allowed in CODE segment @@@@@
400: 08 ADDC A,#86H
^
@@@@@ only allowed in CODE segment @@@@@
401: 08 MOV R6,A
^
@@@@@ only allowed in CODE segment @@@@@
402: 08 MOV A,R5
^
@@@@@ only allowed in CODE segment @@@@@
403: 08 ADDC A,#01H
^
@@@@@ only allowed in CODE segment @@@@@
404: 08 MOV R5,A
^
@@@@@ only allowed in CODE segment @@@@@
405:
406: 08 Hex2DecConv: MOV R4,#0
^
@@@@@ only allowed in CODE segment @@@@@
407: 08 CLR C
^
@@@@@ only allowed in CODE segment @@@@@
408: 08 Hex2DecLoop1: MOV A,R7 ;10000 (2710h)?
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -