📄 at24c02.lst
字号:
00A4 .dbline 69
; flag=0;
00A4 24AA clr R10
00A5 .dbline 70
; port_init(); //端口初始化
00A5 DF92 rcall _port_init
00A6 C06A rjmp L12
00A7 L11:
00A7 .dbline 72
; while(1)
; {
00A7 .dbline 73
; key1=scan_key();
00A7 D12D rcall _scan_key
00A8 2E20 mov R2,R16
00A9 2E31 mov R3,R17
00AA 2CC2 mov R12,R2
00AB .dbline 74
; if (key1!=0x7f)
00AB 2D8C mov R24,R12
00AC 378F cpi R24,127
00AD F409 brne X2
00AE C058 rjmp L14
00AF X2:
00AF .dbline 75
; {
00AF L16:
00AF .dbline 77
; do
; {
00AF .dbline 78
; key2=scan_key();//检查按键释放
00AF D125 rcall _scan_key
00B0 2E20 mov R2,R16
00B1 2E31 mov R3,R17
00B2 2CE2 mov R14,R2
00B3 .dbline 79
; display();
00B3 DF8B rcall _display
00B4 .dbline 80
; }
00B4 L17:
00B4 .dbline 81
; while(key1==key2);
00B4 14CE cp R12,R14
00B5 F3C9 breq L16
00B6 .dbline 82
; if (key1>=0x80)
00B6 2D8C mov R24,R12
00B7 3880 cpi R24,128
00B8 F088 brlo L19
00B9 .dbline 83
; {
00B9 .dbline 84
; if (flag!=0x00)//SHIFT键切换数据和地址修改
00B9 20AA tst R10
00BA F049 breq L21
00BB .dbline 85
; {
00BB .dbline 86
; Write24c02(&at24_data,at24_add,1);
00BB E081 ldi R24,1
00BC 8388 std y+0,R24
00BD 91200067 lds R18,_at24_add
00BF E606 ldi R16,<_at24_data
00C0 E010 ldi R17,>_at24_data
00C1 D080 rcall _Write24c02
00C2 .dbline 87
; flag=0x00;
00C2 24AA clr R10
00C3 .dbline 88
; }
00C3 C002 rjmp L22
00C4 L21:
00C4 .dbline 89
; else flag=0x80;
00C4 E880 ldi R24,128
00C5 2EA8 mov R10,R24
00C6 L22:
00C6 .dbline 90
; ledbuff[5]=0x00^flag;
00C6 92A00065 sts _ledbuff+5,R10
00C8 .dbline 91
; index=0;
00C8 2766 clr R22
00C9 .dbline 92
; }
00C9 C03D rjmp L20
00CA L19:
00CA .dbline 94
; else
; {
00CA .dbline 95
; switch (index)
00CA 2F46 mov R20,R22
00CB 2755 clr R21
00CC 3040 cpi R20,0
00CD 0745 cpc R20,R21
00CE F029 breq L27
00CF 3041 cpi R20,1
00D0 E0E0 ldi R30,0
00D1 075E cpc R21,R30
00D2 F0E1 breq L30
00D3 C033 rjmp L24
00D4 X0:
00D4 .dbline 96
; {
00D4 L27:
00D4 .dbline 97
; case 0:{if (flag==0x00)
00D4 .dbline 97
00D4 20AA tst R10
00D5 F461 brne L28
00D6 .dbline 98
; {key2=at24_add&0x0f;
00D6 .dbline 98
00D6 91800067 lds R24,_at24_add
00D8 708F andi R24,15
00D9 2EE8 mov R14,R24
00DA .dbline 99
; at24_add=key2|(key1<<4);
00DA 2D8C mov R24,R12
00DB 708F andi R24,#0x0F
00DC 9582 swap R24
00DD 2C2E mov R2,R14
00DE 2A28 or R2,R24
00DF 92200067 sts _at24_add,R2
00E1 .dbline 100
; }
00E1 C00B rjmp L29
00E2 L28:
00E2 .dbline 102
; else
; {key2=at24_data&0x0f;
00E2 .dbline 102
00E2 91800066 lds R24,_at24_data
00E4 708F andi R24,15
00E5 2EE8 mov R14,R24
00E6 .dbline 103
; at24_data=key2|(key1<<4);
00E6 2D8C mov R24,R12
00E7 708F andi R24,#0x0F
00E8 9582 swap R24
00E9 2C2E mov R2,R14
00EA 2A28 or R2,R24
00EB 92200066 sts _at24_data,R2
00ED .dbline 104
; }
00ED L29:
00ED .dbline 105
; index=01;
00ED E061 ldi R22,1
00EE .dbline 106
; break;
00EE C018 rjmp L25
00EF L30:
00EF .dbline 108
; }
; case 1:{if (flag==0x00)
00EF .dbline 108
00EF 20AA tst R10
00F0 F459 brne L31
00F1 .dbline 109
; {key2=at24_add&0xf0;
00F1 .dbline 109
00F1 91800067 lds R24,_at24_add
00F3 7F80 andi R24,240
00F4 2EE8 mov R14,R24
00F5 .dbline 110
; at24_add=key2|(key1&0x0f);
00F5 2D8C mov R24,R12
00F6 708F andi R24,15
00F7 2C2E mov R2,R14
00F8 2A28 or R2,R24
00F9 92200067 sts _at24_add,R2
00FB .dbline 111
; }
00FB C00A rjmp L32
00FC L31:
00FC .dbline 113
; else
; {key2=at24_data&0xf0;
00FC .dbline 113
00FC 91800066 lds R24,_at24_data
00FE 7F80 andi R24,240
00FF 2EE8 mov R14,R24
0100 .dbline 114
; at24_data=key2|(key1&0x0f);
0100 2D8C mov R24,R12
0101 708F andi R24,15
0102 2C2E mov R2,R14
0103 2A28 or R2,R24
0104 92200066 sts _at24_data,R2
0106 .dbline 115
; }
0106 L32:
0106 .dbline 116
; index=00;
0106 2766 clr R22
0107 .dbline 117
; break;
0107 L24:
0107 L25:
0107 .dbline 120
; }
; }
; }
0107 L20:
0107 .dbline 121
; }
0107 L14:
0107 .dbline 122
; if (flag==0x00)
0107 20AA tst R10
0108 F439 brne L33
0109 .dbline 123
; Read24c02(&at24_data,at24_add,1);
0109 E081 ldi R24,1
010A 8388 std y+0,R24
010B 91200067 lds R18,_at24_add
010D E606 ldi R16,<_at24_data
010E E010 ldi R17,>_at24_data
010F D06D rcall _Read24c02
0110 L33:
0110 .dbline 124
0110 DF2E rcall _display
0111 .dbline 125
0111 L12:
0111 .dbline 71
0111 CF95 rjmp L11
0112 X1:
0112 .dbline 126}
; display();
; }
; }
0112 L10:
0112 9621 adiw R28,1
0113 9508 ret
0114 .dbsym r index 22 c
0114 .dbsym r flag 10 c
0114 .dbsym r key1 12 c
0114 .dbsym r key2 14 c
.area bss(ram, con, rel)
--- 0000 .dbfile D:\ICC-AVR\examples.sl\I2C\AT24C02.c
0033 _at24_data::
0033 .blkb 1
0033 .dbsym s at24_data _at24_data c
0033 _at24_add::
0033 .blkb 1
0034 .dbsym s at24_add _at24_add c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -