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

📄 9821h621.lst

📁 用台湾富晶单片机开发的电子称包括源码和编译器
💻 LST
📖 第 1 页 / 共 5 页
字号:
    FASM v4.02.07

line--addr--code----instruction-------------------------------------

0001                ;Project:  FS9821韩国人体秤
0002                ;FileName: 9821H621.ASM
0003                ;Ver:      H621
0004                ;Body:	   Fortune FS9821
0005                ;Author:   kangguang
0006                ;Modify Date: 2004-10-27
0007                ;韩国人体秤0.9d或1.8d归零;0.4KG以下显示为0;自动关机时间为10秒。
0008                ;==============================================================================
0009                include FS9821.inc		;FS9821特殊功能寄存器定义(00H-7FH)
0010                ;------------------------------------------------------------------------------
0011                ;常数定义
0012                D_DayL		equ 7
0013                D_DayH		equ 2
0014                D_MonthL	equ 0
0015                D_MonthH	equ 1
0016                ;
0017                D_CaliMark	equ	0A5H
0018                ;
0019                D_OverCodeL	        equ	    24H		;超载内码0F424H=62500d
0020                D_OverCodeH	        equ	    0F4H
0021                D_DecimalDigits     equ     01H     ;小数位数=1
0022                
0023                D_P11       equ     02H     ;称重锁定参数:0-7,默认值为2,相当于6613H608中的101H
0024                ;			   =0/1/2/3/4/5/6/7分别对应锁定参数1/4d,1/2d,3/4d,1d,5/4d,3/2d,7/4d,2d
0025                D_P12       equ     02H     ;称重速度参数:0/1/2/3表示连续8/7/6/5个数据接近则锁定
0026                ;                                              相当于6613H608中的102H
0027                D_P20       equ     06H     ;最大分度数:0-9,默认值为“6”,相当于6613H608中的104H
0028                ;		       =0/1/2/3/4/5/6/7/8/9分别对应最大分度数为500/600/800/1000/1200/1360/1500/1800/2000/3000
0029                ;		        对应的量程为50KG/60KG/80KG/100KG/120KG/136KG/150KG/180KG/200KG/300KG
0030                D_P21       equ     01H     ;最小显示分度数:0-9,默认值为“1”,相当于6613H608中的105H
0031                ;			   =0/1/2/3/4/5/6/7/8/9分别对应最小显示分度数为2/4/5/8/10/12/15/20/25/50
0032                ;			    对应的重量为0.2KG/0.4KG/0.5KG/0.8KG/1KG/1.2KG/1.5KG/2KG/2.5KG/5KG
0033                
0034                ;
0035                ;LCD Character table (D7-D0=f、g、e、d、a、b、c、dp)
0036                Lcdch0      equ     10111110B	;"0"
0037                Lcdch1      equ     00000110B	;"1"
0038                Lcdch2      equ     01111100B	;"2"
0039                Lcdch3      equ     01011110B	;"3"
0040                Lcdch4      equ     11000110B	;"4"
0041                Lcdch5      equ     11011010B	;"5"
0042                Lcdch6      equ     11111010B	;"6"
0043                Lcdch7      equ     10001110B	;"7"
0044                Lcdch8      equ     11111110B	;"8"
0045                Lcdch9      equ     11011110B	;"9"
0046                LcdchA      equ     01110111B	;"A"
0047                Lcdchb      equ     11110010B	;"b"
0048                LcdchC      equ     10111000B	;"C"
0049                Lcdchd      equ     01110110B	;"d"
0050                LcdchE      equ     11111000B	;"E"
0051                LcdchF      equ     11101000B	;"F"
0052                LcdNull   	equ     00000000B	;" "
0053                LcdDash     equ     01000000B	;"-"
0054                LcdchL      equ     10110000B	;"L"
0055                Lcdcho      equ     01110010B	;"o"
0056                Lcdchr      equ     01100000B	;"r"
0057                LcdchH      equ     11100110B	;"H"
0058                LcdchP      equ     11101100B	;"P"
0059                Lcdequ      equ     01010000B	;"="
0060                ;I/O
0061                EEPROM		equ		PT2
0062                		VCC	equ		6
0063                		CS	equ		5
0064                		CLK	equ		4
0065                		DI	equ		3
0066                		DO	equ		3
0067                ;------------------------------------------------------------------------------
0068                ;通用RAM定义(80H-0FFH)
0069                R_STATUSbak		equ		80H
0070                R_WORKbak		equ		81H
0071                R_WorkStatus	equ		82H		;D7-D4相当于6613中的46H,D3-D0相当于47H
0072                R_Temp			equ		83H
0073                R_Count			equ		84H		;相当于6613中的6DH
0074                R_PubFlag0		equ		85H
0075                ;			R_PubFlag0.0=1 1/16秒到
0076                ;			R_PubFlag0.1=1 1/2秒到
0077                ;			R_PubFlag0.2=0 1/8秒到
0078                ;			R_PubFlag0.3=1	读到ADC内码
0079                ;			R_PubFlag0.4=1	有效内码
0080                ;			R_PubFlag0.5=1时内码数据稳定,锁定
0081                ;			R_PubFlag0.6=1 零点(内码)稳定
0082                ;			R_PubFlag0.7=1 已经找到稳定零点,零点内码未保存
0083                R_PubFlag1		equ		86H
0084                ;			R_PubFlag1.0=1 表示"TARE"键按下5秒
0085                ;			R_PubFlag1.1=1 称重数据锁定
0086                ;			R_PubFlag1.2=1 
0087                ;			R_PubFlag1.3=1 减法结果为负数
0088                ;			R_PubFlag1.4=1 超载
0089                ;           R_PubFlag1.5=0/1 计量单位=Kg/lb
0090                ;           R_PubFlag1.6=1 当前零点内码<标定零点内码(计算重量时用)
0091                ;			R_PubFlag1.7=1 Timer中断
0092                R_PubReg0		equ		87H		;相当于6613中的69H:68H
0093                R_PubReg1		equ		88H		;相当于6613中的6BH:6AH
0094                R_PubReg2		equ		89H		;相当于6613中的61H:60H
0095                R_PubReg3		equ		8AH		;相当于6613中的63H:62H
0096                R_PubReg4		equ		8BH		;相当于6613中的65H:64H
0097                R_PubReg5		equ		8CH		;相当于6613中的67H:66H
0098                R_PubCnt0		equ		8DH		;相当于6613中的6CH
0099                R_PubCnt1		equ		8EH		;相当于6613中的49H:48H
0100                R_PubCnt2		equ		8FH		;相当于6613中的5FH:5EH
0101                R_PubCnt3		equ		90H		;相当于6613中的6FH:6EH
0102                R_TimerCnt		equ		91H		;计时用(单位:1/8秒),相当于6613中的2BH:2AH
0103                R_KeyStatus		equ		92H		;按键状态,D0-D2分别对应"OFF"、"UNIT"、"TARE"键,=1时键按下
0104                ;								;R_KeyStatus.4=1 表示按键状态已保存
0105                ;								;R_KeyStatus.5=1 表示按键时间已到2秒
0106                ;								;R_KeyStatus.6=1 表示按键时间已到5秒或20秒
0107                ;								;R_KeyStatus.7==1	表示按键状态稳定
0108                R_KeyCode		equ		93H		;键码,D2:D0=100/101/110/111分别对应"OFF"/"UNIT"/"TARE"/多键
0109                ;								;D3=1 按键释放,=0按键处于按下状态
0110                ;								;D4=表示按键长时间按下或长时间按下过
0111                R_KeyTimer1		equ		94H		;按键计时,相当于6613中的41H
0112                R_KeyTimer2		equ		95H		;按键计时,相当于6613中的45H:44H
0113                R_AdcSumL		equ		96H		;ADC内码之和低字节(用于平均)
0114                R_AdcSumM		equ		97H		;ADC内码之和中间字节(用于平均)
0115                R_AdcSumH		equ		98H		;ADC内码之和高字节(用于平均)
0116                R_AdcDataCnt	equ		99H		;ADC输出数据计数(计到8次时平均)
0117                R_LastAverageL	equ		9AH		;最近X次的内码的平均值低字节,X=1-8,相当于6613中的0C1H:0C0H
0118                R_LastAverageH	equ		9BH		;最近X次的内码的平均值高字节,X=1-8,相当于6613中的0C3H:0C2H
0119                R_DifferenceL	equ		9CH		;锁定判断的累计差值低字节,相当于6613H618中的0F1H:0F0H
0120                R_DifferenceH	equ		9DH		;锁定判断的累计差值高字节,相当于6613H618中的0F3H:0F2H
0121                R_ZeroCodeL		equ		9EH	    ;零点内码低字节,相当于6613中的0CDH:0CCH
0122                R_ZeroCodeH		equ		9FH	    ;零点内码高字节,相当于6613中的0CFH:0CEH
0123                R_LockWeightL	equ		0A0H	;锁定的称重数据低字节,相当于6613H608中的0C5H:0C4H
0124                R_LockWeightH	equ		0A1H	;锁定的称重数据高字节,相当于6613H608中的0C7H:0C6H
0125                R_SteadyCnt		equ		0A2H	;稳定次数,判断锁定用,相当于6613H618中的5DH
0126                R_2dWeightCnt   equ     0A3H    ;称重0.2KG以下计次
0127                R_OffTimerL     equ     0A4H    ;自动关机时间倒计时低字节(单位:秒)
0128                R_OffTimerH     equ     0A5H    ;自动关机时间倒计时高字节(单位:秒),D7=1不自动关机。
0129                R_TmpPubReg0	equ	    0A6H    ;计算重量中暂存R_PubReg0的数据
0130                R_TmpPubReg1	equ	    0A7H    ;计算重量中暂存R_PubReg1的数据
0131                R_TmpPubReg2	equ	    0A8H    ;计算重量中暂存R_PubReg2的数据
0132                R_TmpPubReg3	equ	    0A9H    ;计算重量中暂存R_PubReg3的数据
0133                R_BattLowCnt    equ     0AAH    ;电池低电压计数
0134                
0135                ;
0136                R_DispMode		equ		0C9H	;显示模式:D1:D0=0-3位小数;D2=0/1不显示计量单位/显示计量单位;
0137                ;										   D3=0/1显示为10进制方式/显示为16进制数或提示信息
0138                R_DispBuff0		equ		0CAH	;对应LCD上5位7段码数据的最低位
0139                R_DispBuff1		equ		0CBH	;对应LCD上5位7段码数据的十位
0140                R_DispBuff2		equ		0CCH	;对应LCD上5位7段码数据的百位
0141                R_DispBuff3		equ		0CDH	;对应LCD上5位7段码数据的千位
0142                R_DispBuff4		equ		0CEH	;对应LCD上5位7段码数据的最高位
0143                R_DispFlag		equ		0CFH	;D7-D0分别对应LCD上的kg、lb、g、oz、锁符、负号、COL1、电池符号
0144                ;
0145                R_CaliPara      equ     0D0H    ;标定数据起始地址
0146                R_CaliCode0L	equ	    0D1H 	;零点的标定内码低字节
0147                R_CaliCode0H	equ	    0D2H 	;零点的标定内码高字节
0148                R_CaliCode1L	equ	    0D3H 	;40KG的标定内码低字节
0149                R_CaliCode1H	equ	    0D4H 	;40KG的标定内码高字节
0150                R_CaliCode2L	equ	    0D5H 	;80KG的标定内码低字节
0151                R_CaliCode2H	equ	    0D6H 	;80KG的标定内码高字节
0152                R_CaliData1L	equ	    0D7H 	;40KG标定数据低字节
0153                R_CaliData1H	equ	    0D8H 	;40KG标定数据高字节
0154                R_CaliData2L	equ	    0D9H 	;80KG标定数据低字节
0155                R_CaliData2H	equ	    0DAH 	;80KG标定数据高字节
0156                R_CaliData3L	equ	    0DBH 	;120KG标定数据低字节
0157                R_CaliData3H	equ	    0DCH 	;120KG标定数据高字节
0158                R_CaliFlag	    equ		0DDH	;已标定内码标志,=0A5H为有效
0159                R_CaliChksumL	equ		0DEH	;标定数据校验和低字节
0160                R_CaliChksumH	equ		0DFH	;标定数据校验和高字节
0161                ;
0162                
0163                
0164                
0165                ;
0166                
0167                R_LockCodeNum	equ		0E2H	;锁定所有的连续有效数据个数最大值,相当于6613H618中的0E9H
0168                R_OffsetCode	equ		0E3H	;锁定判断的内码值,相当于6613H618中的0F5H:0F4H
0169                R_10dCodeL		equ		0E4H	;10d内码的低字节,相当于6613H618中的0EDH:0ECH
0170                R_10dCodeH		equ		0E5H	;10d内码的高字节,相当于6613H618中的0EFH:0EEH
0171                R_MaxScaleMarkL	equ		0E6H	;最大分度数(+9)低字节
0172                R_MaxScaleMarkH	equ		0E7H	;最大分度数(+9)高字节
0173                
0174                R_UnitData0		equ		0EAH	;1d对应的不同计量单位的值(有效数字)低字节
0175                R_UnitData1		equ		0EBH	;1d对应的不同计量单位的值(有效数字)高字节
0176                R_UnitData2		equ		0ECH	;1d对应的不同计量单位的值(浮点数)的2的指数,≥80H为负数
0177                R_AdcDataL		equ		0EDH	;暂存ADC输出数据低字节
0178                R_AdcDataH		equ		0EEH	;暂存ADC输出数据高字节
0179                R_CodePointer	equ		0EFH	;内码存储指针
0180                R_CodeBuffer	equ		0F0H	;内码缓存0F0H-0FFH共8组16字节
0181                ;==============================================================================
0182                ;			Program start
0183                ;==============================================================================
0184                			org		000H
0185  0000  A01C    			GOTO	L_Start		;程序开始(RESET入口)
0186                			org		004H
0187                ;			GOTO	L_IntProc	;中断服务程序
0188                L_IntProc:
0189  0004  2281    			MOVWF	R_WORKbak	;[WORK]->R_WORKbak
0190  0005  2004    			MOVFW	STATUS
0191  0006  2280    			MOVWF	R_STATUSbak	;[STATUS]->R_STATUSbak
0192  0007  E406          		BTFSC   INTF,ADIF
0193  0008  A00E          		GOTO    L_AdcInt		;ADC中断,转
0194  0009  F806          		BTFSS   INTF,TMIF
0195  000A  A018          		GOTO	L_IntProcEnd	;不是Timer中断,转
0196  000B  C806    			BCF		INTF,TMIF		;清Timer中断标志
0197  000C  DE86          		BSF		R_PubFlag1,7	;1->R_PubFlag1.7 置Timer中断标志
0198  000D  A018          		GOTO	L_IntProcEnd
0199                L_AdcInt:
0200  000E  C406    			BCF		INTF,ADIF		;清ADC中断标志
0201  000F  2011    			MOVFW	ADOL
0202  0010  22ED    			MOVWF	R_AdcDataL		;[ADOL]->R_AdcDataL
0203  0011  2010    			MOVFW	ADOH
0204  0012  22EE    			MOVWF	R_AdcDataH		;[ADOH]->R_AdcDataH
0205  0013  4009    			MOVLW	09H				;\
0206  0014  06ED    			ADDWF	R_AdcDataL,1	; | [R_AdcDataH:R_AdcDataL]+3D09H(15625)
0207  0015  403D    			MOVLW	3DH				; | ->R_AdcDataH:R_AdcDataL (转换为正数内码)
0208  0016  26EE    			ADDWFC	R_AdcDataH,1	;/
0209  0017  D685    			BSF		R_PubFlag0,3	;读到ADC内码
0210                L_IntProcEnd:
0211  0018  2080    			MOVFW	R_STATUSbak
0212  0019  2204    			MOVWF	STATUS		;[R_STATUSbak]->STATUS
0213  001A  2081    			MOVFW	R_WORKbak	;[R_WORKbak]->WORK
0214  001B  0002    			RETFIE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -