📄 at24c02.lis
字号:
00D8 .dbline 69
; flag=0;
00D8 AA24 clr R10
00DA .dbline 70
; port_init(); //端口初始化
00DA 92DF rcall _port_init
00DC 6AC0 rjmp L12
00DE L11:
00DE .dbline 72
; while(1)
; {
00DE .dbline 73
; key1=scan_key();
00DE 00D0 rcall _scan_key
00E0 202E mov R2,R16
00E2 312E mov R3,R17
00E4 C22C mov R12,R2
00E6 .dbline 74
; if (key1!=0x7f)
00E6 8C2D mov R24,R12
00E8 8F37 cpi R24,127
00EA 09F4 brne X2
00EC 58C0 rjmp L14
00EE X2:
00EE .dbline 75
; {
00EE L16:
00EE .dbline 77
; do
; {
00EE .dbline 78
; key2=scan_key();//检查按键释放
00EE 00D0 rcall _scan_key
00F0 202E mov R2,R16
00F2 312E mov R3,R17
00F4 E22C mov R14,R2
00F6 .dbline 79
; display();
00F6 8BDF rcall _display
00F8 .dbline 80
; }
00F8 L17:
00F8 .dbline 81
; while(key1==key2);
00F8 CE14 cp R12,R14
00FA C9F3 breq L16
00FC .dbline 82
; if (key1>=0x80)
00FC 8C2D mov R24,R12
00FE 8038 cpi R24,128
0100 88F0 brlo L19
0102 .dbline 83
; {
0102 .dbline 84
; if (flag!=0x00)//SHIFT键切换数据和地址修改
0102 AA20 tst R10
0104 49F0 breq L21
0106 .dbline 85
; {
0106 .dbline 86
; Write24c02(&at24_data,at24_add,1);
0106 81E0 ldi R24,1
0108 8883 std y+0,R24
010A 20910100 lds R18,_at24_add
010E 00E0 ldi R16,<_at24_data
0110 10E0 ldi R17,>_at24_data
0112 00D0 rcall _Write24c02
0114 .dbline 87
; flag=0x00;
0114 AA24 clr R10
0116 .dbline 88
; }
0116 02C0 rjmp L22
0118 L21:
0118 .dbline 89
; else flag=0x80;
0118 80E8 ldi R24,128
011A A82E mov R10,R24
011C L22:
011C .dbline 90
; ledbuff[5]=0x00^flag;
011C A0920500 sts _ledbuff+5,R10
0120 .dbline 91
; index=0;
0120 6627 clr R22
0122 .dbline 92
; }
0122 3DC0 rjmp L20
0124 L19:
0124 .dbline 94
; else
; {
0124 .dbline 95
; switch (index)
0124 462F mov R20,R22
0126 5527 clr R21
0128 4030 cpi R20,0
012A 4507 cpc R20,R21
012C 29F0 breq L27
012E 4130 cpi R20,1
0130 E0E0 ldi R30,0
0132 5E07 cpc R21,R30
0134 E1F0 breq L30
0136 33C0 rjmp L24
0138 X0:
0138 .dbline 96
; {
0138 L27:
0138 .dbline 97
; case 0:{if (flag==0x00)
0138 .dbline 97
0138 AA20 tst R10
013A 61F4 brne L28
013C .dbline 98
; {key2=at24_add&0x0f;
013C .dbline 98
013C 80910100 lds R24,_at24_add
0140 8F70 andi R24,15
0142 E82E mov R14,R24
0144 .dbline 99
; at24_add=key2|(key1<<4);
0144 8C2D mov R24,R12
0146 8F70 andi R24,#0x0F
0148 8295 swap R24
014A 2E2C mov R2,R14
014C 282A or R2,R24
014E 20920100 sts _at24_add,R2
0152 .dbline 100
; }
0152 0BC0 rjmp L29
0154 L28:
0154 .dbline 102
; else
; {key2=at24_data&0x0f;
0154 .dbline 102
0154 80910000 lds R24,_at24_data
0158 8F70 andi R24,15
015A E82E mov R14,R24
015C .dbline 103
; at24_data=key2|(key1<<4);
015C 8C2D mov R24,R12
015E 8F70 andi R24,#0x0F
0160 8295 swap R24
0162 2E2C mov R2,R14
0164 282A or R2,R24
0166 20920000 sts _at24_data,R2
016A .dbline 104
; }
016A L29:
016A .dbline 105
; index=01;
016A 61E0 ldi R22,1
016C .dbline 106
; break;
016C 18C0 rjmp L25
016E L30:
016E .dbline 108
; }
; case 1:{if (flag==0x00)
016E .dbline 108
016E AA20 tst R10
0170 59F4 brne L31
0172 .dbline 109
; {key2=at24_add&0xf0;
0172 .dbline 109
0172 80910100 lds R24,_at24_add
0176 807F andi R24,240
0178 E82E mov R14,R24
017A .dbline 110
; at24_add=key2|(key1&0x0f);
017A 8C2D mov R24,R12
017C 8F70 andi R24,15
017E 2E2C mov R2,R14
0180 282A or R2,R24
0182 20920100 sts _at24_add,R2
0186 .dbline 111
; }
0186 0AC0 rjmp L32
0188 L31:
0188 .dbline 113
; else
; {key2=at24_data&0xf0;
0188 .dbline 113
0188 80910000 lds R24,_at24_data
018C 807F andi R24,240
018E E82E mov R14,R24
0190 .dbline 114
; at24_data=key2|(key1&0x0f);
0190 8C2D mov R24,R12
0192 8F70 andi R24,15
0194 2E2C mov R2,R14
0196 282A or R2,R24
0198 20920000 sts _at24_data,R2
019C .dbline 115
; }
019C L32:
019C .dbline 116
; index=00;
019C 6627 clr R22
019E .dbline 117
; break;
019E L24:
019E L25:
019E .dbline 120
; }
; }
; }
019E L20:
019E .dbline 121
; }
019E L14:
019E .dbline 122
; if (flag==0x00)
019E AA20 tst R10
01A0 39F4 brne L33
01A2 .dbline 123
; Read24c02(&at24_data,at24_add,1);
01A2 81E0 ldi R24,1
01A4 8883 std y+0,R24
01A6 20910100 lds R18,_at24_add
01AA 00E0 ldi R16,<_at24_data
01AC 10E0 ldi R17,>_at24_data
01AE 00D0 rcall _Read24c02
01B0 L33:
01B0 .dbline 124
01B0 2EDF rcall _display
01B2 .dbline 125
01B2 L12:
01B2 .dbline 71
01B2 95CF rjmp L11
01B4 X1:
01B4 .dbline 126}
; display();
; }
; }
01B4 L10:
01B4 2196 adiw R28,1
01B6 0895 ret
01B8 .dbsym r index 22 c
01B8 .dbsym r flag 10 c
01B8 .dbsym r key1 12 c
01B8 .dbsym r key2 14 c
.area bss(ram, con, rel)
0000 .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
0000 _at24_data::
0000 .blkb 1
0001 .dbsym s at24_data _at24_data c
0001 _at24_add::
0001 .blkb 1
0002 .dbsym s at24_add _at24_add c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -