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

📄 testn8.lst

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