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

📄 at93c46.s

📁 93c46的驱动程序,C51代码
💻 S
📖 第 1 页 / 共 2 页
字号:
	mov R20,R16
	.dbline -1
	.dbline 196
; 	 	delay_us();
; 	 	set_sk();
; 	 	delay_us();
; 	 	clr_sk();
; 		delay_us();
; 		clr_di();
; 	 }
; }
; /*********************************************
; 函数功能:从指定地址读出一个字节的数据 
; 描    述:从已add为地址的eeprom中读数据
; 入口参数:add
; 出口参数:read_data
; *********************************************/
; uint8_t Read(uint8_t add)
; {
	.dbline 197
;  	uint8_t	i,buffer = 0,read_data = 0;
	clr R10
	.dbline 197
	clr R22
	.dbline 198
; 	set_cs();
	sbi 0x18,4
	.dbline 199
; 	delay_us();
	xcall _delay_us
	.dbline 200
; 	Send_str_op(READ);
	ldi R16,128
	xcall _Send_str_op
	.dbline 201
; 	Send_bits(add);
	mov R16,R20
	xcall _Send_bits
	.dbline 202
; 	for (i=0;i<8;i++)
	clr R20
	xjmp L31
L28:
	.dbline 203
	.dbline 204
	sbi 0x18,7
	.dbline 205
	xcall _delay_us
	.dbline 206
	in R24,0x16
	andi R24,64
	or R10,R24
	.dbline 207
	lsr R10
	lsr R10
	lsr R10
	lsr R10
	lsr R10
	lsr R10
	.dbline 208
	lsl R22
	.dbline 209
	or R22,R10
	.dbline 210
	xcall _delay_us
	.dbline 211
	cbi 0x18,7
	.dbline 212
L29:
	.dbline 202
	inc R20
L31:
	.dbline 202
	cpi R20,8
	brlo L28
	.dbline 213
; 	{
; 		set_sk();
; 		delay_us();
; 		buffer |= (PIN_DO & 0X40);   	 //读取引脚电平
; 		buffer >>= DO;
; 		read_data <<=1;
; 		read_data |= buffer;
; 		delay_us();
; 		clr_sk();
; 	}
; 	delay_us();
	xcall _delay_us
	.dbline 214
; 	clr_cs();
	cbi 0x18,4
	.dbline 215
; 	return read_data;
	mov R16,R22
	.dbline -2
L27:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r read_data 22 c
	.dbsym r buffer 10 c
	.dbsym r add 20 c
	.dbend
	.dbfunc e Delay_ms _Delay_ms fV
;              i -> R20
;             ms -> R16,R17
	.even
_Delay_ms::
	xcall push_gset1
	.dbline -1
	.dbline 224
; }
; /*********************************************
; 函数功能:延时函数 
; 描    述:延时
; 入口参数:ms
; 出口参数:void
; *********************************************/
; void Delay_ms(uint16_t ms)
; {
	.dbline 226
;  	uint8_t i;
; 	for (;ms>0;ms--)
	xjmp L36
L33:
	.dbline 227
; 		for(i = 0;i<100;i++)
	clr R20
	xjmp L40
L37:
	.dbline 228
L38:
	.dbline 227
	inc R20
L40:
	.dbline 227
	cpi R20,100
	brlo L37
L34:
	.dbline 226
	subi R16,1
	sbci R17,0
L36:
	.dbline 226
	cpi R16,0
	cpc R16,R17
	brne L33
X1:
	.dbline -2
L32:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r ms 16 i
	.dbend
	.dbfunc e EW_disable _EW_disable fV
	.even
_EW_disable::
	.dbline -1
	.dbline 237
; 		;
; }
; /*********************************************
; 函数功能:读写禁止 
; 描    述:禁止读写功能
; 入口参数:void
; 出口参数:void
; *********************************************/
; void EW_disable(void)
; {
	.dbline 238
; 	set_cs();
	sbi 0x18,4
	.dbline 239
; 	delay_us();
	xcall _delay_us
	.dbline 240
; 	Send_str_op(EWDS);
	clr R16
	xcall _Send_str_op
	.dbline 241
; 	Send_bits(0x00);
	clr R16
	xcall _Send_bits
	.dbline 242
; 	delay_us();
	xcall _delay_us
	.dbline 243
; 	clr_cs();
	cbi 0x18,4
	.dbline -2
L41:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e EW_enable _EW_enable fV
	.even
_EW_enable::
	.dbline -1
	.dbline 252
; }
; /*********************************************
; 函数功能:读写使能
; 描    述:使能读写功能
; 入口参数:void
; 出口参数:void
; *********************************************/
; void EW_enable(void)
; {
	.dbline 253
; 	set_cs();
	sbi 0x18,4
	.dbline 254
; 	delay_us();
	xcall _delay_us
	.dbline 255
; 	Send_str_op(EWEN);
	clr R16
	xcall _Send_str_op
	.dbline 256
; 	Send_bits(0x60);
	ldi R16,96
	xcall _Send_bits
	.dbline 257
; 	delay_us();
	xcall _delay_us
	.dbline 258
; 	clr_cs();
	cbi 0x18,4
	.dbline -2
L42:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Erase _Erase fV
;            add -> R20
	.even
_Erase::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 267
; }
; /*********************************************
; 函数功能:擦出指定地址的内容 
; 描    述:将指定地址的内容全部擦除
; 入口参数:add
; 出口参数:void
; *********************************************/
; void Erase(uint8_t add)
; {
	.dbline 268
;  	clr_cs();
	cbi 0x18,4
	.dbline 269
; 	clr_sk();
	cbi 0x18,7
	.dbline 270
; 	set_cs();
	sbi 0x18,4
	.dbline 271
; 	delay_us();
	xcall _delay_us
	.dbline 272
; 	Send_str_op(ERASE);
	ldi R16,192
	xcall _Send_str_op
	.dbline 273
; 	Send_bits(add);
	mov R16,R20
	xcall _Send_bits
	.dbline 274
; 	delay_us();
	xcall _delay_us
	.dbline 275
; 	clr_cs();
	cbi 0x18,4
	.dbline 276
; 	delay_us();
	xcall _delay_us
	.dbline 277
; 	delay_us();
	xcall _delay_us
	.dbline 278
; 	set_cs();
	sbi 0x18,4
L44:
	.dbline 279
L45:
	.dbline 279
; 	while (!(PIN_DO & (1<<DO)));	//check busy
	sbis 0x16,6
	rjmp L44
	.dbline 280
; 	delay_us();
	xcall _delay_us
	.dbline 281
; 	clr_cs();
	cbi 0x18,4
	.dbline -2
L43:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r add 20 c
	.dbend
	.dbfunc e Write _Write fV
;              i -> R20
;         w_data -> R22
;            add -> R20
	.even
_Write::
	xcall push_gset2
	mov R22,R18
	mov R20,R16
	.dbline -1
	.dbline 290
; }
; /*********************************************
; 函数功能:在指定的地址写一个字节的数据 
; 描    述:将一个字节的数据写入指定地址
; 入口参数:add,w_data
; 出口参数:void
; *********************************************/
; void Write(uint8_t add,uint8_t w_data)
; {
	.dbline 292
;  	uint8_t	i;
; 	set_cs();
	sbi 0x18,4
	.dbline 293
; 	delay_us();
	xcall _delay_us
	.dbline 294
; 	Send_str_op(WRITE);
	ldi R16,64
	xcall _Send_str_op
	.dbline 295
; 	Send_bits(add);
	mov R16,R20
	xcall _Send_bits
	.dbline 296
; 	for (i=0;i<8;i++,w_data <<=1)
	clr R20
	xjmp L51
L48:
	.dbline 297
; 	{
	.dbline 298
; 		delay_us();
	xcall _delay_us
	.dbline 299
; 		if (w_data & 0x80)
	sbrs R22,7
	rjmp L52
	.dbline 300
; 		{
	.dbline 301
; 			set_di();
	sbi 0x18,5
	.dbline 302
; 		}
	xjmp L53
L52:
	.dbline 304
; 		else
; 		{
	.dbline 305
; 			clr_di();
	cbi 0x18,5
	.dbline 306
; 		}
L53:
	.dbline 307
	xcall _delay_us
	.dbline 308
	sbi 0x18,7
	.dbline 309
	xcall _delay_us
	.dbline 310
	cbi 0x18,7
	.dbline 311
	xcall _delay_us
	.dbline 312
	cbi 0x18,5
	.dbline 313
L49:
	.dbline 296
	inc R20
	lsl R22
L51:
	.dbline 296
	cpi R20,8
	brlo L48
	.dbline 314
; 		delay_us();
; 		set_sk();
; 		delay_us();
; 		clr_sk();
; 		delay_us();
; 		clr_di();
; 	}
; 	delay_us();
	xcall _delay_us
	.dbline 315
; 	clr_cs();
	cbi 0x18,4
	.dbline 316
; 	delay_us();
	xcall _delay_us
	.dbline 317
; 	delay_us();
	xcall _delay_us
	.dbline 318
; 	set_cs();
	sbi 0x18,4
L54:
	.dbline 319
L55:
	.dbline 319
; 	while (!(PIN_DO & (1<<DO)));	//check busy
	sbis 0x16,6
	rjmp L54
	.dbline 320
; 	delay_us();
	xcall _delay_us
	.dbline 321
; 	clr_cs();
	cbi 0x18,4
	.dbline -2
L47:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r w_data 22 c
	.dbsym r add 20 c
	.dbend

⌨️ 快捷键说明

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