📄 at93c46.s
字号:
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 + -