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

📄 cs5532.s

📁 LTC2449 AD转换 LTC2449 AD转换 LTC2449 AD转换
💻 S
📖 第 1 页 / 共 2 页
字号:
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall lsl32
	movw R30,R28
	std z+4,R16
	std z+5,R17
	std z+6,R18
	std z+7,R19
	.dbline 153
;        c |= RxdTxd4b[2];
	ldd R2,y+2
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+4
	ldd R7,z+5
	ldd R8,z+6
	ldd R9,z+7
	or R6,R2
	or R7,R3
	or R8,R4
	or R9,R5
	movw R30,R28
	std z+4,R6
	std z+5,R7
	std z+6,R8
	std z+7,R9
	.dbline 154
;        c<<=8;
	ldi R24,8
	ldi R25,0
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall lsl32
	movw R30,R28
	std z+4,R16
	std z+5,R17
	std z+6,R18
	std z+7,R19
	.dbline 155
;        c |= RxdTxd4b[3];
	ldd R2,y+3
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+4
	ldd R7,z+5
	ldd R8,z+6
	ldd R9,z+7
	or R6,R2
	or R7,R3
	or R8,R4
	or R9,R5
	movw R30,R28
	std z+4,R6
	std z+5,R7
	std z+6,R8
	std z+7,R9
	.dbline 157
;       // c=c>>8;//去掉最低位
;      return(c);
	movw R30,R28
	ldd R16,z+4
	ldd R17,z+5
	ldd R18,z+6
	ldd R19,z+7
	.dbline -2
L43:
	adiw R28,8
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym l c 4 l
	.dbsym l RxdTxd4b 0 A[4:4]c
	.dbsym r i 12 c
	.dbsym r j 10 c
	.dbend
	.dbfunc e CS5532_init _CS5532_init fV
;              i -> R20
	.even
_CS5532_init::
	xcall push_gset1
	.dbline -1
	.dbline 161
; }
; 
; void CS5532_init(void)
; {
	.dbline 165
; 	
;  	//串口初始化
;  	unsigned char i;
;    SET_CS;
	sbi 0xe,3
	.dbline 166
;    delay_loop(2);
	ldi R16,2
	ldi R17,0
	xcall _delay_loop
	.dbline 167
;    CLR_CS; //片选使能
	in R24,0xe
	andi R24,247
	out 0xe,R24
	.dbline 168
;    delay_loop(2);
	ldi R16,2
	ldi R17,0
	xcall _delay_loop
	.dbline 169
;    CLR_SDI;
	in R24,0xe
	andi R24,239
	out 0xe,R24
	.dbline 170
;    SET_SDO;
	sbi 0xe,5
	.dbline 171
;    CLR_SCK;
	in R24,0xe
	andi R24,191
	out 0xe,R24
	.dbline 172
;    for(i=0;i<15;i++)
	clr R20
	xjmp L61
L58:
	.dbline 173
	.dbline 174
	ldi R16,255
	xcall _CS5532_Txd
	.dbline 175
L59:
	.dbline 172
	inc R20
L61:
	.dbline 172
	cpi R20,15
	brlo L58
	.dbline 176
;    	{
;    		CS5532_Txd(0xFF);//发送命令
;   	}	
;    CS5532_Txd(0xFE);   
	ldi R16,254
	xcall _CS5532_Txd
	.dbline 178
;    //配置寄存器
;    CS5532_Txd(0x43);
	ldi R16,67
	xcall _CS5532_Txd
	.dbline 180
;    
;    CS5532_Txd(0x02);
	ldi R16,2
	xcall _CS5532_Txd
	.dbline 181
;    CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 182
;    CS5532_Txd(0x00);
	clr R16
	xcall _CS5532_Txd
	.dbline 183
;    CS5532_Txd(0x00);
	clr R16
	xcall _CS5532_Txd
	.dbline 185
;    
;    CS5532_Txd(0x02);
	ldi R16,2
	xcall _CS5532_Txd
	.dbline 186
;    CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 187
;    CS5532_Txd(0x00);
	clr R16
	xcall _CS5532_Txd
	.dbline 188
;    CS5532_Txd(0x00);
	clr R16
	xcall _CS5532_Txd
	.dbline 190
;    
;    CS5532_Txd(0x02);
	ldi R16,2
	xcall _CS5532_Txd
	.dbline 191
;    CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 192
;    CS5532_Txd(0x00);
	clr R16
	xcall _CS5532_Txd
	.dbline 193
;    CS5532_Txd(0x00);
	clr R16
	xcall _CS5532_Txd
	.dbline 195
;    
;    CS5532_Txd(0x02);
	ldi R16,2
	xcall _CS5532_Txd
	.dbline 196
;    CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 197
;    CS5532_Txd(0x00);
	clr R16
	xcall _CS5532_Txd
	.dbline 198
;    CS5532_Txd(0x00);
	clr R16
	xcall _CS5532_Txd
	.dbline -2
L57:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.dbfunc e CS5532_RW _CS5532_RW fl
;              l -> <dead>
;   Conversion_r -> <dead>
;        AD_data -> y+0
;              j -> R20
;              i -> R22
;        chunnel -> R20,R21
	.even
_CS5532_RW::
	xcall push_gset2
	movw R20,R16
	sbiw R28,4
	.dbline -1
	.dbline 208
;   /* //通道寄存器
;    CS5532_Txd(0x05);
;    CS5532_Txd(0x32);
;    CS5532_Txd(0x40);
;    CS5532_Txd(0x32);
;    CS5532_Txd(0x40);*/
;   //---------------------------
; }
; unsigned long CS5532_RW(unsigned int chunnel)
; {
	.dbline 211
; 	unsigned char Conversion_r,l,j,i;
; 	unsigned char AD_data[4];
; 	switch(chunnel)
	cpi R20,0
	cpc R20,R21
	breq L65
X2:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	brne X4
	xjmp L66
X4:
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	brne X5
	xjmp L67
X5:
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	brne X6
	xjmp L68
X6:
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	brne X7
	xjmp L69
X7:
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	brne X8
	xjmp L70
X8:
	cpi R20,6
	ldi R30,0
	cpc R21,R30
	brne X9
	xjmp L71
X9:
	cpi R20,7
	ldi R30,0
	cpc R21,R30
	brne X10
	xjmp L72
X10:
	xjmp L64
X3:
	.dbline 212
; 		{
L65:
	.dbline 214
; 			case 0:	
; 				CLR_4052A;
	in R24,0x14
	andi R24,247
	out 0x14,R24
	.dbline 215
; 				CLR_4052B;
	in R24,0x5
	ori R24,127
	out 0x5,R24
	.dbline 216
; 				CS5532_Txd(0x05);
	ldi R16,5
	xcall _CS5532_Txd
	.dbline 217
;    			CS5532_Txd(0b00110110);
	ldi R16,54
	xcall _CS5532_Txd
	.dbline 218
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 219
;    			CS5532_Txd(0b00110110);
	ldi R16,54
	xcall _CS5532_Txd
	.dbline 220
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 221
; 				break;
	xjmp L64
L66:
	.dbline 223
; 			case 1:
; 				SET_4052A;
	sbi 0x14,3
	.dbline 224
; 				CLR_4052B;
	in R24,0x5
	ori R24,127
	out 0x5,R24
	.dbline 225
; 				CS5532_Txd(0x05);
	ldi R16,5
	xcall _CS5532_Txd
	.dbline 226
;    			CS5532_Txd(0b00110110);
	ldi R16,54
	xcall _CS5532_Txd
	.dbline 227
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 228
;    			CS5532_Txd(0b00110110);
	ldi R16,54
	xcall _CS5532_Txd
	.dbline 229
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 230
; 				break;
	xjmp L64
L67:
	.dbline 232
; 			case 2:
; 				CLR_4052A;
	in R24,0x14
	andi R24,247
	out 0x14,R24
	.dbline 233
; 				SET_4052B;
	sbi 0x5,7
	.dbline 234
; 				CS5532_Txd(0x05);
	ldi R16,5
	xcall _CS5532_Txd
	.dbline 235
;    			CS5532_Txd(0b00110110);
	ldi R16,54
	xcall _CS5532_Txd
	.dbline 236
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 237
;    			CS5532_Txd(0b00110110);
	ldi R16,54
	xcall _CS5532_Txd
	.dbline 238
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 239
; 				break;
	xjmp L64
L68:
	.dbline 241
; 			case 3:
; 				SET_4052A;
	sbi 0x14,3
	.dbline 242
; 				SET_4052B;
	sbi 0x5,7
	.dbline 243
; 				CS5532_Txd(0x05);
	ldi R16,5
	xcall _CS5532_Txd
	.dbline 244
;    			CS5532_Txd(0b00110110);
	ldi R16,54
	xcall _CS5532_Txd
	.dbline 245
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 246
;    			CS5532_Txd(0b00110110);
	ldi R16,54
	xcall _CS5532_Txd
	.dbline 247
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 248
; 				break;
	xjmp L64
L69:
	.dbline 250
; 			case 4:
; 				CLR_4052A;
	in R24,0x14
	andi R24,247
	out 0x14,R24
	.dbline 251
; 				CLR_4052B;
	in R24,0x5
	ori R24,127
	out 0x5,R24
	.dbline 252
; 				CS5532_Txd(0x05);
	ldi R16,5
	xcall _CS5532_Txd
	.dbline 253
;    			CS5532_Txd(0b01110110);
	ldi R16,118
	xcall _CS5532_Txd
	.dbline 254
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 255
;    			CS5532_Txd(0b00110110);
	ldi R16,54
	xcall _CS5532_Txd
	.dbline 256
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 257
; 				break;
	xjmp L64
L70:
	.dbline 259
; 			case 5:
; 				SET_4052A;
	sbi 0x14,3
	.dbline 260
; 				CLR_4052B;
	in R24,0x5
	ori R24,127
	out 0x5,R24
	.dbline 261
; 				CS5532_Txd(0x05);
	ldi R16,5
	xcall _CS5532_Txd
	.dbline 262
;    			CS5532_Txd(0b01110110);
	ldi R16,118
	xcall _CS5532_Txd
	.dbline 263
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 264
;    			CS5532_Txd(0b00110110);
	ldi R16,54
	xcall _CS5532_Txd
	.dbline 265
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 266
; 				break;
	xjmp L64
L71:
	.dbline 268
; 			case 6:
; 				CLR_4052A;
	in R24,0x14
	andi R24,247
	out 0x14,R24
	.dbline 269
; 				SET_4052B;
	sbi 0x5,7
	.dbline 270
; 				CS5532_Txd(0x05);
	ldi R16,5
	xcall _CS5532_Txd
	.dbline 271
;    			CS5532_Txd(0b01110110);
	ldi R16,118
	xcall _CS5532_Txd
	.dbline 272
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 273
;    			CS5532_Txd(0b00110110);
	ldi R16,54
	xcall _CS5532_Txd
	.dbline 274
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 275
; 				break;
	xjmp L64
L72:
	.dbline 277
; 			case 7:
; 				SET_4052A;
	sbi 0x14,3
	.dbline 278
; 				SET_4052B;
	sbi 0x5,7
	.dbline 279
; 				CS5532_Txd(0x05);
	ldi R16,5
	xcall _CS5532_Txd
	.dbline 280
;    			CS5532_Txd(0b01110110);
	ldi R16,118
	xcall _CS5532_Txd
	.dbline 281
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 282
;    			CS5532_Txd(0b00110110);
	ldi R16,54
	xcall _CS5532_Txd
	.dbline 283
;    			CS5532_Txd(0x40);
	ldi R16,64
	xcall _CS5532_Txd
	.dbline 284
; 				break;
	.dbline 285
; 			default:break;
L64:
	.dbline 287
; 		}
;  	CS5532_Txd(0x80);	//启动稳定的单次转换
	ldi R16,128
	xcall _CS5532_Txd
L73:
	.dbline 289
	.dbline 289
	.dbline 289
L74:
	.dbline 288
;  	while(SDO!=0)	//等待转换结束
	sbic 0xc,5
	rjmp L73
	.dbline 291
; 	{;}
; 	// 读取数据
;       CLR_SCK;//时钟低
	in R24,0xe
	andi R24,191
	out 0xe,R24
	.dbline 292
;       CLR_SDI;
	in R24,0xe
	andi R24,239
	out 0xe,R24
	.dbline 293
;       delay_loop(1);
	ldi R16,1
	ldi R17,0
	xcall _delay_loop
	.dbline 294
;       for(i=0;i<8;i++)
	clr R22
	xjmp L79
L76:
	.dbline 295
	.dbline 296
	sbi 0xe,6
	.dbline 297
	ldi R16,1
	ldi R17,0
	xcall _delay_loop
	.dbline 298
	in R24,0xe
	andi R24,191
	out 0xe,R24
	.dbline 299
	ldi R16,1
	ldi R17,0
	xcall _delay_loop
	.dbline 300
L77:
	.dbline 294
	inc R22
L79:
	.dbline 294
	cpi R22,8
	brlo L76
	.dbline 301
;       {             
;       	SET_SCK;    //时钟高   
;         delay_loop(1);
;         CLR_SCK;    //时钟低
;         delay_loop(1);
;       }
;       for(j=0;j<4;j++)
	clr R20
	xjmp L83
L80:
	.dbline 302
;       {
	.dbline 303
;        for(i=0;i<8;i++)
	clr R22
	xjmp L87
L84:
	.dbline 304
;        {
	.dbline 305
;         SET_SCK;     //时钟高    
	sbi 0xe,6
	.dbline 306
;         AD_data[j]<<=1;     
	movw R24,R28
	mov R2,R20
	clr R3
	add R2,R24
	adc R3,R25
	movw R30,R2
	ldd R4,z+0
	lsl R4
	std z+0,R4
	.dbline 307
;         if(SDO) 
	sbis 0xc,5
	rjmp L88
	.dbline 308
;          AD_data[j]|=0x01;  //从SDO读取数据
	movw R24,R28
	mov R2,R20
	clr R3
	add R2,R24
	adc R3,R25
	movw R30,R2
	ldd R24,z+0
	ori R24,1
	std z+0,R24
L88:
	.dbline 309
	in R24,0xe
	andi R24,191
	out 0xe,R24
	.dbline 310
	ldi R16,1
	ldi R17,0
	xcall _delay_loop
	.dbline 311
L85:
	.dbline 303
	inc R22
L87:
	.dbline 303
	cpi R22,8
	brlo L84
	.dbline 312
L81:
	.dbline 301
	inc R20
L83:
	.dbline 301
	cpi R20,4
	brlo L80
	.dbline -2
L62:
	adiw R28,4
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l l 1 c
	.dbsym l Conversion_r 1 c
	.dbsym l AD_data 0 A[4:4]c
	.dbsym r j 20 c
	.dbsym r i 22 c
	.dbsym r chunnel 20 i
	.dbend

⌨️ 快捷键说明

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