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

📄 avr_gy-27.lis

📁 GY-27资料源码 ADXL345 HMC5883L
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 019E 36DF              xcall _delay_nus
 01A0                   .dbline 61
 01A0           ;   LCD_EN_PORT&=~LCD_EN;
 01A0 AF98              cbi 0x15,7
 01A2                   .dbline -2
 01A2           L70:
 01A2                   .dbline 0 ; func end
 01A2 0895              ret
 01A4                   .dbend
 01A4                   .dbfunc e LCD_write_command _LCD_write_command fV
 01A4           ;        command -> R20
                        .even
 01A4           _LCD_write_command::
 01A4 4A93              st -y,R20
 01A6 402F              mov R20,R16
 01A8                   .dbline -1
 01A8                   .dbline 65
 01A8           ; }
 01A8           ; 
 01A8           ; void LCD_write_command(unsigned char command) //写指令
 01A8           ; {
 01A8                   .dbline 67
 01A8           ;   //连线为高4位的写法
 01A8           ;   delay_nus(16);
 01A8 00E1              ldi R16,16
 01AA 10E0              ldi R17,0
 01AC 2FDF              xcall _delay_nus
 01AE                   .dbline 68
 01AE           ;   LCD_RS_PORT&=~LCD_RS;        //RS=0
 01AE AE98              cbi 0x15,6
 01B0                   .dbline 69
 01B0           ;   LCD_DATA_PORT&=0X0f;         //清高四位
 01B0 8BB3              in R24,0x1b
 01B2 8F70              andi R24,15
 01B4 8BBB              out 0x1b,R24
 01B6                   .dbline 70
 01B6           ;   LCD_DATA_PORT|=command&0xf0; //写高四位
 01B6 842F              mov R24,R20
 01B8 807F              andi R24,240
 01BA 2BB2              in R2,0x1b
 01BC 282A              or R2,R24
 01BE 2BBA              out 0x1b,R2
 01C0                   .dbline 71
 01C0           ;   LCD_en_write();
 01C0 EBDF              xcall _LCD_en_write
 01C2                   .dbline 72
 01C2           ;   command=command<<4;          //低四位移到高四位
 01C2 842F              mov R24,R20
 01C4 8F70              andi R24,#0x0F
 01C6 8295              swap R24
 01C8 482F              mov R20,R24
 01CA                   .dbline 73
 01CA           ;   LCD_DATA_PORT&=0x0f;         //清高四位
 01CA 8BB3              in R24,0x1b
 01CC 8F70              andi R24,15
 01CE 8BBB              out 0x1b,R24
 01D0                   .dbline 74
 01D0           ;   LCD_DATA_PORT|=command&0xf0; //写低四位
 01D0 842F              mov R24,R20
 01D2 807F              andi R24,240
 01D4 2BB2              in R2,0x1b
 01D6 282A              or R2,R24
 01D8 2BBA              out 0x1b,R2
 01DA                   .dbline 75
 01DA           ;   LCD_en_write();
 01DA DEDF              xcall _LCD_en_write
 01DC                   .dbline -2
 01DC           L71:
 01DC                   .dbline 0 ; func end
 01DC 4991              ld R20,y+
 01DE 0895              ret
 01E0                   .dbsym r command 20 c
 01E0                   .dbend
 01E0                   .dbfunc e LCD_write_data _LCD_write_data fV
 01E0           ;           data -> R20
                        .even
 01E0           _LCD_write_data::
 01E0 4A93              st -y,R20
 01E2 402F              mov R20,R16
 01E4                   .dbline -1
 01E4                   .dbline 92
 01E4           ;  
 01E4           ; /*
 01E4           ;   //连线为低四位的写法
 01E4           ;   delay_nus(16);
 01E4           ;   LCD_RS_PORT&=~LCD_RS;        //RS=0
 01E4           ;   LCD_DATA_PORT&=0xf0;         //清高四位
 01E4           ;   LCD_DATA_PORT|=(command>>4)&0x0f; //写高四位
 01E4           ;   LCD_en_write();
 01E4           ;   LCD_DATA_PORT&=0xf0;         //清高四位
 01E4           ;   LCD_DATA_PORT|=command&0x0f; //写低四位
 01E4           ;   LCD_en_write(); 
 01E4           ; */
 01E4           ;   
 01E4           ; }
 01E4           ; 
 01E4           ; void LCD_write_data(unsigned char data) //写数据
 01E4           ; {
 01E4                   .dbline 94
 01E4           ;   //连线为高4位的写法
 01E4           ;   delay_nus(16);
 01E4 00E1              ldi R16,16
 01E6 10E0              ldi R17,0
 01E8 11DF              xcall _delay_nus
 01EA                   .dbline 95
 01EA           ;   LCD_RS_PORT|=LCD_RS;       //RS=1
 01EA AE9A              sbi 0x15,6
 01EC                   .dbline 96
 01EC           ;   LCD_DATA_PORT&=0X0f;       //清高四位
 01EC 8BB3              in R24,0x1b
 01EE 8F70              andi R24,15
 01F0 8BBB              out 0x1b,R24
 01F2                   .dbline 97
 01F2           ;   LCD_DATA_PORT|=data&0xf0;  //写高四位
 01F2 842F              mov R24,R20
 01F4 807F              andi R24,240
 01F6 2BB2              in R2,0x1b
 01F8 282A              or R2,R24
 01FA 2BBA              out 0x1b,R2
 01FC                   .dbline 98
 01FC           ;   LCD_en_write();
 01FC CDDF              xcall _LCD_en_write
 01FE                   .dbline 99
 01FE           ;   data=data<<4;               //低四位移到高四位
 01FE 842F              mov R24,R20
 0200 8F70              andi R24,#0x0F
 0202 8295              swap R24
 0204 482F              mov R20,R24
 0206                   .dbline 100
 0206           ;   LCD_DATA_PORT&=0X0f;        //清高四位
 0206 8BB3              in R24,0x1b
 0208 8F70              andi R24,15
 020A 8BBB              out 0x1b,R24
 020C                   .dbline 101
 020C           ;   LCD_DATA_PORT|=data&0xf0;   //写低四位
 020C 842F              mov R24,R20
 020E 807F              andi R24,240
 0210 2BB2              in R2,0x1b
 0212 282A              or R2,R24
 0214 2BBA              out 0x1b,R2
 0216                   .dbline 102
 0216           ;   LCD_en_write();
 0216 C0DF              xcall _LCD_en_write
 0218                   .dbline -2
 0218           L72:
 0218                   .dbline 0 ; func end
 0218 4991              ld R20,y+
 021A 0895              ret
 021C                   .dbsym r data 20 c
 021C                   .dbend
 021C                   .dbfunc e LCD_set_xy _LCD_set_xy fV
 021C           ;        address -> R20
 021C           ;              y -> R10
 021C           ;              x -> R22
                        .even
 021C           _LCD_set_xy::
 021C 0E940000          xcall push_xgsetF00C
 0220 A22E              mov R10,R18
 0222 602F              mov R22,R16
 0224                   .dbline -1
 0224                   .dbline 121
 0224           ;   
 0224           ; /*
 0224           ;   //连线为低四位的写法 
 0224           ;   delay_nus(16);
 0224           ;   LCD_RS_PORT|=LCD_RS;       //RS=1
 0224           ;   LCD_DATA_PORT&=0Xf0;       //清高四位
 0224           ;   LCD_DATA_PORT|=(data>>4)&0x0f;  //写高四位
 0224           ;   LCD_en_write();
 0224           ;  
 0224           ;   LCD_DATA_PORT&=0Xf0;        //清高四位
 0224           ;   LCD_DATA_PORT|=data&0x0f;   //写低四位
 0224           ;   LCD_en_write();
 0224           ; */
 0224           ;   
 0224           ; }
 0224           ; 
 0224           ; 
 0224           ; void LCD_set_xy( unsigned char x, unsigned char y )  //写地址函数
 0224           ; {
 0224                   .dbline 123
 0224           ;     unsigned char address;
 0224           ;     if (y == 0) address = 0x80 + x;
 0224 AA20              tst R10
 0226 19F4              brne L74
 0228           X23:
 0228                   .dbline 123
 0228 462F              mov R20,R22
 022A 4058              subi R20,128    ; addi 128
 022C 02C0              xjmp L75
 022E           L74:
 022E                   .dbline 124
 022E           ;     else   address = 0xc0 + x;
 022E 462F              mov R20,R22
 0230 4054              subi R20,64    ; addi 192
 0232           L75:
 0232                   .dbline 125
 0232           ;     LCD_write_command( address);
 0232 042F              mov R16,R20
 0234 B7DF              xcall _LCD_write_command
 0236                   .dbline -2
 0236           L73:
 0236                   .dbline 0 ; func end
 0236 0C940000          xjmp pop_xgsetF00C
 023A                   .dbsym r address 20 c
 023A                   .dbsym r y 10 c
 023A                   .dbsym r x 22 c
 023A                   .dbend
 023A                   .dbfunc e LCD_write_string _LCD_write_string fV
 023A           ;              s -> R20,R21
 023A           ;              Y -> R12
 023A           ;              X -> R10
                        .even
 023A           _LCD_write_string::
 023A 0E940000          xcall push_xgset303C
 023E C22E              mov R12,R18
 0240 A02E              mov R10,R16
 0242 4E81              ldd R20,y+6
 0244 5F81              ldd R21,y+7
 0246                   .dbline -1
 0246                   .dbline 129
 0246           ; }
 0246           ;   
 0246           ; void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) //列x=0~15,行y=0,1
 0246           ; {
 0246                   .dbline 130
 0246           ;     LCD_set_xy( X, Y ); //写地址    
 0246 2C2D              mov R18,R12
 0248 0A2D              mov R16,R10
 024A E8DF              xcall _LCD_set_xy
 024C 05C0              xjmp L78
 024E           L77:
 024E                   .dbline 132
 024E           ;     while (*s)  // 写显示字符
 024E           ;     {
 024E                   .dbline 133
 024E           ;       LCD_write_data( *s );
 024E FA01              movw R30,R20
 0250 0081              ldd R16,z+0
 0252 C6DF              xcall _LCD_write_data
 0254                   .dbline 134
 0254           ;       s ++;
 0254 4F5F              subi R20,255  ; offset = 1
 0256 5F4F              sbci R21,255
 0258                   .dbline 135
 0258           ;     }
 0258           L78:
 0258                   .dbline 131
 0258 FA01              movw R30,R20
 025A 2080              ldd R2,z+0
 025C 2220              tst R2
 025E B9F7              brne L77
 0260           X24:
 0260                   .dbline -2
 0260           L76:
 0260                   .dbline 0 ; func end
 0260 0C940000          xjmp pop_xgset303C
 0264                   .dbsym r s 20 pc
 0264                   .dbsym r Y 12 c
 0264                   .dbsym r X 10 c
 0264                   .dbend
 0264                   .dbfunc e LCD_write_char _LCD_write_char fV
 0264           ;           data -> y+2
 0264           ;              Y -> R12
 0264           ;              X -> R10
                        .even
 0264           _LCD_write_char::
 0264 AA92              st -y,R10
 0266 CA92              st -y,R12
 0268 C22E              mov R12,R18
 026A A02E              mov R10,R16
 026C                   .dbline -1
 026C                   .dbline 140
 026C           ;       
 026C           ; }
 026C           ; 
 026C           ; void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data) //列x=0~15,行y=0,1
 026C           ; {
 026C                   .dbline 141
 026C           ;   LCD_set_xy( X, Y ); //写地址
 026C 2C2D              mov R18,R12
 026E 0A2D              mov R16,R10
 0270 D5DF              xcall _LCD_set_xy
 0272                   .dbline 142
 0272           ;   LCD_write_data( data);
 0272 0A81              ldd R16,y+2
 0274 B5DF              xcall _LCD_write_data
 0276                   .dbline -2
 0276           L80:
 0276                   .dbline 0 ; func end
 0276 C990              ld R12,y+
 0278 A990              ld R10,y+
 027A 0895              ret
 027C                   .dbsym l data 2 c
 027C                   .dbsym r Y 12 c
 027C                   .dbsym r X 10 c
 027C                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile D:\MCU_Project\MCU_AVR\AVR_GY-27\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-27\1602.h
 0002                   .blkb 2
                        .area idata
 0002 0000              .byte 0,0
                        .area data(ram, con, rel)
 0004                   .dbfile D:\MCU_Project\MCU_AVR\AVR_GY-27\1602.h
 0004                   .blkb 1
                        .area idata
 0004 00                .byte 0
                        .area data(ram, con, rel)
 0005                   .dbfile D:\MCU_Project\MCU_AVR\AVR_GY-27\1602.h
 0005                   .dbfile D:\MCU_Project\MCU_AVR\AVR_GY-27\AVR_GY-27.c
 0005                   .dbsym e display _display A[5:5]c
                        .area text(rom, con, rel)
 027C                   .dbfile D:\MCU_Project\MCU_AVR\AVR_GY-27\AVR_GY-27.c
 027C                   .dbfunc e conversion _conversion fV
 027C           ;              i -> R20,R21
                        .even
 027C           _conversion::
 027C 4A93              st -y,R20
 027E 5A93              st -y,R21
 0280 A801              movw R20,R16
 0282                   .dbline -1
 0282                   .dbline 28
 0282           ; /*****************************************
 0282           ; * 基于AVR单片机GY-27模块通信程序               *
 0282           ; * HMC5883L+ADXL345 通信程序              *
 0282           ; * 功    能:IIC通信读取数据并显示        *
 0282           ; * 时钟频率:内部1M                                             *
 0282           ; * 设    计:广运电子                                   *
 0282           ; * 修改日期:2011年4月20日                              *
 0282           ; * 编译环境:ICC-AVR7.14                                        *
 0282           ; * 实验环境:ATmega16+1602                      *
 0282           ; * 使用端口:PC0,PC1,PC6,PC7,PA4~PA7    *
 0282           ; * 参    考:莫锦攀实验程序24c02读取实验  *
 0282           ; *****************************************/
 0282           ; #include <iom16v.h>
 0282           ; #include "I2C.h"
 0282           ; #include "1602.h"
 0282           ; #include "delay.h"
 0282           ; #include  "math.h"  
 0282           ; #include  "stdio.h"  
 0282           ; void conversion(unsigned int i);
 0282           ; unsigned char display[5]={0,0,0,0,0};//显示数据
 0282           ; 
 0282           ; /*********************************************
 0282           ; 数据转换,十六进制数据转换成10进制
 0282           ; 输入十六进制范围:0x0000-0x270f(0-9999)
 0282           ; 结果分成个十百千位,以ascii存入显示区

⌨️ 快捷键说明

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