⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sam2t.l

📁 用SAM72N9写的电子秤文档
💻 L
📖 第 1 页 / 共 5 页
字号:
  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 + -