亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? snt-c485.asm

?? 抄錄符合DL/T645-1997的電表
?? ASM
?? 第 1 頁 / 共 4 頁
字號(hào):
;############################################################
;文件名:  IR-485.ASM
;文件說明:本程序?yàn)殡姳聿杉?;功能: 1. 遵循電力部DL/T645-1998協(xié)議,通過RS485總線,采集并存儲(chǔ)
;         電表的數(shù)據(jù)通過無線(紅外)進(jìn)行數(shù)據(jù)通訊.
;       2. 設(shè)置采集器地址
;       3. 增加、刪除電表地址
;       4. 讀、寫電表地址
;       5. 自動(dòng)、人工采集數(shù)據(jù)
;	6. 數(shù)據(jù)上傳功能.
;############################################################

SCMD		EQU	0A0H
RCMD		EQU	0A1H
WDTC		EQU	8FH
;***********************************
;寄存器分配表
;***********************************
CK_ADDR6	EQU	27H	;采集器地址最高字節(jié)
CK_ADDR5	EQU	28H
CK_ADDR4	EQU	29H
CK_ADDR3	EQU	2AH
CK_ADDR2	EQU	2BH
CK_ADDR1	EQU	2CH
CK_ADDR0	EQU	2DH	;采集器地址最低字節(jié)
ADDR6		EQU	2EH	;接收命令時(shí)暫存采集器地址最高字節(jié)
ADDR5		EQU	2FH
ADDR4		EQU	30H
ADDR3		EQU	31H
ADDR2		EQU	32H
ADDR1		EQU	33H
ADDR0		EQU	34H	;接收命令時(shí)暫存采集器地址最低字節(jié)
BADD5		EQU	35H	;接收命令時(shí)暫存表地址最高字節(jié)
BADD4		EQU	36H
BADD3		EQU	37H
BADD2		EQU	38H
BADD1		EQU	39H
BADD0		EQU	3AH	;接收命令時(shí)暫存表地址最低字節(jié)
DBADR5		EQU	3BH	;表地址最高字節(jié)
DBADR4		EQU	3CH
DBADR3		EQU	3DH
DBADR2		EQU	3EH
DBADR1		EQU	3FH
DBADR0		EQU	40H	;表地址最低字節(jié)
;41H--55H	讀寫緩沖區(qū)
;5DH--5FH	延時(shí)寄存器
YSRES1		EQU	5DH
YSRES2		EQU	5EH
YSRES3		EQU	5FH
COMMTYPE	EQU	60H	;接收命令類型
RECCNT		EQU	61H	;接收字節(jié)序號(hào)
SERNO		EQU	62H	;暫存接收命令時(shí)采集器的序列號(hào)
SER		EQU	63H	;采集器的序列號(hào)
DBSHU		EQU	64H	;采集器所接的電表數(shù)
TEMP		EQU	65H	;臨時(shí)寄存器
HOUR		EQU	66H	;內(nèi)部時(shí)鐘:時(shí)
MINUTE		EQU	67H	;內(nèi)部時(shí)鐘:分
SECOND		EQU	68H	;內(nèi)部時(shí)鐘:秒
SENDCNT		EQU	69H	;發(fā)送數(shù)據(jù)時(shí)的表序號(hào)
DATA4		EQU	6AH	;電表度數(shù)最高字節(jié)
DATA3		EQU	6BH
DATA2		EQU	6CH
DATA1		EQU	6DH	;電表度數(shù)最低字節(jié)
TIMES		EQU	6EH	;0.05S定時(shí)中斷次數(shù)
CONS		EQU	6FH	;臨時(shí)寄存器
MINLAY_L	EQU	70H	;10S計(jì)數(shù)器
TEMP1		EQU	71H	;臨時(shí)寄存器
TEMP2		EQU	72H	;臨時(shí)寄存器

;****位寄存器標(biāo)志
TIME_SEND	BIT	00H	;定時(shí)發(fā)送時(shí)間到標(biāo)志
SEC_TIME	BIT	01H	;10秒定時(shí)到標(biāo)志
SEND_OK		BIT	02H	;發(fā)送數(shù)據(jù)完成標(biāo)志
CHAOBIAO	BIT	03H	;抄表命令標(biāo)志
DBREAD_F	BIT	04H	;讀單表數(shù)據(jù)標(biāo)志
REC_COMM	BIT	05H	;收到新命令標(biāo)志
ADDR_READ	BIT	06H	;讀表地址標(biāo)志位
ADDR_WR		BIT	07H	;寫表地址標(biāo)志位
EVEN		BIT	08H	;偶校驗(yàn)位
SUCESS		BIT	09H	;讀單表數(shù)據(jù)成功標(biāo)志位
SUCESS1		BIT	0AH	;廣播讀地址成功標(biāo)志位
SUCESS2		BIT	0BH	;寫電表命令成功標(biāo)志
MIN_FLAG	BIT	0CH	;10秒定時(shí)到標(biāo)志
TINT_F		BIT	0DH	;0.05秒定時(shí)到標(biāo)志
ST_YAN		BIT	0EH	;允許10秒定時(shí)開始標(biāo)志
SJYS		BIT	0FH	;發(fā)數(shù)據(jù)時(shí)間到標(biāo)志
YOUBIAO		BIT	11H	;采集器中是否已有表地址標(biāo)志
ZS_OK		BIT	12H	;增刪表號(hào)成功標(biāo)志

WRP		EQU	P1.1
SCL		EQU	P1.2
SDA		EQU	P1.3
TR		EQU	P1.4
WK		EQU	P1.5
TONG_A		EQU	P1.6
TONG_B		EQU	P1.7
;***********************************************
;主程序
;***********************************************

		ORG	0000H
		LJMP	MAIN
		ORG	000BH
		LJMP	TINT0		  ;定時(shí)器0中斷,每200mS中斷1次
		ORG	0023H
		LJMP	ESINT		  ;串口中斷
		ORG	0030H
MAIN:		LCALL	DELAY_1S	  ;上電延時(shí)500ms
		MOV	R0,#08H		  ;清寄存器08H-FFH
		MOV	R2,#0F8H
		MOV	A,#00H
MA1:		MOV	@R0,A
		INC	R0
		DJNZ	R2,MA1
		MOV	SP,#0B0H	  ;注意:寄存器的初始化不能放在寄存器清零之前!
		CLR	WK
		MOV	TCON,#00H
		MOV	T2CON,#30H	  ;T2作波特率發(fā)生器
		MOV	TH2,#0FEH	  ;波特率為1200
		MOV	TL2,#0E0H
		MOV	RCAP2H,#0FEH
		MOV	RCAP2L,#0E0H
		MOV	SCON,#50H	  ;與PC通訊用方式1,1位起始位,8位數(shù)據(jù)位,1位停止位
		MOV	TMOD,#01H	  ;T0設(shè)為定時(shí)方式1
		MOV	TL0,#0		  ;定時(shí)時(shí)間0.05S  f=11.0592M
		MOV	TH0,#4CH	  ;T=11059200*0.05/12=B400H 10000-B400=4C00H
		MOV	WDTC,#0C7H	  ;看門狗寄存器
		MOV	IE,#92H
		SETB	TR0
		SETB	TR2
		MOV	R2,#07H		  ;讀采集器地址
		MOV	R0,#CK_ADDR6
		MOV	DPTR,#0
MA2:		LCALL	READ_1
		MOV	@R0,A
		INC	DPL
		INC	R0
		DJNZ	R2,MA2
		LCALL	READ_1		  ;讀采集器序列號(hào)
		MOV	SER,A
		LCALL	CBSHU		  ;查所接電表數(shù)
		SETB	TONG_B		  ;切換到通道2,無線模塊
		CLR	TONG_A
		SETB	TIME_SEND	  ;上電時(shí)允許發(fā)送
		SETB	ST_YAN		  ;上電時(shí)允許延時(shí)

			;****************以下程序?yàn)槌跏蓟想姇r(shí)的內(nèi)部時(shí)鐘
		MOV	A,CK_ADDR0
		ADD	A,CK_ADDR1
		MOV	B,A
		MOV	A,CK_ADDR0
		ANL	A,#0FH
		ADD	A,B
		MOV	B,A
		MOV	A,CK_ADDR0
		SWAP	A
		ANL	A,#0FH
		ADD	A,B
		MOV	B,A
		MOV	A,CK_ADDR1
		ANL	A,#0FH
		ADD	A,B
		MOV	B,A
		MOV	A,CK_ADDR1
		SWAP	A
		ANL	A,#0FH
		ADD	A,B
		MOV	B,#3CH
		DIV	AB
		MOV	A,B
		MOV	SECOND,A
		MOV	A,CK_ADDR0
		MOV	B,A
		CLR	C
		SUBB	A,#3CH
		JC	MA2A
		MOV	B,A
		SUBB	A,#3CH
		JC	MA2A
		LJMP	MA2B
MA2A:		MOV	A,B
MA2B:		MOV	MINUTE,A
		MOV	A,CK_ADDR0
		ANL	A,#0FH
		MOV	HOUR,A
		MOV	SENDCNT,#00H
		SETB	TIME_SEND
			;*****************初始化時(shí)鐘結(jié)束
MAIN_LOOP:
		MOV	A,WDTC
		ORL	A,#40H
		MOV	WDTC,A		  ;置CLRW位,看門狗重新計(jì)數(shù)
		JB	TIME_SEND,MA3	  ;定時(shí)發(fā)送是否到?
		JNB	CHAOBIAO,MA6	  ;是否抄表?
MA3:		SETB	ST_YAN		  ;定時(shí)發(fā)送到或有抄表命令時(shí)允許10S延時(shí)
		MOV	A,SENDCNT	  ;
		CJNE	A,DBSHU,MA4	  ;是否發(fā)送完
		SETB	SEND_OK		  ;發(fā)送完成,清標(biāo)志位
		CLR	TIME_SEND
		CLR	SJYS
		CLR	ST_YAN
		CLR	CHAOBIAO
		MOV	SENDCNT,#0
		LJMP	MA6
MA4:		JB	MIN_FLAG,MA5	;發(fā)送沒有完成,10秒定時(shí)到嗎?
		LJMP	MA6
MA5:		LCALL	ADRC		;10秒定時(shí)到,采集并發(fā)送數(shù)據(jù)
		LCALL	READ_DB
		LCALL	DATASEND
		CLR	MIN_FLAG
		INC	SENDCNT		;發(fā)送序號(hào)增1
MA6:		JB	REC_COMM,MA7	;是否收到新的命令
		LJMP	MA10
MA7:		JNB	DBREAD_F,MA8	;是否有讀單表數(shù)據(jù)命令
		LCALL	PAN_HAO
		JB	YOUBIAO,MA7A
		SJMP	MA7B
MA7A:		MOV	A,R2
		MOV	SENDCNT,A
		LCALL	READ_DB		;讀數(shù)據(jù)
		LCALL	DATASEND	;返回讀數(shù)據(jù)
MA7B:		CLR	REC_COMM
		CLR	DBREAD_F
		LJMP	MA10
MA8:		JNB	ADDR_READ,MA9	;是否有讀表地址命令
		LCALL	BROD_AD		;讀地址
		LCALL	RET_ADDR	;返回所讀地址
		LJMP	MA10
MA9:		JNB	ADDR_WR,MA10	;是否有寫表地址命令
		LCALL	WRADDR		;寫地址
		LCALL	RET_WR		;返回所寫地址

MA10:		JB	TINT_F,MA11
		LJMP	MAIN_LOOP
MA11:		CLR	TINT_F		;0.05S定時(shí)中斷到標(biāo)志
		INC	TIMES
		MOV	A,TIMES
		CJNE	A,#20,MA12	;判斷是否到1秒
MA12:		JC	MAIN_LOOP
		MOV	TIMES,#0
		MOV	A,SECOND
		ADD	A,#1
		MOV	SECOND,A

		MOV	B,A
		JNB	SJYS,MA13		;判斷隨機(jī)延時(shí)是否到,
		CJNE	A,CONS,MA13		;
		CLR	SJYS			;到,置位定時(shí)發(fā)送標(biāo)志
		MOV	SENDCNT,#0		;
		SETB	TIME_SEND		;
		SETB	ST_YAN			;
MA13:		MOV	A,B			;

		CJNE	A,#60,MA14
MA14:		JC	MA21
		MOV	SECOND,#0

		MOV	A,MINUTE
		ADD	A,#1
		MOV	MINUTE,A

		CJNE	A,#01H,MA17		;0點(diǎn),8點(diǎn),16點(diǎn)的1分后經(jīng)隨機(jī)延時(shí)后發(fā)送數(shù)據(jù)
		MOV	A,HOUR
		ANL	A,#07H
		JNZ	MA21

		MOV	A,TL0			;隨機(jī)延時(shí)
		MOV	B,#3CH			;
		DIV	AB			;
		MOV	CONS,B			;
		SETB	SJYS			;

MA17:
		MOV	A,MINUTE
MA18:		CJNE	A,#60,MA19
MA19:		JC	MA21
		MOV	MINUTE,#0
		MOV	A,HOUR
		ADD	A,#1
		MOV	HOUR,A
		CJNE	A,#24,MA20
MA20:		JC	MA21
		MOV	HOUR,#0
MA21:		LJMP	MAIN_LOOP


;**********************************************
;根據(jù)表序號(hào)找表地址子程序
;**********************************************
ADRC:		MOV	A,SENDCNT
		CJNE	A,#36,ADRC_1	;若電表序號(hào)大于35,則轉(zhuǎn)EEPROM的第2頁
ADRC_1:		JC	ADRC2
		LJMP	ADRC4
ADRC2:		MOV	B,#7
		MOV	A,SENDCNT
		MUL	AB
		MOV	DPL,A		;找到數(shù)據(jù)塊的首址
		INC	DPL		;增1為地址最高位
		MOV	DPH,#1
		MOV	R0,#BADD5
		MOV	R2,#6
ADRC2A:		LCALL	READ_1		;讀出數(shù)據(jù)
		MOV	@R0,A
		INC	R0		;變量增1
		INC	DPL
		DJNZ	R2,ADRC2A
		RET
ADRC4:		MOV	A,SENDCNT	;在頁面2中查找
		CLR	C
		SUBB	A,#36
		MOV	B,#7
		MUL	AB
		MOV	DPL,A		;找到數(shù)據(jù)塊的首址
		INC	DPL		;增1為地址最高位
		MOV	DPH,#2
		MOV	R0,#BADD5
		MOV	R2,#6
ADRC5:		LCALL	READ_1		;讀出數(shù)據(jù)
		MOV	@R0,A
		INC	R0
		INC	DPL
		DJNZ	R2,ADRC5
		RET

;**********************************************
;讀電表數(shù)據(jù)子程序
;讀數(shù)正確,標(biāo)志位SUCESS為1,否則為0
;若讀數(shù)正確,存于DATA4--DATA1中
;**********************************************
READ_DB:	CLR	TONG_A		;切換到RS485通道
		CLR	TONG_B
		CLR	ES		;不允許串口中斷
		MOV	SCON,#0D0H	;串口工作于方式3
			;**********************************
			;以下程序?yàn)椴檎冶淼刂?找到后存于BADD5--BADD0
		MOV	A,SENDCNT	;要發(fā)送的表序號(hào)
		CJNE	A,#36,READ_DB1	;判斷表地址所在的頁面
READ_DB1:	JC	READ_DB2
		LJMP	READ_DB4
READ_DB2:	MOV	B,#7		;頁面1
		MUL	AB
		MOV	DPL,A
		INC	DPL
		MOV	DPH,#1
		MOV	R0,#BADD5
		MOV	R2,#6
READ_DB3:	LCALL	READ_1
		MOV	@R0,A
		INC	R0
		INC	DPL
		DJNZ	R2,READ_DB3
		LJMP	READ_DB6
READ_DB4:	MOV	A,SENDCNT	;頁面2
		CLR	C
		SUBB	A,#36
		MOV	B,#7
		MUL	AB
		MOV	DPL,A
		INC	DPL
		MOV	DPH,#2
		MOV	R0,#BADD5
		MOV	R2,#6
READ_DB5:	LCALL	READ_1
		MOV	@R0,A
		INC	R0
		INC	DPL
		DJNZ	R2,READ_DB5
			;*******************************
			;*******************************
			;以下為發(fā)送命令程序
READ_DB6:	SETB	TR		;發(fā)送允許
		LCALL	DBS_COLL	;整理要發(fā)送的命令
		MOV	SBUF,#0FEH	;發(fā)送前導(dǎo)符
		SETB	TB8		;
READ_DB7:	JBC	TI,READ_DB8
		LJMP	READ_DB7
READ_DB8:	MOV	R2,#14
		MOV	R0,#41H		;發(fā)送的命令存于41H--4EH
READ_DB8A:	MOV	A,@R0
		LCALL	EVENJ		;偶校驗(yàn)
		JB	EVEN,READ_DB9
		CLR	TB8
		LJMP	READ_DBA
READ_DB9:	SETB	TB8
READ_DBA:	MOV	A,@R0
		INC	R0
		MOV	SBUF,A
READ_DBB:	JBC	TI,READ_DBC
		LJMP	READ_DBB
READ_DBC:	DJNZ	R2,READ_DB8A	;是否發(fā)送完畢
			;命令發(fā)送完畢
			;*******************************
			;*******************************
			;以下為接收電表返回?cái)?shù)據(jù)程序
		CLR	TR		;開始接收
READ_DBCA:	MOV	YSRES1,#02H	;500MS延時(shí)
READ_DBD:	MOV	YSRES2,#0E0H
READ_DBE:	MOV	YSRES3,#0
READ_DBF:	JBC	RI,READ_DBG
		DJNZ	YSRES3,READ_DBF
		DJNZ	YSRES2,READ_DBE
		DJNZ	YSRES1,READ_DBD
RBFA:		LJMP	ERR		;若500MS內(nèi)沒有接收到有效數(shù)據(jù),出錯(cuò)處理
READ_DBG:	MOV	A,SBUF
		MOV	TEMP,A
		LCALL	EVENJ
		JB	EVEN,READ_DBH
		JB	RB8,RBFA	;偶校驗(yàn)錯(cuò),出錯(cuò)處理
		LJMP	READ_DBI
READ_DBH:	JNB	RB8,RBFA	;偶校驗(yàn)錯(cuò),出錯(cuò)處理
READ_DBI:	MOV	A,TEMP
		CJNE	A,#68H,READ_DBCA;判斷起始符
		MOV	R3,#68H
		MOV	R2,#15
		MOV	R0,#42H

READ_DBJ:	MOV	YSRES1,#02H	;500MS延時(shí)
READ_DBK:	MOV	YSRES2,#0E0H
READ_DBL:	MOV	YSRES3,#0
READ_DBM:	JBC	RI,READ_DBN
		DJNZ	YSRES3,READ_DBM
		DJNZ	YSRES2,READ_DBL
		DJNZ	YSRES1,READ_DBK
RBFB:		LJMP	ERR		;若500MS內(nèi)沒有接收到有效數(shù)據(jù),出錯(cuò)處理
READ_DBN:	MOV	A,SBUF
		MOV	TEMP,A
		LCALL	EVENJ
		JB	EVEN,READ_DBO
		JB	RB8,RBFB	;偶校驗(yàn)錯(cuò),出錯(cuò)處理
		LJMP	READ_DBP
READ_DBO:	JNB	RB8,RBFB	;偶校驗(yàn)錯(cuò),出錯(cuò)處理
READ_DBP:	MOV	A,TEMP
		MOV	@R0,A
		INC	R0
		ADD	A,R3
		MOV	R3,A
		DJNZ	R2,READ_DBJ
				;以下判斷校驗(yàn)和
		MOV	YSRES1,#02H	;500MS延時(shí)
READ_DBQ:	MOV	YSRES2,#0E0H
READ_DBR:	MOV	YSRES3,#0
READ_DBS:	JBC	RI,READ_DBT
		DJNZ	YSRES3,READ_DBS
		DJNZ	YSRES2,READ_DBR
		DJNZ	YSRES1,READ_DBQ
RBFC:		LJMP	ERR		;若500MS內(nèi)沒有接收到有效數(shù)據(jù),出錯(cuò)處理
READ_DBT:	MOV	A,SBUF
		MOV	TEMP,A
		LCALL	EVENJ
		JB	EVEN,READ_DBU
		JB	RB8,RBFC	;偶校驗(yàn)錯(cuò),出錯(cuò)處理
		LJMP	READ_DBV
READ_DBU:	JNB	RB8,RBFC	;偶校驗(yàn)錯(cuò),出錯(cuò)處理
READ_DBV:	MOV	A,R3
		CJNE	A,TEMP,RBFC
				;以下判斷結(jié)束符
		MOV	YSRES1,#02H	;500MS延時(shí)
READ_DBW:	MOV	YSRES2,#0E0H
READ_DBX:	MOV	YSRES3,#0
READ_DBY:	JBC	RI,READ_DBZ
		DJNZ	YSRES3,READ_DBY
		DJNZ	YSRES2,READ_DBX
		DJNZ	YSRES1,READ_DBW
RBFD:		LJMP	ERR		;若500MS內(nèi)沒有接收到有效數(shù)據(jù),出錯(cuò)處理
READ_DBZ:	MOV	A,SBUF
		MOV	TEMP,A
		LCALL	EVENJ
		JB	EVEN,READ_D11
		JB	RB8,RBFD	;偶校驗(yàn)錯(cuò),出錯(cuò)處理
		LJMP	READ_D11
READ_D10:	JNB	RB8,RBFD	;偶校驗(yàn)錯(cuò),出錯(cuò)處理
READ_D11:	MOV	A,TEMP
		CJNE	A,#16H,RBFD
				;以下判斷數(shù)據(jù)項(xiàng)的正確性
		MOV	A,48H
		CJNE	A,#68H,RBFD
		MOV	A,49H
		CJNE	A,#81H,RBFD
		MOV	A,4BH
		CJNE	A,#43H,ERR
		MOV	A,4CH
		CJNE	A,#0C3H,ERR
				;以下比較表地址
		MOV	R2,#6
		MOV	R0,#BADD0
		MOV	R1,#42H
READ_D12:	MOV	A,@R1
		MOV	TEMP,A
		MOV	A,@R0
		CJNE	A,TEMP,ERR
		INC	R1
		DEC	R0
		DJNZ	R2,READ_D12
				;以下整理讀數(shù)值,存于DATA4--DATA1中
		MOV	R1,#4DH
		MOV	R0,#DATA1
		MOV	R2,#4
READ_D13:	MOV	A,@R1
		CLR	C
		SUBB	A,#33H
		MOV	@R0,A
		INC	R1
		DEC	R0
		DJNZ	R2,READ_D13
		SETB	SUCESS
		SETB	TONG_B
		MOV	SCON,#50H
		SETB	ES
		RET
ERR:		SETB	TONG_B
		MOV	SCON,#50H
		CLR	SUCESS
		SETB	ES
		RET

	;********************************************
	;偶校驗(yàn)子程序
	;入口:A	出口:C
	;********************************************
EVENJ:		MOV	R7,#8
		CLR	EVEN
		CLR	C
EVENJ_1:	RLC	A
		JNC	EVENJ_2
		CPL	EVEN
EVENJ_2:	DJNZ	R7,EVENJ_1
		RET
	;********************************************
	;發(fā)送對(duì)電表的讀數(shù)據(jù)請(qǐng)求命令前的整理數(shù)據(jù)子程序
	;整理數(shù)據(jù)存于:41H--4EH
	;********************************************
DBS_COLL:	MOV	41H,#68H	;起始符
		MOV	R3,#68H		;R3:校驗(yàn)和
		MOV	R0,#BADD0	;表地址,低位在前,高位在后
		MOV	R1,#42H
		MOV	R2,#6
DBS_C1:		MOV	A,@R0
		MOV	@R1,A
		ADD	A,R3
		MOV	R3,A
		DEC	R0
		INC	R1
		DJNZ	R2,DBS_C1
		MOV	48H,#68H
		MOV	A,R3
		ADD	A,#68H
		MOV	R3,A
		MOV	49H,#01H	;控制碼
		MOV	A,R3
		ADD	A,#01H
		MOV	R3,A
		MOV	4AH,#02H	;數(shù)據(jù)域長(zhǎng)度
		MOV	A,R3
		ADD	A,#02H
		MOV	R3,A
		MOV	4BH,#43H	;數(shù)據(jù)標(biāo)識(shí)低字節(jié)
		MOV	A,R3
		ADD	A,#43H
		MOV	R3,A
		MOV	4CH,#0C3H	;數(shù)據(jù)標(biāo)識(shí)高字節(jié)
		MOV	A,R3
		ADD	A,#0C3H
		MOV	R3,A
		MOV	4DH,R3		;校驗(yàn)和
		MOV	4EH,#16H	;結(jié)束符
		RET

;*********************************************
;向上位機(jī)發(fā)送數(shù)據(jù)幀子程序
;*********************************************
DATASEND:	MOV	SCON,#50H	  ;通訊用方式1,1位起始位,8位數(shù)據(jù)位,1位停止位
		LCALL	DATACOLL
		CLR	ES
		SETB	TONG_B
		CLR	TONG_A
		MOV	R2,#17H
		MOV	R1,#41H
DATAS_1:	MOV	SBUF,@R1
DATAS_2:	JBC	TI,DATAS_3
		LJMP	DATAS_2
dATAS_3:	INC	R1
		DJNZ	R2,DATAS_1
		SETB	ES
DATAS_4:	RET

	;*********************************************
	;整理向上位機(jī)發(fā)送數(shù)據(jù)幀所需要的數(shù)據(jù)
	;*********************************************
DATACOLL:	MOV	41H,#97H	;41H:97	起始符
		MOV	R3,#97H
		MOV	42H,#40H	;42H:40	電表代號(hào)
		MOV	A,R3
		ADD	A,42H
		MOV	R3,A
		MOV	43H,#0
		MOV	R2,#6		;43H-49H:A6-A0 采集器地址
		MOV	R0,#BADD5
		MOV	R1,#44H
DATAC_1:	MOV	A,@R0
		MOV	@R1,A
		ADD	A,R3
		MOV	R3,A
		INC	R1
		INC	R0
		DJNZ	R2,DATAC_1
		MOV	4AH,#81H	;4AH:81	控制碼
		MOV	A,R3
		ADD	A,4AH
		MOV	R3,A
		MOV	4BH,#0AH	;4BH:0A	數(shù)據(jù)域長(zhǎng)度
		MOV	A,R3
		ADD	A,4BH
		MOV	R3,A
		MOV	4CH,#90H	;4CH:90	數(shù)據(jù)標(biāo)識(shí)高字節(jié)
		MOV	A,R3
		ADD	A,4CH
		MOV	R3,A
		MOV	4DH,#1FH	;4DH:1F	數(shù)據(jù)標(biāo)識(shí)低字節(jié)
		MOV	A,R3
		ADD	A,4DH
		MOV	R3,A
		MOV	A,SER
		MOV	4EH,A		;4EH:SER 本機(jī)序列號(hào)
		ADD	A,R3
		MOV	R3,A
		JNB	SUCESS,DATAC_3
		MOV	R2,#4		;4FH-52H:DATA4-DATA1 電表讀數(shù)
		MOV	R0,#DATA4
		MOV	R1,#4FH
DATAC_2:	MOV	A,@R0
		MOV	@R1,A
		ADD	A,R3
		MOV	R3,A
		INC	R0
		INC	R1
		DJNZ	R2,DATAC_2
		SJMP	DATAC_4
DATAC_3:	MOV	R2,#4
		MOV	R1,#4FH
DATAC_5:	MOV	@R1,#0
		MOV	A,R3
		ADD	A,@R1
		MOV	R3,A
		INC	R1
		DJNZ	R2,DATAC_5
DATAC_4:	MOV	@R1,#05		;53H:05	kWh代號(hào)
		MOV	A,R3
		ADD	A,#05
		MOV	R3,A
		INC	R1
		MOV	@R1,#00		;54H:0
		INC	R1
		MOV	@R1,#00		;55H:0
		INC	R1
		MOV	A,R3
		MOV	@R1,A		;56H:R3	校驗(yàn)和
		INC	R1
		MOV	@R1,#16H	;57H:16	結(jié)束符
		RET

;**********************************************
;廣播讀表地址子程序
;**********************************************
BROD_AD:	CLR	TONG_A		;切換到RS485通道
		CLR	TONG_B
		CLR	ES		;不允許串口中斷
		SETB	TR		;發(fā)送允許
		MOV	SCON,#0D0H	;串口工作于方式3
		LCALL	BRO_COLL	;整理所要發(fā)送的數(shù)據(jù)存于41H--4EH
		MOV	SBUF,#0FEH	;發(fā)送前導(dǎo)符
		SETB	TB8		;
BROD_A1:	JBC	TI,BROD_A2
		LJMP	BROD_A1
BROD_A2:	MOV	R2,#14
		MOV	R0,#41H		;發(fā)送的命令存于41H--4EH
BROD_A2A:	MOV	A,@R0
		LCALL	EVENJ		;偶校驗(yàn)
		JB	EVEN,BROD_A3
		CLR	TB8
		LJMP	BROD_A4
BROD_A3:	SETB	TB8
BROD_A4:	MOV	A,@R0
		INC	R0
		MOV	SBUF,A
BROD_A5:	JBC	TI,BROD_A6
		LJMP	BROD_A5
BROD_A6:	DJNZ	R2,BROD_A2A	;是否發(fā)送完畢
			;命令發(fā)送完畢
			;*******************************
			;*******************************
			;以下為接收電表返回?cái)?shù)據(jù)程序
		CLR	TR		;開始接收
BROD_A6A:	MOV	YSRES1,#02H	;500MS延時(shí)
BROD_A7:	MOV	YSRES2,#0E0H
BROD_A8:	MOV	YSRES3,#0
BROD_A9:	JBC	RI,BROD_AA
		DJNZ	YSRES3,BROD_A9
		DJNZ	YSRES2,BROD_A8
		DJNZ	YSRES1,BROD_A7
BRA:		LJMP	ERR1		;若500MS內(nèi)沒有接收到有效數(shù)據(jù),出錯(cuò)處理
BROD_AA:	MOV	A,SBUF
		MOV	TEMP,A
		LCALL	EVENJ

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕免费不卡| 亚洲一区二区三区爽爽爽爽爽 | 欧美午夜宅男影院| 免费久久精品视频| 国产精品丝袜一区| 日韩欧美一二三四区| 99久久精品情趣| 美女国产一区二区| 亚洲精品乱码久久久久久久久| 精品美女在线播放| 日本道色综合久久| 国产精品1024久久| 免费高清视频精品| 亚洲国产精品欧美一二99| 欧美极品aⅴ影院| 欧美一区二区三区在| 色欧美乱欧美15图片| 成人亚洲一区二区一| 麻豆91精品91久久久的内涵| 亚洲一区二区三区爽爽爽爽爽| 欧美国产日韩在线观看| 91精品国产麻豆| 欧美日韩视频在线一区二区| 色综合久久久久综合| 大陆成人av片| 国产精品一色哟哟哟| 日本欧美一区二区| 香蕉久久夜色精品国产使用方法| 亚洲色图在线播放| 欧美激情一区二区在线| 久久色.com| 欧美v日韩v国产v| 欧美va天堂va视频va在线| 欧美绝品在线观看成人午夜影视| 欧美性高清videossexo| 在线精品观看国产| 色综合天天综合色综合av| 成人性生交大片免费看在线播放| 国产一二精品视频| 国产精品自在在线| 国产专区综合网| 寂寞少妇一区二区三区| 韩国女主播成人在线| 久久精品久久精品| 国内一区二区在线| 久久99久国产精品黄毛片色诱| 奇米精品一区二区三区在线观看一| 亚洲高清免费观看| 日韩精品欧美精品| 日韩精品电影在线观看| 青青草精品视频| 久久99久久99| 国产不卡在线一区| av在线一区二区三区| 91蜜桃免费观看视频| 色94色欧美sute亚洲线路一ni | 欧美日韩亚洲不卡| 欧美高清视频一二三区| 91精选在线观看| 26uuu精品一区二区| 国产日产欧美一区二区视频| 日韩美女啊v在线免费观看| 亚洲私人黄色宅男| 亚洲一区二区在线观看视频| 日本女优在线视频一区二区| 国产精华液一区二区三区| 成人av电影观看| 欧美图区在线视频| 日韩美女一区二区三区四区| 国产亚洲精品精华液| 亚洲黄色尤物视频| 日韩精品色哟哟| 粗大黑人巨茎大战欧美成人| 在线一区二区视频| 欧美tk丨vk视频| 一区二区中文字幕在线| 午夜天堂影视香蕉久久| 久久66热偷产精品| 91在线免费看| 日韩一区二区三免费高清| 中文字幕不卡在线观看| 亚洲一区二区三区四区中文字幕| 裸体一区二区三区| av网站一区二区三区| 欧美精品日日鲁夜夜添| 日本一区二区三区视频视频| 一区二区免费在线播放| 久久精品理论片| 在线一区二区视频| 久久精品视频在线免费观看| 亚洲一区在线视频观看| 国产一区二区按摩在线观看| 91久久精品网| 久久精品人人爽人人爽| 亚洲电影一区二区| 懂色av一区二区在线播放| 欧美日韩国产综合一区二区 | 婷婷丁香久久五月婷婷| 成人性生交大片免费看中文| 欧美一级欧美三级在线观看| 自拍视频在线观看一区二区| 国产在线观看一区二区| 欧美日韩激情一区二区三区| 亚洲同性gay激情无套| 免费成人av资源网| 色综合一区二区三区| 国产三级三级三级精品8ⅰ区| 日韩精品一级中文字幕精品视频免费观看 | 免费成人av资源网| 91福利国产成人精品照片| 国产色爱av资源综合区| 蜜臀av性久久久久蜜臀aⅴ流畅| 色视频欧美一区二区三区| 国产免费成人在线视频| 久久精品国产亚洲高清剧情介绍| 在线观看日韩精品| 中文字幕在线不卡视频| 国产精品综合一区二区| 欧美岛国在线观看| 午夜国产不卡在线观看视频| 97se狠狠狠综合亚洲狠狠| 欧美国产精品中文字幕| 国产伦精品一区二区三区免费| 日韩欧美国产电影| 午夜av区久久| 欧美三级一区二区| 一区二区三区欧美激情| 一本色道a无线码一区v| 1区2区3区精品视频| 国产传媒欧美日韩成人| 久久综合狠狠综合久久综合88| 捆绑紧缚一区二区三区视频| 3atv一区二区三区| 婷婷久久综合九色综合伊人色| 欧美三级在线视频| 性做久久久久久免费观看欧美| 色香蕉久久蜜桃| 曰韩精品一区二区| 91黄色免费看| 一区二区三区不卡在线观看| 色噜噜狠狠成人中文综合| 亚洲男人的天堂av| 色婷婷国产精品综合在线观看| 一区二区三区日本| 欧美日韩国产一级| 日韩成人免费在线| 日韩欧美国产精品一区| 精品一区二区免费看| 久久久精品国产免大香伊| 国产.欧美.日韩| 自拍偷拍亚洲激情| 欧美性三三影院| 美女视频网站黄色亚洲| 精品福利在线导航| 国产成人精品三级| 国产精品毛片久久久久久久| 色婷婷亚洲综合| 视频在线观看国产精品| 日韩亚洲欧美一区二区三区| 国内精品伊人久久久久影院对白| 国产亚洲一区二区在线观看| 成av人片一区二区| 亚洲免费观看在线观看| 欧美日韩国产高清一区二区 | 色老头久久综合| 秋霞午夜鲁丝一区二区老狼| 337p日本欧洲亚洲大胆色噜噜| 国产成人福利片| 亚洲免费大片在线观看| 欧美一区二区三区啪啪| 精品一区二区在线视频| 国产精品午夜免费| 欧美日韩精品久久久| 国内精品免费**视频| 亚洲欧美成人一区二区三区| 欧美一区二区三区免费观看视频| 国产真实乱子伦精品视频| 亚洲人成精品久久久久久| 欧美日韩一区国产| 国产一区二区免费在线| 亚洲免费色视频| 欧美变态tickling挠脚心| 福利91精品一区二区三区| 亚洲午夜久久久久久久久电影院| 精品精品国产高清一毛片一天堂| 成人av在线播放网址| 日韩和欧美的一区| 中文字幕成人网| 欧美一区二区大片| gogogo免费视频观看亚洲一| 日韩成人午夜精品| 国产精品久久久久9999吃药| 欧美日韩不卡视频| 成人av网站在线观看免费| 日韩在线一区二区三区| 中文字幕欧美一| 精品久久一二三区| 欧美日韩国产小视频在线观看| 高清视频一区二区| 男女男精品视频|