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

📄 pcf8583.asm

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 ASM
📖 第 1 页 / 共 3 页
字号:
******************************************************
* FUNCTION DEF : _WriteByte
******************************************************
_WriteByte:

LF7	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+

	.sym	_addr,-3+LF7,12,9,16
	.sym	_data,-4+LF7,12,9,16
	.sym	_k,1,12,1,16
	.line	2
;>>>> 		uchar k;
	.line	4
;>>>> 		Pcf8583Start();		//start i2c bus
	CALL	_Pcf8583Start
	.line	5
;>>>> 		Pcf8583sendByte(0xa0);	//send control byte
	LACK	160
	SACL	*+
	CALL	_Pcf8583sendByte
	MAR	*-
	.line	6
;>>>> 		k = Pcf8583Ack();	
	CALL	_Pcf8583Ack
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	7
;>>>> 		if(k==0)Pcf8583sendByte(addr);	//send out addr
;>>>> 		else
	LAC	* 
	BNZ	L9
	SBRK	4-LF7
	LAC	* ,AR1
	SACL	*+
	CALL	_Pcf8583sendByte
	MAR	*-
	B	L10
L9:
	.line	10
;>>>> 			sda_1;scl_1;		
	LACK	61439
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	4112
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16448
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
	.line	11
;>>>> 			return(k);
	ZALS	* 
	B	EPI0_7
L10:
	.line	13
;>>>> 		k = Pcf8583Ack();	
	CALL	_Pcf8583Ack
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	14
;>>>> 		if(k==0)Pcf8583sendByte(data);	//send out data
;>>>> 		else
	LAC	* 
	BNZ	L11
	SBRK	5-LF7
	LAC	* ,AR1
	SACL	*+
	CALL	_Pcf8583sendByte
	MAR	*-
	B	L12
L11:
	.line	17
;>>>> 			sda_1; scl_1;		
	LACK	61439
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	4112
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16448
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
	.line	18
;>>>> 			return(k);
	ZALS	* 
	B	EPI0_7
L12:
	.line	20
;>>>> 		k = Pcf8583Ack();
	CALL	_Pcf8583Ack
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	21
;>>>> 		if(k==0)	Pcf8583Stop();		// stop
	LAC	* 
	BNZ	L13
	CALL	_Pcf8583Stop,AR1
	B	L14
L13:
	.line	22
;>>>> 		else 		{sda_1;scl_1;}
	LACK	61439
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	4112
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16448
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
L14:
	.line	23
;>>>> 		return(k);
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	ZALS	* 
EPI0_7:
	.line	24
	MAR	* ,AR1
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	137,000000000H,2

	.sym	_Receive,_Receive,44,2,0
	.globl	_Receive

	.func	141
;>>>> 	uchar Receive()
******************************************************
* FUNCTION DEF : _Receive
******************************************************
_Receive:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,4
	LAR	AR0,*0+,AR2

	.sym	_data,1,12,1,16
	.sym	_sz,2,12,1,16
	.sym	_i,3,12,1,16
	.line	3
;>>>> 		uchar data=0,sz,i;
	LACK	0
	LARK	AR2,1
	MAR	*0+
	SACL	* ,AR1
	.line	4
;>>>> 		sda_in;	//config sda as input port
	LACK	61439
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	61439
	LDPK	_PFDATDIR
	AND	_PFDATDIR
	SACL	_PFDATDIR
	LACK	16
	OR	_PFDATDIR
	SACL	_PFDATDIR
	.line	5
;>>>> 		scl_0;	//scl = 0
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16384
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
	LACK	65471
	AND	_PBDATDIR
	SACL	_PBDATDIR
	.line	6
;>>>> 		Pcf8583DelayI2c();
	CALL	_Pcf8583DelayI2c
	.line	7
;>>>> 		for(i=0;i<8;i++)
	LACK	0
	MAR	* ,AR2
	LARK	AR2,3
	MAR	*0+
	SACL	* 
	ZALS	* 
	SUBK	8
	BGEZ	L16
	SBRK	2
L15:
	.line	9
;>>>> 			data = data<<1;		// shift 1 bit to left
	LAC	* ,1
	SACL	* ,AR1
	.line	10
;>>>> 			scl_1;	//scl = 1
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16448
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
	.line	11
;>>>> 			Pcf8583DelayI2c();
	CALL	_Pcf8583DelayI2c
	.line	12
;>>>> 			sz = PFDATDIR&0x10;	//get related data bit
	LACK	16
	LDPK	_PFDATDIR
	AND	_PFDATDIR
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	.line	13
;>>>> 			if(sz==0)	data &= 0xfffe;	// if data bit is 0, clr lsb of the data
	LAC	* 
	BNZ	L17
	LACK	65534
	MAR	*-
	AND	* 
	SACL	* 
	B	L18
L17:
	.line	14
;>>>> 			else	data |= 0x01;		// if data bit is 1, set lsb of the data
	LACK	1
	MAR	*-
	OR	* 
	SACL	* 
L18:
	.line	15
;>>>> 			scl_0;		// scl = 0;
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16384
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
	LACK	65471
	AND	_PBDATDIR
	SACL	_PBDATDIR
	.line	16
;>>>> 			Pcf8583DelayI2c();
	CALL	_Pcf8583DelayI2c,AR1
	.line	7
	MAR	* ,AR2
	LARK	AR2,3
	MAR	*0+
	LAC	* 
	ADDK	1
	SACL	* 
	ZALS	* 
	SUBK	8
	SBRK	2
	BLZ	L15
L16:
	.line	18
;>>>> 		sda_1;	// config sda as output
	LACK	61439
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	4112
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	.line	19
;>>>> 		return(data);
	LARK	AR2,1
	MAR	*0+
	ZALS	* 
EPI0_8:
	.line	20
	MAR	* ,AR1
	SBRK	5
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	160,000000000H,4

	.sym	_HostNoAck,_HostNoAck,32,2,0
	.globl	_HostNoAck

	.func	164
;>>>> 	void HostNoAck()
******************************************************
* FUNCTION DEF : _HostNoAck
******************************************************
_HostNoAck:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.line	3
;>>>> 		scl_1;			//scl =1
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16448
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
	.line	4
;>>>> 		Pcf8583DelayI2c();
	CALL	_Pcf8583DelayI2c
	.line	5
;>>>> 		scl_0;			//scl = 0
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16384
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
	LACK	65471
	AND	_PBDATDIR
	SACL	_PBDATDIR
EPI0_9:
	.line	6
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	169,000000000H,1

	.sym	_HostAck,_HostAck,32,2,0
	.globl	_HostAck

	.func	173
;>>>> 	void HostAck()
******************************************************
* FUNCTION DEF : _HostAck
******************************************************
_HostAck:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.line	3
;>>>> 		scl_0;		//scl = 0
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16384
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
	LACK	65471
	AND	_PBDATDIR
	SACL	_PBDATDIR
	.line	4
;>>>> 		sda_0;		//sda = 0
	LACK	61439
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	4096
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	LACK	65519
	AND	_PFDATDIR
	SACL	_PFDATDIR
	.line	5
;>>>> 		scl_1;		//scl = 1	
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16448
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
	.line	6
;>>>> 		Pcf8583DelayI2c();
	CALL	_Pcf8583DelayI2c
	.line	7
;>>>> 		scl_0;		//scl = 0
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16384
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
	LACK	65471
	AND	_PBDATDIR
	SACL	_PBDATDIR
EPI0_10:
	.line	8
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	180,000000000H,1

	.sym	_ReadByte,_ReadByte,44,2,0
	.globl	_ReadByte

	.func	184
;>>>> 	uchar ReadByte(uchar addr)
******************************************************
* FUNCTION DEF : _ReadByte
******************************************************
_ReadByte:

LF11	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,3
	LAR	AR0,*0+

	.sym	_addr,-3+LF11,12,9,16
	.sym	_k,1,12,1,16
	.sym	_data,2,12,1,16
	.line	2
;>>>> 		uchar k,data;
	.line	4
;>>>> 		Pcf8583Start();
	CALL	_Pcf8583Start
	.line	5
;>>>> 		Pcf8583sendByte(0xa0);	//send control byte
	LACK	160
	SACL	*+
	CALL	_Pcf8583sendByte
	MAR	*-
	.line	6
;>>>> 		k = Pcf8583Ack();
	CALL	_Pcf8583Ack
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	7
;>>>> 		if(k==0)	Pcf8583sendByte(addr);	//send addr 
;>>>> 		else
	LAC	* 
	BNZ	L19
	SBRK	4-LF11
	LAC	* ,AR1
	SACL	*+
	CALL	_Pcf8583sendByte
	MAR	*-
	B	L20
L19:
	.line	10
;>>>> 			sda_1; scl_1;		
	LACK	61439
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	4112
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16448
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
	.line	11
;>>>> 			return(0xffff);
	RSXM
	LACK	65535
	B	EPI0_11
L20:
	.line	13
;>>>> 		k = Pcf8583Ack();
	CALL	_Pcf8583Ack
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	14
;>>>> 		if(k==0)
	LAC	* 
	BNZ	L21
	.line	16
;>>>> 			Pcf8583Start();
	CALL	_Pcf8583Start,AR1
	.line	17
;>>>> 			Pcf8583sendByte(0xa1);
;>>>> 		else
	LACK	161
	SACL	*+
	CALL	_Pcf8583sendByte
	MAR	*-
	B	L22
L21:
	.line	21
;>>>> 			sda_1;scl_1;		
	LACK	61439
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	4112
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16448
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
	.line	22
;>>>> 			return(0xffff);
	RSXM
	LACK	65535
	B	EPI0_11
L22:
	.line	24
;>>>> 		k = Pcf8583Ack();
	CALL	_Pcf8583Ack
	MAR	* ,AR2
	LARK	AR2,1
	MAR	*0+
	SACL	* 
	.line	25
;>>>> 		if(k==0)
	LAC	* 
	BNZ	L23
	.line	27
;>>>> 			data = Receive();
	CALL	_Receive,AR1
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	SACL	* ,AR1
	.line	28
;>>>> 			HostNoAck();
	CALL	_HostNoAck
	.line	29
;>>>> 			Pcf8583Stop(); 
	CALL	_Pcf8583Stop
	.line	30
;>>>> 			return(data);
;>>>> 		else
	MAR	* ,AR2
	LARK	AR2,2
	MAR	*0+
	ZALS	* 
	B	EPI0_11
L23:
	.line	34
;>>>> 			sda_1;scl_1;		
	LACK	61439
	LDPK	_MCRC
	AND	_MCRC
	SACL	_MCRC
	LACK	4112
	LDPK	_PFDATDIR
	OR	_PFDATDIR
	SACL	_PFDATDIR
	LACK	49151
	LDPK	_MCRA
	AND	_MCRA
	SACL	_MCRA
	LACK	16448
	LDPK	_PBDATDIR
	OR	_PBDATDIR
	SACL	_PBDATDIR
	.line	35
;>>>> 			return(0xffff);
	RSXM
	LACK	65535
EPI0_11:
	.line	37
	MAR	* ,AR1
	SBRK	4
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	220,000000000H,3

	.sym	_setCalendar,_setCalendar,32,2,0
	.globl	_setCalendar

	.func	286
;>>>> 	void setCalendar( )
******************************************************
* FUNCTION DEF : _setCalendar
******************************************************
_setCalendar:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,17
	LAR	AR0,*0+,AR2

	.sym	_status,1,12,1,16
	.sym	_flag,2,12,1,16
	.sym	_year,3,12,1,16
	.sym	_month,4,12,1,16
	.sym	_day,5,12,1,16
	.sym	_hour,6,12,1,16
	.sym	_minute,7,12,1,16
	.sym	_second,8,12,1,16
	.sym	_weekday,9,12,1,16
	.sym	_year_header,10,12,1,16
	.sym	_addr02,11,12,1,16
	.sym	_addr03,12,12,1,16
	.sym	_addr04,13,12,1,16
	.sym	_addr05,14,12,1,16
	.sym	_addr06,15,12,1,16
	.sym	_pcf8583_flag,16,14,1,16
	.line	3
;>>>> 		uchar status,flag=0;	
;>>>> 		uchar year,month,day,hour,minute,second,weekday,year_header;
	LACK	0
	LARK	AR2,2
	MAR	*0+
	SACL	* 
	.line	5
;>>>> 		uchar addr02=0,addr03=0,addr04=0,addr05=0,addr06=0;/*addr in the pcf8583*/
	ADRK	9
	SACL	*+
	SACL	*+
	SACL	*+
	SACL	*+
	SACL	*+
	.line	6
;>>>> 		uint pcf8583_flag = 0;
	SACL	* 
	.line	7
;>>>> 		year = pcdata[3];
	SBRK	13
	BLKD	#_pcdata+3,*+
	.line	8
;>>>> 		month = pcdata[4];
	BLKD	#_pcdata+4,*+
	.line	9
;>>>> 		day = pcdata[5];
	BLKD	#_pcdata+5,*+
	.line	10
;>>>> 		hour = pcdata[6];
	BLKD	#_pcdata+6,*+
	.line	11
;>>>> 		minute = pcdata[7];
	BLKD	#_pcdata+7,*+
	.line	12
;>>>> 		second = pcdata[8];
	BLKD	#_pcdata+8,*+
	.line	13
;>>>> 		weekday = pcdata[9];
	BLKD	#_pcdata+9,*+
	.line	14
;>>>> 		year_header = pcdata[0x0a];	
	BLKD	#_pcdata+10,* 
	.line	16
;>>>> 		if(year>0x3)	flag = 1;
	SBRK	7
	ZALS	* 
	SUBK	3
	BLEZ	L24
	LACK	1
	MAR	*-
	SACL	* 
L24:
	.line	17
;>>>> 		if((month>0x12) || (month == 0))	flag = 1;
	LARK	AR2,4
	MAR	*0+
	ZALS	* 
	SUBK	18
	BGZ	LL14
	LAC	* 
	BNZ	L25
LL14:

⌨️ 快捷键说明

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