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

📄 avr_gy-29.lis

📁 GY-27资料源码 ADXL345 HMC5883L
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 025A           ; void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data) //列x=0~15,行y=0,1
 025A           ; {
 025A                   .dbline 141
 025A           ;   LCD_set_xy( X, Y ); //写地址
 025A 2C2D              mov R18,R12
 025C 0A2D              mov R16,R10
 025E D5DF              xcall _LCD_set_xy
 0260                   .dbline 142
 0260           ;   LCD_write_data( data);
 0260 0A81              ldd R16,y+2
 0262 B5DF              xcall _LCD_write_data
 0264                   .dbline -2
 0264           L80:
 0264                   .dbline 0 ; func end
 0264 C990              ld R12,y+
 0266 A990              ld R10,y+
 0268 0895              ret
 026A                   .dbsym l data 2 c
 026A                   .dbsym r Y 12 c
 026A                   .dbsym r X 10 c
 026A                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile D:\MCU_Project\MCU_AVR\AVR_GY-29\1602.h
 0000           _display::
 0000                   .blkb 2
                        .area idata
 0000 0000              .byte 0,0
                        .area data(ram, con, rel)
 0002                   .dbfile D:\MCU_Project\MCU_AVR\AVR_GY-29\1602.h
 0002                   .blkb 2
                        .area idata
 0002 0067              .byte 0,'g
                        .area data(ram, con, rel)
 0004                   .dbfile D:\MCU_Project\MCU_AVR\AVR_GY-29\1602.h
 0004                   .dbfile D:\MCU_Project\MCU_AVR\AVR_GY-29\AVR_GY-29.c
 0004                   .dbsym e display _display A[4:4]c
                        .area text(rom, con, rel)
 026A                   .dbfile D:\MCU_Project\MCU_AVR\AVR_GY-29\AVR_GY-29.c
 026A                   .dbfunc e conversion _conversion fV
 026A           ;              i -> R10,R11
                        .even
 026A           _conversion::
 026A AA92              st -y,R10
 026C BA92              st -y,R11
 026E 5801              movw R10,R16
 0270                   .dbline -1
 0270                   .dbline 26
 0270           ; /*****************************************
 0270           ; * 基于AVR单片机GY-29模块通信程序               *
 0270           ; * 功    能:IIC通信读取数据并显示        *
 0270           ; * 时钟频率:内部1M                                             *
 0270           ; * 设    计:广运电子                                   *
 0270           ; * 修改日期:2011年4月20日                              *
 0270           ; * 编译环境:ICC-AVR7.14                                        *
 0270           ; * 实验环境:ATmega16+1602                      *
 0270           ; * 使用端口:PC0,PC1,PC6,PC7,PA4~PA7    *
 0270           ; * 参    考:莫锦攀实验程序24c02读取实验  *
 0270           ; *****************************************/
 0270           ; #include <iom16v.h>
 0270           ; #include "I2C.h"
 0270           ; #include "1602.h"
 0270           ; #include "delay.h"
 0270           ; void conversion(unsigned int i);
 0270           ; void ADXL345_init(void); 
 0270           ; unsigned char display[4]={0,0,0,'g'};//显示数据
 0270           ; 
 0270           ; /*********************************************
 0270           ; 数据转换,十六进制数据转换成10进制
 0270           ; 输入十六进制范围:0x0000-0x270f(0-9999)
 0270           ; 结果分成个十百千位,以ascii存入显示区
 0270           ; **********************************************/
 0270           ; void conversion(unsigned int i)  
 0270           ; {  
 0270                   .dbline 29
 0270           ;   //  display[0]=i/10000+0x30 ;
 0270           ;   //  i=i%10000;    //取余运算
 0270           ;       display[0]=i/1000+0x30 ;
 0270 28EE              ldi R18,1000
 0272 33E0              ldi R19,3
 0274 8501              movw R16,R10
 0276 0E940000          xcall div16u
 027A C801              movw R24,R16
 027C C096              adiw R24,48
 027E 80930000          sts _display,R24
 0282                   .dbline 30
 0282           ;     i=i%1000;    //取余运算
 0282 28EE              ldi R18,1000
 0284 33E0              ldi R19,3
 0286 8501              movw R16,R10
 0288 0E940000          xcall mod16u
 028C 5801              movw R10,R16
 028E                   .dbline 31
 028E           ;     display[1]=i/100+0x30 ;
 028E 24E6              ldi R18,100
 0290 30E0              ldi R19,0
 0292 0E940000          xcall div16u
 0296 C801              movw R24,R16
 0298 C096              adiw R24,48
 029A 80930100          sts _display+1,R24
 029E                   .dbline 32
 029E           ;     i=i%100;    //取余运算
 029E 24E6              ldi R18,100
 02A0 30E0              ldi R19,0
 02A2 8501              movw R16,R10
 02A4 0E940000          xcall mod16u
 02A8 5801              movw R10,R16
 02AA                   .dbline 33
 02AA           ;     display[2]=i/10+0x30 ;
 02AA 2AE0              ldi R18,10
 02AC 30E0              ldi R19,0
 02AE 0E940000          xcall div16u
 02B2 C801              movw R24,R16
 02B4 C096              adiw R24,48
 02B6 80930200          sts _display+2,R24
 02BA                   .dbline -2
 02BA           L81:
 02BA                   .dbline 0 ; func end
 02BA B990              ld R11,y+
 02BC A990              ld R10,y+
 02BE 0895              ret
 02C0                   .dbsym r i 10 i
 02C0                   .dbend
 02C0                   .dbfunc e display_x _display_x fV
 02C0           ;           temp -> y+1
 02C0           ;              x -> R20,R21
                        .even
 02C0           _display_x::
 02C0 4A93              st -y,R20
 02C2 5A93              st -y,R21
 02C4 2597              sbiw R28,5
 02C6                   .dbline -1
 02C6                   .dbline 40
 02C6           ;  //  i=i%10;     //取余运算
 02C6           ;  //   display[3]=i+0x30;  
 02C6           ; }
 02C6           ; //*******************************
 02C6           ; //显示x
 02C6           ; void display_x(void)
 02C6           ; {   float temp;
 02C6                   .dbline 43
 02C6           ;     int x;
 02C6           ; 
 02C6           ;      x=I2C_Read(0x33);
 02C6 03E3              ldi R16,51
 02C8 10E0              ldi R17,0
 02CA FADE              xcall _I2C_Read
 02CC 402F              mov R20,R16
 02CE 5527              clr R21
 02D0                   .dbline 44
 02D0           ;        x=(x<<8)+I2C_Read(0x32);
 02D0 02E3              ldi R16,50
 02D2 10E0              ldi R17,0
 02D4 F5DE              xcall _I2C_Read
 02D6 542F              mov R21,R20
 02D8 402F              mov R20,R16
 02DA                   .dbline 46
 02DA           ;        
 02DA           ;       if(x<0){
 02DA 4030              cpi R20,0
 02DC E0E0              ldi R30,0
 02DE 5E07              cpc R21,R30
 02E0 54F4              brge L85
 02E2           X25:
 02E2                   .dbline 46
 02E2                   .dbline 47
 02E2           ;        x=-x;
 02E2 4095              com R20
 02E4 5095              com R21
 02E6 4F5F              subi R20,0xFF
 02E8 5F4F              sbci R21,0xFF
 02EA                   .dbline 48
 02EA           ;      LCD_write_char(2,0,'-');       //显示负符号位
 02EA 8DE2              ldi R24,45
 02EC 8883              std y+0,R24
 02EE 2227              clr R18
 02F0 02E0              ldi R16,2
 02F2 AFDF              xcall _LCD_write_char
 02F4                   .dbline 49
 02F4           ;       }
 02F4 05C0              xjmp L86
 02F6           L85:
 02F6                   .dbline 51
 02F6           ;       else 
 02F6           ;       LCD_write_char(2,0,' ');        //显示空格
 02F6 80E2              ldi R24,32
 02F8 8883              std y+0,R24
 02FA 2227              clr R18
 02FC 02E0              ldi R16,2
 02FE A9DF              xcall _LCD_write_char
 0300           L86:
 0300                   .dbline 52
 0300           ;     temp=(float)x*3.9;  //计算数据和显示,查考ADXL345快速入门第4页
 0300 00E0              ldi R16,<L87
 0302 10E0              ldi R17,>L87
 0304 0E940000          xcall elpm32
 0308 1801              movw R2,R16
 030A 2901              movw R4,R18
 030C 8A01              movw R16,R20
 030E 0E940000          xcall int2fp
 0312 3A93              st -y,R19
 0314 2A93              st -y,R18
 0316 1A93              st -y,R17
 0318 0A93              st -y,R16
 031A 8101              movw R16,R2
 031C 9201              movw R18,R4
 031E 0E940000          xcall fpmule2
 0322 0983              std y+1,R16
 0324 1A83              std y+2,R17
 0326 2B83              std y+3,R18
 0328 3C83              std y+4,R19
 032A                   .dbline 53
 032A           ;     conversion(temp);          //转换出显示需要的数据
 032A 0981              ldd R16,y+1
 032C 1A81              ldd R17,y+2
 032E 2B81              ldd R18,y+3
 0330 3C81              ldd R19,y+4
 0332 0E940000          xcall fpint
 0336 99DF              xcall _conversion
 0338                   .dbline 54
 0338           ;       LCD_write_char(0,0,'X');   //第0行,第0列 显示X
 0338 88E5              ldi R24,88
 033A 8883              std y+0,R24
 033C 2227              clr R18
 033E 0027              clr R16
 0340 88DF              xcall _LCD_write_char
 0342                   .dbline 55
 0342           ;     LCD_write_char(1,0,':'); 
 0342 8AE3              ldi R24,58
 0344 8883              std y+0,R24
 0346 2227              clr R18
 0348 01E0              ldi R16,1
 034A 83DF              xcall _LCD_write_char
 034C                   .dbline 56
 034C           ;     LCD_write_char(3,0,display[0]); 
 034C 20900000          lds R2,_display
 0350 2882              std y+0,R2
 0352 2227              clr R18
 0354 03E0              ldi R16,3
 0356 7DDF              xcall _LCD_write_char
 0358                   .dbline 57
 0358           ;       LCD_write_char(4,0,'.'); 
 0358 8EE2              ldi R24,46
 035A 8883              std y+0,R24
 035C 2227              clr R18
 035E 04E0              ldi R16,4
 0360 78DF              xcall _LCD_write_char
 0362                   .dbline 58
 0362           ;     LCD_write_char(5,0,display[1]); 
 0362 20900100          lds R2,_display+1
 0366 2882              std y+0,R2
 0368 2227              clr R18
 036A 05E0              ldi R16,5
 036C 72DF              xcall _LCD_write_char
 036E                   .dbline 59
 036E           ;     LCD_write_char(6,0,display[2]); 
 036E 20900200          lds R2,_display+2
 0372 2882              std y+0,R2
 0374 2227              clr R18
 0376 06E0              ldi R16,6
 0378 6CDF              xcall _LCD_write_char
 037A                   .dbline 60
 037A           ;       LCD_write_char(7,0,'g'); 
 037A 87E6              ldi R24,103
 037C 8883              std y+0,R24
 037E 2227              clr R18
 0380 07E0              ldi R16,7
 0382 67DF              xcall _LCD_write_char
 0384                   .dbline -2
 0384           L84:
 0384                   .dbline 0 ; func end
 0384 2596              adiw R28,5
 0386 5991              ld R21,y+
 0388 4991              ld R20,y+
 038A 0895              ret
 038C                   .dbsym l temp 1 D
 038C                   .dbsym r x 20 I
 038C                   .dbend
 038C                   .dbfunc e display_y _display_y fV
 038C           ;           temp -> y+1
 038C           ;              y -> R20,R21
                        .even
 038C           _display_y::
 038C 4A93              st -y,R20
 038E 5A93              st -y,R21
 0390 2597              sbiw R28,5
 0392                   .dbline -1
 0392                   .dbline 66
 0392           ; 
 0392           ; }
 0392           ; //*******************************
 0392           ; //显示y
 0392           ; void display_y(void)
 0392           ; {   float temp;
 0392                   .dbline 68
 0392           ;     int y;
 0392           ;      y=I2C_Read(0x35);
 0392 05E3              ldi R16,53
 0394 10E0              ldi R17,0
 0396 94DE              xcall _I2C_Read
 0398 402F              mov R20,R16
 039A 5527              clr R21
 039C                   .dbline 69
 039C           ;        y=(y<<8)+I2C_Read(0x34);
 039C 04E3              ldi R16,52
 039E 10E0              ldi R17,0
 03A0 8FDE              xcall _I2C_Read
 03A2 542F              mov R21,R20
 03A4 402F              mov R20,R16
 03A6                   .dbline 71
 03A6           ;        
 03A6           ;       if(y<0){
 03A6 4030              cpi R20,0
 03A8 E0E0              ldi R30,0
 03AA 5E07              cpc R21,R30
 03AC 54F4              brge L91
 03AE           X26:
 03AE                   .dbline 71
 03AE                   .dbline 72
 03AE           ;        y=-y;
 03AE 4095              com R20
 03B0 5095              com R21
 03B2 4F5F              subi R20,0xFF
 03B4 5F4F              sbci R21,0xFF
 03B6                   .dbline 73

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -