📄 sam2t.l
字号:
237 00 30 HexBuf0 .equ 030h ; most msb
238 00 31 HexBuf1 .equ 031h ;
239 00 32 HexBuf2 .equ 032h ;
240 00 33 HexBuf3 .equ 033h ; most lsb
241
242 00 40 DecBuf .equ 040h ; Max 5-digit BCD
243 00 40 DecBuf0 .equ 040h ; most msb
244 00 41 DecBuf1 .equ 041h ;
245 00 42 DecBuf2 .equ 042h ;
246 00 43 DecBuf3 .equ 043h ;
247 00 44 DecBuf4 .equ 044h ; most lsb
248
249 ; the followings variables need a fixed address
250 00 4C LDigit___1 .equ 4ch ; LCD Large Digit dsp for decimal place(1B)
251 00 4E LDigitxxx1 .equ 4eh ; LCD Large Digit dsp value(1B)
252 00 50 LDigitxx1x .equ 50h ; LCD Large Digit dsp value(1B)
253 00 52 LDigitx1xx .equ 52h ; LCD Large Digit dsp value(1B)
254 00 54 LDigit1xxx .equ 54h ; LCD Large Digit dsp value(1B)
255 00 55 LDigit1xxxH .equ 055h
256
257 ; for arithmetic calculation
258 00 60 YS_F_REG .equ 060h
259 00 60 YS_F_REG_0 .equ 060h ; most msb
260 00 61 YS_F_REG_1 .equ 061h ;
261 00 62 YS_F_REG_2 .equ 062h ;
262 00 63 YS_F_REG_3 .equ 063h ;
263 00 64 YS_F_REG_4 .equ 064h ; most lsb
264
265 00 70 YS_L_REG .equ 070h
266 00 70 YS_L_REG_0 .equ 070h ; most msb
267 00 71 YS_L_REG_1 .equ 071h ;
268 00 72 YS_L_REG_2 .equ 072h ;
269 00 73 YS_L_REG_3 .equ 073h ;
270 00 74 YS_L_REG_4 .equ 074h ; most lsb
271
272 00 80 YS_R_REG .equ 080h
273 00 80 YS_R_REG_0 .equ 080h ; most msb
274 00 81 YS_R_REG_1 .equ 081h ;
275 00 82 YS_R_REG_2 .equ 082h ;
276 00 83 YS_R_REG_3 .equ 083h ;
277 00 84 YS_R_REG_4 .equ 084h ; most lsb
278
279 ; the followings variables need a fixed address
280 00 90 NewWeightBCD .equ 090h ; New Weight obtained from AverageCount(2B)
281 00 90 NewWeightBCD0 .equ 090h ; most msb
282 00 91 NewWeightBCD1 .equ 091h ;
283 00 92 NewWeightBCD2 .equ 092h ;
284 00 93 NewWeightBCD3 .equ 093h ;
285 00 94 NewWeightBCD4 .equ 094h ; most lsb
286
287
288 ; the followings variables need a fixed address
289 00 96 Step1 .equ 096h ; 1st region dsp step(2B) - multipied by 10
290 00 9A Bound1 .equ 09Ah ; 1st Boundary of weighting display(2B)
291 00 9A MaxBound .equ 09Ah ; MaxBound
292 00 9E UnitCnt .equ 09Eh ; Unit count value(1B)
293 00 9E gRatio .equ 09Eh ; - 1g count ratio
294 00 9E oz1_8Ratio .equ 09Eh ; - 1/8oz count ratio
295 00 A0 ozRatio .equ 0A0h ; 1oz count ratio(2B)
296 00 A4 lbRatio .equ 0A4h ; 1lb count ratio(2B)
297
298 ;-----------------------------
299 00 A8 TimeoutTmr .equ 0A8h ; (1N) communication timeout timer 183*3 ms
300
301 .list on
302
303 ;-----------------
304 00 01 VerD1 .equ 1
305 00 08 VerD2 .equ 8
306
307 ;----------------------------------------------------------------------------
308
309 0000 .origin VectorTable
310 0000 ResetVector
311 0000 8B 86 VENT0 1,0,Reset ; Reset Vector
312 0002 C0 8D VENT1 1,1,INTB_Int ;
313 0004 C1 2F VENT2 1,1,INT0_Int ;
314 0006 C0 80 VENT3 1,1,INT1_Int ;
315 000A ORG 00ah ;
316 000A C1 89 VENT5 1,1,INTT0_Int ;
317
318 ;----------------------------------------------------------------------------
319 ;
320 000C .origin Main1Loop
321
322 ;----------------------------------------------------------------------------
323 000C DD 66 IRETSB POP SB
324 000E D5 IRET
325 ;----------------------------------------------------------------------------
326 000F 2A RETHLEA POP HL
327 0010 28 POP EA
328 0011 C5 RET
329 ;----------------------------------------------------------------------------
330 0012 RETWXHLEA
331 0012 2C POP WX
332 0013 2A POP HL
333 0014 28 POP EA
334 0015 C5 RET
335 ;----------------------------------------------------------------------------
336 0016 RETYZWXHLEA
337 0016 2E POP YZ
338 0017 2C POP WX
339 0018 2A POP HL
340 0019 28 POP EA
341 001A C5 RET
342
343 ;***********************************************************
344 ; F: Copy Buf to Buf from xyH to x0H where x & y are any hex num
345 ; I: HL = Destination Buf(Buf end pointer)
346 ; WL = Source Buf(Buf end pointer)
347 ; O: HL = Duplicated Buf
348 ; D: A, HL
349 ;
350 001B 8F CpyBuf LD A,@WL ;
351 001C 7B XCHD A,@HL ;
352 001D 0D JR CpyBuf ;
353 001E C5 RET
354
355 ;----------------------------------------------------------------------------
356 ;
357 0020 .origin LookupTable
358
359 0020 DD 40 RSMB_Variable SMB VariableBank
360 0022 DD 4F RSMB_MemMapIO SMB MemMapIOBank
361 0024 DD 41 RSMB_LCD SMB LCDBank
362
363 0026 82 RINCS_2HL INCS HL ;
364 0027 82 INCS HL ;
365 0028 DC DA RDECS_HL DECS HL ;
366 002A DC F2 RLD_HLEA LD HL,EA ;
367 002C DC F4 RLD_WXEA LD WX,EA ;
368 002E 81 00 RLD_EA0 LD EA,#0 ;
369 0030 D9 09 RLD_E0 LD E,#0 ;
370 0032 D9 00 RCPSE_A0 CPSE A,#0 ;
371 0034 DC EA RCPSE_EAHL CPSE EA,HL ;
372 0036 DC AA RADC_EAHL ADC EA,HL ;
373
374
375 0038 CD 4E RLD_LDIGxxx1EA LD LDigitxxx1,EA
376 003A CD 50 RLD_LDIGxx1xEA LD LDigitxx1x,EA
377
378 003C 44 24 RDiv_YS TCALL Div_YS
379 003E 44 6A RRound_YS TCALL Round_YS
380 0040 49 68 RMul_10_FReg TCALL Mul_10_FReg
381 0042 49 71 RDiv_10_FReg TCALL Div_10_FReg
382 0044 44 14 RDouble_YS TCALL Double_YS
383
384 0046 49 78 RCmpHex TCALL CmpHex
385 0048 40 1B RCpyBuf TCALL CpyBuf
386 004A 49 1C RHex2BCD_16 TCALL Hex2BCD_16
387 004C 49 D9 RSubHex TCALL SubHex
388
389 004E 4A 02 RSkipSRC_YZ TCALL SkipSRC_YZ
390 0050 49 40 RByteAry TCALL ByteAry
391 0052 49 48 RWrd2Ary TCALL Wrd2Ary
392 0054 4C F8 RStoreWordCode TCALL StoreWordCode
393 0056 4C F2 RStoreByteCode TCALL StoreByteCode
394
395 0058 4D 38 RDspSDigit TCALL DspSDigit
396 005A 4D 45 RDsp4LDigit TCALL Dsp4LDigit
397 005C 4D 5A RDspSymbol TCALL DspSymbol
398
399 005E 4A 8F RKScanDelay TCALL KScanDelay
400
401 0060 47 F7 RCalWeightCnt TCALL CalWeightCount
402 0062 48 A1 RActCurStp2Ary TCALL ActlCurStep2Ary
403 0064 48 9A RCurStep2Ary TCALL CurStep2Ary
404 0066 48 B0 RSetBnd TCALL SetBnd
405 0068 48 D0 RGetAverageCnt TCALL GetAverageCnt
406 006A 48 14 RAverageSample TCALL AverageSample
407
408 006C 49 02 RNWCnt2FReg TCALL NWCnt2FReg
409 006E 49 08 RHxFReg2Dec TCALL HxFReg2Dec
410 0070 49 11 RCpy_R2FReg TCALL Cpy_R2FReg
411 0072 49 14 RCpy_F2LReg TCALL Cpy_F2LReg
412 0074 4A 42 RPutDec TCALL PutDec
413
414 0076 DD 67 RPush_SB PUSH SB
415
416 0078 00 0F RRET_HLEA TJP RETHLEA
417 007A 00 12 RRET_WXHLEA TJP RETWXHLEA
418 007C 00 16 RRET_YZWXHLEA TJP RETYZWXHLEA
419 007E 00 0C RIRET_SB TJP IRETSB
420
421 ;----------------------------------------------------------------------------
422 ;
423 0080 .origin Main2Loop
424
425 ;----------------------------------------------------------------------------
426 ; F: On/Zero Button(MaB)
427 ; I: WeightTareNow
428 ; O: WeightTareNow
429 ; N: Rising edge when release key(MaB)
430 ; When enter INT1_Int, IS0, IS1 = 1, 0
431 ;
432 0080 INT1_Int
433 0080 FE AE BITR IRQ1 ;
434 0082 FE A0 BITR IS0 ;
435 0084 73 REF RPush_SB ;
436 0085 20 REF RSMB_Variable ;
437 0086 E2 22 BTSF CalibrateOn ;
438 0088 E0 21 BITR CntDspNow ;
439 ; REF RSMB_MemMapIO ;
440 ;INT1_Int1
441 ; BTST ONZERO_PIN
442 ; JR INT1_Int1
443 ; REF RSMB_Variable ;
444 008A F1 21 BITS WeightTareNow ; Set flag to weight tare
445 008C 77 REF RIRET_SB ;
446
447 ;----------------------------------------------------------------------------
448 ; F: INTB Interrupt for Basic Timer Overflow
449 ; N: Interrupt interval = 2.2886.ms
450 ; when enter into INTB_Int, IS0, IS1 = 1, 0
451 008D INTB_Int
452 008D FE 88 BITR IRQB ;
453 008F FE A0 BITR IS0 ;
454
455 0091 73 REF RPush_SB ;
456 0092 DD 53 SRB RegisterINTB ;
457 0094 20 REF RSMB_Variable ;
458
459 0095 E2 22 BTSF CalibrateOn ; If Calibrate On, skip sleep time
460 0097 90 D2 JPS INTB_Int0_2 ; & Timer counting
461
462 0099 CE 36 LD EA,BCNT_1s_M ;
463 009B C9 01 ADS EA,#1 ;
464 009D 90 D0 JPS INTB_Int0_1 ;
465 009F CA 35 INCS BCNT_1s_H ; never skip
466 00A1 C2 35 BTSF BCNT_1s_H.0 ;
467 00A3 90 D0 JPS INTB_Int0_1 ;
468 00A5 INTB_1000ms
469
470 00A5 D3 7F BTST HoldRd ; Check for hold reading in progress
471 00A7 1C JR INTB_IntA ;
472
473 00A8 CA 3F INCS HoldTimer ; Check hold reading timeout
474 00AA 19 JR INTB_IntA ;
475 00AB D0 7F BITR HoldRd ;
476 00AD C0 7F BITR HoldStableChk ;
477 00AF F1 7F BITS HoldNotAllow ; Hold is not allow unless reading change
478 00B1 BC LD A,#HoldChkTime ; Reset timer
479 00B2 89 3F LD HoldTimer,A ;
480 00B4 INTB_IntA
481 00B4 INTB_IntB
482 00B4 E2 25 BTSF AutoOffEn ; Chk Auto-power off enabled or not
483 00B6 90 CB JPS INTB_IntC ; if not, jump
484 00B8 C2 22 BTSF Chge4stepNow ; Chk 4 step changing
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -