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

📄 avr_gy-29.lis

📁 GY-27资料源码 ADXL345 HMC5883L
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0166 08E2              ldi R16,40
 0168 14D0              xcall _LCD_write_command
 016A                   .dbline 49
 016A           ;   LCD_en_write();
 016A 0DD0              xcall _LCD_en_write
 016C                   .dbline 50
 016C           ;   delay_nus(40);
 016C 08E2              ldi R16,40
 016E 10E0              ldi R17,0
 0170 4DDF              xcall _delay_nus
 0172                   .dbline 51
 0172           ;   LCD_write_command(0x28);  //4位显示
 0172 08E2              ldi R16,40
 0174 0ED0              xcall _LCD_write_command
 0176                   .dbline 52
 0176           ;   LCD_write_command(0x0c);  //显示开
 0176 0CE0              ldi R16,12
 0178 0CD0              xcall _LCD_write_command
 017A                   .dbline 53
 017A           ;   LCD_write_command(0x01);  //清屏
 017A 01E0              ldi R16,1
 017C 0AD0              xcall _LCD_write_command
 017E                   .dbline 54
 017E           ;   delay_nms(10);
 017E 0AE0              ldi R16,10
 0180 10E0              ldi R17,0
 0182 5CDF              xcall _delay_nms
 0184                   .dbline -2
 0184           L69:
 0184                   .dbline 0 ; func end
 0184 0895              ret
 0186                   .dbend
 0186                   .dbfunc e LCD_en_write _LCD_en_write fV
                        .even
 0186           _LCD_en_write::
 0186                   .dbline -1
 0186                   .dbline 58
 0186           ; }
 0186           ; 
 0186           ; void LCD_en_write(void)  //液晶使能
 0186           ; {
 0186                   .dbline 59
 0186           ;   LCD_EN_PORT|=LCD_EN;
 0186 AF9A              sbi 0x15,7
 0188                   .dbline 60
 0188           ;   delay_nus(1);
 0188 01E0              ldi R16,1
 018A 10E0              ldi R17,0
 018C 3FDF              xcall _delay_nus
 018E                   .dbline 61
 018E           ;   LCD_EN_PORT&=~LCD_EN;
 018E AF98              cbi 0x15,7
 0190                   .dbline -2
 0190           L70:
 0190                   .dbline 0 ; func end
 0190 0895              ret
 0192                   .dbend
 0192                   .dbfunc e LCD_write_command _LCD_write_command fV
 0192           ;        command -> R20
                        .even
 0192           _LCD_write_command::
 0192 4A93              st -y,R20
 0194 402F              mov R20,R16
 0196                   .dbline -1
 0196                   .dbline 65
 0196           ; }
 0196           ; 
 0196           ; void LCD_write_command(unsigned char command) //写指令
 0196           ; {
 0196                   .dbline 67
 0196           ;   //连线为高4位的写法
 0196           ;   delay_nus(16);
 0196 00E1              ldi R16,16
 0198 10E0              ldi R17,0
 019A 38DF              xcall _delay_nus
 019C                   .dbline 68
 019C           ;   LCD_RS_PORT&=~LCD_RS;        //RS=0
 019C AE98              cbi 0x15,6
 019E                   .dbline 69
 019E           ;   LCD_DATA_PORT&=0X0f;         //清高四位
 019E 8BB3              in R24,0x1b
 01A0 8F70              andi R24,15
 01A2 8BBB              out 0x1b,R24
 01A4                   .dbline 70
 01A4           ;   LCD_DATA_PORT|=command&0xf0; //写高四位
 01A4 842F              mov R24,R20
 01A6 807F              andi R24,240
 01A8 2BB2              in R2,0x1b
 01AA 282A              or R2,R24
 01AC 2BBA              out 0x1b,R2
 01AE                   .dbline 71
 01AE           ;   LCD_en_write();
 01AE EBDF              xcall _LCD_en_write
 01B0                   .dbline 72
 01B0           ;   command=command<<4;          //低四位移到高四位
 01B0 842F              mov R24,R20
 01B2 8F70              andi R24,#0x0F
 01B4 8295              swap R24
 01B6 482F              mov R20,R24
 01B8                   .dbline 73
 01B8           ;   LCD_DATA_PORT&=0x0f;         //清高四位
 01B8 8BB3              in R24,0x1b
 01BA 8F70              andi R24,15
 01BC 8BBB              out 0x1b,R24
 01BE                   .dbline 74
 01BE           ;   LCD_DATA_PORT|=command&0xf0; //写低四位
 01BE 842F              mov R24,R20
 01C0 807F              andi R24,240
 01C2 2BB2              in R2,0x1b
 01C4 282A              or R2,R24
 01C6 2BBA              out 0x1b,R2
 01C8                   .dbline 75
 01C8           ;   LCD_en_write();
 01C8 DEDF              xcall _LCD_en_write
 01CA                   .dbline -2
 01CA           L71:
 01CA                   .dbline 0 ; func end
 01CA 4991              ld R20,y+
 01CC 0895              ret
 01CE                   .dbsym r command 20 c
 01CE                   .dbend
 01CE                   .dbfunc e LCD_write_data _LCD_write_data fV
 01CE           ;           data -> R20
                        .even
 01CE           _LCD_write_data::
 01CE 4A93              st -y,R20
 01D0 402F              mov R20,R16
 01D2                   .dbline -1
 01D2                   .dbline 92
 01D2           ;  
 01D2           ; /*
 01D2           ;   //连线为低四位的写法
 01D2           ;   delay_nus(16);
 01D2           ;   LCD_RS_PORT&=~LCD_RS;        //RS=0
 01D2           ;   LCD_DATA_PORT&=0xf0;         //清高四位
 01D2           ;   LCD_DATA_PORT|=(command>>4)&0x0f; //写高四位
 01D2           ;   LCD_en_write();
 01D2           ;   LCD_DATA_PORT&=0xf0;         //清高四位
 01D2           ;   LCD_DATA_PORT|=command&0x0f; //写低四位
 01D2           ;   LCD_en_write(); 
 01D2           ; */
 01D2           ;   
 01D2           ; }
 01D2           ; 
 01D2           ; void LCD_write_data(unsigned char data) //写数据
 01D2           ; {
 01D2                   .dbline 94
 01D2           ;   //连线为高4位的写法
 01D2           ;   delay_nus(16);
 01D2 00E1              ldi R16,16
 01D4 10E0              ldi R17,0
 01D6 1ADF              xcall _delay_nus
 01D8                   .dbline 95
 01D8           ;   LCD_RS_PORT|=LCD_RS;       //RS=1
 01D8 AE9A              sbi 0x15,6
 01DA                   .dbline 96
 01DA           ;   LCD_DATA_PORT&=0X0f;       //清高四位
 01DA 8BB3              in R24,0x1b
 01DC 8F70              andi R24,15
 01DE 8BBB              out 0x1b,R24
 01E0                   .dbline 97
 01E0           ;   LCD_DATA_PORT|=data&0xf0;  //写高四位
 01E0 842F              mov R24,R20
 01E2 807F              andi R24,240
 01E4 2BB2              in R2,0x1b
 01E6 282A              or R2,R24
 01E8 2BBA              out 0x1b,R2
 01EA                   .dbline 98
 01EA           ;   LCD_en_write();
 01EA CDDF              xcall _LCD_en_write
 01EC                   .dbline 99
 01EC           ;   data=data<<4;               //低四位移到高四位
 01EC 842F              mov R24,R20
 01EE 8F70              andi R24,#0x0F
 01F0 8295              swap R24
 01F2 482F              mov R20,R24
 01F4                   .dbline 100
 01F4           ;   LCD_DATA_PORT&=0X0f;        //清高四位
 01F4 8BB3              in R24,0x1b
 01F6 8F70              andi R24,15
 01F8 8BBB              out 0x1b,R24
 01FA                   .dbline 101
 01FA           ;   LCD_DATA_PORT|=data&0xf0;   //写低四位
 01FA 842F              mov R24,R20
 01FC 807F              andi R24,240
 01FE 2BB2              in R2,0x1b
 0200 282A              or R2,R24
 0202 2BBA              out 0x1b,R2
 0204                   .dbline 102
 0204           ;   LCD_en_write();
 0204 C0DF              xcall _LCD_en_write
 0206                   .dbline -2
 0206           L72:
 0206                   .dbline 0 ; func end
 0206 4991              ld R20,y+
 0208 0895              ret
 020A                   .dbsym r data 20 c
 020A                   .dbend
 020A                   .dbfunc e LCD_set_xy _LCD_set_xy fV
 020A           ;        address -> R20
 020A           ;              y -> R10
 020A           ;              x -> R22
                        .even
 020A           _LCD_set_xy::
 020A 0E940000          xcall push_xgsetF00C
 020E A22E              mov R10,R18
 0210 602F              mov R22,R16
 0212                   .dbline -1
 0212                   .dbline 121
 0212           ;   
 0212           ; /*
 0212           ;   //连线为低四位的写法 
 0212           ;   delay_nus(16);
 0212           ;   LCD_RS_PORT|=LCD_RS;       //RS=1
 0212           ;   LCD_DATA_PORT&=0Xf0;       //清高四位
 0212           ;   LCD_DATA_PORT|=(data>>4)&0x0f;  //写高四位
 0212           ;   LCD_en_write();
 0212           ;  
 0212           ;   LCD_DATA_PORT&=0Xf0;        //清高四位
 0212           ;   LCD_DATA_PORT|=data&0x0f;   //写低四位
 0212           ;   LCD_en_write();
 0212           ; */
 0212           ;   
 0212           ; }
 0212           ; 
 0212           ; 
 0212           ; void LCD_set_xy( unsigned char x, unsigned char y )  //写地址函数
 0212           ; {
 0212                   .dbline 123
 0212           ;     unsigned char address;
 0212           ;     if (y == 0) address = 0x80 + x;
 0212 AA20              tst R10
 0214 19F4              brne L74
 0216           X23:
 0216                   .dbline 123
 0216 462F              mov R20,R22
 0218 4058              subi R20,128    ; addi 128
 021A 02C0              xjmp L75
 021C           L74:
 021C                   .dbline 124
 021C           ;     else   address = 0xc0 + x;
 021C 462F              mov R20,R22
 021E 4054              subi R20,64    ; addi 192
 0220           L75:
 0220                   .dbline 125
 0220           ;     LCD_write_command( address);
 0220 042F              mov R16,R20
 0222 B7DF              xcall _LCD_write_command
 0224                   .dbline -2
 0224           L73:
 0224                   .dbline 0 ; func end
 0224 0C940000          xjmp pop_xgsetF00C
 0228                   .dbsym r address 20 c
 0228                   .dbsym r y 10 c
 0228                   .dbsym r x 22 c
 0228                   .dbend
 0228                   .dbfunc e LCD_write_string _LCD_write_string fV
 0228           ;              s -> R20,R21
 0228           ;              Y -> R12
 0228           ;              X -> R10
                        .even
 0228           _LCD_write_string::
 0228 0E940000          xcall push_xgset303C
 022C C22E              mov R12,R18
 022E A02E              mov R10,R16
 0230 4E81              ldd R20,y+6
 0232 5F81              ldd R21,y+7
 0234                   .dbline -1
 0234                   .dbline 129
 0234           ; }
 0234           ;   
 0234           ; void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) //列x=0~15,行y=0,1
 0234           ; {
 0234                   .dbline 130
 0234           ;     LCD_set_xy( X, Y ); //写地址    
 0234 2C2D              mov R18,R12
 0236 0A2D              mov R16,R10
 0238 E8DF              xcall _LCD_set_xy
 023A 05C0              xjmp L78
 023C           L77:
 023C                   .dbline 132
 023C           ;     while (*s)  // 写显示字符
 023C           ;     {
 023C                   .dbline 133
 023C           ;       LCD_write_data( *s );
 023C FA01              movw R30,R20
 023E 0081              ldd R16,z+0
 0240 C6DF              xcall _LCD_write_data
 0242                   .dbline 134
 0242           ;       s ++;
 0242 4F5F              subi R20,255  ; offset = 1
 0244 5F4F              sbci R21,255
 0246                   .dbline 135
 0246           ;     }
 0246           L78:
 0246                   .dbline 131
 0246 FA01              movw R30,R20
 0248 2080              ldd R2,z+0
 024A 2220              tst R2
 024C B9F7              brne L77
 024E           X24:
 024E                   .dbline -2
 024E           L76:
 024E                   .dbline 0 ; func end
 024E 0C940000          xjmp pop_xgset303C
 0252                   .dbsym r s 20 pc
 0252                   .dbsym r Y 12 c
 0252                   .dbsym r X 10 c
 0252                   .dbend
 0252                   .dbfunc e LCD_write_char _LCD_write_char fV
 0252           ;           data -> y+2
 0252           ;              Y -> R12
 0252           ;              X -> R10
                        .even
 0252           _LCD_write_char::
 0252 AA92              st -y,R10
 0254 CA92              st -y,R12
 0256 C22E              mov R12,R18
 0258 A02E              mov R10,R16
 025A                   .dbline -1
 025A                   .dbline 140
 025A           ;       
 025A           ; }
 025A           ; 

⌨️ 快捷键说明

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