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

📄 pcf8563.lst

📁 ATmega16应用例子
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0319) --------------------------------------------------------------------*/
(0320) bool I2C_Read(uint16 wrDAdr,uint8 wordAdr,
(0321) 			  uint8 rdDAdr,uint8 *pRdDat)
(0322) {
(0323) 	if( I2C_Start()==I2C_ERR )
    0169 DF42      RCALL	_I2C_Start
    016A 2300      TST	R16
    016B F411      BNE	0x016E
(0324) 		return I2C_ERR;
    016C 2700      CLR	R16
    016D C021      RJMP	0x018F
(0325) 
(0326) 	if( I2C_SendWrDAdr_(wrDAdr)==I2C_ERR )
    016E 018B      MOVW	R16,R22
    016F DF64      RCALL	_I2C_SendWrDAdr_
    0170 2300      TST	R16
    0171 F411      BNE	0x0174
(0327) 		return I2C_ERR;
    0172 2700      CLR	R16
    0173 C01B      RJMP	0x018F
(0328) 
(0329) 	if( I2C_SendDat(wordAdr)==I2C_ERR )
    0174 2F04      MOV	R16,R20
    0175 DFA0      RCALL	_I2C_SendDat
    0176 2300      TST	R16
    0177 F411      BNE	0x017A
(0330) 		return I2C_ERR;
    0178 2700      CLR	R16
    0179 C015      RJMP	0x018F
(0331) 
(0332) 	if( I2C_Restart()==I2C_ERR )
    017A DF3E      RCALL	_I2C_Restart
    017B 2300      TST	R16
    017C F411      BNE	0x017F
(0333) 		return I2C_ERR;
    017D 2700      CLR	R16
    017E C010      RJMP	0x018F
(0334) 
(0335) 	if( I2C_SendRdDAdr(rdDAdr)==I2C_ERR )
    017F 810C      LDD	R16,Y+4
    0180 DF6D      RCALL	_I2C_SendRdDAdr
    0181 2300      TST	R16
    0182 F411      BNE	0x0185
(0336) 		return I2C_ERR;
    0183 2700      CLR	R16
    0184 C00A      RJMP	0x018F
(0337) 
(0338) 	if( I2C_RcvNAckDat(pRdDat)==I2C_ERR )
    0185 810E      LDD	R16,Y+6
    0186 811F      LDD	R17,Y+7
    0187 DF9C      RCALL	_I2C_RcvNAckDat
    0188 2300      TST	R16
    0189 F411      BNE	0x018C
(0339) 		return I2C_ERR;
    018A 2700      CLR	R16
    018B C003      RJMP	0x018F
(0340) 
(0341) 	I2C_Stop();
    018C E984      LDI	R24,0x94
    018D BF86      OUT	0x36,R24
(0342) 
(0343) 	return I2C_CRR;
    018E E001      LDI	R16,1
    018F 940E03B5  CALL	pop_gset2
    0191 9508      RET
_I2C_Read_:
  i                    --> R20
  num                  --> R22
  pRdDat               --> R10
  rdDAdr               --> Y+8
  wordAdr              --> R20
  wrDAdr               --> R12
    0192 940E03DD  CALL	push_gset4
    0194 2F42      MOV	R20,R18
    0195 0168      MOVW	R12,R16
    0196 84AA      LDD	R10,Y+10
    0197 84BB      LDD	R11,Y+11
    0198 856C      LDD	R22,Y+12
(0344) }
(0345) /*--------------------------------------------------------------------
(0346) 函数名称:I2C读器件,读N个数据
(0347) 函数功能:
(0348) 注意事项:
(0349) 提示说明:
(0350) 输    入:wrDAdr: write device-address 写器件地址
(0351) 		 wordAdr: word address 字地址
(0352) 		 rdDAdr: read device-address 读器件地址
(0353) 		 *pRdDat: p->read data 读取数据指针
(0354) 		 num: number 读取数据个数
(0355) 返    回:
(0356) --------------------------------------------------------------------*/
(0357) bool I2C_Read_(uint16 wrDAdr,uint8 wordAdr,
(0358) 			   uint8 rdDAdr,uint8 *pRdDat,uint8 num)
(0359) {
(0360)  	uint8 i;
(0361) 	
(0362) 	if( I2C_Start()==I2C_ERR )
    0199 DF12      RCALL	_I2C_Start
    019A 2300      TST	R16
    019B F411      BNE	0x019E
(0363) 		return I2C_ERR;
    019C 2700      CLR	R16
    019D C033      RJMP	0x01D1
(0364) 
(0365) 	if( I2C_SendWrDAdr_(wrDAdr)==I2C_ERR )
    019E 0186      MOVW	R16,R12
    019F DF34      RCALL	_I2C_SendWrDAdr_
    01A0 2300      TST	R16
    01A1 F411      BNE	0x01A4
(0366) 		return I2C_ERR;
    01A2 2700      CLR	R16
    01A3 C02D      RJMP	0x01D1
(0367) 
(0368) 	if( I2C_SendDat(wordAdr)==I2C_ERR )
    01A4 2F04      MOV	R16,R20
    01A5 DF70      RCALL	_I2C_SendDat
    01A6 2300      TST	R16
    01A7 F411      BNE	0x01AA
(0369) 		return I2C_ERR;
    01A8 2700      CLR	R16
    01A9 C027      RJMP	0x01D1
(0370) 
(0371) 	if( I2C_Restart()==I2C_ERR )
    01AA DF0E      RCALL	_I2C_Restart
    01AB 2300      TST	R16
    01AC F411      BNE	0x01AF
(0372) 		return I2C_ERR;
    01AD 2700      CLR	R16
    01AE C022      RJMP	0x01D1
(0373) 
(0374) 	if( I2C_SendRdDAdr(rdDAdr)==I2C_ERR )
    01AF 8508      LDD	R16,Y+8
    01B0 DF3D      RCALL	_I2C_SendRdDAdr
    01B1 2300      TST	R16
    01B2 F411      BNE	0x01B5
(0375) 		return I2C_ERR;
    01B3 2700      CLR	R16
    01B4 C01C      RJMP	0x01D1
(0376) 
(0377) 	for(i=0;i<num-1;i++)
    01B5 2744      CLR	R20
    01B6 C00A      RJMP	0x01C1
(0378) 		if( I2C_RcvAckDat(pRdDat+i)==I2C_ERR )
    01B7 2F04      MOV	R16,R20
    01B8 2711      CLR	R17
    01B9 0D0A      ADD	R16,R10
    01BA 1D1B      ADC	R17,R11
    01BB DF78      RCALL	_I2C_RcvAckDat
    01BC 2300      TST	R16
    01BD F411      BNE	0x01C0
(0379) 			return I2C_ERR;
    01BE 2700      CLR	R16
    01BF C011      RJMP	0x01D1
    01C0 9543      INC	R20
    01C1 2F86      MOV	R24,R22
    01C2 5081      SUBI	R24,1
    01C3 1748      CP	R20,R24
    01C4 F390      BCS	0x01B7
(0380) 	
(0381) 	if( I2C_RcvNAckDat(pRdDat+i)==I2C_ERR )
    01C5 2F04      MOV	R16,R20
    01C6 2711      CLR	R17
    01C7 0D0A      ADD	R16,R10
    01C8 1D1B      ADC	R17,R11
    01C9 DF5A      RCALL	_I2C_RcvNAckDat
    01CA 2300      TST	R16
    01CB F411      BNE	0x01CE
(0382) 			return I2C_ERR;
    01CC 2700      CLR	R16
    01CD C003      RJMP	0x01D1
(0383) 
(0384) 	I2C_Stop();
    01CE E984      LDI	R24,0x94
    01CF BF86      OUT	0x36,R24
(0385) 	
(0386) 	return I2C_CRR;
    01D0 E001      LDI	R16,1
    01D1 940E03BB  CALL	pop_gset4
    01D3 9508      RET
_delay50us:
  j                    --> R20
  t                    --> R16
    01D4 940E03BE  CALL	push_gset1
FILE: D:\ICC_H\Hardware.H
(0001) /*********************************************************************
(0002) 	微 雪 电 子   WaveShare   http://www.waveShare.net            	
(0003) 		                                                        
(0004) 目    的:   建立AVR的硬件提取库,增加各类补丁,方便移植
(0005) 					
(0006) 目标系统:   基于AVR单片机
(0007) 		                                                                
(0008) 应用软件:   ICCAVR
(0009) 		                                                                
(0010) 版    本:   Version 1.0                                                          
(0011) 		                                                                
(0012) 圆版时间:   2005-06-25
(0013) 	
(0014) 开发人员:   SEE(中文名不告诉你~怕你骂我)
(0015) 
(0016) 说    明:   若用于商业用途,请保留此段文字或注明代码来源
(0017) 	
(0018) 	深 圳 微 雪 电 子 保 留 所 有 的 版 权     
(0019) *********************************************************************/
(0020) 
(0021) /*01010101010101010101010101010101010101010101010101010101010101010101
(0022) ----------------------------------------------------------------------
(0023) 版本更新记录:
(0024) 
(0025) ----------------------------------------------------------------------
(0026) 入口参数说明:
(0027) 
(0028) ----------------------------------------------------------------------
(0029) 待定参数说明:
(0030) 
(0031) ----------------------------------------------------------------------	
(0032) 对外变量说明:
(0033)     
(0034) ----------------------------------------------------------------------
(0035) 对外函数说明:
(0036)    
(0037) ----------------------------------------------------------------------
(0038) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0039) 
(0040) #ifndef Hardware_H
(0041) #define Hardware_H
(0042) 
(0043) #include <math.h>
(0044) #include <string.h>
(0045) #include <stdio.h>
(0046) #include <macros.h>
(0047) #include <eeprom.h>
(0048) //#include <wdt.h>
(0049) #include "D:\ICC_H\I2C.H"	//i2c即AVR的"twi"
(0050) 
(0051) /* hard configs */
(0052) #ifndef flash
(0053) 	#define flash	const
(0054) #endif
(0055) 
(0056) #ifndef code
(0057) 	#define code	const
(0058) #endif
(0059) 
(0060) #ifndef NOP
(0061) 	#define NOP()	asm("nop")
(0062) #endif
(0063) 
(0064) /* io configs */
(0065) #define sbi(io,bit)		(  io |=  (1<<bit) )	//example: sbi(PORTA,0);sbi(DDRA,0);
(0066) #define cbi(io,bit)		(  io &= ~(1<<bit) )	//example: cbi(PORTA,0);cbi(DDRA,0);
(0067) #define gbi(pin ,bit)	( pin &   (1<<bit) )	//example: gbi(PINA,0);
(0068) 
(0069) /* interrupt configs */
(0070) #define DIS_INT  asm("sei")
(0071) #define EN_INT   asm("cli")
(0072) 
(0073) /* wdt configs */
(0074) #define WDT()    asm("wdr")
(0075) 
(0076) /* bit operation */
(0077) //#ifndef BIT
(0078) //#define BIT(x)	( 1<<(x) )
(0079) //#endif
(0080) 
(0081) /* USART configs for 4 Mhz crystal */
(0082) //#define BAUD9600			25
(0083) //#define BAUD19000			12
(0084) //#define UART_TRAN_ON()	UCR |=  0x08
(0085) //#define UART_TRAN_OFF()	UCR &= ~0x08
(0086) //#define UART_RCV_ON()		UCR |=  0x10
(0087) //#define UART_RCV_OFF()	UCR &= ~0x10
(0088) 
(0089) /*--------------------------------------------------------------------
(0090) 函数全称:50us 延时
(0091) 函数功能:当然是 50us延时 啦
(0092) 注意事项:基于7.3728M晶振,稍微有点误差
(0093) 提示说明:调用Delay50us(20),得到1ms延时
(0094) 输    入:	
(0095) 返    回:无 
(0096) --------------------------------------------------------------------*/
(0097) void delay50us(sint16 t)
(0098) {
(0099)     uint8 j;		
(0100)     for(;t>0;t--)			
    01D6 C007      RJMP	0x01DE
(0101)         for(j=0;j<70;j++)	
    01D7 2744      CLR	R20
    01D8 C001      RJMP	0x01DA
    01D9 9543      INC	R20
    01DA 3446      CPI	R20,0x46
    01DB F3E8      BCS	0x01D9
    01DC 5001      SUBI	R16,1
    01DD 4010      SBCI	R17,0
    01DE 2422      CLR	R2
    01DF 2433      CLR	R3
    01E0 1620      CP	R2,R16
    01E1 0631      CPC	R3,R17
    01E2 F3A4      BLT	0x01D7
(0102)             ;
(0103) }
    01E3 940E03C1  CALL	pop_gset1
    01E5 9508      RET
_delay50ms:
  i                    --> R20
  t                    --> R16
    01E6 940E03BE  CALL	push_gset1
(0104) /*--------------------------------------------------------------------
(0105) 函数全称:50ms 延时
(0106) 函数功能:当然是 50ms延时 啦
(0107) 注意事项:基于7.3728M晶振,稍微有点误差
(0108) 提示说明:调用delay50ms(20),得到1s延时 
(0109) 输    入:
(0110) 返    回:无
(0111) --------------------------------------------------------------------*/
(0112) void delay50ms(sint16 t)
(0113) {
(0114) 	uint16 i; 
(0115) 	for(;t>0;t--)
    01E8 C00B      RJMP	0x01F4
(0116) 		for(i=0;i<52642;i++)
    01E9 2744      CLR	R20
    01EA 2755      CLR	R21
    01EB C002      RJMP	0x01EE
    01EC 5F4F      SUBI	R20,0xFF
    01ED 4F5F      SBCI	R21,0xFF
    01EE 3A42      CPI	R20,0xA2
    01EF ECED      LDI	R30,0xCD
    01F0 075E      CPC	R21,R30
    01F1 F3D0      BCS	0x01EC
    01F2 5001      SUBI	R16,1
    01F3 4010      SBCI	R17,0
    01F4 2422      CLR	R2
    01F5 2433      CLR	R3
    01F6 1620      CP	R2,R16
    01F7 0631      CPC	R3,R17
    01F8 F384      BLT	0x01E9
(0117) 			;								 
(0118) }
    01F9 940E03C1  CALL	pop_gset1
    01FB 9508      RET
_WriteAByte:
  dat                  --> R22
  wordAdr              --> R20
    01FC 940E03D5  CALL	push_gset2
    01FE 2F62      MOV	R22,R18
    01FF 2F40      MOV	R20,R16
    0200 9721      SBIW	R28,1
FILE: D:\ICC_H\PCF8563.H
(0001) /*********************************************************************
(0002) 	微 雪 电 子   WaveShare   http://www.waveShare.net            	
(0003) 		                                                        
(0004) 目    的:   建立PCF8563操作库
(0005) 	
(0006) 目标系统:   基于AVR单片机
(0007) 		                                                                
(0008) 应用软件:   ICCAVR
(0009) 		                                                                
(0010) 版    本:   Version 1.0                                                
(0011) 		                                                                
(0012) 圆版时间:   2005-06-25
(0013) 	
(0014) 开发人员:   SEE(中文名不告诉你~怕你骂我)
(0015) 
(0016) 说    明:   若用于商业用途,请保留此段文字或注明代码来源
(0017) 	
(0018) 	深 圳 微 雪 电 子 保 留 所 有 的 版 权     
(0019) *********************************************************************/
(0020) 
(0021) /*01010101010101010101010101010101010101010101010101010101010101010101
(0022) ----------------------------------------------------------------------
(0023) 版本更新记录:
(0024) 
(0025) ----------------------------------------------------------------------
(0026) 入口参数说明:
(0027) 	//#define WR_DADR	0xA2	//器件地址:A2 A1 A0 = 0 0 0
(0028) 	//#define RD_DADR	0xA3	//器件地址:A2 A1 A0 = 0 0 0
(0029) 
(0030) ----------------------------------------------------------------------
(0031) 待定参数说明:
(0032) 
(0033) ----------------------------------------------------------------------	
(0034) 对外变量说明:
(0035) 
(0036) ----------------------------------------------------------------------
(0037) 对外函数说明:
(0038) 
(0039) ----------------------------------------------------------------------
(0040) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0041) 
(0042) #ifndef PCF8563_H
(0043) #define PCF8563_H

⌨️ 快捷键说明

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