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

📄 ac14-2.lis

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

⌨️ 快捷键说明

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