📄 13.lst
字号:
页 1
07-30-03
00:02:30
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
ORG 0000H
0000 010D AJMP START
ORG 0003H
0003 4196 AJMP E_INT0
ORG 000BH
000B 41CF AJMP INT_T0
000D 512F START: ACALL INSTALL
000F 75811F MOV SP,#1FH
0012 D2AF SETB EA
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
0014 D2A9 SETB ET0
0016 D2A8 SETB EX0
0018 D288 SETB IT0
001A D2B8 SETB PX0
001C 758901 MOV TMOD,#1
001F 758CFE MOV TH0,#0FEH
0022 758ABF MOV TL0,#0BFH
0025 755000 MOV STOP,#0 ;设定一个标志,表示当前状态是正在记时还是等待触发?'0'表示等待.
0028 794E MOV R1,#N
002A 7700 MOV @R1,#0
002C 09 INC R1
002D 7705 MOV @R1,#5
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
002F 1151 ACALL CU
0031 115C AG:ACALL SHOW_N ;用100000去除以'N',将结果放到 je_go 单元中。
0033 31E1 ACALL M_KM ;将结果*3.6后保存到je_go1中去.
0035 3108 ACALL TEST ;将结果bcd转换后送入bcd缓冲区,再取三位有效数送显存。
;######################
0037 515D ACALL TEST_N
0039 1178 ACALL SCREEN ;送出到p1口显示。
003B 11AC ACALL TEST_KEY
003D 0131 AJMP AG
;******************************************************************
;******************************************************************
BUFFER: DS 3
JE_GO: DS 4
DOT: DS 1 ;小数点的位置。
SUM: DS 6
KMM: DS 1
N: DS 2 ;记数器的记数结果。
STOP: DS 1 ;外部中断的启动/停止(记数器)标志。
;******************************************************************
0051 754D00 CU: MOV KMM,#0
0054 794E MOV R1,#N
F:\DOWNLOAD\QQ\13.ASM
页 2
07-30-03
00:02:30
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
0056 77FE MOV @R1,#0FEH
0058 09 INC R1
0059 77FE MOV @R1,#0FEH
005B 22 RET
SHOW_N:
005C 1168 ACALL LOAD_N
005E 3136 ACALL DIVD
0060 7942 MOV R1,#JE_GO
0062 EA MOV A,R2
0063 F7 MOV @R1,A
0064 09 INC R1
0065 EB MOV A,R3
0066 F7 MOV @R1,A ;将结果存放在je_go的存储单元中。
0067 22 RET
0068 7A00 LOAD_N: MOV R2,#0H
006A 7B01 MOV R3,#01H
006C 7C86 MOV R4,#086H
006E 7DA0 MOV R5,#0A0H
0070 794E MOV R1,#N
0072 E7 MOV A,@R1
0073 FE MOV R6,A
0074 09 INC R1
0075 E7 MOV A,@R1
0076 FF MOV R7,A
0077 22 RET
SCREEN:
0078 793F MOV R1,#BUFFER ;可送入0---F显示,送17显示黑屏.
007A 9002F7 MOV DPTR,#TAB ;小数点由dot的数值决定。=0无小
007D E7 MOV A,@R1 ;数点,=1有一位小数,=2有二位小
007E 93 MOVC A,@A+DPTR ;数。
007F F590 MOV P1,A
0081 C2B3 CLR P3.3
0083 E546 MOV A,DOT
0085 B40202 CJNE A,#2,SCR_NEXT0
0088 C290 CLR P1.0
008A 5184 SCR_NEXT0: ACALL DELAY1
008C 09 INC R1
008D E7 MOV A,@R1
008E 93 MOVC A,@A+DPTR
008F F590 MOV P1,A
0091 D2B3 SETB P3.3
0093 C2B4 CLR P3.4
0095 E546 MOV A,DOT
0097 B40102 CJNE A,#1,SCR_NEXT1
009A C290 CLR P1.0
009C 5184 SCR_NEXT1: ACALL DELAY1
009E 09 INC R1
F:\DOWNLOAD\QQ\13.ASM
页 3
07-30-03
00:02:30
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
009F E7 MOV A,@R1
00A0 93 MOVC A,@A+DPTR
00A1 F590 MOV P1,A
00A3 D2B4 SETB P3.4
00A5 C2B5 CLR P3.5
00A7 5184 ACALL DELAY1
00A9 D2B5 SETB P3.5
00AB 22 RET
;******************************************************************
00AC E54D TEST_KEY: MOV A,KMM
00AE 7004 JNZ KEY_NT0
00B0 D2B7 SETB P3.7
00B2 01B6 AJMP KEY_NT1
KEY_NT0:
00B4 C2B7 CLR P3.7
00B6 D2B0 KEY_NT1: SETB P3.0
00B8 D2B1 SETB P3.1
00BA 30B004 JNB P3.0,KEY_KM
00BD 30B11C JNB P3.1,CLEAR
00C0 22 RET
00C1 5184 KEY_KM: ACALL DELAY1
00C3 5184 ACALL DELAY1
00C5 30B001 JNB P3.0,KEY_KMNT0
00C8 22 RET
KEY_KMNT0:
00C9 E54D MOV A,KMM
00CB B2E0 CPL ACC.0
00CD F54D MOV KMM,A
KEY_LP0:
00CF 30B0FD JNB P3.0,KEY_LP0
00D2 5184 ACALL DELAY1
00D4 5184 ACALL DELAY1
00D6 30B0F6 JNB P3.0,KEY_LP0
00D9 3108 ACALL TEST
00DB 22 RET
00DC 5184 CLEAR: ACALL DELAY1
00DE 5184 ACALL DELAY1
00E0 30B101 JNB P3.1,CLEAR_NT1
00E3 22 RET
CLEAR_NT1:
00E4 794E MOV R1,#N
00E6 77FE MOV @R1,#0FEH
00E8 09 INC R1
00E9 77FE MOV @R1,#0FEH
00EB 7942 MOV R1,#JE_GO
00ED 7700 MOV @R1,#0
F:\DOWNLOAD\QQ\13.ASM
页 4
07-30-03
00:02:30
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
00EF 09 INC R1
00F0 7700 MOV @R1,#0
00F2 09 INC R1
00F3 7700 MOV @R1,#0
00F5 09 INC R1
00F6 7700 MOV @R1,#0
00F8 755000 MOV STOP,#0
00FB C28C CLR TR0
;ACALL TEST_N ;对N测试,如果N<5或N>0FEH,显示E00,N=FC显示000.
CLEAR_NT0:
00FD 30B1FD JNB P3.1,CLEAR_NT0
0100 5184 ACALL DELAY1
0102 5184 ACALL DELAY1
0104 30B1F6 JNB P3.1,CLEAR_NT0
0107 22 RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
0108 3176 TEST: ACALL BCD_CODE
010A 310E ACALL DSP_DATA ;从6位数的结果中取出三位有效数,(前三位不为0的数)
010C 00 NOP ;送入显示缓冲区中.
010D 22 RET
010E 7947 DSP_DATA: MOV R1,#SUM
0110 783F MOV R0,#BUFFER
0112 09 INC R1
0113 E7 MOV A,@R1
0114 7017 JNZ DSP_NT0
0116 09 INC R1
0117 E7 MOV A,@R1
0118 7013 JNZ DSP_NT0
011A 09 INC R1
011B 7F03 DSP_NT2: MOV R7,#3
011D E7 DSP_LP2: MOV A,@R1
011E F6 MOV @R0,A
011F 08 INC R0
0120 09 INC R1
0121 DFFA DJNZ R7,DSP_LP2
0123 22 RET
0124 7F03 DSP_NT1: MOV R7,#3
0126 E7 DSP_LP1: MOV A,@R1
0127 F6 MOV @R0,A
0128 08 INC R0
F:\DOWNLOAD\QQ\13.ASM
页 5
07-30-03
00:02:30
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
0129 09 INC R1
012A DFFA DJNZ R7,DSP_LP1
012C 22 RET
012D 7F03 DSP_NT0: MOV R7,#3
012F E7 DSP_LP0: MOV A,@R1
0130 F6 MOV @R0,A
0131 08 INC R0
0132 09 INC R1
0133 DFFA DJNZ R7,DSP_LP0
0135 22 RET
;(7) 标号: DIVD 功能:双字节二进制无符号数除法
;入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。
;出口信息:OV=0 时,双字节商在R2、R3中,OV=1 时溢出。
;影响资源:PSW、A、B、R1~R7 堆栈需求: 2字节
DIVD:
0136 EE MOV A,R6
0137 04 INC A
0138 7007 JNZ DIV_NEXT0
013A EF MOV A,R7
013B 04 INC A
013C 7003 JNZ DIV_NEXT0
013E 5124 ACALL EROO
0140 22 RET
DIV_NEXT0:
0141 C3 CLR C ;比较被除数和除数
0142 EB MOV A,R3
0143 9F SUBB A,R7
0144 EA MOV A,R2
0145 9E SUBB A,R6
0146 4005 JC DVD1
0148 D2D2 SETB OV ;溢出
014A 5124 ACALL EROO
014C 22 RET
014D 75F010 DVD1: MOV B,#10H ;计算双字节商
0150 C3 DVD2: CLR C ;部分商和余数同时左移一位
0151 ED MOV A,R5
0152 33 RLC A
0153 FD MOV R5,A
0154 EC MOV A,R4
0155 33 RLC A
0156 FC MOV R4,A
0157 EB MOV A,R3
0158 33 RLC A
0159 FB MOV R3,A
F:\DOWNLOAD\QQ\13.ASM
页 6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -