📄 avr_gy-29.lis
字号:
03B6 ; LCD_write_char(2,1,'-'); //显示负符号位
03B6 8DE2 ldi R24,45
03B8 8883 std y+0,R24
03BA 21E0 ldi R18,1
03BC 02E0 ldi R16,2
03BE 49DF xcall _LCD_write_char
03C0 .dbline 74
03C0 ; }
03C0 05C0 xjmp L92
03C2 L91:
03C2 .dbline 76
03C2 ; else
03C2 ; LCD_write_char(2,1,' '); //显示空格
03C2 80E2 ldi R24,32
03C4 8883 std y+0,R24
03C6 21E0 ldi R18,1
03C8 02E0 ldi R16,2
03CA 43DF xcall _LCD_write_char
03CC L92:
03CC .dbline 77
03CC ; temp=(float)y*3.9; //计算数据和显示,查考ADXL345快速入门第4页
03CC 00E0 ldi R16,<L87
03CE 10E0 ldi R17,>L87
03D0 0E940000 xcall elpm32
03D4 1801 movw R2,R16
03D6 2901 movw R4,R18
03D8 8A01 movw R16,R20
03DA 0E940000 xcall int2fp
03DE 3A93 st -y,R19
03E0 2A93 st -y,R18
03E2 1A93 st -y,R17
03E4 0A93 st -y,R16
03E6 8101 movw R16,R2
03E8 9201 movw R18,R4
03EA 0E940000 xcall fpmule2
03EE 0983 std y+1,R16
03F0 1A83 std y+2,R17
03F2 2B83 std y+3,R18
03F4 3C83 std y+4,R19
03F6 .dbline 78
03F6 ; conversion(temp); //转换出显示需要的数据
03F6 0981 ldd R16,y+1
03F8 1A81 ldd R17,y+2
03FA 2B81 ldd R18,y+3
03FC 3C81 ldd R19,y+4
03FE 0E940000 xcall fpint
0402 33DF xcall _conversion
0404 .dbline 79
0404 ; LCD_write_char(0,1,'y'); //第0行,第0列 显示X
0404 89E7 ldi R24,121
0406 8883 std y+0,R24
0408 21E0 ldi R18,1
040A 0027 clr R16
040C 22DF xcall _LCD_write_char
040E .dbline 80
040E ; LCD_write_char(1,1,':');
040E 8AE3 ldi R24,58
0410 8883 std y+0,R24
0412 21E0 ldi R18,1
0414 01E0 ldi R16,1
0416 1DDF xcall _LCD_write_char
0418 .dbline 81
0418 ; LCD_write_char(3,1,display[0]);
0418 20900000 lds R2,_display
041C 2882 std y+0,R2
041E 21E0 ldi R18,1
0420 03E0 ldi R16,3
0422 17DF xcall _LCD_write_char
0424 .dbline 82
0424 ; LCD_write_char(4,1,'.');
0424 8EE2 ldi R24,46
0426 8883 std y+0,R24
0428 21E0 ldi R18,1
042A 04E0 ldi R16,4
042C 12DF xcall _LCD_write_char
042E .dbline 83
042E ; LCD_write_char(5,1,display[1]);
042E 20900100 lds R2,_display+1
0432 2882 std y+0,R2
0434 21E0 ldi R18,1
0436 05E0 ldi R16,5
0438 0CDF xcall _LCD_write_char
043A .dbline 84
043A ; LCD_write_char(6,1,display[2]);
043A 20900200 lds R2,_display+2
043E 2882 std y+0,R2
0440 21E0 ldi R18,1
0442 06E0 ldi R16,6
0444 06DF xcall _LCD_write_char
0446 .dbline 85
0446 ; LCD_write_char(7,1,'g');
0446 87E6 ldi R24,103
0448 8883 std y+0,R24
044A 21E0 ldi R18,1
044C 07E0 ldi R16,7
044E 01DF xcall _LCD_write_char
0450 .dbline -2
0450 L90:
0450 .dbline 0 ; func end
0450 2596 adiw R28,5
0452 5991 ld R21,y+
0454 4991 ld R20,y+
0456 0895 ret
0458 .dbsym l temp 1 D
0458 .dbsym r y 20 I
0458 .dbend
0458 .dbfunc e display_z _display_z fV
0458 ; temp -> y+1
0458 ; z -> R20,R21
.even
0458 _display_z::
0458 4A93 st -y,R20
045A 5A93 st -y,R21
045C 2597 sbiw R28,5
045E .dbline -1
045E .dbline 91
045E ; }
045E ;
045E ; //*******************************
045E ; //显示z
045E ; void display_z(void)
045E ; { float temp;
045E .dbline 94
045E ; int z;
045E ;
045E ; z=I2C_Read(0x37);
045E 07E3 ldi R16,55
0460 10E0 ldi R17,0
0462 2EDE xcall _I2C_Read
0464 402F mov R20,R16
0466 5527 clr R21
0468 .dbline 95
0468 ; z=(z<<8)+I2C_Read(0x36);
0468 06E3 ldi R16,54
046A 10E0 ldi R17,0
046C 29DE xcall _I2C_Read
046E 542F mov R21,R20
0470 402F mov R20,R16
0472 .dbline 97
0472 ;
0472 ; if(z<0){
0472 4030 cpi R20,0
0474 E0E0 ldi R30,0
0476 5E07 cpc R21,R30
0478 54F4 brge L96
047A X27:
047A .dbline 97
047A .dbline 98
047A ; z=-z;
047A 4095 com R20
047C 5095 com R21
047E 4F5F subi R20,0xFF
0480 5F4F sbci R21,0xFF
0482 .dbline 99
0482 ; LCD_write_char(10,1,'-'); //显示负符号位
0482 8DE2 ldi R24,45
0484 8883 std y+0,R24
0486 21E0 ldi R18,1
0488 0AE0 ldi R16,10
048A E3DE xcall _LCD_write_char
048C .dbline 100
048C ; }
048C 05C0 xjmp L97
048E L96:
048E .dbline 102
048E ; else
048E ; LCD_write_char(10,1,' '); //显示空格
048E 80E2 ldi R24,32
0490 8883 std y+0,R24
0492 21E0 ldi R18,1
0494 0AE0 ldi R16,10
0496 DDDE xcall _LCD_write_char
0498 L97:
0498 .dbline 103
0498 ; temp=(float)z*3.9; //计算数据和显示,查考ADXL345快速入门第4页
0498 00E0 ldi R16,<L87
049A 10E0 ldi R17,>L87
049C 0E940000 xcall elpm32
04A0 1801 movw R2,R16
04A2 2901 movw R4,R18
04A4 8A01 movw R16,R20
04A6 0E940000 xcall int2fp
04AA 3A93 st -y,R19
04AC 2A93 st -y,R18
04AE 1A93 st -y,R17
04B0 0A93 st -y,R16
04B2 8101 movw R16,R2
04B4 9201 movw R18,R4
04B6 0E940000 xcall fpmule2
04BA 0983 std y+1,R16
04BC 1A83 std y+2,R17
04BE 2B83 std y+3,R18
04C0 3C83 std y+4,R19
04C2 .dbline 104
04C2 ; conversion(temp); //转换出显示需要的数据
04C2 0981 ldd R16,y+1
04C4 1A81 ldd R17,y+2
04C6 2B81 ldd R18,y+3
04C8 3C81 ldd R19,y+4
04CA 0E940000 xcall fpint
04CE CDDE xcall _conversion
04D0 .dbline 105
04D0 ; LCD_write_char(10,0,'z'); //第0行,第0列 显示X
04D0 8AE7 ldi R24,122
04D2 8883 std y+0,R24
04D4 2227 clr R18
04D6 0AE0 ldi R16,10
04D8 BCDE xcall _LCD_write_char
04DA .dbline 106
04DA ; LCD_write_char(11,0,':');
04DA 8AE3 ldi R24,58
04DC 8883 std y+0,R24
04DE 2227 clr R18
04E0 0BE0 ldi R16,11
04E2 B7DE xcall _LCD_write_char
04E4 .dbline 107
04E4 ; LCD_write_char(11,1,display[0]);
04E4 20900000 lds R2,_display
04E8 2882 std y+0,R2
04EA 21E0 ldi R18,1
04EC 0BE0 ldi R16,11
04EE B1DE xcall _LCD_write_char
04F0 .dbline 108
04F0 ; LCD_write_char(12,1,'.');
04F0 8EE2 ldi R24,46
04F2 8883 std y+0,R24
04F4 21E0 ldi R18,1
04F6 0CE0 ldi R16,12
04F8 ACDE xcall _LCD_write_char
04FA .dbline 109
04FA ; LCD_write_char(13,1,display[1]);
04FA 20900100 lds R2,_display+1
04FE 2882 std y+0,R2
0500 21E0 ldi R18,1
0502 0DE0 ldi R16,13
0504 A6DE xcall _LCD_write_char
0506 .dbline 110
0506 ; LCD_write_char(14,1,display[2]);
0506 20900200 lds R2,_display+2
050A 2882 std y+0,R2
050C 21E0 ldi R18,1
050E 0EE0 ldi R16,14
0510 A0DE xcall _LCD_write_char
0512 .dbline 111
0512 ; LCD_write_char(15,1,'g');
0512 87E6 ldi R24,103
0514 8883 std y+0,R24
0516 21E0 ldi R18,1
0518 0FE0 ldi R16,15
051A 9BDE xcall _LCD_write_char
051C .dbline -2
051C L95:
051C .dbline 0 ; func end
051C 2596 adiw R28,5
051E 5991 ld R21,y+
0520 4991 ld R20,y+
0522 0895 ret
0524 .dbsym l temp 1 D
0524 .dbsym r z 20 I
0524 .dbend
0524 .dbfunc e ADXL345_init _ADXL345_init fV
.even
0524 _ADXL345_init::
0524 .dbline -1
0524 .dbline 117
0524 ;
0524 ; }
0524 ;
0524 ; //***********************************************
0524 ; void ADXL345_init(void) //adxl345初始化
0524 ; {
0524 .dbline 118
0524 ; I2C_Write(0x31,0x0B); //测量范围,正负16g,13位模式
0524 2BE0 ldi R18,11
0526 01E3 ldi R16,49
0528 97DD xcall _I2C_Write
052A .dbline 119
052A ; I2C_Write(0x2C,0x08); //速率设定为12.5 参考pdf13页
052A 28E0 ldi R18,8
052C 0CE2 ldi R16,44
052E 94DD xcall _I2C_Write
0530 .dbline 120
0530 ; I2C_Write(0x2D,0x08); //选择电源模式 参考pdf24页
0530 28E0 ldi R18,8
0532 0DE2 ldi R16,45
0534 91DD xcall _I2C_Write
0536 .dbline 121
0536 ; I2C_Write(0x2E,0x80); //使能 DATA_READY 中断
0536 20E8 ldi R18,128
0538 0EE2 ldi R16,46
053A 8EDD xcall _I2C_Write
053C .dbline 122
053C ; I2C_Write(0x1E,0x00); //X 偏移量 根据测试传感器的状态写入pdf29页
053C 2227 clr R18
053E 0EE1 ldi R16,30
0540 8BDD xcall _I2C_Write
0542 .dbline 123
0542 ; I2C_Write(0x1F,0x00); //Y 偏移量 根据测试传感器的状态写入pdf29页
0542 2227 clr R18
0544 0FE1 ldi R16,31
0546 88DD xcall _I2C_Write
0548 .dbline 124
0548 ; I2C_Write(0x20,0x05); //Z 偏移量 根据测试传感器的状态写入pdf29页
0548 25E0 ldi R18,5
054A 00E2 ldi R16,32
054C 85DD xcall _I2C_Write
054E .dbline -2
054E L100:
054E .dbline 0 ; func end
054E 0895 ret
0550 .dbend
0550 .dbfunc e main _main fV
0550 ; i -> <dead>
.even
0550 _main::
0550 .dbline -1
0550 .dbline 131
0550 ; }
0550 ;
0550
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -