📄 at93c46.lis
字号:
0124 B1F7 brne L33
0126 X1:
0126 .dbline -2
0126 L32:
0126 0E940000 xcall pop_gset1
012A .dbline 0 ; func end
012A 0895 ret
012C .dbsym r i 20 c
012C .dbsym r ms 16 i
012C .dbend
012C .dbfunc e EW_disable _EW_disable fV
.even
012C _EW_disable::
012C .dbline -1
012C .dbline 237
012C ; ;
012C ; }
012C ; /*********************************************
012C ; 函数功能:读写禁止
012C ; 描 述:禁止读写功能
012C ; 入口参数:void
012C ; 出口参数:void
012C ; *********************************************/
012C ; void EW_disable(void)
012C ; {
012C .dbline 238
012C ; set_cs();
012C C49A sbi 0x18,4
012E .dbline 239
012E ; delay_us();
012E 8EDF xcall _delay_us
0130 .dbline 240
0130 ; Send_str_op(EWDS);
0130 0027 clr R16
0132 91DF xcall _Send_str_op
0134 .dbline 241
0134 ; Send_bits(0x00);
0134 0027 clr R16
0136 ACDF xcall _Send_bits
0138 .dbline 242
0138 ; delay_us();
0138 89DF xcall _delay_us
013A .dbline 243
013A ; clr_cs();
013A C498 cbi 0x18,4
013C .dbline -2
013C L41:
013C .dbline 0 ; func end
013C 0895 ret
013E .dbend
013E .dbfunc e EW_enable _EW_enable fV
.even
013E _EW_enable::
013E .dbline -1
013E .dbline 252
013E ; }
013E ; /*********************************************
013E ; 函数功能:读写使能
013E ; 描 述:使能读写功能
013E ; 入口参数:void
013E ; 出口参数:void
013E ; *********************************************/
013E ; void EW_enable(void)
013E ; {
013E .dbline 253
013E ; set_cs();
013E C49A sbi 0x18,4
0140 .dbline 254
0140 ; delay_us();
0140 85DF xcall _delay_us
0142 .dbline 255
0142 ; Send_str_op(EWEN);
0142 0027 clr R16
0144 88DF xcall _Send_str_op
0146 .dbline 256
0146 ; Send_bits(0x60);
0146 00E6 ldi R16,96
0148 A3DF xcall _Send_bits
014A .dbline 257
014A ; delay_us();
014A 80DF xcall _delay_us
014C .dbline 258
014C ; clr_cs();
014C C498 cbi 0x18,4
014E .dbline -2
014E L42:
014E .dbline 0 ; func end
014E 0895 ret
0150 .dbend
0150 .dbfunc e Erase _Erase fV
0150 ; add -> R20
.even
0150 _Erase::
0150 0E940000 xcall push_gset1
0154 402F mov R20,R16
0156 .dbline -1
0156 .dbline 267
0156 ; }
0156 ; /*********************************************
0156 ; 函数功能:擦出指定地址的内容
0156 ; 描 述:将指定地址的内容全部擦除
0156 ; 入口参数:add
0156 ; 出口参数:void
0156 ; *********************************************/
0156 ; void Erase(uint8_t add)
0156 ; {
0156 .dbline 268
0156 ; clr_cs();
0156 C498 cbi 0x18,4
0158 .dbline 269
0158 ; clr_sk();
0158 C798 cbi 0x18,7
015A .dbline 270
015A ; set_cs();
015A C49A sbi 0x18,4
015C .dbline 271
015C ; delay_us();
015C 77DF xcall _delay_us
015E .dbline 272
015E ; Send_str_op(ERASE);
015E 00EC ldi R16,192
0160 7ADF xcall _Send_str_op
0162 .dbline 273
0162 ; Send_bits(add);
0162 042F mov R16,R20
0164 95DF xcall _Send_bits
0166 .dbline 274
0166 ; delay_us();
0166 72DF xcall _delay_us
0168 .dbline 275
0168 ; clr_cs();
0168 C498 cbi 0x18,4
016A .dbline 276
016A ; delay_us();
016A 70DF xcall _delay_us
016C .dbline 277
016C ; delay_us();
016C 6FDF xcall _delay_us
016E .dbline 278
016E ; set_cs();
016E C49A sbi 0x18,4
0170 L44:
0170 .dbline 279
0170 L45:
0170 .dbline 279
0170 ; while (!(PIN_DO & (1<<DO))); //check busy
0170 B69B sbis 0x16,6
0172 FECF rjmp L44
0174 .dbline 280
0174 ; delay_us();
0174 6BDF xcall _delay_us
0176 .dbline 281
0176 ; clr_cs();
0176 C498 cbi 0x18,4
0178 .dbline -2
0178 L43:
0178 0E940000 xcall pop_gset1
017C .dbline 0 ; func end
017C 0895 ret
017E .dbsym r add 20 c
017E .dbend
017E .dbfunc e Write _Write fV
017E ; i -> R20
017E ; w_data -> R22
017E ; add -> R20
.even
017E _Write::
017E 0E940000 xcall push_gset2
0182 622F mov R22,R18
0184 402F mov R20,R16
0186 .dbline -1
0186 .dbline 290
0186 ; }
0186 ; /*********************************************
0186 ; 函数功能:在指定的地址写一个字节的数据
0186 ; 描 述:将一个字节的数据写入指定地址
0186 ; 入口参数:add,w_data
0186 ; 出口参数:void
0186 ; *********************************************/
0186 ; void Write(uint8_t add,uint8_t w_data)
0186 ; {
0186 .dbline 292
0186 ; uint8_t i;
0186 ; set_cs();
0186 C49A sbi 0x18,4
0188 .dbline 293
0188 ; delay_us();
0188 61DF xcall _delay_us
018A .dbline 294
018A ; Send_str_op(WRITE);
018A 00E4 ldi R16,64
018C 64DF xcall _Send_str_op
018E .dbline 295
018E ; Send_bits(add);
018E 042F mov R16,R20
0190 7FDF xcall _Send_bits
0192 .dbline 296
0192 ; for (i=0;i<8;i++,w_data <<=1)
0192 4427 clr R20
0194 0EC0 xjmp L51
0196 L48:
0196 .dbline 297
0196 ; {
0196 .dbline 298
0196 ; delay_us();
0196 5ADF xcall _delay_us
0198 .dbline 299
0198 ; if (w_data & 0x80)
0198 67FF sbrs R22,7
019A 02C0 rjmp L52
019C .dbline 300
019C ; {
019C .dbline 301
019C ; set_di();
019C C59A sbi 0x18,5
019E .dbline 302
019E ; }
019E 01C0 xjmp L53
01A0 L52:
01A0 .dbline 304
01A0 ; else
01A0 ; {
01A0 .dbline 305
01A0 ; clr_di();
01A0 C598 cbi 0x18,5
01A2 .dbline 306
01A2 ; }
01A2 L53:
01A2 .dbline 307
01A2 54DF xcall _delay_us
01A4 .dbline 308
01A4 C79A sbi 0x18,7
01A6 .dbline 309
01A6 52DF xcall _delay_us
01A8 .dbline 310
01A8 C798 cbi 0x18,7
01AA .dbline 311
01AA 50DF xcall _delay_us
01AC .dbline 312
01AC C598 cbi 0x18,5
01AE .dbline 313
01AE L49:
01AE .dbline 296
01AE 4395 inc R20
01B0 660F lsl R22
01B2 L51:
01B2 .dbline 296
01B2 4830 cpi R20,8
01B4 80F3 brlo L48
01B6 .dbline 314
01B6 ; delay_us();
01B6 ; set_sk();
01B6 ; delay_us();
01B6 ; clr_sk();
01B6 ; delay_us();
01B6 ; clr_di();
01B6 ; }
01B6 ; delay_us();
01B6 4ADF xcall _delay_us
01B8 .dbline 315
01B8 ; clr_cs();
01B8 C498 cbi 0x18,4
01BA .dbline 316
01BA ; delay_us();
01BA 48DF xcall _delay_us
01BC .dbline 317
01BC ; delay_us();
01BC 47DF xcall _delay_us
01BE .dbline 318
01BE ; set_cs();
01BE C49A sbi 0x18,4
01C0 L54:
01C0 .dbline 319
01C0 L55:
01C0 .dbline 319
01C0 ; while (!(PIN_DO & (1<<DO))); //check busy
01C0 B69B sbis 0x16,6
01C2 FECF rjmp L54
01C4 .dbline 320
01C4 ; delay_us();
01C4 43DF xcall _delay_us
01C6 .dbline 321
01C6 ; clr_cs();
01C6 C498 cbi 0x18,4
01C8 .dbline -2
01C8 L47:
01C8 0E940000 xcall pop_gset2
01CC .dbline 0 ; func end
01CC 0895 ret
01CE .dbsym r i 20 c
01CE .dbsym r w_data 22 c
01CE .dbsym r add 20 c
01CE .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -