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

📄 ac14-1.lis

📁 AVR学习资料
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00F8           ; LocateXY(x,y);
 00F8 262F              mov R18,R22
 00FA 042F              mov R16,R20
 00FC E8DF              xcall _LocateXY
 00FE                   .dbline 79
 00FE           ; LcdWriteData(Wdata);
 00FE 0C81              ldd R16,y+4
 0100 38D0              xcall _LcdWriteData
 0102                   .dbline -2
 0102           L18:
 0102 0E940000          xcall pop_gset2
 0106                   .dbline 0 ; func end
 0106 0895              ret
 0108                   .dbsym l Wdata 4 c
 0108                   .dbsym r y 22 c
 0108                   .dbsym r x 20 c
 0108                   .dbend
 0108                   .dbfunc e InitLcd _InitLcd fV
                        .even
 0108           _InitLcd::
 0108                   .dbline -1
 0108                   .dbline 83
 0108           ; }
 0108           ; //*******************LCD初始化子函数*********************
 0108           ; void InitLcd(void) 
 0108           ; {
 0108                   .dbline 84
 0108           ; LcdWriteCommand(0x38,0); 
 0108 2227              clr R18
 010A 08E3              ldi R16,56
 010C 1FD0              xcall _LcdWriteCommand
 010E                   .dbline 85
 010E           ; Delay_nms(5);
 010E 05E0              ldi R16,5
 0110 10E0              ldi R17,0
 0112 5CD0              xcall _Delay_nms
 0114                   .dbline 86
 0114           ; LcdWriteCommand(0x38,0); 
 0114 2227              clr R18
 0116 08E3              ldi R16,56
 0118 19D0              xcall _LcdWriteCommand
 011A                   .dbline 87
 011A           ; Delay_nms(5);
 011A 05E0              ldi R16,5
 011C 10E0              ldi R17,0
 011E 56D0              xcall _Delay_nms
 0120                   .dbline 88
 0120           ; LcdWriteCommand(0x38,0); 
 0120 2227              clr R18
 0122 08E3              ldi R16,56
 0124 13D0              xcall _LcdWriteCommand
 0126                   .dbline 89
 0126           ; Delay_nms(5);
 0126 05E0              ldi R16,5
 0128 10E0              ldi R17,0
 012A 50D0              xcall _Delay_nms
 012C                   .dbline 90
 012C           ; LcdWriteCommand(0x38,1); 
 012C 21E0              ldi R18,1
 012E 08E3              ldi R16,56
 0130 0DD0              xcall _LcdWriteCommand
 0132                   .dbline 91
 0132           ; LcdWriteCommand(0x08,1); 
 0132 21E0              ldi R18,1
 0134 08E0              ldi R16,8
 0136 0AD0              xcall _LcdWriteCommand
 0138                   .dbline 92
 0138           ; LcdWriteCommand(0x01,1);
 0138 21E0              ldi R18,1
 013A 01E0              ldi R16,1
 013C 07D0              xcall _LcdWriteCommand
 013E                   .dbline 93
 013E           ; LcdWriteCommand(0x06,1); 
 013E 21E0              ldi R18,1
 0140 06E0              ldi R16,6
 0142 04D0              xcall _LcdWriteCommand
 0144                   .dbline 94
 0144           ; LcdWriteCommand(0x0c,1); 
 0144 21E0              ldi R18,1
 0146 0CE0              ldi R16,12
 0148 01D0              xcall _LcdWriteCommand
 014A                   .dbline -2
 014A           L19:
 014A                   .dbline 0 ; func end
 014A 0895              ret
 014C                   .dbend
 014C                   .dbfunc e LcdWriteCommand _LcdWriteCommand fV
 014C           ;        Attribc -> R22
 014C           ;            CMD -> R20
                        .even
 014C           _LcdWriteCommand::
 014C 0E940000          xcall push_gset2
 0150 622F              mov R22,R18
 0152 402F              mov R20,R16
 0154                   .dbline -1
 0154                   .dbline 98
 0154           ; }
 0154           ; //********************写命令到LCM子函数********************
 0154           ; void LcdWriteCommand(uchar CMD,uchar Attribc)
 0154           ; {
 0154                   .dbline 99
 0154           ; if(Attribc)WaitForEnable();
 0154 6623              tst R22
 0156 09F0              breq L21
 0158                   .dbline 99
 0158 1CD0              xcall _WaitForEnable
 015A           L21:
 015A                   .dbline 100
 015A           ; LCM_RS_0;LCM_RW_0;_NOP();
 015A C098              cbi 0x18,0
 015C                   .dbline 100
 015C C198              cbi 0x18,1
 015E                   .dbline 100
 015E 0000              nop
 0160                   .dbline 101
 0160           ; DataPort=CMD;_NOP();
 0160 4BBB              out 0x1b,R20
 0162                   .dbline 101
 0162 0000              nop
 0164                   .dbline 102
 0164           ; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
 0164 C29A              sbi 0x18,2
 0166                   .dbline 102
 0166 0000              nop
 0168                   .dbline 102
 0168 0000              nop
 016A                   .dbline 102
 016A C298              cbi 0x18,2
 016C                   .dbline -2
 016C           L20:
 016C 0E940000          xcall pop_gset2
 0170                   .dbline 0 ; func end
 0170 0895              ret
 0172                   .dbsym r Attribc 22 c
 0172                   .dbsym r CMD 20 c
 0172                   .dbend
 0172                   .dbfunc e LcdWriteData _LcdWriteData fV
 0172           ;          dataW -> R20
                        .even
 0172           _LcdWriteData::
 0172 0E940000          xcall push_gset1
 0176 402F              mov R20,R16
 0178                   .dbline -1
 0178                   .dbline 106
 0178           ; }
 0178           ; //*******************写数据到LCM子函数********************
 0178           ; void LcdWriteData(uchar dataW)
 0178           ; {
 0178                   .dbline 107
 0178           ; WaitForEnable();
 0178 0CD0              xcall _WaitForEnable
 017A                   .dbline 108
 017A           ; LCM_RS_1;LCM_RW_0;_NOP();
 017A C09A              sbi 0x18,0
 017C                   .dbline 108
 017C C198              cbi 0x18,1
 017E                   .dbline 108
 017E 0000              nop
 0180                   .dbline 109
 0180           ; DataPort=dataW;_NOP();
 0180 4BBB              out 0x1b,R20
 0182                   .dbline 109
 0182 0000              nop
 0184                   .dbline 110
 0184           ; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
 0184 C29A              sbi 0x18,2
 0186                   .dbline 110
 0186 0000              nop
 0188                   .dbline 110
 0188 0000              nop
 018A                   .dbline 110
 018A C298              cbi 0x18,2
 018C                   .dbline -2
 018C           L23:
 018C 0E940000          xcall pop_gset1
 0190                   .dbline 0 ; func end
 0190 0895              ret
 0192                   .dbsym r dataW 20 c
 0192                   .dbend
 0192                   .dbfunc e WaitForEnable _WaitForEnable fV
 0192           ;            val -> R16
                        .even
 0192           _WaitForEnable::
 0192                   .dbline -1
 0192                   .dbline 114
 0192           ; }
 0192           ; //*******************检测LCD忙信号子函数*********************
 0192           ; void WaitForEnable(void)
 0192           ; {
 0192                   .dbline 116
 0192           ; uchar val;
 0192           ; DataPort=0xff;
 0192 8FEF              ldi R24,255
 0194 8BBB              out 0x1b,R24
 0196                   .dbline 117
 0196           ; LCM_RS_0;LCM_RW_1;_NOP();
 0196 C098              cbi 0x18,0
 0198                   .dbline 117
 0198 C19A              sbi 0x18,1
 019A                   .dbline 117
 019A 0000              nop
 019C                   .dbline 118
 019C           ; LCM_EN_1;_NOP();_NOP();
 019C C29A              sbi 0x18,2
 019E                   .dbline 118
 019E 0000              nop
 01A0                   .dbline 118
 01A0 0000              nop
 01A2                   .dbline 119
 01A2           ; DDRA=0x00;
 01A2 2224              clr R2
 01A4 2ABA              out 0x1a,R2
 01A6                   .dbline 120
 01A6           ; val=PINA;
 01A6 09B3              in R16,0x19
 01A8 01C0              xjmp L26
 01AA           L25:
 01AA                   .dbline 121
 01AA 09B3              in R16,0x19
 01AC           L26:
 01AC                   .dbline 121
 01AC           ; while(val&Busy)val=PINA;
 01AC 07FD              sbrc R16,7
 01AE FDCF              rjmp L25
 01B0                   .dbline 122
 01B0           ; LCM_EN_0;
 01B0 C298              cbi 0x18,2
 01B2                   .dbline 123
 01B2           ; DDRA=0xff;
 01B2 8FEF              ldi R24,255
 01B4 8ABB              out 0x1a,R24
 01B6                   .dbline -2
 01B6           L24:
 01B6                   .dbline 0 ; func end
 01B6 0895              ret
 01B8                   .dbsym r val 16 c
 01B8                   .dbend
 01B8                   .dbfunc e Delay_1ms _Delay_1ms fV
 01B8           ;              i -> R16,R17
                        .even
 01B8           _Delay_1ms::
 01B8                   .dbline -1
 01B8                   .dbline 127
 01B8           ; }
 01B8           ; //****************************************
 01B8           ; void Delay_1ms(void)          //1mS延时子函数
 01B8           ; { uint i;
 01B8                   .dbline 128
 01B8           ;  for(i=1;i<(uint)(xtal*143-2);i++)
 01B8 01E0              ldi R16,1
 01BA 10E0              ldi R17,0
 01BC 02C0              xjmp L32
 01BE           L29:
 01BE                   .dbline 129
 01BE           L30:
 01BE                   .dbline 128
 01BE 0F5F              subi R16,255  ; offset = 1
 01C0 1F4F              sbci R17,255
 01C2           L32:
 01C2                   .dbline 128
 01C2 0637              cpi R16,118
 01C4 E4E0              ldi R30,4
 01C6 1E07              cpc R17,R30
 01C8 D0F3              brlo L29
 01CA                   .dbline -2
 01CA           L28:
 01CA                   .dbline 0 ; func end
 01CA 0895              ret
 01CC                   .dbsym r i 16 i
 01CC                   .dbend
 01CC                   .dbfunc e Delay_nms _Delay_nms fV
 01CC           ;              i -> R20,R21
 01CC           ;              n -> R22,R23
                        .even
 01CC           _Delay_nms::
 01CC 0E940000          xcall push_gset2
 01D0 B801              movw R22,R16
 01D2                   .dbline -1
 01D2                   .dbline 133
 01D2           ;     ;
 01D2           ; }
 01D2           ; //====================================
 01D2           ; void Delay_nms(uint n)                //n*1mS延时子函数
 01D2           ; {
 01D2                   .dbline 134
 01D2           ;  uint i=0;
 01D2 4427              clr R20
 01D4 5527              clr R21
 01D6 03C0              xjmp L35
 01D8           L34:
 01D8                   .dbline 136
 01D8                   .dbline 136
 01D8 EFDF              xcall _Delay_1ms
 01DA                   .dbline 137
 01DA 4F5F              subi R20,255  ; offset = 1
 01DC 5F4F              sbci R21,255
 01DE                   .dbline 138
 01DE           L35:
 01DE                   .dbline 135
 01DE           ;    while(i<n)
 01DE 4617              cp R20,R22
 01E0 5707              cpc R21,R23
 01E2 D0F3              brlo L34
 01E4                   .dbline -2
 01E4           L33:
 01E4 0E940000          xcall pop_gset2
 01E8                   .dbline 0 ; func end
 01E8 0895              ret
 01EA                   .dbsym r i 20 i
 01EA                   .dbsym r n 22 i
 01EA                   .dbend

⌨️ 快捷键说明

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