📄 at93c46.lis
字号:
006E 02C0 rjmp L18
0070 .dbline 146
0070 ; {
0070 .dbline 147
0070 ; set_di();
0070 C59A sbi 0x18,5
0072 .dbline 148
0072 ; }
0072 01C0 xjmp L19
0074 L18:
0074 .dbline 150
0074 ; else
0074 ; {
0074 .dbline 151
0074 ; clr_di();
0074 C598 cbi 0x18,5
0076 .dbline 152
0076 ; }
0076 L19:
0076 .dbline 153
0076 EADF xcall _delay_us
0078 .dbline 154
0078 C79A sbi 0x18,7
007A .dbline 155
007A E8DF xcall _delay_us
007C .dbline 156
007C C798 cbi 0x18,7
007E .dbline 157
007E E6DF xcall _delay_us
0080 .dbline 158
0080 C598 cbi 0x18,5
0082 .dbline 159
0082 L15:
0082 .dbline 143
0082 4395 inc R20
0084 660F lsl R22
0086 L17:
0086 .dbline 143
0086 4230 cpi R20,2
0088 88F3 brlo L14
008A .dbline -2
008A L13:
008A 0E940000 xcall pop_gset2
008E .dbline 0 ; func end
008E 0895 ret
0090 .dbsym r i 20 c
0090 .dbsym r op 22 c
0090 .dbend
0090 .dbfunc e Send_bits _Send_bits fV
0090 ; temp_data -> R20
0090 ; i -> R22
0090 ; s_data -> R10
.even
0090 _Send_bits::
0090 0E940000 xcall push_gset3
0094 A02E mov R10,R16
0096 .dbline -1
0096 .dbline 168
0096 ; delay_us();
0096 ; set_sk();
0096 ; delay_us();
0096 ; clr_sk();
0096 ; delay_us();
0096 ; clr_di();
0096 ; }
0096 ; }
0096 ; /*********************************************
0096 ; 函数功能:发送7个BIT
0096 ; 描 述:地址或其他
0096 ; 入口参数:s_data
0096 ; 出口参数:无
0096 ; *********************************************/
0096 ; void Send_bits(uint8_t s_data)
0096 ; {
0096 .dbline 169
0096 ; uint8_t i,temp_data = 0;
0096 4427 clr R20
0098 .dbline 170
0098 ; for (i=0;i<7;i++,s_data <<=1)
0098 6627 clr R22
009A 0EC0 xjmp L24
009C L21:
009C .dbline 171
009C ; {
009C .dbline 172
009C ; temp_data = s_data;
009C 4A2D mov R20,R10
009E .dbline 173
009E ; if (temp_data & 0x40) // xxxx'xxxx
009E A6FE sbrs R10,6
00A0 02C0 rjmp L25
00A2 .dbline 174
00A2 ; { // &0100'0000
00A2 .dbline 175
00A2 ; set_di();
00A2 C59A sbi 0x18,5
00A4 .dbline 176
00A4 ; }
00A4 01C0 xjmp L26
00A6 L25:
00A6 .dbline 178
00A6 ; else
00A6 ; {
00A6 .dbline 179
00A6 ; clr_di();
00A6 C598 cbi 0x18,5
00A8 .dbline 180
00A8 ; }
00A8 L26:
00A8 .dbline 181
00A8 D1DF xcall _delay_us
00AA .dbline 182
00AA C79A sbi 0x18,7
00AC .dbline 183
00AC CFDF xcall _delay_us
00AE .dbline 184
00AE C798 cbi 0x18,7
00B0 .dbline 185
00B0 CDDF xcall _delay_us
00B2 .dbline 186
00B2 C598 cbi 0x18,5
00B4 .dbline 187
00B4 L22:
00B4 .dbline 170
00B4 6395 inc R22
00B6 AA0C lsl R10
00B8 L24:
00B8 .dbline 170
00B8 6730 cpi R22,7
00BA 80F3 brlo L21
00BC .dbline -2
00BC L20:
00BC 0E940000 xcall pop_gset3
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbsym r temp_data 20 c
00C2 .dbsym r i 22 c
00C2 .dbsym r s_data 10 c
00C2 .dbend
00C2 .dbfunc e Read _Read fc
00C2 ; i -> R20
00C2 ; read_data -> R22
00C2 ; buffer -> R10
00C2 ; add -> R20
.even
00C2 _Read::
00C2 0E940000 xcall push_gset3
00C6 402F mov R20,R16
00C8 .dbline -1
00C8 .dbline 196
00C8 ; delay_us();
00C8 ; set_sk();
00C8 ; delay_us();
00C8 ; clr_sk();
00C8 ; delay_us();
00C8 ; clr_di();
00C8 ; }
00C8 ; }
00C8 ; /*********************************************
00C8 ; 函数功能:从指定地址读出一个字节的数据
00C8 ; 描 述:从已add为地址的eeprom中读数据
00C8 ; 入口参数:add
00C8 ; 出口参数:read_data
00C8 ; *********************************************/
00C8 ; uint8_t Read(uint8_t add)
00C8 ; {
00C8 .dbline 197
00C8 ; uint8_t i,buffer = 0,read_data = 0;
00C8 AA24 clr R10
00CA .dbline 197
00CA 6627 clr R22
00CC .dbline 198
00CC ; set_cs();
00CC C49A sbi 0x18,4
00CE .dbline 199
00CE ; delay_us();
00CE BEDF xcall _delay_us
00D0 .dbline 200
00D0 ; Send_str_op(READ);
00D0 00E8 ldi R16,128
00D2 C1DF xcall _Send_str_op
00D4 .dbline 201
00D4 ; Send_bits(add);
00D4 042F mov R16,R20
00D6 DCDF xcall _Send_bits
00D8 .dbline 202
00D8 ; for (i=0;i<8;i++)
00D8 4427 clr R20
00DA 10C0 xjmp L31
00DC L28:
00DC .dbline 203
00DC .dbline 204
00DC C79A sbi 0x18,7
00DE .dbline 205
00DE B6DF xcall _delay_us
00E0 .dbline 206
00E0 86B3 in R24,0x16
00E2 8074 andi R24,64
00E4 A82A or R10,R24
00E6 .dbline 207
00E6 A694 lsr R10
00E8 A694 lsr R10
00EA A694 lsr R10
00EC A694 lsr R10
00EE A694 lsr R10
00F0 A694 lsr R10
00F2 .dbline 208
00F2 660F lsl R22
00F4 .dbline 209
00F4 6A29 or R22,R10
00F6 .dbline 210
00F6 AADF xcall _delay_us
00F8 .dbline 211
00F8 C798 cbi 0x18,7
00FA .dbline 212
00FA L29:
00FA .dbline 202
00FA 4395 inc R20
00FC L31:
00FC .dbline 202
00FC 4830 cpi R20,8
00FE 70F3 brlo L28
0100 .dbline 213
0100 ; {
0100 ; set_sk();
0100 ; delay_us();
0100 ; buffer |= (PIN_DO & 0X40); //读取引脚电平
0100 ; buffer >>= DO;
0100 ; read_data <<=1;
0100 ; read_data |= buffer;
0100 ; delay_us();
0100 ; clr_sk();
0100 ; }
0100 ; delay_us();
0100 A5DF xcall _delay_us
0102 .dbline 214
0102 ; clr_cs();
0102 C498 cbi 0x18,4
0104 .dbline 215
0104 ; return read_data;
0104 062F mov R16,R22
0106 .dbline -2
0106 L27:
0106 0E940000 xcall pop_gset3
010A .dbline 0 ; func end
010A 0895 ret
010C .dbsym r i 20 c
010C .dbsym r read_data 22 c
010C .dbsym r buffer 10 c
010C .dbsym r add 20 c
010C .dbend
010C .dbfunc e Delay_ms _Delay_ms fV
010C ; i -> R20
010C ; ms -> R16,R17
.even
010C _Delay_ms::
010C 0E940000 xcall push_gset1
0110 .dbline -1
0110 .dbline 224
0110 ; }
0110 ; /*********************************************
0110 ; 函数功能:延时函数
0110 ; 描 述:延时
0110 ; 入口参数:ms
0110 ; 出口参数:void
0110 ; *********************************************/
0110 ; void Delay_ms(uint16_t ms)
0110 ; {
0110 .dbline 226
0110 ; uint8_t i;
0110 ; for (;ms>0;ms--)
0110 07C0 xjmp L36
0112 L33:
0112 .dbline 227
0112 ; for(i = 0;i<100;i++)
0112 4427 clr R20
0114 01C0 xjmp L40
0116 L37:
0116 .dbline 228
0116 L38:
0116 .dbline 227
0116 4395 inc R20
0118 L40:
0118 .dbline 227
0118 4436 cpi R20,100
011A E8F3 brlo L37
011C L34:
011C .dbline 226
011C 0150 subi R16,1
011E 1040 sbci R17,0
0120 L36:
0120 .dbline 226
0120 0030 cpi R16,0
0122 0107 cpc R16,R17
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -