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

📄 pcf8563.s

📁 ATMEGA128的PCF8536驱动程序
💻 S
字号:
	.module PCF8563.c
	.area data(ram, con, rel)
_week_list::
	.blkw 1
	.area idata
	.word L2
	.area data(ram, con, rel)
	.blkw 1
	.area idata
	.word L3
	.area data(ram, con, rel)
	.blkw 1
	.area idata
	.word L4
	.area data(ram, con, rel)
	.blkw 1
	.area idata
	.word L5
	.area data(ram, con, rel)
	.blkw 1
	.area idata
	.word L6
	.area data(ram, con, rel)
	.blkw 1
	.area idata
	.word L7
	.area data(ram, con, rel)
	.blkw 1
	.area idata
	.word L8
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
	.dbsym e week_list _week_list A[14:7]pc
_time_tmp::
	.blkb 9
	.area idata
	.byte 48,48,58,48,48,58,48,48,0
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
	.dbsym e time_tmp _time_tmp A[9:9]c
_data_tmp::
	.blkb 11
	.area idata
	.byte 50,48,48,56,46,48,49,46,48,49,0
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
	.dbsym e data_tmp _data_tmp A[11:11]c
_time::
	.blkb 2
	.area idata
	.byte 64,'Y
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
	.blkb 2
	.area idata
	.byte 35,41
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
	.blkb 2
	.area idata
	.byte 5,2
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
	.blkb 1
	.area idata
	.byte 8
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
	.dbsym e time _time A[7:7]c
	.area text(rom, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
	.dbfunc e clear _clear fV
;            num -> R18
;              p -> R16,R17
	.even
_clear::
	.dbline -1
	.dbline 41
; /************************************************
; 文件:PCF8563.h
; 用途:PCF8563函数头文件
; 注意:系统时钟8M
; 创建:2008.1.25
; 修改:2008.1.25
; Copy Right  (c)  www.avrvi.com  AVR与虚拟仪器
; ************************************************/
; #include "..\config.h"
; unsigned char syserr;
; unsigned char *week_list[7]={
; 	 				 		    "  Sunday ",
; 			 					"  Monday ",
; 			 					" Tuesday ",
; 								"Wednesday",
; 			 					"Thursday ",
; 			 					" Friday  ",
; 			 					"Saturday "
; };
; unsigned char write_buff[8],read_buff[8],time_tmp[]="00:00:00",data_tmp[]="2008.01.01",*week_tmp;
; unsigned char time[7]={
; 		 	  		   0x40/*秒*/,
; 					   0x59/*分*/,
; 					   0x23/*时*/,
; 					   0x29/*天*/,
; 					   0x05/*星期*/,
; 					   0x02/*月/世纪*/,
; 					   0x08/*年*/
; };
; /*************************************************************************
; ** 函数名称: clear(unsigned char *p,unsigned char num)
; ** 功能描述: 清除指定区域指定长度的数据
; ** 输 入: unsigned char *p :起始地址   unsigned char num :零数据长度
; ** 输出	 : 
; ** 全局变量: 
; ** 调用模块: 
; ** 说明:
; ** 注意:
; **************************************************************************/
; void clear(unsigned char *p,unsigned char num)
; {
	.dbline 42
;  for(;num>0;num--)
	xjmp L13
L10:
	.dbline 43
	.dbline 44
	clr R2
	movw R30,R16
	std z+0,R2
	.dbline 45
	subi R16,255  ; offset = 1
	sbci R17,255
	.dbline 46
L11:
	.dbline 42
	dec R18
L13:
	.dbline 42
	clr R2
	cp R2,R18
	brlo L10
	.dbline -2
L9:
	.dbline 0 ; func end
	ret
	.dbsym r num 18 c
	.dbsym r p 16 pc
	.dbend
	.dbfunc e PCF8536_wt _PCF8536_wt fV
;              t -> R10
;           data -> R20
;            add -> R22,R23
	.even
_PCF8536_wt::
	xcall push_gset3
	mov R20,R18
	movw R22,R16
	.dbline -1
	.dbline 60
;  	{
; 	 *p=0;
; 	 p++;
; 	}
; }
; /*************************************************************************
; ** 函数名称: PCF8536_wt(unsigned int add,unsigned char data)
; ** 功能描述: 向PCF8563指定地址写入一条数据
; ** 输 入: unsigned int add    :高八位为器件地址,低八位为内部寄存器地址
;    		   unsigned char data  :需要写入的数据
; ** 输出	 : 
; ** 全局变量: 
; ** 调用模块: 
; ** 说明:
; ** 注意:
; **************************************************************************/
; void PCF8536_wt(unsigned int add,unsigned char data)
; {
	.dbline 62
;  unsigned char t;
;  t=add>>8;
	movw R10,R22
	mov R10,R11
	clr R11
	.dbline 63
;  t<<=1;
	lsl R10
	.dbline 64
;  i2cstart();
	xcall _i2cstart
	.dbline 65
;  if(i2cwt(W_ADD_COM+t)==SLAW)
	mov R16,R10
	subi R16,94    ; addi 162
	xcall _i2cwt
	cpi R16,24
	brne L15
	.dbline 66
;  	{
	.dbline 67
; 	 i2cwt(add);
	mov R16,R22
	xcall _i2cwt
	.dbline 68
; 	 i2cwt(data);
	mov R16,R20
	xcall _i2cwt
	.dbline 69
; 	}
	xjmp L16
L15:
	.dbline 70
;  else syserr=ERR_SLAW;
	ldi R24,1
	sts _syserr,R24
L16:
	.dbline 71
;  i2cstop();
	xcall _i2cstop
	.dbline -2
L14:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r t 10 c
	.dbsym r data 20 c
	.dbsym r add 22 i
	.dbend
	.dbfunc e PCF8536_wt_p _PCF8536_wt_p fV
;              t -> R12
;            num -> R20
;              p -> R22,R23
;            add -> R10,R11
	.even
_PCF8536_wt_p::
	xcall push_gset4
	movw R22,R18
	movw R10,R16
	ldd R20,y+8
	.dbline -1
	.dbline 86
; }
; /*************************************************************************
; ** 函数名称: PCF8536_wt_p(unsigned int add,unsigned char *p,unsigned char num)
; ** 功能描述: 向PCF8563地址连续的寄存器写入系列数据
; ** 输 入: unsigned int add    :高八位为器件地址,低八位为内部寄存器地址
;    		   unsigned char *p    :需要写入的数据域的起始地址
; 		   unsigned char num   :写入数据的个数
; ** 输出	 : 
; ** 全局变量: 
; ** 调用模块: 
; ** 说明:写入数据区域为地址连续的寄存器
; ** 注意:
; **************************************************************************/
; void PCF8536_wt_p(unsigned int add,unsigned char *p,unsigned char num)
; {
	.dbline 88
;  unsigned char t;
;  t=add>>8;
	movw R12,R10
	mov R12,R13
	clr R13
	.dbline 89
;  t<<=1;
	lsl R12
	.dbline 90
;  i2cstart();
	xcall _i2cstart
	.dbline 91
;  if(i2cwt(W_ADD_COM+t)==SLAW)
	mov R16,R12
	subi R16,94    ; addi 162
	xcall _i2cwt
	cpi R16,24
	brne L18
	.dbline 92
;  	{
	.dbline 93
; 	 i2cwt(add);
	mov R16,R10
	xcall _i2cwt
	.dbline 94
; 	 for(;num>0;num--)
	xjmp L23
L20:
	.dbline 95
	.dbline 96
	movw R30,R22
	ldd R16,z+0
	xcall _i2cwt
	.dbline 97
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 98
	nop
	.dbline 99
L21:
	.dbline 94
	dec R20
L23:
	.dbline 94
	clr R2
	cp R2,R20
	brlo L20
	.dbline 100
; 	 	{
; 		 i2cwt(*p);
; 		 p++;
; 		 _NOP();
; 		}
; 	}
	xjmp L19
L18:
	.dbline 101
;  else syserr=ERR_SLAW;
	ldi R24,1
	sts _syserr,R24
L19:
	.dbline 102
;  i2cstop();
	xcall _i2cstop
	.dbline -2
L17:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r t 12 c
	.dbsym r num 20 c
	.dbsym r p 22 pc
	.dbsym r add 10 i
	.dbend
	.dbfunc e PCF8536_rd _PCF8536_rd fV
;              t -> R12
;            num -> R20
;              p -> R22,R23
;            add -> R10,R11
	.even
_PCF8536_rd::
	xcall push_gset4
	movw R22,R18
	movw R10,R16
	ldd R20,y+8
	.dbline -1
	.dbline 117
; }
; /*************************************************************************
; ** 函数名称: PCF8536_rd(unsigned int add,unsigned char *p,unsigned char num)
; ** 功能描述: 读PCF8563
; ** 输 入: unsigned int add    :高八位为器件地址,低八位为内部寄存器地址
;    		   unsigned char *p    :读出的数据存放地址的起始地址
; 		   unsigned char num   :读出数据的个数
; ** 输出	 : 
; ** 全局变量: 
; ** 调用模块: 
; ** 说明:
; ** 注意:
; **************************************************************************/
; void PCF8536_rd(unsigned int add,unsigned char *p,unsigned char num)
; {
	.dbline 119
;  unsigned char t;
;  t=add>>8;
	movw R12,R10
	mov R12,R13
	clr R13
	.dbline 120
;  t<<=1;
	lsl R12
	.dbline 121
;  i2cstart();
	xcall _i2cstart
	.dbline 122
;  if(i2cwt(W_ADD_COM+t)==SLAW)
	mov R16,R12
	subi R16,94    ; addi 162
	xcall _i2cwt
	cpi R16,24
	brne L25
	.dbline 123
;  	{
	.dbline 124
; 	 i2cwt(add);
	mov R16,R10
	xcall _i2cwt
	.dbline 125
; 	}
	xjmp L26
L25:
	.dbline 126
;  else syserr=ERR_SLAW;
	ldi R24,1
	sts _syserr,R24
L26:
	.dbline 128
;  
;  i2cstart();
	xcall _i2cstart
	.dbline 129
;  if(i2cwt(R_ADD_COM+t)==SLAW)
	mov R16,R12
	subi R16,93    ; addi 163
	xcall _i2cwt
	cpi R16,24
	brne L27
	.dbline 130
;  	{
	.dbline 131
; 	 i2cwt(add);
	mov R16,R10
	xcall _i2cwt
	.dbline 132
; 	}
	xjmp L32
L27:
	.dbline 133
;  else syserr=ERR_SLAW;
	ldi R24,1
	sts _syserr,R24
	.dbline 135
;  
;  for(;num>0;num--)
	xjmp L32
L29:
	.dbline 136
	.dbline 137
	xcall _i2crd
	movw R30,R22
	std z+0,R16
	.dbline 138
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 139
L30:
	.dbline 135
	dec R20
L32:
	.dbline 135
	clr R2
	cp R2,R20
	brlo L29
	.dbline -2
L24:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r t 12 c
	.dbsym r num 20 c
	.dbsym r p 22 pc
	.dbsym r add 10 i
	.dbend
	.dbfunc e PCF8563_init _PCF8563_init fV
	.even
_PCF8563_init::
	.dbline -1
	.dbline 152
;  	{
; 	 *p=i2crd();
; 	 p++;
; 	} 
; }
; /*************************************************************************
; ** 函数名称: PCF8563_init(void)
; ** 功能描述: PCF8563初始化
; ** 输 入: 
; ** 输出	 : 
; ** 全局变量: 
; ** 调用模块: 
; ** 说明:
; ** 注意:
; **************************************************************************/
; void PCF8563_init(void)
; {
	.dbline 153
;  clear(write_buff,8);
	ldi R18,8
	ldi R16,<_write_buff
	ldi R17,>_write_buff
	xcall _clear
	.dbline 154
;  clear(read_buff,8);
	ldi R18,8
	ldi R16,<_read_buff
	ldi R17,>_read_buff
	xcall _clear
	.dbline 156
;  
;  PCF8536_wt(0x00,0x20);//写寄存器1,停止计时
	ldi R18,32
	clr R16
	clr R17
	xcall _PCF8536_wt
	.dbline 158
;  //PCF8536_wt_p(0x02,time,7);//设定时间
;  PCF8536_wt(0x00,0x00);//写寄存器1,开始计时
	clr R18
	clr R16
	clr R17
	xcall _PCF8536_wt
	.dbline -2
L33:
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
_syserr::
	.blkb 1
	.dbsym e syserr _syserr c
_week_tmp::
	.blkb 2
	.dbsym e week_tmp _week_tmp pc
_read_buff::
	.blkb 8
	.dbsym e read_buff _read_buff A[8:8]c
_write_buff::
	.blkb 8
	.dbsym e write_buff _write_buff A[8:8]c
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
L8:
	.blkb 10
	.area idata
	.byte 'S,'a,'t,'u,'r,'d,'a,'y,32,0
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
L7:
	.blkb 10
	.area idata
	.byte 32,'F,'r,'i,'d,'a,'y,32,32,0
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
L6:
	.blkb 10
	.area idata
	.byte 'T,'h,'u,'r,'s,'d,'a,'y,32,0
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
L5:
	.blkb 10
	.area idata
	.byte 'W,'e,'d,'n,'e,'s,'d,'a,'y,0
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
L4:
	.blkb 10
	.area idata
	.byte 32,'T,'u,'e,'s,'d,'a,'y,32,0
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
L3:
	.blkb 10
	.area idata
	.byte 32,32,'M,'o,'n,'d,'a,'y,32,0
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c
L2:
	.blkb 10
	.area idata
	.byte 32,32,'S,'u,'n,'d,'a,'y,32,0
	.area data(ram, con, rel)
	.dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\PCF8563.c

⌨️ 快捷键说明

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