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

📄 1302.s

📁 基于AVR单片机的热电偶测量系统源码
💻 S
字号:
	.module _1302.c
	.area text(rom, con, rel)
	.dbfile D:\zhangyu\H2test\program\1302.c
	.dbfunc e pDS1302_Write _pDS1302_Write fV
;              i -> R20
;           data -> R22
;            reg -> R10
	.even
_pDS1302_Write::
	xcall push_gset3
	mov R22,R18
	mov R10,R16
	.dbline -1
	.dbline 18
; /*-------------------------------------------------------------*-
; File name: 1302.c
; Description:本模块为实时时钟模块。
; Function List:
; 1.void pDS1302_Write(uchar reg,uchar data)  写实时时钟函数
; 2.uchar pDS1302_Read(uchar reg)  读实时时钟函数
; 3.void pDS1302_Init(void)     1302初始化函数
; 
; -----------------------------------------------------------------
; 实时时钟模块
; -*--------------------------------------------------------------*/
; #include <iom16v.h>
; #include <macros.h>
; #include "1302.h"
; #include "main.h"
; 
; void pDS1302_Write(unsigned char reg,unsigned char data) 
; { 
	.dbline 21
;         unsigned char i; 
;      
;         mDS1302IO_Out; 
	sbi 0x11,4
	.dbline 22
;         mSetDS1302IO;  
	sbi 0x12,4
	.dbline 23
;         mClrDS1302RST;    
	cbi 0x12,3
	.dbline 24
;         wait;
	nop
	 nop
	.dbline 25
; 	    mClrDS1302SCK; 
	cbi 0x12,2
	.dbline 26
;         wait;       
	nop
	 nop
	.dbline 27
;         mSetDS1302RST;
	sbi 0x12,3
	.dbline 28
;         wait; 
	nop
	 nop
	.dbline 29
;         for(i=0;i<8;i++) 
	clr R20
	xjmp L5
L2:
	.dbline 30
;     	{  
	.dbline 31
;            	if(reg&BIT(i)) 
	ldi R16,1
	mov R17,R20
	xcall lsl8
	mov R2,R10
	and R2,R16
	breq L6
	.dbline 32
;            	  	mSetDS1302IO; 
	sbi 0x12,4
	xjmp L7
L6:
	.dbline 34
;            	else           
;            		mClrDS1302IO; 
	cbi 0x12,4
L7:
	.dbline 35
	nop
	 nop
	.dbline 36
	sbi 0x12,2
	.dbline 37
	nop
	 nop
	.dbline 38
	cbi 0x12,2
	.dbline 39
	nop
	 nop
	.dbline 40
L3:
	.dbline 29
	inc R20
L5:
	.dbline 29
	cpi R20,8
	brlo L2
	.dbline 42
;         	wait; 
;         	mSetDS1302SCK; 
;         	wait; 
;         	mClrDS1302SCK; 
;         	wait;        
; 		} 
;          
;     	for(i=0;i<8;i++) 
	clr R20
	xjmp L11
L8:
	.dbline 43
;     	{  
	.dbline 44
;         	if(data&BIT(i))
	ldi R16,1
	mov R17,R20
	xcall lsl8
	mov R2,R22
	and R2,R16
	breq L12
	.dbline 45
;             	mSetDS1302IO; 
	sbi 0x12,4
	xjmp L13
L12:
	.dbline 47
;         	else 
;             	mClrDS1302IO; 
	cbi 0x12,4
L13:
	.dbline 48
	nop
	 nop
	.dbline 49
	sbi 0x12,2
	.dbline 50
	nop
	 nop
	.dbline 51
	cbi 0x12,2
	.dbline 52
	nop
	 nop
	.dbline 53
L9:
	.dbline 42
	inc R20
L11:
	.dbline 42
	cpi R20,8
	brlo L8
	.dbline 55
;         	wait; 
;         	mSetDS1302SCK; 
;         	wait; 
;         	mClrDS1302SCK; 
;         	wait;
;     	} 
;      
;         wait; 
	nop
	 nop
	.dbline 56
;         mClrDS1302RST;
	cbi 0x12,3
	.dbline 57
;         wait;
	nop
	 nop
	.dbline -2
L1:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r data 22 c
	.dbsym r reg 10 c
	.dbend
	.dbfunc e pDS1302_Read _pDS1302_Read fc
;           data -> R20
;              i -> R22
;            reg -> R10
	.even
_pDS1302_Read::
	xcall push_gset3
	mov R10,R16
	.dbline -1
	.dbline 61
; } 
; 
; unsigned char pDS1302_Read(unsigned char reg) 
; { 
	.dbline 62
;     unsigned char data=0,i; 
	clr R20
	.dbline 64
;          
;     mDS1302IO_Out; 
	sbi 0x11,4
	.dbline 65
;     reg+=1;//读标志 
	inc R10
	.dbline 66
;     mSetDS1302IO; 
	sbi 0x12,4
	.dbline 68
;           
;     mClrDS1302RST;
	cbi 0x12,3
	.dbline 69
;     wait; 
	nop
	 nop
	.dbline 70
;     mClrDS1302SCK;
	cbi 0x12,2
	.dbline 71
;     wait;
	nop
	 nop
	.dbline 72
; 	wait;
	nop
	 nop
	.dbline 73
;     mSetDS1302RST;
	sbi 0x12,3
	.dbline 74
;     wait;
	nop
	 nop
	.dbline 76
;          
;     for(i=0;i<8;i++) 
	clr R22
	xjmp L18
L15:
	.dbline 77
;     {  
	.dbline 78
;         if(reg&BIT(i))
	ldi R16,1
	mov R17,R22
	xcall lsl8
	mov R2,R10
	and R2,R16
	breq L19
	.dbline 79
;         	mSetDS1302IO; 
	sbi 0x12,4
	xjmp L20
L19:
	.dbline 81
;         else          
;         	mClrDS1302IO; 
	cbi 0x12,4
L20:
	.dbline 82
	nop
	 nop
	.dbline 83
	sbi 0x12,2
	.dbline 84
	nop
	 nop
	.dbline 85
	cbi 0x12,2
	.dbline 86
	nop
	 nop
	.dbline 87
L16:
	.dbline 76
	inc R22
L18:
	.dbline 76
	cpi R22,8
	brlo L15
	.dbline 89
;         wait; 
;         mSetDS1302SCK; 
;         wait; 
;         mClrDS1302SCK;
;         wait; 
;     } 
;      
;     mDS1302IO_In; 
	cbi 0x11,4
	.dbline 90
;     wait;
	nop
	 nop
	.dbline 91
; 	wait;
	nop
	 nop
	.dbline 93
;          
;     for(i=0;i<8;i++) 
	clr R22
	xjmp L24
L21:
	.dbline 94
;     {  
	.dbline 95
;          if(mTestDS1302IO)
	sbis 0x10,4
	rjmp L25
	.dbline 96
;          	data |= BIT(i); 
	ldi R16,1
	mov R17,R22
	xcall lsl8
	or R20,R16
	xjmp L26
L25:
	.dbline 98
;          else            
;             data &= ~BIT(i); 
	ldi R16,1
	mov R17,R22
	xcall lsl8
	mov R2,R16
	com R2
	and R20,R2
L26:
	.dbline 99
	sbi 0x12,2
	.dbline 100
	nop
	 nop
	.dbline 101
	cbi 0x12,2
	.dbline 102
	nop
	 nop
	.dbline 103
L22:
	.dbline 93
	inc R22
L24:
	.dbline 93
	cpi R22,8
	brlo L21
	.dbline 104
;          mSetDS1302SCK; 
;          wait; 
;          mClrDS1302SCK;
;          wait; 
;     } 
;     wait;
	nop
	 nop
	.dbline 105
;     mClrDS1302RST;
	cbi 0x12,3
	.dbline 106
;     wait;
	nop
	 nop
	.dbline 108
;      
;     return(data); 
	mov R16,R20
	.dbline -2
L14:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r data 20 c
	.dbsym r i 22 c
	.dbsym r reg 10 c
	.dbend
	.dbfunc e pDS1302_Init _pDS1302_Init fV
	.even
_pDS1302_Init::
	.dbline -1
	.dbline 112
; } 
; 
; void pDS1302_Init(void) 
; { 
	.dbline 113
;     pDS1302_Write(mDS1302_CONTROL_Reg,0x00); //关闭写保护  
	clr R18
	ldi R16,142
	xcall _pDS1302_Write
	.dbline 115
;   //pDS1302_Write(mDS1302_SEC_Reg,0x80);     //暂停  
;     pDS1302_Write(mDS1302_CHARGER_Reg,0x00); //涓流充电 A9  
	clr R18
	ldi R16,144
	xcall _pDS1302_Write
	.dbline 116
;   	pDS1302_Write(mDS1302_HOUR_Reg,0x08);    //时 
	ldi R18,8
	ldi R16,132
	xcall _pDS1302_Write
	.dbline 117
;   	pDS1302_Write(mDS1302_MIN_Reg,0x34);     //分 
	ldi R18,52
	ldi R16,130
	xcall _pDS1302_Write
	.dbline 118
;   	pDS1302_Write(mDS1302_SEC_Reg,0x20);     //秒 
	ldi R18,32
	ldi R16,128
	xcall _pDS1302_Write
	.dbline 119
;     pDS1302_Write(mDS1302_CONTROL_Reg,0x80); //打开写保护 
	ldi R18,128
	ldi R16,142
	xcall _pDS1302_Write
	.dbline -2
L27:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

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