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