📄 testn8.lst
字号:
980 0287 81 10 LD EA,#LDsp_H ;
981 0289 35 DspHILO REF RLD_LDIGxx1xEA ;
982 028A 81 17 LD EA,#LDspNul ;
983 028C EA A8 CALLS LdLDigit1 ;
984 028E 17 JR ClrDspBuf1 ;
985
986 ;***********************************************************
987 ; F: Clear display buffer
988 ; D: EA
989 ;
990 028F ClrDspBuf
991 028F 81 17 LD EA,#LDspNul ;
992 0291 EA A6 CALLS LdLDigit ;
993 0293 DB 4D F6 CALL ClearSymbol ;
994 0296 ClrDspBuf1
995 0296 EA 55 CALLS ClearWgtSym ;
996 0298 B9 LD A,#SDsp_Nul ;
997 0299 54 REF RDspSDigit ; Display ?/? Digits
998 029A 55 REF RDsp4LDigit ; Display ???? Digits
999 029B 56 REF RDspSymbol ;
1000 029C C5 RET
1001
1002 ;***********************************************************
1003 ; F: Display Underweight - "----"
1004 ; O: SDigitx_8
1005 ; LDigit1xxx, LDigitx1xx, LDigitxx1x, LDigitxxx1
1006 ;
1007 029D DspUnderWeight
1008 029D 81 16 LD EA,#LDsp__ ;
1009
1010 ;***********************************************************
1011 ; F: Weight Taring Display - "0000"
1012 ; O: SDigitx_8
1013 ; LDigit1xxx, LDigitx1xx, LDigitxx1x, LDigitxxx1
1014 ;
1015 029F DspWeightTare
1016 029F 81 00 LD EA,#LDsp_0 ;
1017 02A1 EA A6 CALLS LdLDigit ;
1018 02A3 02 JR ClrDspBuf1 ;
1019
1020 ;***********************************************************
1021 ; F: Display "8888"
1022 ; O: LDigit1xxx, LDigitx1xx, LDigitxx1x, LDigitxxx1
1023
1024 02A4 LdLDig8888
1025 02A4 81 08 LD EA,#LDsp_8 ;
1026
1027 ;***********************************************************
1028 ; F: Load EA into 4 Large digit buffer
1029 ; I: EA
1030 ; O: LDigitxxx1 = LDigitxx1x = LDigitx1xx = LDigit1xxx = EA
1031 ;
1032 02A6 LdLDigit
1033 02A6 34 REF RLD_LDIGxxx1EA ;
1034 02A7 35 REF RLD_LDIGxx1xEA ;
1035 02A8 LdLDigit1
1036 02A8 CD 52 LD LDigitx1xx,EA ;
1037 02AA CD 54 LD LDigit1xxx,EA ;
1038 02AC E2 27 BTSF UdrWtNow ; if underweight now,
1039 02AE 81 17 LD EA,#LDspNul ; dsp decimal digit to nothing.
1040 02B0 CD 4C LD LDigit___1,EA ;
1041 02B2 C5 RET
1042
1043 ;***********************************************************
1044 ; F: Initialize Mode Setting
1045 ; I: FactoryMode = 0..15 Mode
1046 ; UnitMode = 0(kg), 1(lb)
1047 ; OperFlag5.3,2 = 0: g(Default); 1 = oz; 2 = ml; 3 = fl.oz
1048 ; O: Step1, Step2, Bound1, Bound2
1049 ; gRatio, oz1_8Ratio, ozRatio, lbRatio
1050 ;
1051 02B3 SetFactoryMode
1052 02B3 8C 45 LD A,FactoryMode
1053 02B5 E2 20 BTSF UnitMode
1054 02B7 92 C1 JPS Set_oz_Mode
1055
1056 02B9 Set_g_Mode
1057 02B9 D9 3F LD Y,#3 ;
1058 02BB 83 AA LD HL,#Mode_g_1_8 ;
1059 02BD EA D0 CALLS SetFactory1 ;
1060 02BF 92 CF JPS SetFactoryModeE ;
1061
1062 02C1 Set_oz_Mode
1063 02C1 D9 6F LD Y,#6 ;
1064 02C3 83 C2 LD HL,#Mode_lb_1_8 ;
1065 02C5 EA D0 CALLS SetFactory1 ;
1066 02C7 EA DC CALLS SetFactory2 ;
1067 02C9 F3 20 BTST SolLiqMode ;
1068 02CB 92 CF JPS SetFactoryModeE ;
1069
1070 02CD Set_floz_code
1071 02CD EA DF CALLS SetFactory3 ;
1072
1073 02CF SetFactoryModeE
1074 02CF C5 RET
1075
1076 ;------------------------------------------------------------------
1077 02D0 SetFactory1
1078 02D0 30 REF RLD_E0 ; Only have 0..15 mode
1079 02D1 EC 19 CALLS HexMul ;
1080 02D3 E6 RCF ;
1081 02D4 33 REF RADC_EAHL ; EA = Start addr of mode data
1082 02D5 26 REF RLD_WXEA ;
1083 02D6 83 96 LD HL,#Step1 ;
1084 02D8 52 REF RStoreWordCode ; Store Step1
1085 02D9 52 REF RStoreWordCode ; Store Boundary1
1086 02DA 53 REF RStoreByteCode ; Store Unit count
1087 02DB C5 RET
1088
1089 02DC SetFactory2
1090 02DC 52 REF RStoreWordCode ; Store Unit count (1 oz)
1091 02DD 52 REF RStoreWordCode ; Store Unit count (1 lb)
1092 02DE C5 RET
1093
1094 02DF SetFactory3
1095 02DF 83 9A LD HL,#Bound1 ;
1096 02E1 52 REF RStoreWordCode ; Store fl.oz boundaries
1097 02E2 C5 RET
1098
1099 ;***********************************************************
1100 ; F: Delay routine
1101 ; I: EA = ? x 10 ms
1102 ;
1103 02E3 81 01 Dly1 LD EA,#1 ;
1104 02E5 81 02 Dly2 LD EA,#2 ;
1105 02E7 81 14 Dly20 LD EA,#20 ;
1106 02E9 81 3C Dly60 LD EA,#60 ;
1107 02EB 81 C8 Dly200 LD EA,#200 ;
1108 02ED 81 FA Dly250 LD EA,#250 ;
1109 02EF DB 4A A5 CALL Delay10ms ;
1110 02F2 C5 RET
1111
1112 ;***********************************************************
1113 ; F: Calculate Step value
1114 ; I: UnitCnt, Step1, Step2
1115 ; O: EA = Step value
1116 ; HexCalFlg = 1
1117 ; N: Step value = Step count / Unit count / 10
1118 ; Step value = 1byte
1119 ; For mode 6 & 15, Step value = Step / Unit count
1120 ;
1121 02F3 CalStepVal
1122 02F3 2B PUSH HL
1123
1124 02F4 85 64 LD WX,#YS_F_REG_4 ;
1125 02F6 62 REF RCurStep2Ary ;
1126 02F7 CE 9E LD EA,UnitCnt ; Step VaLue = Step count / Unit count
1127 02F9 83 74 LD HL,#YS_L_REG_4 ;
1128 02FB 50 REF RByteAry ;
1129 02FC 36 REF RDiv_YS ;
1130
1131 ; LD A,FactoryMode ;
1132 ; CPSE A,#5 ; if mode 6 - g mode, skip RDiv_10_FReg
1133 ; JR CalStepVal0 ;
1134 ; BTSF UnitMode ;
1135 ; JR CalStepVal1 ;
1136 ; JR CalStepVal2 ;
1137 ;CalStepVal0
1138 ;CPSE A,#0 ; if mode 0 - g mode, skip RDiv_10_FReg
1139 ; DECS A
1140 ; JR CalStepVal1 ;
1141 ; BTST UnitMode ;
1142 ;CalStepVal1
1143 02FD 8C 45 LD A,FactoryMode ;
1144 02FF 48 DECS A
1145 0300 13 JR CalStepVal1
1146 0301 E2 20 BTSF UnitMode ;
1147 0303 11 JR CalStepVal2 ; if mode 0 - lb mode, skip RDiv_10_FReg
1148 0304 CalStepVal1
1149 0304 41 REF RDiv_10_FReg ;
1150 0305 CalStepVal2
1151 0305 37 REF RRound_YS ;
1152
1153 0306 8C 63 LD A,YS_F_REG_3 ;
1154 0308 DD 01 LD E,A ;
1155 030A 8C 64 LD A,YS_F_REG_4 ;
1156
1157 030C 2A POP HL
1158 030D C5 RET
1159
1160 ;====== INITIALIZATION =============================================
1161
1162 ;***********************************************************
1163 ; F: Display 8888 7/8 On screen
1164 ;
1165 030E ADInitSc
1166 030E EA A4 CALLS LdLDig8888 ;
1167 0310 55 REF RDsp4LDigit ; Display 8888 Digits
1168
1169 0311 8C 45 LD A,FactoryMode ;
1170 0313 48 DECS A ; For mode 8, display "8888"
1171 0314 11 JR ADInitSc1 ;
1172 0315 C5 RET ;
1173
1174 0316 ADInitSc1
1175 0316 B7 LD A,#SDsp_7_8 ; Display 7/8 Digits
1176 0317 54 REF RDspSDigit ; for mode 1-7
1177 0318 C5 RET
1178
1179 ;***********************************************************
1180 ; F: Initial A/D Convertor using dual slope integrator
1181 ; O: SMB = Variable_Bank
1182 ; N: If STOPCNT_PIN(Pt C on sch.) is high,
1183 ; set DISCHARGE_PIN(Pt A on sch.) to high and vice versa.
1184 ; Display " EE" when error.
1185 ; D: EA, HL
1186 ;
1187 0319 EC CB ADInit CALLS RL_ZRT ;
1188 031B 22 REF RSMB_LCD ;
1189 031C C0 F8 BITR KEYROW1_PIN ; Turn on keymap row 1
1190
1191 031E 21 REF RSMB_MemMapIO ;
1192 031F F9 C1 BTST STOPCNT_PIN ;
1193 0321 1B JR ADInit_2 ;
1194 0322 22 REF RSMB_LCD ;
1195 0323 C1 FB BITS DISCHARGE_PIN ; Set discharging when STOPCNT_PIN is high
1196 0325 ADInit_1
1197 0325 EB 4D CALLS ChkADInitErr ;
1198 0327 E9 25 CALLS ChkOffButton ;
1199 ;-----v Remark to bypass A/D circuitry v-----
1200 0329 21 REF RSMB_MemMapIO ;
1201 032A F8 C1 BTSF STOPCNT_PIN ; Loop until STOPCNT_PIN is low
1202 032C 08 JR ADInit_1 ;
1203 ;-----^ ------------------------------ ^-----
1204
1205 032D ADInit_2
1206 032D 22 REF RSMB_LCD ;
1207 032E C0 FB BITR DISCHARGE_PIN ; Set Charging when STOPCNT_PIN is high
1208 0330 ADInit_3
1209 0330 EB 4D CALLS ChkADInitErr ;
1210 0332 E9 25 CALLS ChkOffButton ;
1211 ;-----v Remark to bypass A/D circuitry v-----
1212 0334 21 REF RSMB_MemMapIO ;
1213 0335 F9 C1 BTST STOPCNT_PIN ; Loop until STOPCNT_PIN is high
1214 0337 08 JR ADInit_3 ;
1215 ;-----^ ------------------------------ ^-----
1216
1217 0338 ADInit_6
1218 0338 20 REF RSMB_Variable ;
1219 0339 81 57 LD EA,#DischargeDelay
1220 033B CD 5E LD CntTCNT,EA ; Reload CntTCNT
1221 033D D0 21 BITR CntPeriodNow ;
1222
1223 033F 21 REF RSMB_MemMapIO ;
1224 0340 F1 90 BITS TCRESTART ; Clear TCNT0, IRQT0 & TOL0 & resume counting immediately
1225 0342 FF 9C BITS IET0 ; Enable Timer/Counter Interrupt Request(INTT0)
1226
1227 0344 FE 8E BITR IRQ0 ; Clear INT0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -