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

📄 avr_gy-27.lis

📁 GY-27资料源码 ADXL345 HMC5883L
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0282           ; **********************************************/
 0282           ; void conversion(unsigned int i)  
 0282           ; {  
 0282                   .dbline 29
 0282           ;       display[0]=i/10000+0x30 ;
 0282 20E1              ldi R18,10000
 0284 37E2              ldi R19,39
 0286 8A01              movw R16,R20
 0288 0E940000          xcall div16u
 028C C801              movw R24,R16
 028E C096              adiw R24,48
 0290 80930000          sts _display,R24
 0294                   .dbline 30
 0294           ;     i=i%10000;    //取余运算
 0294 20E1              ldi R18,10000
 0296 37E2              ldi R19,39
 0298 8A01              movw R16,R20
 029A 0E940000          xcall mod16u
 029E A801              movw R20,R16
 02A0                   .dbline 31
 02A0           ;       display[1]=i/1000+0x30 ;
 02A0 28EE              ldi R18,1000
 02A2 33E0              ldi R19,3
 02A4 0E940000          xcall div16u
 02A8 C801              movw R24,R16
 02AA C096              adiw R24,48
 02AC 80930100          sts _display+1,R24
 02B0                   .dbline 32
 02B0           ;     i=i%1000;    //取余运算
 02B0 28EE              ldi R18,1000
 02B2 33E0              ldi R19,3
 02B4 8A01              movw R16,R20
 02B6 0E940000          xcall mod16u
 02BA A801              movw R20,R16
 02BC                   .dbline 33
 02BC           ;     display[2]=i/100+0x30 ;
 02BC 24E6              ldi R18,100
 02BE 30E0              ldi R19,0
 02C0 0E940000          xcall div16u
 02C4 C801              movw R24,R16
 02C6 C096              adiw R24,48
 02C8 80930200          sts _display+2,R24
 02CC                   .dbline 34
 02CC           ;     i=i%100;    //取余运算
 02CC 24E6              ldi R18,100
 02CE 30E0              ldi R19,0
 02D0 8A01              movw R16,R20
 02D2 0E940000          xcall mod16u
 02D6 A801              movw R20,R16
 02D8                   .dbline 35
 02D8           ;     display[3]=i/10+0x30 ;
 02D8 2AE0              ldi R18,10
 02DA 30E0              ldi R19,0
 02DC 0E940000          xcall div16u
 02E0 C801              movw R24,R16
 02E2 C096              adiw R24,48
 02E4 80930300          sts _display+3,R24
 02E8                   .dbline 36
 02E8           ;    i=i%10;     //取余运算
 02E8 2AE0              ldi R18,10
 02EA 30E0              ldi R19,0
 02EC 8A01              movw R16,R20
 02EE 0E940000          xcall mod16u
 02F2 A801              movw R20,R16
 02F4                   .dbline 37
 02F4           ;     display[4]=i+0x30;  
 02F4 CA01              movw R24,R20
 02F6 C096              adiw R24,48
 02F8 80930400          sts _display+4,R24
 02FC                   .dbline -2
 02FC           L81:
 02FC                   .dbline 0 ; func end
 02FC 5991              ld R21,y+
 02FE 4991              ld R20,y+
 0300 0895              ret
 0302                   .dbsym r i 20 i
 0302                   .dbend
 0302                   .dbfunc e display_angle _display_angle fV
 0302           ;           temp -> y+8
 0302           ;          angle -> y+4
 0302           ;              y -> R10,R11
 0302           ;              x -> R12,R13
                        .even
 0302           _display_angle::
 0302 0E940000          xcall push_xgset00FC
 0306 2C97              sbiw R28,12
 0308                   .dbline -1
 0308                   .dbline 42
 0308           ; }
 0308           ; //*******************************
 0308           ; //显示角度
 0308           ; void display_angle(void)
 0308           ; {   float temp;
 0308                   .dbline 46
 0308           ;       int x,y;
 0308           ;        double angle;
 0308           ; 
 0308           ;      x=I2C_Read(0x03);
 0308 03E0              ldi R16,3
 030A 10E0              ldi R17,0
 030C E2DE              xcall _I2C_Read
 030E C02E              mov R12,R16
 0310 DD24              clr R13
 0312                   .dbline 47
 0312           ;      x=(x<<8)+I2C_Read(0x04);
 0312 04E0              ldi R16,4
 0314 10E0              ldi R17,0
 0316 DDDE              xcall _I2C_Read
 0318 DC2C              mov R13,R12
 031A C02E              mov R12,R16
 031C                   .dbline 49
 031C           ;        
 031C           ;        y=I2C_Read(0x07);
 031C 07E0              ldi R16,7
 031E 10E0              ldi R17,0
 0320 D8DE              xcall _I2C_Read
 0322 A02E              mov R10,R16
 0324 BB24              clr R11
 0326                   .dbline 50
 0326           ;      y=(y<<8)+I2C_Read(0x08);
 0326 08E0              ldi R16,8
 0328 10E0              ldi R17,0
 032A D3DE              xcall _I2C_Read
 032C E02E              mov R14,R16
 032E BA2C              mov R11,R10
 0330 AE2C              mov R10,R14
 0332                   .dbline 53
 0332           ;       
 0332           ;        
 0332           ;      angle= atan2((double)y,(double)x) * (180 / 3.14159265) + 180; // angle in degrees
 0332 8601              movw R16,R12
 0334 0E940000          xcall int2fp
 0338 0883              std y+0,R16
 033A 1983              std y+1,R17
 033C 2A83              std y+2,R18
 033E 3B83              std y+3,R19
 0340 8501              movw R16,R10
 0342 0E940000          xcall int2fp
 0346 0E940000          xcall _atan2f
 034A 1801              movw R2,R16
 034C 2901              movw R4,R18
 034E 00E0              ldi R16,<L87
 0350 10E0              ldi R17,>L87
 0352 0E940000          xcall elpm32
 0356 5A92              st -y,R5
 0358 4A92              st -y,R4
 035A 3A92              st -y,R3
 035C 2A92              st -y,R2
 035E 0E940000          xcall fpmule2
 0362 1801              movw R2,R16
 0364 2901              movw R4,R18
 0366 00E0              ldi R16,<L88
 0368 10E0              ldi R17,>L88
 036A 0E940000          xcall elpm32
 036E 3A93              st -y,R19
 0370 2A93              st -y,R18
 0372 1A93              st -y,R17
 0374 0A93              st -y,R16
 0376 8101              movw R16,R2
 0378 9201              movw R18,R4
 037A 0E940000          xcall fpadd2
 037E 0C83              std y+4,R16
 0380 1D83              std y+5,R17
 0382 2E83              std y+6,R18
 0384 3F83              std y+7,R19
 0386                   .dbline 54
 0386           ;      angle*=10;
 0386 00E0              ldi R16,<L89
 0388 10E0              ldi R17,>L89
 038A 0E940000          xcall elpm32
 038E CE01              movw R24,R28
 0390 0496              adiw R24,4
 0392 9A93              st -y,R25
 0394 8A93              st -y,R24
 0396 0E940000          xcall fpmule1
 039A 0C83              std y+4,R16
 039C 1D83              std y+5,R17
 039E 2E83              std y+6,R18
 03A0 3F83              std y+7,R19
 03A2                   .dbline 56
 03A2           ; 
 03A2           ;     conversion(angle);          //转换出显示需要的数据
 03A2 0C81              ldd R16,y+4
 03A4 1D81              ldd R17,y+5
 03A6 2E81              ldd R18,y+6
 03A8 3F81              ldd R19,y+7
 03AA 0E940000          xcall fpint
 03AE 66DF              xcall _conversion
 03B0                   .dbline 57
 03B0           ;       LCD_write_char(0,0,'A');   //第0行,第0列 显示A
 03B0 81E4              ldi R24,65
 03B2 8883              std y+0,R24
 03B4 2227              clr R18
 03B6 0027              clr R16
 03B8 55DF              xcall _LCD_write_char
 03BA                   .dbline 58
 03BA           ;       LCD_write_char(1,0,'n');   //
 03BA 8EE6              ldi R24,110
 03BC 8883              std y+0,R24
 03BE 2227              clr R18
 03C0 01E0              ldi R16,1
 03C2 50DF              xcall _LCD_write_char
 03C4                   .dbline 59
 03C4           ;       LCD_write_char(2,0,'g');   //
 03C4 87E6              ldi R24,103
 03C6 8883              std y+0,R24
 03C8 2227              clr R18
 03CA 02E0              ldi R16,2
 03CC 4BDF              xcall _LCD_write_char
 03CE                   .dbline 60
 03CE           ;       LCD_write_char(3,0,'l');   //
 03CE 8CE6              ldi R24,108
 03D0 8883              std y+0,R24
 03D2 2227              clr R18
 03D4 03E0              ldi R16,3
 03D6 46DF              xcall _LCD_write_char
 03D8                   .dbline 61
 03D8           ;       LCD_write_char(4,0,'e');   //
 03D8 85E6              ldi R24,101
 03DA 8883              std y+0,R24
 03DC 2227              clr R18
 03DE 04E0              ldi R16,4
 03E0 41DF              xcall _LCD_write_char
 03E2                   .dbline 62
 03E2           ;     LCD_write_char(5,0,':'); 
 03E2 8AE3              ldi R24,58
 03E4 8883              std y+0,R24
 03E6 2227              clr R18
 03E8 05E0              ldi R16,5
 03EA 3CDF              xcall _LCD_write_char
 03EC                   .dbline 63
 03EC           ;     LCD_write_char(6,0,display[1]);  
 03EC 20900100          lds R2,_display+1
 03F0 2882              std y+0,R2
 03F2 2227              clr R18
 03F4 06E0              ldi R16,6
 03F6 36DF              xcall _LCD_write_char
 03F8                   .dbline 64
 03F8           ;     LCD_write_char(7,0,display[2]); 
 03F8 20900200          lds R2,_display+2
 03FC 2882              std y+0,R2
 03FE 2227              clr R18
 0400 07E0              ldi R16,7
 0402 30DF              xcall _LCD_write_char
 0404                   .dbline 65
 0404           ;     LCD_write_char(8,0,display[3]); 
 0404 20900300          lds R2,_display+3
 0408 2882              std y+0,R2
 040A 2227              clr R18
 040C 08E0              ldi R16,8
 040E 2ADF              xcall _LCD_write_char
 0410                   .dbline 66
 0410           ;     LCD_write_char(9,0,'.'); 
 0410 8EE2              ldi R24,46
 0412 8883              std y+0,R24
 0414 2227              clr R18
 0416 09E0              ldi R16,9
 0418 25DF              xcall _LCD_write_char
 041A                   .dbline 67
 041A           ;       LCD_write_char(10,0,display[4]); 
 041A 20900400          lds R2,_display+4
 041E 2882              std y+0,R2
 0420 2227              clr R18
 0422 0AE0              ldi R16,10
 0424 1FDF              xcall _LCD_write_char
 0426                   .dbline 68
 0426           ;       LCD_write_char(11,0,0xdf); 
 0426 8FED              ldi R24,223
 0428 8883              std y+0,R24
 042A 2227              clr R18
 042C 0BE0              ldi R16,11
 042E 1ADF              xcall _LCD_write_char
 0430                   .dbline -2
 0430           L86:
 0430                   .dbline 0 ; func end
 0430 2C96              adiw R28,12
 0432 0C940000          xjmp pop_xgset00FC
 0436                   .dbsym l temp 8 D
 0436                   .dbsym l angle 4 D
 0436                   .dbsym r y 10 I
 0436                   .dbsym r x 12 I
 0436                   .dbend
 0436                   .dbfunc e main _main fV
 0436           ;              i -> <dead>
                        .even
 0436           _main::
 0436                   .dbline -1
 0436                   .dbline 76
 0436           ;       
 0436           ; }
 0436           ; 
 0436           ; /*******************************
 0436           ; 主程序
 0436           ; *******************************/
 0436           ; void main(void)
 0436           ; {     
 0436                   .dbline 78
 0436           ;       unsigned char i;                
 0436           ;        delay_nms(50);          //lcd上电延时
 0436 02E3              ldi R16,50
 0438 10E0              ldi R17,0
 043A 00DE              xcall _delay_nms
 043C                   .dbline 79
 043C           ;        LCD_init();             //lcd初始化
 043C 98DE              xcall _LCD_init
 043E 0AC0              xjmp L96
 0440           L95:
 0440                   .dbline 81
 0440           ;      
 0440           ;       while(1){               //循环  
 0440                   .dbline 82
 0440           ;       I2C_Write(0x02,0x00);   //模式寄存器写0
 0440 2227              clr R18
 0442 02E0              ldi R16,2
 0444 09DE              xcall _I2C_Write
 0446                   .dbline 83
 0446           ;       delay_nms(50); 
 0446 02E3              ldi R16,50
 0448 10E0              ldi R17,0
 044A F8DD              xcall _delay_nms
 044C                   .dbline 84
 044C           ;       display_angle();       //显示角度
 044C 5ADF              xcall _display_angle
 044E                   .dbline 85
 044E           ;       delay_nms(50);  
 044E 02E3              ldi R16,50
 0450 10E0              ldi R17,0
 0452 F4DD              xcall _delay_nms
 0454                   .dbline 86
 0454           ;     }
 0454           L96:
 0454                   .dbline 81
 0454 F5CF              xjmp L95
 0456           X25:
 0456                   .dbline -2
 0456           L94:
 0456                   .dbline 0 ; func end
 0456 0895              ret
 0458                   .dbsym l i 1 c
 0458                   .dbend
                        .area lit(rom, con, rel)
 0000           L89:
 0000 00002041          .word 0x0,0x4120
 0004           L88:
 0004 00003443          .word 0x0,0x4334
 0008           L87:
 0008 E12E6542          .word 0x2ee1,0x4265
 000C           ; }
 000C           ; 

⌨️ 快捷键说明

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