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

📄 pcf8583.asm

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 ASM
📖 第 1 页 / 共 3 页
字号:
	LACK	1
	SBRK	2
	SACL	* 
L25:
	.line	18
;>>>> 		if((day>0x31 )  || (day == 0))	flag = 1;
	LARK	AR2,5
	MAR	*0+
	ZALS	* 
	SUBK	49
	BGZ	LL15
	LAC	* 
	BNZ	L26
LL15:
	LACK	1
	SBRK	3
	SACL	* 
L26:
	.line	19
;>>>> 		if(hour>0x24)	flag = 1;
	LARK	AR2,6
	MAR	*0+
	ZALS	* 
	SUBK	36
	BLEZ	L27
	LACK	1
	SBRK	4
	SACL	* 
L27:
	.line	20
;>>>> 		if(minute>0x59)	flag = 1;
	LARK	AR2,7
	MAR	*0+
	ZALS	* 
	SUBK	89
	BLEZ	L28
	LACK	1
	SBRK	5
	SACL	* 
L28:
	.line	21
;>>>> 		if(second>0x59)	flag = 1;
	LARK	AR2,8
	MAR	*0+
	ZALS	* 
	SUBK	89
	BLEZ	L29
	LACK	1
	SBRK	6
	SACL	* 
L29:
	.line	22
;>>>> 		if((weekday>0x7) || (weekday == 0))	flag = 1;        	
	LARK	AR2,9
	MAR	*0+
	ZALS	* 
	SUBK	7
	BGZ	LL16
	LAC	* 
	BNZ	L30
LL16:
	LACK	1
	SBRK	7
	SACL	* 
L30:
	.line	24
;>>>> 		if(flag){;}
;>>>> 		else
	LARK	AR2,2
	MAR	*0+
	LAC	* 
	BNZ	L32
	.line	27
;>>>> 			status = OK;
	LACK	0
	MAR	*-
	SACL	* 
	.line	28
;>>>> 			addr02 = second;
	ADRK	7
	LAC	* 
	ADRK	3
	SACL	* 
	.line	29
;>>>> 			addr03 = minute;
;>>>> 			//////////////hours//////////////////			
	SBRK	4
	LAC	* 
	ADRK	5
	SACL	* 
	.line	31
;>>>> 			if( ((hour&0xff) >> 4) == 0 ) 	addr04 |= 0;
	LACK	255
	SBRK	6
	AND	* ,AR0
	SACL	* 
	RSXM
	LAC	* ,11
	ANDK	0FFFFh,15
	BZ	L34
	.line	32
;>>>> 			else if( ((hour&0xff) >> 4) == 1 )addr04 |= 0x10;
	LACK	255
	MAR	* ,AR2
	AND	* ,AR0
	SACL	* 
	LAC	* ,11
	SACH	* ,1
	ZALS	* 
	SUBK	1
	BNZ	L35
	LACK	16
	MAR	* ,AR2
	ADRK	7
	OR	* 
	SACL	* 
	B	L34
L35:
	.line	33
;>>>> 			else if( ((hour&0xff) >> 4) == 2 )addr04 |= 0x20;						
	LACK	255
	MAR	* ,AR2
	AND	* ,AR0
	SACL	* 
	LAC	* ,11
	SACH	* ,1
	ZALS	* 
	SUBK	2
	BNZ	L34
	LACK	32
	MAR	* ,AR2
	ADRK	7
	OR	* 
	SACL	* 
L34:
	.line	34
;>>>> 			addr04 |= hour&0x0f;
;>>>> 			/////////////////////////////////////////
;>>>> 			/////year , day//////////////////////////
	LACK	15
	MAR	* ,AR2
	LARK	AR2,6
	MAR	*0+
	AND	* 
	ADRK	7
	OR	* 
	SACL	* 
	.line	37
;>>>> 			addr05 = (year&0xff) << 6;
	LACK	255
	SBRK	10
	AND	* ,AR0
	SACL	* 
	LAC	* ,6,AR2
	ADRK	11
	SACL	* 
	.line	38
;>>>> 			if( ((day&0xff) >> 4) == 0) addr05 |= 0;
	LACK	255
	SBRK	9
	AND	* ,AR0
	SACL	* 
	LAC	* ,11
	ANDK	0FFFFh,15
	BZ	L38
	.line	39
;>>>> 			else if( ((day&0xff) >> 4) == 1) addr05 |= 0x10;
	LACK	255
	MAR	* ,AR2
	AND	* ,AR0
	SACL	* 
	LAC	* ,11
	SACH	* ,1
	ZALS	* 
	SUBK	1
	BNZ	L39
	LACK	16
	MAR	* ,AR2
	ADRK	9
	OR	* 
	SACL	* 
	B	L38
L39:
	.line	40
;>>>> 			else if( ((day&0xff) >> 4) == 2) addr05 |= 0x20;
	LACK	255
	MAR	* ,AR2
	AND	* ,AR0
	SACL	* 
	LAC	* ,11
	SACH	* ,1
	ZALS	* 
	SUBK	2
	BNZ	L40
	LACK	32
	MAR	* ,AR2
	ADRK	9
	OR	* 
	SACL	* 
	B	L38
L40:
	.line	41
;>>>> 			else if( ((day&0xff) >> 4) == 3) addr05 |= 0x30;
	LACK	255
	MAR	* ,AR2
	AND	* ,AR0
	SACL	* 
	LAC	* ,11
	SACH	* ,1
	ZALS	* 
	SUBK	3
	BNZ	L38
	LACK	48
	MAR	* ,AR2
	ADRK	9
	OR	* 
	SACL	* 
L38:
	.line	42
;>>>> 			addr05 |= day&0x0f;		
;>>>> 			/////////////////////////////////////////
;>>>> 			/////weekday,month///////////////////////
	LACK	15
	MAR	* ,AR2
	LARK	AR2,5
	MAR	*0+
	AND	* 
	ADRK	9
	OR	* 
	SACL	* 
	.line	45
;>>>> 			addr06 |= (weekday&0xff) << 5;
	LACK	255
	SBRK	5
	AND	* ,AR0
	SACL	* 
	LAC	* ,5,AR2
	ADRK	6
	OR	* 
	SACL	* 
	.line	46
;>>>> 			if((month&0x10) == 0x10 )	addr06 |= 0x10;
	LACK	16
	SBRK	11
	AND	* 
	SUBK	16
	BNZ	L42
	LACK	16
	ADRK	11
	OR	* 
	SACL	* 
L42:
	.line	47
;>>>> 			addr06 |= month&0x0f;		
;>>>> 			/////////////////////////////////////////
	LACK	15
	LARK	AR2,4
	MAR	*0+
	AND	* 
	ADRK	11
	OR	* 
	SACL	* 
	.line	49
;>>>> 			pcf8583_flag = WriteByte(0x02,addr02);
	SBRK	4
	LAC	* ,AR1
	SACL	*+
	LACK	2
	SACL	*+
	CALL	_WriteByte
	SBRK	2
	MAR	* ,AR2
	LARK	AR2,16
	MAR	*0+
	SACL	* 
	.line	50
;>>>> 			if(pcf8583_flag)flag = 1;	/*read i2c error*/
	LAC	* 
	BZ	L43
	LACK	1
	SBRK	14
	SACL	* 
L43:
	.line	51
;>>>> 			pcf8583_flag = WriteByte(0x03,addr03);
	LARK	AR2,12
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	LACK	3
	SACL	*+
	CALL	_WriteByte
	SBRK	2
	MAR	* ,AR2
	LARK	AR2,16
	MAR	*0+
	SACL	* 
	.line	52
;>>>> 			if(pcf8583_flag)flag = 1;
	LAC	* 
	BZ	L44
	LACK	1
	SBRK	14
	SACL	* 
L44:
	.line	53
;>>>> 			pcf8583_flag = WriteByte(0x04,addr04);
	LARK	AR2,13
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	LACK	4
	SACL	*+
	CALL	_WriteByte
	SBRK	2
	MAR	* ,AR2
	LARK	AR2,16
	MAR	*0+
	SACL	* 
	.line	54
;>>>> 			if(pcf8583_flag)flag = 1;
	LAC	* 
	BZ	L45
	LACK	1
	SBRK	14
	SACL	* 
L45:
	.line	55
;>>>> 			pcf8583_flag = WriteByte(0x05,addr05);
	LARK	AR2,14
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	LACK	5
	SACL	*+
	CALL	_WriteByte
	SBRK	2
	MAR	* ,AR2
	LARK	AR2,16
	MAR	*0+
	SACL	* 
	.line	56
;>>>> 			if(pcf8583_flag)flag = 1;
	LAC	* 
	BZ	L46
	LACK	1
	SBRK	14
	SACL	* 
L46:
	.line	57
;>>>> 			pcf8583_flag = WriteByte(0x06,addr06);	
	LARK	AR2,15
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	LACK	6
	SACL	*+
	CALL	_WriteByte
	SBRK	2
	MAR	* ,AR2
	LARK	AR2,16
	MAR	*0+
	SACL	* 
	.line	58
;>>>> 			if(pcf8583_flag)flag = 1;  
	LAC	* 
	BZ	L47
	LACK	1
	SBRK	14
	SACL	* 
L47:
	.line	59
;>>>> 			pcf8583_flag = WriteByte(0x64,year_header);	
	LARK	AR2,10
	MAR	*0+
	LAC	* ,AR1
	SACL	*+
	LACK	100
	SACL	*+
	CALL	_WriteByte
	SBRK	2
	MAR	* ,AR2
	LARK	AR2,16
	MAR	*0+
	SACL	* 
	.line	60
;>>>> 			if(pcf8583_flag)flag = 1;
	LAC	* 
	BZ	L48
	LACK	1
	SBRK	14
	SACL	* 
L48:
	.line	62
;>>>> 			pcdata[0] = 6;	
	LACK	6
	LDPK	_pcdata
	SACL	_pcdata
	.line	63
;>>>> 			pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	64
;>>>> 			pcdata[2] = WR_RTC_CMD;
	LACK	133
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	65
;>>>> 			pcdata[3] = status;
	LARK	AR2,1
	MAR	*0+
	BLDD	* ,#_pcdata+3
L32:
	.line	67
;>>>> 		if(flag)
	LARK	AR2,2
	MAR	*0+
	LAC	* 
	BZ	L49
	.line	69
;>>>> 			status = PARA_OV;
	LACK	17
	MAR	*-
	SACL	* 
	.line	70
;>>>> 			pcdata[0] = 6;	
	LACK	6
	LDPK	_pcdata
	SACL	_pcdata
	.line	71
;>>>> 			pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	72
;>>>> 			pcdata[2] = WR_RTC_CMD;
	LACK	133
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	73
;>>>> 			pcdata[3] = status;
	BLDD	* ,#_pcdata+3
L49:
EPI0_12:
	.line	75
	MAR	* ,AR1
	SBRK	18
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	360,000000000H,17

	.sym	_getCalendar,_getCalendar,32,2,0
	.globl	_getCalendar

	.func	361
;>>>> 	void getCalendar() 
;>>>> 		uchar year,month,day,hour,minute,second,weekday,year_header;
******************************************************
* FUNCTION DEF : _getCalendar
******************************************************
_getCalendar:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,15
	LAR	AR0,*0+,AR2

	.sym	_year,1,12,1,16
	.sym	_month,2,12,1,16
	.sym	_day,3,12,1,16
	.sym	_hour,4,12,1,16
	.sym	_minute,5,12,1,16
	.sym	_second,6,12,1,16
	.sym	_weekday,7,12,1,16
	.sym	_year_header,8,12,1,16
	.sym	_addr02,9,12,1,16
	.sym	_addr03,10,12,1,16
	.sym	_addr04,11,12,1,16
	.sym	_addr05,12,12,1,16
	.sym	_addr06,13,12,1,16
	.sym	_pcf8583_flag,14,14,1,16
	.line	4
;>>>> 		uchar addr02=0,addr03=0,addr04=0,addr05=0,addr06=0;/*addr in the pcf8583*/
	LACK	0
	LARK	AR2,9
	MAR	*0+
	SACL	*+
	SACL	*+
	SACL	*+
	SACL	*+
	SACL	*+
	.line	5
;>>>> 		uint pcf8583_flag = 0;
	SACL	* ,AR1
	.line	7
;>>>> 		addr02 = ReadByte(0x02);
	LACK	2
	SACL	*+
	CALL	_ReadByte
	MAR	*-,AR2
	LARK	AR2,9
	MAR	*0+
	SACL	* 
	.line	8
;>>>> 		if(addr02 == 0xffff)pcf8583_flag = 1;	/*read i2c error*/
	ZALS	* 
	RSXM
	SUBK	-1
	BNZ	L50
	LACK	1
	ADRK	5
	SACL	* 
L50:
	.line	9
;>>>> 		addr03 = ReadByte(0x03);
	MAR	* ,AR1
	LACK	3
	SACL	*+
	CALL	_ReadByte
	MAR	*-,AR2
	LARK	AR2,10
	MAR	*0+
	SACL	* 
	.line	10
;>>>> 		if(addr03 == 0xffff) pcf8583_flag = 1; 
	ZALS	* 
	RSXM
	SUBK	-1
	BNZ	L51
	LACK	1
	ADRK	4
	SACL	* 
L51:
	.line	11
;>>>> 		addr04 = ReadByte(0x04);
	MAR	* ,AR1
	LACK	4
	SACL	*+
	CALL	_ReadByte
	MAR	*-,AR2
	LARK	AR2,11
	MAR	*0+
	SACL	* 
	.line	12
;>>>> 		if(addr04 == 0xffff)pcf8583_flag = 1;       	
	ZALS	* 
	RSXM
	SUBK	-1
	BNZ	L52
	LACK	1
	ADRK	3
	SACL	* 
L52:
	.line	13
;>>>> 		addr05 = ReadByte(0x05);
	MAR	* ,AR1
	LACK	5
	SACL	*+
	CALL	_ReadByte
	MAR	*-,AR2
	LARK	AR2,12
	MAR	*0+
	SACL	* 
	.line	14
;>>>> 		if(addr05 == 0xffff) pcf8583_flag = 1; 	
	ZALS	* 
	RSXM
	SUBK	-1
	BNZ	L53
	LACK	1
	ADRK	2
	SACL	* 
L53:
	.line	15
;>>>> 		addr06 = ReadByte(0x06);
	MAR	* ,AR1
	LACK	6
	SACL	*+
	CALL	_ReadByte
	MAR	*-,AR2
	LARK	AR2,13
	MAR	*0+
	SACL	* 
	.line	16
;>>>> 		if(addr06 == 0xffff)pcf8583_flag = 1; 	
	ZALS	* 
	RSXM
	SUBK	-1
	BNZ	L54
	LACK	1
	MAR	*+
	SACL	* 
L54:
	.line	17
;>>>> 		year_header = ReadByte(0x64); 
	MAR	* ,AR1
	LACK	100
	SACL	*+
	CALL	_ReadByte
	MAR	*-,AR2
	LARK	AR2,8
	MAR	*0+
	SACL	* 
	.line	18
;>>>> 		if(addr06 == 0xffff) pcf8583_flag = 1;
	ADRK	5
	ZALS	* 
	RSXM
	SUBK	-1
	BNZ	L55
	LACK	1
	MAR	*+
	SACL	* 
L55:
	.line	20
;>>>> 		year = addr05 >> 6;
	LARK	AR2,12
	MAR	*0+
	LAC	* ,9
	SBRK	11
	SACH	* ,1
	.line	21
;>>>> 		month = addr06&0x1f;
	LACK	31
	ADRK	12
	AND	* 
	SBRK	11
	SACL	* 
	.line	22
;>>>> 		day = addr05&0x3f;
	LACK	63
	ADRK	10
	AND	* 
	SBRK	9
	SACL	* 
	.line	23
;>>>> 		hour = addr04&0x3f;
	LACK	63
	ADRK	8
	AND	* 
	SBRK	7
	SACL	* 
	.line	24
;>>>> 		minute = addr03;
	ADRK	6
	LAC	* 
	SBRK	5
	SACL	* 
	.line	25
;>>>> 		second = addr02;
	ADRK	4
	LAC	* 
	SBRK	3
	SACL	* 
	.line	26
;>>>> 		weekday = addr06>>5;
	ADRK	7
	LAC	* ,10
	SBRK	6
	SACH	* ,1
	.line	27
;>>>> 		pcdata[0] = 14;
	LACK	14
	LDPK	_pcdata
	SACL	_pcdata
	.line	28
;>>>> 		pcdata[1] = deviceAddr;
	LDPK	_deviceAddr
	BLDD	_deviceAddr,#_pcdata+1
	.line	29
;>>>> 		pcdata[2] = RD_RTC_CMD;
	LACK	134
	LDPK	_pcdata+2
	SACL	_pcdata+2
	.line	30
;>>>> 		if(pcf8583_flag)pcdata[3] = PARA_OV;    //0x11
	ADRK	7
	LAC	* 
	BZ	L56
	LACK	17
	LDPK	_pcdata+3
	SACL	_pcdata+3
	B	L57
L56:
	.line	31
;>>>> 		else	pcdata[3] = OK;  //0x00
	LACK	0
	LDPK	_pcdata+3
	SACL	_pcdata+3
L57:
	.line	32
;>>>> 		pcdata[4] = year;
	SBRK	13
	BLDD	*+,#_pcdata+4
	.line	33
;>>>> 		pcdata[5] = month;
	BLDD	*+,#_pcdata+5
	.line	34
;>>>> 		pcdata[6] = day;
	BLDD	*+,#_pcdata+6
	.line	35
;>>>> 		pcdata[7] = hour;
	BLDD	*+,#_pcdata+7
	.line	36
;>>>> 		pcdata[8] = minute;
	BLDD	*+,#_pcdata+8
	.line	37
;>>>> 		pcdata[9] = second;
	BLDD	*+,#_pcdata+9
	.line	38
;>>>> 		pcdata[10] = weekday; 
	BLDD	*+,#_pcdata+10
	.line	39
;>>>> 		pcdata[11] = year_header; 	
	BLDD	* ,#_pcdata+11,AR1
EPI0_13:
	.line	40
	SBRK	16
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	400,000000000H,15
	.end

⌨️ 快捷键说明

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