📄 iic.lis
字号:
00D8 .dbfunc e ReceiveData _ReceiveData fc
00D8 ; value -> R20
00D8 ; temp -> R22
00D8 ; count -> R10
.even
00D8 _ReceiveData::
00D8 00D0 rcall push_gset3
00DA .dbline -1
00DA .dbline 76
00DA ; }
00DA ; /////////////接收数据///////////////////
00DA ; uchar ReceiveData(void)
00DA ; {
00DA .dbline 79
00DA ; uchar count;
00DA ; uchar temp;
00DA ; uchar value=0;
00DA 4427 clr R20
00DC .dbline 80
00DC ; DDRD&=~0x04;//设置为输入
00DC 8A98 cbi 0x11,2
00DE .dbline 81
00DE ; for(count=0;count!=8;count++)
00DE AA24 clr R10
00E0 12C0 rjmp L29
00E2 L26:
00E2 .dbline 82
00E2 ; {
00E2 .dbline 83
00E2 ; value<<=1;
00E2 440F lsl R20
00E4 .dbline 84
00E4 ; CLK(1); DelayMs(2);
00E4 01E0 ldi R16,1
00E6 9BDF rcall _CLK
00E8 .dbline 84
00E8 02E0 ldi R16,2
00EA 8ADF rcall _DelayMs
00EC .dbline 85
00EC ; temp=PIND;//读引脚
00EC 60B3 in R22,0x10
00EE .dbline 86
00EE ; if((temp&0x04)==0x04) value++;
00EE 862F mov R24,R22
00F0 8470 andi R24,4
00F2 8430 cpi R24,4
00F4 09F4 brne L30
00F6 .dbline 86
00F6 4395 inc R20
00F8 L30:
00F8 .dbline 87
00F8 02E0 ldi R16,2
00FA 82DF rcall _DelayMs
00FC .dbline 88
00FC 0027 clr R16
00FE 8FDF rcall _CLK
0100 .dbline 88
0100 02E0 ldi R16,2
0102 7EDF rcall _DelayMs
0104 .dbline 89
0104 L27:
0104 .dbline 81
0104 A394 inc R10
0106 L29:
0106 .dbline 81
0106 8A2D mov R24,R10
0108 8830 cpi R24,8
010A 59F7 brne L26
010C .dbline 90
010C ; DelayMs(2);
010C ; CLK(0); DelayMs(2);
010C ; }
010C ; DDRD|=0x04;//设置为输出
010C 8A9A sbi 0x11,2
010E .dbline 92
010E ; //以下输出NOACK
010E ; CLK(0);DelayMs(2);
010E 0027 clr R16
0110 86DF rcall _CLK
0112 .dbline 92
0112 02E0 ldi R16,2
0114 75DF rcall _DelayMs
0116 .dbline 93
0116 ; IO(1);DelayMs(2);
0116 01E0 ldi R16,1
0118 88DF rcall _IO
011A .dbline 93
011A 02E0 ldi R16,2
011C 71DF rcall _DelayMs
011E .dbline 94
011E ; CLK(1);DelayMs(2);
011E 01E0 ldi R16,1
0120 7EDF rcall _CLK
0122 .dbline 94
0122 02E0 ldi R16,2
0124 6DDF rcall _DelayMs
0126 .dbline 95
0126 ; CLK(0);DelayMs(2);
0126 0027 clr R16
0128 7ADF rcall _CLK
012A .dbline 95
012A 02E0 ldi R16,2
012C 69DF rcall _DelayMs
012E .dbline 96
012E ; return value;
012E 042F mov R16,R20
0130 .dbline -2
0130 L25:
0130 00D0 rcall pop_gset3
0132 .dbline 0 ; func end
0132 0895 ret
0134 .dbsym r value 20 c
0134 .dbsym r temp 22 c
0134 .dbsym r count 10 c
0134 .dbend
0134 .dbfunc e Write24c02_OneByte _Write24c02_OneByte fV
0134 ; ddata -> R20
0134 ; addr -> R22
.even
0134 _Write24c02_OneByte::
0134 00D0 rcall push_gset2
0136 422F mov R20,R18
0138 602F mov R22,R16
013A .dbline -1
013A .dbline 103
013A ; }
013A ;
013A ; //////////////以下供main调用/////////////////
013A ;
013A ; //向addr写一个数据
013A ; void Write24c02_OneByte(unsigned char addr,unsigned char ddata)
013A ; {
013A .dbline 105
013A ;
013A ; Start();
013A 7DDF rcall _Start
013C .dbline 106
013C ; SendData(0xa0);//器件寻址
013C 00EA ldi R16,160
013E A5DF rcall _SendData
0140 .dbline 107
0140 ; SendData(addr);//存储器寻址
0140 062F mov R16,R22
0142 A3DF rcall _SendData
0144 .dbline 108
0144 ; SendData(ddata);//写入数据
0144 042F mov R16,R20
0146 A1DF rcall _SendData
0148 .dbline 109
0148 ; Stop();
0148 8BDF rcall _Stop
014A .dbline 110
014A ; DelayMs(2000);
014A 00ED ldi R16,208
014C 59DF rcall _DelayMs
014E .dbline -2
014E L32:
014E 00D0 rcall pop_gset2
0150 .dbline 0 ; func end
0150 0895 ret
0152 .dbsym r ddata 20 c
0152 .dbsym r addr 22 c
0152 .dbend
0152 .dbfunc e Read24c02_OneByte _Read24c02_OneByte fc
0152 ; temp -> R20
0152 ; addr -> R20
.even
0152 _Read24c02_OneByte::
0152 00D0 rcall push_gset1
0154 402F mov R20,R16
0156 .dbline -1
0156 .dbline 115
0156 ; }
0156 ; ///////////////////////////////
0156 ; //从addr读一个数据
0156 ; unsigned char Read24c02_OneByte(unsigned char addr)
0156 ; {
0156 .dbline 117
0156 ; uchar temp;
0156 ; Start();
0156 6FDF rcall _Start
0158 .dbline 118
0158 ; SendData(0xa0);//器件寻址
0158 00EA ldi R16,160
015A 97DF rcall _SendData
015C .dbline 119
015C ; SendData(addr);//存储器寻址
015C 042F mov R16,R20
015E 95DF rcall _SendData
0160 .dbline 120
0160 ; Start();
0160 6ADF rcall _Start
0162 .dbline 121
0162 ; SendData(0xa1); //设置读
0162 01EA ldi R16,161
0164 92DF rcall _SendData
0166 .dbline 122
0166 ; temp = ReceiveData();//读取数据
0166 B8DF rcall _ReceiveData
0168 402F mov R20,R16
016A .dbline 123
016A ; Stop();
016A 7ADF rcall _Stop
016C .dbline 124
016C ; DelayMs(2000);
016C 00ED ldi R16,208
016E 48DF rcall _DelayMs
0170 .dbline 125
0170 ; return temp;
0170 042F mov R16,R20
0172 .dbline -2
0172 L33:
0172 00D0 rcall pop_gset1
0174 .dbline 0 ; func end
0174 0895 ret
0176 .dbsym r temp 20 c
0176 .dbsym r addr 20 c
0176 .dbend
0176 .dbfunc e WriteDs3231_OneByte _WriteDs3231_OneByte fV
0176 ; ddata -> R20
0176 ; addr -> R22
.even
0176 _WriteDs3231_OneByte::
0176 00D0 rcall push_gset2
0178 422F mov R20,R18
017A 602F mov R22,R16
017C .dbline -1
017C .dbline 129
017C ;
017C ; }
017C ; void WriteDs3231_OneByte(unsigned char addr,unsigned char ddata)
017C ; {
017C .dbline 130
017C ; Start();
017C 5CDF rcall _Start
017E .dbline 131
017E ; SendData(0xd0);//器件寻址
017E 00ED ldi R16,208
0180 84DF rcall _SendData
0182 .dbline 132
0182 ; SendData(addr);//存储器寻址
0182 062F mov R16,R22
0184 82DF rcall _SendData
0186 .dbline 133
0186 ; SendData(ddata);//写入数据
0186 042F mov R16,R20
0188 80DF rcall _SendData
018A .dbline 134
018A ; Stop();
018A 6ADF rcall _Stop
018C .dbline 135
018C ; DelayMs(2000);
018C 00ED ldi R16,208
018E 38DF rcall _DelayMs
0190 .dbline -2
0190 L34:
0190 00D0 rcall pop_gset2
0192 .dbline 0 ; func end
0192 0895 ret
0194 .dbsym r ddata 20 c
0194 .dbsym r addr 22 c
0194 .dbend
0194 .dbfunc e ReadDs3231_OneByte _ReadDs3231_OneByte fc
0194 ; temp -> R20
0194 ; addr -> R20
.even
0194 _ReadDs3231_OneByte::
0194 00D0 rcall push_gset1
0196 402F mov R20,R16
0198 .dbline -1
0198 .dbline 140
0198 ; }
0198 ; ///////////////////////////////
0198 ; //从addr读一个数据
0198 ; unsigned char ReadDs3231_OneByte(unsigned char addr)
0198 ; {
0198 .dbline 142
0198 ; uchar temp;
0198 ; Start();
0198 4EDF rcall _Start
019A .dbline 143
019A ; SendData(0xd0);//器件寻址
019A 00ED ldi R16,208
019C 76DF rcall _SendData
019E .dbline 144
019E ; SendData(addr);//存储器寻址
019E 042F mov R16,R20
01A0 74DF rcall _SendData
01A2 .dbline 145
01A2 ; Start();
01A2 49DF rcall _Start
01A4 .dbline 146
01A4 ; SendData(0xd1); //设置读
01A4 01ED ldi R16,209
01A6 71DF rcall _SendData
01A8 .dbline 147
01A8 ; temp = ReceiveData();//读取数据
01A8 97DF rcall _ReceiveData
01AA 402F mov R20,R16
01AC .dbline 148
01AC ; Stop();
01AC 59DF rcall _Stop
01AE .dbline 149
01AE ; DelayMs(2000);
01AE 00ED ldi R16,208
01B0 27DF rcall _DelayMs
01B2 .dbline 150
01B2 ; return temp;
01B2 042F mov R16,R20
01B4 .dbline -2
01B4 L35:
01B4 00D0 rcall pop_gset1
01B6 .dbline 0 ; func end
01B6 0895 ret
01B8 .dbsym r temp 20 c
01B8 .dbsym r addr 20 c
01B8 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -