⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avr_gy-29.lis

📁 GY-27资料源码 ADXL345 HMC5883L
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -