dataprotask.lst

来自「cs5460a做功率表用 cs5460a做功率表用 cs5460a做功率表」· LST 代码 · 共 556 行 · 第 1/2 页

LST
556
字号
   1               		.file	"DataProTask.c"
   2               		.arch atmega8
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
 101               	.global	ReadAD
 102               		.data
 105               	ReadAD:
 106 0000 00        		.byte	0
 107 0001 6400      		.word	100
 108               	.global	Ps_Neg
 109               	.global	Ps_Neg
 110               		.section .bss
 113               	Ps_Neg:
 114 0000 00        		.skip 1,0
 115               	.global	Detect_T1
 116               	.global	Detect_T1
 119               	Detect_T1:
 120 0001 0000      		.skip 2,0
 121               	.global	Detect_T0
 122               	.global	Detect_T0
 125               	Detect_T0:
 126 0003 0000      		.skip 2,0
 127               	.global	Detect_B0
 128               	.global	Detect_B0
 131               	Detect_B0:
 132 0005 0000      		.skip 2,0
 133               	.global	Detect_B1
 134               	.global	Detect_B1
 137               	Detect_B1:
 138 0007 0000      		.skip 2,0
 139               	.global	Detect_A0
 140               	.global	Detect_A0
 143               	Detect_A0:
 144 0009 0000      		.skip 2,0
 145               	.global	Detect_A1
 146               	.global	Detect_A1
 149               	Detect_A1:
 150 000b 0000      		.skip 2,0
 151               		.lcomm Step.0,1
 152               		.text
 154               	.global	DealDataMainLoop
 156               	DealDataMainLoop:
   1:driver/DataProTask.c **** /**********************************************
   2:driver/DataProTask.c **** 公司名称:
   3:driver/DataProTask.c **** 文 件 名:CS5460A.c
   4:driver/DataProTask.c **** 版 本 号:
   5:driver/DataProTask.c **** 程序设计:
   6:driver/DataProTask.c **** 说    明:
   7:driver/DataProTask.c **** 完成日期:
   8:driver/DataProTask.c **** 修改日期:
   9:driver/DataProTask.c **** 功能摘要:	
  10:driver/DataProTask.c **** ***********************************************/
  11:driver/DataProTask.c **** #define  _DealData
  12:driver/DataProTask.c **** #include "includes.h"
  13:driver/DataProTask.c **** 
  14:driver/DataProTask.c **** uint8	fAdRunning_A;			//AD是否运行良好
  15:driver/DataProTask.c **** uint8	fAdRunning_B;			//AD是否运行良好
  16:driver/DataProTask.c **** 
  17:driver/DataProTask.c **** uint8	V_sign_A;
  18:driver/DataProTask.c **** uint8   I_sign_A;
  19:driver/DataProTask.c **** uint8	V_sign_B;
  20:driver/DataProTask.c **** uint8   I_sign_B;
  21:driver/DataProTask.c **** 
  22:driver/DataProTask.c **** uint16   Detect_A1 =0 ;	 //测试时用。A状态寄存器的最高位是1
  23:driver/DataProTask.c **** uint16   Detect_A0 =0;	 //A状态寄存器的最高位是0
  24:driver/DataProTask.c **** uint16   Detect_B1 =0;	 //B状态寄存器的最高位是1
  25:driver/DataProTask.c **** uint16   Detect_B0 =0;	 //B状态寄存器的最高位是0
  26:driver/DataProTask.c **** uint16   Detect_T0 =0;	 //不用加载校验值
  27:driver/DataProTask.c **** uint16   Detect_T1 =0;	 //加载校验值
  28:driver/DataProTask.c **** 
  29:driver/DataProTask.c **** 
  30:driver/DataProTask.c **** uint32  Ps;						//三相总功率
  31:driver/DataProTask.c **** uint8   Ps_Neg = 0;                  //功率为负标志
  32:driver/DataProTask.c **** WAIT_TIME_STRUCT	ReadAD = {0,_1S};
  33:driver/DataProTask.c **** 
  34:driver/DataProTask.c **** void  DealDataMainLoop (void);
  35:driver/DataProTask.c **** void  Date_cs5460(void);
  36:driver/DataProTask.c **** 
  37:driver/DataProTask.c **** //---------------------------
  38:driver/DataProTask.c **** 
  39:driver/DataProTask.c **** /*void  DealDataMainLoop (void)
  40:driver/DataProTask.c **** {
  41:driver/DataProTask.c ****    uint8   AD_Buf[4];
  42:driver/DataProTask.c **** 
  43:driver/DataProTask.c ****  if(ReadAD.fGetTime) 
  44:driver/DataProTask.c ****    {
  45:driver/DataProTask.c ****       ReadAD.fGetTime = 0;
  46:driver/DataProTask.c ****       ReadAD.WaitTime = _1S;
  47:driver/DataProTask.c ****       if (Rest5460A_Time != 0x00) 
  48:driver/DataProTask.c **** 	     {
  49:driver/DataProTask.c ****     		Rest5460A_Time--;                 //屏蔽前两次AD转换
  50:driver/DataProTask.c ****     		fAdRunning_A = 1;
  51:driver/DataProTask.c ****     	 } 
  52:driver/DataProTask.c **** 	  else 
  53:driver/DataProTask.c **** 	    {
  54:driver/DataProTask.c **** 			CS_AD_A = 0;			 
  55:driver/DataProTask.c **** 		    Rd5460A(AD_Buf,0x1e);			 
  56:driver/DataProTask.c **** 		    CS_AD_A = 1;
  57:driver/DataProTask.c **** 		    if ((AD_Buf[0] & 0x80) == 0x80) 
  58:driver/DataProTask.c **** 			 { 
  59:driver/DataProTask.c **** 				  CS_AD_B = 0;			 	
  60:driver/DataProTask.c **** 		          Rd5460A(AD_Buf,0x1e);			 
  61:driver/DataProTask.c **** 		          CS_AD_B = 1;
  62:driver/DataProTask.c **** 		          if ((AD_Buf[0] & 0x80) == 0x80) 
  63:driver/DataProTask.c **** 				   {
  64:driver/DataProTask.c **** 					   fAdRunning_A = 1;
  65:driver/DataProTask.c **** 					   Date_cs5460() ;
  66:driver/DataProTask.c **** 				   }
  67:driver/DataProTask.c **** 			  }	  
  68:driver/DataProTask.c **** 	     }
  69:driver/DataProTask.c ****     }						
  70:driver/DataProTask.c **** } 
  71:driver/DataProTask.c **** //==================================================
  72:driver/DataProTask.c **** void  Date_cs5460(void)
  73:driver/DataProTask.c **** {
  74:driver/DataProTask.c ****    uint16  temp1 = 0;
  75:driver/DataProTask.c ****    uint16  temp2 = 0;
  76:driver/DataProTask.c ****    uint8   AD_Buf[4];
  77:driver/DataProTask.c **** 														  
  78:driver/DataProTask.c ****    Sync_5460A();
  79:driver/DataProTask.c ****    Clear5460A();
  80:driver/DataProTask.c **** 
  81:driver/DataProTask.c ****             
  82:driver/DataProTask.c ****    CS_AD_A = 0;			 
  83:driver/DataProTask.c ****    Rd5460A(AD_Buf,0x14);
  84:driver/DataProTask.c ****    CS_AD_A = 1;
  85:driver/DataProTask.c ****    temp1 = AD_Buf[0] << 8;
  86:driver/DataProTask.c ****    temp1 += AD_Buf[1];
  87:driver/DataProTask.c ****             
  88:driver/DataProTask.c ****    CS_AD_B = 0;			 	
  89:driver/DataProTask.c ****    Rd5460A(AD_Buf,0x14);			 
  90:driver/DataProTask.c ****    CS_AD_B = 1;
  91:driver/DataProTask.c ****    temp2 = AD_Buf[0] << 8;
  92:driver/DataProTask.c ****    temp2 += AD_Buf[1];
  93:driver/DataProTask.c **** 
  94:driver/DataProTask.c **** //--------------------------------------------
  95:driver/DataProTask.c ****    CS_AD_A = 0;			 
  96:driver/DataProTask.c ****    Rd5460A(AD_Buf,0x10);
  97:driver/DataProTask.c ****    CS_AD_A = 1;
  98:driver/DataProTask.c ****    V_sign_A = AD_Buf[0];
  99:driver/DataProTask.c ****    V_sign_A >>=7;
 100:driver/DataProTask.c ****    CS_AD_A = 0;			 
 101:driver/DataProTask.c ****    Rd5460A(AD_Buf,0x0e);
 102:driver/DataProTask.c ****    CS_AD_A = 1;
 103:driver/DataProTask.c ****    I_sign_A = AD_Buf[0];
 104:driver/DataProTask.c ****    I_sign_A >>=7;
 105:driver/DataProTask.c **** 
 106:driver/DataProTask.c ****    CS_AD_B = 0;			 
 107:driver/DataProTask.c ****    Rd5460A(AD_Buf,0x10);
 108:driver/DataProTask.c ****    CS_AD_B = 1;
 109:driver/DataProTask.c ****    V_sign_B = AD_Buf[0];
 110:driver/DataProTask.c ****    V_sign_B >>=7;
 111:driver/DataProTask.c ****    CS_AD_B = 0;			 
 112:driver/DataProTask.c ****    Rd5460A(AD_Buf,0x0e);
 113:driver/DataProTask.c ****    CS_AD_B = 1;
 114:driver/DataProTask.c ****    I_sign_B = AD_Buf[0];
 115:driver/DataProTask.c ****    I_sign_B >>=7; 
 116:driver/DataProTask.c **** 				  
 117:driver/DataProTask.c **** //--------------------------------------------
 118:driver/DataProTask.c **** 							   
 119:driver/DataProTask.c ****    temp1 += temp2;	
 120:driver/DataProTask.c ****    Ps_Neg = 0;
 121:driver/DataProTask.c ****    if (temp1 > 0x8000)
 122:driver/DataProTask.c ****    {
 123:driver/DataProTask.c ****        temp1  = 0 - temp1;	             // 功率为负
 124:driver/DataProTask.c ****        Ps_Neg = 1;
 125:driver/DataProTask.c ****     }
 126:driver/DataProTask.c ****     AD_Buf[0] = temp1 >> 8;
 127:driver/DataProTask.c ****     AD_Buf[1] = (uint8)temp1;
 128:driver/DataProTask.c **** 	temp2 = DealRms(AD_Buf,0x6f20);		  
 129:driver/DataProTask.c **** 	Ps =(uint32)temp2* PtVal * CtVal;  //计算一次值功率
 130:driver/DataProTask.c **** 
 131:driver/DataProTask.c **** 
 132:driver/DataProTask.c **** }  
 133:driver/DataProTask.c **** //=================================================================	*/
 134:driver/DataProTask.c **** 
 135:driver/DataProTask.c **** void  DealDataMainLoop (void)
 136:driver/DataProTask.c **** {
 158               	.LM1:
 159               	/* prologue: frame size=4 */
 160 0000 EF92      		push r14
 161 0002 FF92      		push r15
 162 0004 0F93      		push r16
 163 0006 1F93      		push r17
 164 0008 CF93      		push r28
 165 000a DF93      		push r29
 166 000c CDB7      		in r28,__SP_L__
 167 000e DEB7      		in r29,__SP_H__
 168 0010 2497      		sbiw r28,4
 169 0012 0FB6      		in __tmp_reg__,__SREG__
 170 0014 F894      		cli
 171 0016 DEBF      		out __SP_H__,r29
 172 0018 0FBE      		out __SREG__,__tmp_reg__
 173 001a CDBF      		out __SP_L__,r28
 174               	/* prologue end (size=14) */
 137:driver/DataProTask.c **** 	uint8   AD_Buf[4];
 138:driver/DataProTask.c **** 	uint16	temp1 = 0;
 139:driver/DataProTask.c **** 	uint16  temp2 = 0;
 140:driver/DataProTask.c **** 	static uint8 Step = 0;
 141:driver/DataProTask.c **** 		
 142:driver/DataProTask.c **** 	 if (ReadAD.fGetTime) {      
 176               	.LM2:
 177 001c 8091 0000 		lds r24,ReadAD
 178 0020 8823      		tst r24
 179 0022 09F4      		brne .+2
 180 0024 C4C0      		rjmp .L1
 143:driver/DataProTask.c ****       switch (Step) {
 182               	.LM3:
 183 0026 8091 0000 		lds r24,Step.0
 184 002a 9927      		clr r25
 185 002c 0097      		sbiw r24,0
 186 002e 21F0      		breq .L4
 187 0030 0197      		sbiw r24,1
 188 0032 09F4      		brne .+2
 189 0034 55C0      		rjmp .L11
 190 0036 BBC0      		rjmp .L1
 191               	.L4:
 144:driver/DataProTask.c **** 	  	case 0:
 145:driver/DataProTask.c **** 		if (Rest5460A_Time == 0x00) 
 193               	.LM4:
 194 0038 8091 0000 		lds r24,Rest5460A_Time
 195 003c 8823      		tst r24
 196 003e 09F0      		breq .+2
 197 0040 47C0      		rjmp .L5
 146:driver/DataProTask.c **** 		 {
 147:driver/DataProTask.c **** 		        CS_AD_A = 0;			 
 199               	.LM5:
 200 0042 AD98      		cbi 53-0x20,5
 148:driver/DataProTask.c **** 		        Rd5460A(AD_Buf,0x1e);
 202               	.LM6:
 203 0044 6EE1      		ldi r22,lo8(30)
 204 0046 CE01      		movw r24,r28
 205 0048 0196      		adiw r24,1
 206 004a 00D0      		rcall Rd5460A
 149:driver/DataProTask.c **** 				CS_AD_A = 1;
 208               	.LM7:
 209 004c AD9A      		sbi 53-0x20,5
 150:driver/DataProTask.c **** 			 
 151:driver/DataProTask.c ****                 //fAdRunning_A = 0;		  
 152:driver/DataProTask.c ****                 if((AD_Buf[0] & 0x80) == 0x80) 
 211               	.LM8:
 212 004e 8981      		ldd r24,Y+1
 213 0050 87FF      		sbrs r24,7
 214 0052 0DC0      		rjmp .L6
 153:driver/DataProTask.c ****                    { fAdRunning_A = 1;Detect_A1++;}
 216               	.LM9:
 217 0054 81E0      		ldi r24,lo8(1)
 218 0056 8093 0000 		sts fAdRunning_A,r24
 219 005a 8091 0000 		lds r24,Detect_A1
 220 005e 9091 0000 		lds r25,(Detect_A1)+1
 221 0062 0196      		adiw r24,1
 222 0064 9093 0000 		sts (Detect_A1)+1,r25
 223 0068 8093 0000 		sts Detect_A1,r24
 224 006c 09C0      		rjmp .L7
 225               	.L6:
 154:driver/DataProTask.c **** 				else
 155:driver/DataProTask.c **** 				    {Detect_A0++;}
 227               	.LM10:
 228 006e 8091 0000 		lds r24,Detect_A0
 229 0072 9091 0000 		lds r25,(Detect_A0)+1
 230 0076 0196      		adiw r24,1
 231 0078 9093 0000 		sts (Detect_A0)+1,r25
 232 007c 8093 0000 		sts Detect_A0,r24
 233               	.L7:
 156:driver/DataProTask.c **** 		        CS_AD_B = 0;			 	
 235               	.LM11:
 236 0080 A898      		cbi 53-0x20,0
 157:driver/DataProTask.c **** 		        Rd5460A(AD_Buf,0x1e);			 
 238               	.LM12:
 239 0082 6EE1      		ldi r22,lo8(30)
 240 0084 CE01      		movw r24,r28

⌨️ 快捷键说明

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