📄 at45db041.lis
字号:
00CA ; temp1=1;
00CA 41E0 ldi R20,1
00CC 01C0 xjmp L28
00CE L27:
00CE .dbline 109
00CE ; else
00CE ; temp1=0;
00CE 4427 clr R20
00D0 L28:
00D0 .dbline 110
00D0 142F mov R17,R20
00D2 1F5F subi R17,255 ; addi 1
00D4 062F mov R16,R22
00D6 0E940000 xcall lsl8
00DA 602F mov R22,R16
00DC .dbline 111
00DC DA9A sbi 0x1b,2
00DE .dbline 112
00DE 0E940000 xcall _delay_1ms
00E2 .dbline 113
00E2 L24:
00E2 .dbline 102
00E2 A394 inc R10
00E4 L26:
00E4 .dbline 102
00E4 8A2D mov R24,R10
00E6 8830 cpi R24,8
00E8 48F3 brlo L23
00EA .dbline 114
00EA ; temp2=temp2<<1+temp1;
00EA ; SCK_HIGH();
00EA ; delay_1ms();
00EA ; }
00EA ; return temp2;
00EA 062F mov R16,R22
00EC .dbline -2
00EC L22:
00EC 0E940000 xcall pop_gset3
00F0 .dbline 0 ; func end
00F0 0895 ret
00F2 .dbsym r temp1 20 c
00F2 .dbsym r temp2 22 c
00F2 .dbsym r i 10 c
00F2 .dbend
00F2 .dbfunc e at4541_write _at4541_write fV
00F2 ; i -> R20
00F2 ; data -> R22
.even
00F2 _at4541_write::
00F2 0E940000 xcall push_gset2
00F6 602F mov R22,R16
00F8 .dbline -1
00F8 .dbline 123
00F8 ; }
00F8 ;
00F8 ; /**************************************
00F8 ; ** 说明:写at45db41
00F8 ; ** 数据:在执行at4541_commond_send(发送写命令)之后,8位的数写入
00F8 ; ** 输出:写入的一位数
00F8 ; **************************************/
00F8 ; void at4541_write(unsigned char data)
00F8 ; {
00F8 .dbline 124
00F8 ; unsigned char i=0;
00F8 4427 clr R20
00FA .dbline 126
00FA ; //生成写入时序
00FA ; for(i=0;i<8;i++)
00FA 0DC0 xjmp L33
00FC L30:
00FC .dbline 127
00FC ; {
00FC .dbline 128
00FC ; SCK_LOW();
00FC DA98 cbi 0x1b,2
00FE .dbline 129
00FE ; if(data&0x80==0x80)
00FE 60FF sbrs R22,0
0100 02C0 rjmp L34
0102 .dbline 130
0102 ; SI_HIGH();
0102 DB9A sbi 0x1b,3
0104 01C0 xjmp L35
0106 L34:
0106 .dbline 132
0106 ; else
0106 ; SI_LOW();
0106 DB98 cbi 0x1b,3
0108 L35:
0108 .dbline 133
0108 0E940000 xcall _delay_1ms
010C .dbline 134
010C DA9A sbi 0x1b,2
010E .dbline 135
010E 0E940000 xcall _delay_1ms
0112 .dbline 136
0112 660F lsl R22
0114 .dbline 137
0114 L31:
0114 .dbline 126
0114 4395 inc R20
0116 L33:
0116 .dbline 126
0116 4830 cpi R20,8
0118 88F3 brlo L30
011A .dbline -2
011A L29:
011A 0E940000 xcall pop_gset2
011E .dbline 0 ; func end
011E 0895 ret
0120 .dbsym r i 20 c
0120 .dbsym r data 22 c
0120 .dbend
0120 .dbfunc e at4541_read_status _at4541_read_status fc
0120 ; temp1 -> R20
0120 ; temp2 -> R22
0120 ; i -> R10
0120 ; commond -> R12
.even
0120 _at4541_read_status::
0120 0E940000 xcall push_gset4
0124 C02E mov R12,R16
0126 .dbline -1
0126 .dbline 146
0126 ; delay_1ms();
0126 ; SCK_HIGH();
0126 ; delay_1ms();
0126 ; data=data<<1;
0126 ; }
0126 ; }
0126 ;
0126 ; /**************************************
0126 ; ** 说明:读取寄存器状态
0126 ; ** 操作流程:将57H或D7H操作代码传给at45db041
0126 ; ** 随后芯片从SO输出8位寄存器信息,高位在前
0126 ; **************************************/
0126 ; unsigned char at4541_read_status(unsigned char commond)
0126 ; {
0126 .dbline 147
0126 ; unsigned char i=0,temp1=0,temp2=0;
0126 AA24 clr R10
0128 .dbline 147
0128 4427 clr R20
012A .dbline 147
012A 6627 clr R22
012C .dbline 148
012C ; SCK_HIGH();
012C DA9A sbi 0x1b,2
012E .dbline 149
012E ; RESET_HIGH();
012E D89A sbi 0x1b,0
0130 .dbline 150
0130 ; CS_HIGH();
0130 D99A sbi 0x1b,1
0132 .dbline 151
0132 ; delay_1ms();
0132 0E940000 xcall _delay_1ms
0136 .dbline 152
0136 ; CS_LOW();
0136 D998 cbi 0x1b,1
0138 .dbline 153
0138 ; delay_1ms();
0138 0E940000 xcall _delay_1ms
013C .dbline 155
013C ; //本循环把8位command传给at45db041
013C ; for(i=0;i<8;i++)
013C 0FC0 xjmp L40
013E L37:
013E .dbline 156
013E ; {
013E .dbline 157
013E ; SCK_LOW();
013E DA98 cbi 0x1b,2
0140 .dbline 158
0140 ; if((commond&0x80)==0x80)
0140 8C2D mov R24,R12
0142 8078 andi R24,128
0144 8038 cpi R24,128
0146 11F4 brne L41
0148 .dbline 159
0148 ; SI_HIGH();
0148 DB9A sbi 0x1b,3
014A 01C0 xjmp L42
014C L41:
014C .dbline 161
014C ; else
014C ; SI_LOW();
014C DB98 cbi 0x1b,3
014E L42:
014E .dbline 162
014E 0E940000 xcall _delay_1ms
0152 .dbline 163
0152 DA9A sbi 0x1b,2
0154 .dbline 164
0154 0E940000 xcall _delay_1ms
0158 .dbline 165
0158 CC0C lsl R12
015A .dbline 166
015A L38:
015A .dbline 155
015A A394 inc R10
015C L40:
015C .dbline 155
015C 8A2D mov R24,R10
015E 8830 cpi R24,8
0160 70F3 brlo L37
0162 .dbline 168
0162 ; delay_1ms();
0162 ; SCK_HIGH();
0162 ; delay_1ms();
0162 ; commond=commond<<1;
0162 ; }
0162 ; //本循环接收传回的八位数据
0162 ; for(i=0;i<8;i++)
0162 AA24 clr R10
0164 14C0 xjmp L46
0166 L43:
0166 .dbline 169
0166 ; {
0166 .dbline 170
0166 ; SCK_LOW();
0166 DA98 cbi 0x1b,2
0168 .dbline 171
0168 ; delay_1ms();
0168 0E940000 xcall _delay_1ms
016C .dbline 173
016C ;
016C ; if(SO_PIN_HIGH)
016C 89B3 in R24,0x19
016E 8071 andi R24,16
0170 8031 cpi R24,16
0172 11F4 brne L47
0174 .dbline 174
0174 ; temp1 = 1;
0174 41E0 ldi R20,1
0176 01C0 xjmp L48
0178 L47:
0178 .dbline 176
0178 ; else
0178 ; temp1 = 0;
0178 4427 clr R20
017A L48:
017A .dbline 178
017A 142F mov R17,R20
017C 1F5F subi R17,255 ; addi 1
017E 062F mov R16,R22
0180 0E940000 xcall lsl8
0184 602F mov R22,R16
0186 .dbline 179
0186 DA9A sbi 0x1b,2
0188 .dbline 180
0188 0E940000 xcall _delay_1ms
018C .dbline 181
018C L44:
018C .dbline 168
018C A394 inc R10
018E L46:
018E .dbline 168
018E 8A2D mov R24,R10
0190 8830 cpi R24,8
0192 48F3 brlo L43
0194 .dbline 182
0194 ;
0194 ; temp2 = temp2<<1 + temp1;
0194 ; SCK_HIGH();
0194 ; delay_1ms();
0194 ; }
0194 ; CS_HIGH(); //停止输出
0194 D99A sbi 0x1b,1
0196 .dbline 184
0196 ;
0196 ; delay_ms(500);
0196 04EF ldi R16,500
0198 11E0 ldi R17,1
019A 0E940000 xcall _delay_ms
019E .dbline 186
019E ;
019E ; return temp2;
019E 062F mov R16,R22
01A0 .dbline -2
01A0 L36:
01A0 0E940000 xcall pop_gset4
01A4 .dbline 0 ; func end
01A4 0895 ret
01A6 .dbsym r temp1 20 c
01A6 .dbsym r temp2 22 c
01A6 .dbsym r i 10 c
01A6 .dbsym r commond 12 c
01A6 .dbend
01A6 .dbfunc e at4541_stop _at4541_stop fV
.even
01A6 _at4541_stop::
01A6 .dbline -1
01A6 .dbline 194
01A6 ; }
01A6 ;
01A6 ; /**************************************
01A6 ; ** 说明:CS=1 停止at45db041
01A6 ; **
01A6 ; **************************************/
01A6 ; void at4541_stop(void)
01A6 ; {
01A6 .dbline 195
01A6 ; CS_HIGH();
01A6 D99A sbi 0x1b,1
01A8 .dbline 196
01A8 ; delay_ms(500);
01A8 04EF ldi R16,500
01AA 11E0 ldi R17,1
01AC 0E940000 xcall _delay_ms
01B0 .dbline -2
01B0 L49:
01B0 .dbline 0 ; func end
01B0 0895 ret
01B2 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -