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

📄 lcd.lis

📁 ATmega16内部ADC的应用:ATmega16内部集成了8路10位逐次逼近型模数转换器
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00DC                   .dbline 134
 00DC           ;    EN_1;
 00DC 979A              sbi 0x12,7
 00DE                   .dbline 135
 00DE           ;    delay500ns;
 00DE 0000              nop
 00E0                   .dbline 135
 00E0 0000              nop
 00E2                   .dbline 135
 00E2 0000              nop
 00E4                   .dbline 135
 00E4 0000              nop
 00E6                   .dbline 136
 00E6           ;    DataIn;
 00E6 2224              clr R2
 00E8 27BA              out 0x17,R2
 00EA                   .dbline 137
 00EA           ;    bf = DataLcdIn;
 00EA 06B3              in R16,0x16
 00EC                   .dbline 138
 00EC           ;    EN_0;
 00EC 9798              cbi 0x12,7
 00EE                   .dbline 139
 00EE           ;    delay125ns; 
 00EE 0000              nop
 00F0                   .dbline 140
 00F0           ;    RS_1;
 00F0 949A              sbi 0x12,4
 00F2                   .dbline 141
 00F2           ;    RW_0;
 00F2 9598              cbi 0x12,5
 00F4                   .dbline 143
 00F4           ;    
 00F4           ;    return bf;
 00F4                   .dbline -2
 00F4           L8:
 00F4                   .dbline 0 ; func end
 00F4 0895              ret
 00F6                   .dbsym r bf 16 c
 00F6                   .dbend
 00F6                   .dbfunc e LCDReady _LCDReady fV
 00F6           ;             bf -> R20
                        .even
 00F6           _LCDReady::
 00F6 0E940000          xcall push_gset1
 00FA                   .dbline -1
 00FA                   .dbline 146
 00FA           ; }
 00FA           ; void LCDReady(void)
 00FA           ; {
 00FA           L10:
 00FA                   .dbline 149
 00FA           ;    unsigned char bf;
 00FA           ;    do
 00FA           ;       {bf = BFRead();
 00FA                   .dbline 149
 00FA ECDF              xcall _BFRead
 00FC 402F              mov R20,R16
 00FE                   .dbline 151
 00FE           ;         //PORTA = bf;       //just for debug
 00FE           ;         }
 00FE           L11:
 00FE                   .dbline 152
 00FE           ;    while((bf&0x80)==0x80);
 00FE 242E              mov R2,R20
 0100 3324              clr R3
 0102 27FC              sbrc R2,7
 0104 FACF              rjmp L10
 0106                   .dbline 153
 0106           ;    DataOut;
 0106 8FEF              ldi R24,255
 0108 87BB              out 0x17,R24
 010A                   .dbline -2
 010A           L9:
 010A 0E940000          xcall pop_gset1
 010E                   .dbline 0 ; func end
 010E 0895              ret
 0110                   .dbsym r bf 20 c
 0110                   .dbend
 0110                   .dbfunc e CharWrite _CharWrite fV
 0110           ;           data -> R20
                        .even
 0110           _CharWrite::
 0110 0E940000          xcall push_gset1
 0114 402F              mov R20,R16
 0116                   .dbline -1
 0116                   .dbline 156
 0116           ; }
 0116           ; void CharWrite(unsigned char data)
 0116           ; {
 0116                   .dbline 157
 0116           ;    LCDReady();
 0116 EFDF              xcall _LCDReady
 0118                   .dbline 158
 0118           ;    RS_1;
 0118 949A              sbi 0x12,4
 011A                   .dbline 159
 011A           ;    RW_0;
 011A 9598              cbi 0x12,5
 011C                   .dbline 160
 011C           ;    DataLcd = data;   //
 011C 48BB              out 0x18,R20
 011E                   .dbline 161
 011E           ;    delay250ns;
 011E 0000              nop
 0120                   .dbline 161
 0120 0000              nop
 0122                   .dbline 162
 0122           ;    EN_1;
 0122 979A              sbi 0x12,7
 0124                   .dbline 163
 0124           ;    delay500ns;
 0124 0000              nop
 0126                   .dbline 163
 0126 0000              nop
 0128                   .dbline 163
 0128 0000              nop
 012A                   .dbline 163
 012A 0000              nop
 012C                   .dbline 164
 012C           ;    EN_0;
 012C 9798              cbi 0x12,7
 012E                   .dbline 165
 012E           ;    delay125ns; 
 012E 0000              nop
 0130                   .dbline 166
 0130           ;    RS_0;
 0130 9498              cbi 0x12,4
 0132                   .dbline 167
 0132           ;    RW_1;
 0132 959A              sbi 0x12,5
 0134                   .dbline -2
 0134           L13:
 0134 0E940000          xcall pop_gset1
 0138                   .dbline 0 ; func end
 0138 0895              ret
 013A                   .dbsym r data 20 c
 013A                   .dbend
 013A                   .dbfunc e LcdInit _LcdInit fV
                        .even
 013A           _LcdInit::
 013A                   .dbline -1
 013A                   .dbline 170
 013A           ; }
 013A           ; void LcdInit(void)
 013A           ; {
 013A                   .dbline 171
 013A           ;    LCDReady();
 013A DDDF              xcall _LCDReady
 013C                   .dbline 172
 013C           ;    FunctionSet();
 013C A5DF              xcall _FunctionSet
 013E                   .dbline 173
 013E           ;    LCDReady();
 013E DBDF              xcall _LCDReady
 0140                   .dbline 174
 0140           ;    DdramSet(0);
 0140 0027              clr R16
 0142 B6DF              xcall _DdramSet
 0144                   .dbline 175
 0144           ;    LCDReady();
 0144 D8DF              xcall _LCDReady
 0146                   .dbline 176
 0146           ;    VisionSet();
 0146 8FDF              xcall _VisionSet
 0148                   .dbline 177
 0148           ;    LCDReady();
 0148 D6DF              xcall _LCDReady
 014A                   .dbline 178
 014A           ;    InputSet();
 014A 7DDF              xcall _InputSet
 014C                   .dbline 179
 014C           ;    LCDReady();
 014C D4DF              xcall _LCDReady
 014E                   .dbline 180
 014E           ;    ClearLcd();
 014E 58DF              xcall _ClearLcd
 0150                   .dbline 181
 0150           ;    LCDReady();
 0150 D2DF              xcall _LCDReady
 0152                   .dbline 182
 0152           ;    home();
 0152 69DF              xcall _home
 0154                   .dbline 183
 0154           ;    delay_us(10);
 0154 0AE0              ldi R16,10
 0156 10E0              ldi R17,0
 0158 0E940000          xcall _delay_us
 015C                   .dbline -2
 015C           L14:
 015C                   .dbline 0 ; func end
 015C 0895              ret
 015E                   .dbend
 015E                   .dbfunc e CharsWrite _CharsWrite fV
 015E           ;           addr -> R22
 015E           ;              s -> R20,R21
 015E           ;          addry -> R12
 015E           ;          addrx -> R10
                        .even
 015E           _CharsWrite::
 015E 0E940000          xcall push_gset4
 0162 C22E              mov R12,R18
 0164 A02E              mov R10,R16
 0166 4885              ldd R20,y+8
 0168 5985              ldd R21,y+9
 016A                   .dbline -1
 016A                   .dbline 186
 016A           ; }
 016A           ; void CharsWrite(unsigned char addrx,unsigned char addry,unsigned char *s)
 016A           ; {
 016A                   .dbline 188
 016A           ;    unsigned char addr;
 016A           ;    if (addry==1)
 016A 8C2D              mov R24,R12
 016C 8130              cpi R24,1
 016E 11F4              brne L16
 0170                   .dbline 189
 0170           ;    {
 0170                   .dbline 190
 0170           ;       addr = addrx;
 0170 6A2D              mov R22,R10
 0172                   .dbline 191
 0172           ;    }
 0172 07C0              xjmp L17
 0174           L16:
 0174                   .dbline 192
 0174           ;    else if (addry==2)
 0174 8C2D              mov R24,R12
 0176 8230              cpi R24,2
 0178 19F4              brne L18
 017A                   .dbline 193
 017A           ;    {
 017A                   .dbline 194
 017A           ;       addr = (addrx+0x40);
 017A 6A2D              mov R22,R10
 017C 605C              subi R22,192    ; addi 64
 017E                   .dbline 195
 017E           ;    }
 017E 01C0              xjmp L19
 0180           L18:
 0180                   .dbline 197
 0180           ;    else
 0180           ;    {
 0180                   .dbline 198
 0180           ;       addr = 0;
 0180 6627              clr R22
 0182                   .dbline 199
 0182           ;    }
 0182           L19:
 0182           L17:
 0182                   .dbline 200
 0182           ;    DdramSet(0);     //初始化ddram地址
 0182 0027              clr R16
 0184 95DF              xcall _DdramSet
 0186                   .dbline 201
 0186           ;    LCDReady();
 0186 B7DF              xcall _LCDReady
 0188                   .dbline 202
 0188           ;    DdramSet(addr);  //设定ddram地址
 0188 062F              mov R16,R22
 018A 92DF              xcall _DdramSet
 018C                   .dbline 203
 018C           ;    delay_us(80);
 018C 00E5              ldi R16,80
 018E 10E0              ldi R17,0
 0190 0E940000          xcall _delay_us
 0194 09C0              xjmp L21
 0196           L20:
 0196                   .dbline 205
 0196                   .dbline 206
 0196 FA01              movw R30,R20
 0198 0081              ldd R16,z+0
 019A BADF              xcall _CharWrite
 019C                   .dbline 207
 019C 4F5F              subi R20,255  ; offset = 1
 019E 5F4F              sbci R21,255
 01A0                   .dbline 208
 01A0 00E5              ldi R16,80
 01A2 10E0              ldi R17,0
 01A4 0E940000          xcall _delay_us
 01A8                   .dbline 209
 01A8           L21:
 01A8                   .dbline 204
 01A8           ;    while(*s)
 01A8 FA01              movw R30,R20
 01AA 2080              ldd R2,z+0
 01AC 2220              tst R2
 01AE 99F7              brne L20
 01B0                   .dbline -2
 01B0           L15:
 01B0 0E940000          xcall pop_gset4
 01B4                   .dbline 0 ; func end
 01B4 0895              ret
 01B6                   .dbsym r addr 22 c
 01B6                   .dbsym r s 20 pc
 01B6                   .dbsym r addry 12 c
 01B6                   .dbsym r addrx 10 c
 01B6                   .dbend
 01B6                   .dbfunc e DataWrite _DataWrite fV
 01B6           ;           addr -> R22
 01B6           ;              s -> R20,R21
 01B6           ;          addry -> R12
 01B6           ;          addrx -> R10
                        .even
 01B6           _DataWrite::
 01B6 0E940000          xcall push_gset4
 01BA C22E              mov R12,R18
 01BC A02E              mov R10,R16
 01BE 4885              ldd R20,y+8
 01C0 5985              ldd R21,y+9
 01C2                   .dbline -1
 01C2                   .dbline 212
 01C2           ;    {
 01C2           ;      CharWrite(*s);
 01C2           ;        s++;
 01C2           ;        delay_us(80);   //等待写入操作完成
 01C2           ;    }
 01C2           ; }
 01C2           ; void DataWrite(unsigned char addrx,unsigned char addry,unsigned char *s)
 01C2           ; {
 01C2                   .dbline 214
 01C2           ;    unsigned char addr;
 01C2           ;    if (addry==1)
 01C2 8C2D              mov R24,R12
 01C4 8130              cpi R24,1
 01C6 11F4              brne L24
 01C8                   .dbline 215
 01C8           ;    {
 01C8                   .dbline 216
 01C8           ;       addr = addrx;
 01C8 6A2D              mov R22,R10
 01CA                   .dbline 217
 01CA           ;    }
 01CA 07C0              xjmp L25
 01CC           L24:
 01CC                   .dbline 218
 01CC           ;    else if (addry==2)
 01CC 8C2D              mov R24,R12
 01CE 8230              cpi R24,2
 01D0 19F4              brne L26
 01D2                   .dbline 219
 01D2           ;    {
 01D2                   .dbline 220
 01D2           ;       addr = (addrx+0x40);
 01D2 6A2D              mov R22,R10
 01D4 605C              subi R22,192    ; addi 64
 01D6                   .dbline 221
 01D6           ;    }
 01D6 01C0              xjmp L27
 01D8           L26:
 01D8                   .dbline 223
 01D8           ;    else
 01D8           ;    {
 01D8                   .dbline 224
 01D8           ;       addr = 0;
 01D8 6627              clr R22
 01DA                   .dbline 225
 01DA           ;    }
 01DA           L27:
 01DA           L25:
 01DA                   .dbline 226
 01DA           ;    DdramSet(0);     //初始化ddram地址
 01DA 0027              clr R16
 01DC 69DF              xcall _DdramSet
 01DE                   .dbline 227
 01DE           ;    LCDReady();
 01DE 8BDF              xcall _LCDReady
 01E0                   .dbline 228
 01E0           ;    DdramSet(addr);  //设定ddram地址
 01E0 062F              mov R16,R22
 01E2 66DF              xcall _DdramSet
 01E4                   .dbline 229
 01E4           ;    delay_us(80);
 01E4 00E5              ldi R16,80
 01E6 10E0              ldi R17,0
 01E8 0E940000          xcall _delay_us
 01EC 0AC0              xjmp L29
 01EE           L28:
 01EE                   .dbline 231
 01EE                   .dbline 232
 01EE FA01              movw R30,R20
 01F0 0081              ldd R16,z+0
 01F2 005D              subi R16,208    ; addi 48
 01F4 8DDF              xcall _CharWrite
 01F6                   .dbline 233
 01F6 4F5F              subi R20,255  ; offset = 1
 01F8 5F4F              sbci R21,255
 01FA                   .dbline 234
 01FA 00E5              ldi R16,80
 01FC 10E0              ldi R17,0
 01FE 0E940000          xcall _delay_us
 0202                   .dbline 235
 0202           L29:
 0202                   .dbline 230
 0202           ;    while(*s!=0XFF)
 0202 FA01              movw R30,R20
 0204 8081              ldd R24,z+0
 0206 8F3F              cpi R24,255
 0208 91F7              brne L28
 020A                   .dbline -2
 020A           L23:
 020A 0E940000          xcall pop_gset4
 020E                   .dbline 0 ; func end
 020E 0895              ret
 0210                   .dbsym r addr 22 c
 0210                   .dbsym r s 20 pc
 0210                   .dbsym r addry 12 c
 0210                   .dbsym r addrx 10 c
 0210                   .dbend

⌨️ 快捷键说明

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