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

📄 megalcd.lis

📁 ATmegal128的混合中断编程
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00F0           ;        return char_p;
 00F0 082F              mov R16,R24
 00F2 192F              mov R17,R25
 00F4                   .dbline -2
 00F4           L7:
 00F4 0E940000          xcall pop_gset5
 00F8                   .dbline 0 ; func end
 00F8 0895              ret
 00FA                   .dbsym r char_p 10 pc
 00FA                   .dbsym r i 12 c
 00FA                   .dbsym r temp 14 i
 00FA                   .dbsym r adc 10 i
 00FA                   .dbend
 00FA                   .dbfunc e ocmj_init _ocmj_init fV
                        .even
 00FA           _ocmj_init::
 00FA                   .dbline -1
 00FA                   .dbline 228
 00FA           ;       }
 00FA           ; /*     OCMJ4X8LCD初始化     */
 00FA           ; void ocmj_init(void)
 00FA           ;     {
 00FA                   .dbline 229
 00FA           ;        MCUCR=0;
 00FA 2224              clr R2
 00FC 25BE              out 0x35,R2
 00FE                   .dbline 230
 00FE           ;        DDRA=0xff;
 00FE 8FEF              ldi R24,255
 0100 8ABB              out 0x1a,R24
 0102                   .dbline 231
 0102           ;        PORTA=0xff;
 0102 8BBB              out 0x1b,R24
 0104                   .dbline 232
 0104           ;        DDRE=0x80;
 0104 80E8              ldi R24,128
 0106 82B9              out 0x2,R24
 0108                   .dbline 233
 0108           ;        PORTE=0xff;
 0108 8FEF              ldi R24,255
 010A 83B9              out 0x3,R24
 010C                   .dbline 234
 010C           ;        PORTC=0xff; 
 010C 85BB              out 0x15,R24
 010E                   .dbline 235
 010E           ;        DDRD=0x00;
 010E 21BA              out 0x11,R2
 0110                   .dbline 236
 0110           ;        PORTD=0xff;
 0110 82BB              out 0x12,R24
 0112                   .dbline 237
 0112           ;        clr_reset;//LCD复位
 0112 AB98              cbi 0x15,3
 0114                   .dbline 238
 0114           ;        delay_ms(10);
 0114 0AE0              ldi R16,10
 0116 10E0              ldi R17,0
 0118 0E940000          xcall _delay_ms
 011C                   .dbline 239
 011C           ;        set_reset;
 011C AB9A              sbi 0x15,3
 011E                   .dbline 240
 011E           ;        clr_answer;
 011E 1F98              cbi 0x03,7
 0120                   .dbline 241
 0120           ;        delay_ms(10);
 0120 0AE0              ldi R16,10
 0122 10E0              ldi R17,0
 0124                   .dbline -2
 0124                   .dbline 242
 0124           ;        }
 0124           L16:
 0124                   .dbline 0 ; func end
 0124 0C940000          xjmp _delay_ms
 0128                   .dbend
 0128                   .dbfunc e ocmj_write _ocmj_write fV
 0128           ;           data -> R16
                        .even
 0128           _ocmj_write::
 0128                   .dbline -1
 0128                   .dbline 245
 0128           ; /*            写数据到LCD        */
 0128           ; void ocmj_write(unsigned char data)
 0128           ;     {
 0128           L18:
 0128                   .dbline 247
 0128           L19:
 0128                   .dbline 246
 0128           ;        while(ask!=0)
 0128 0E99              sbic 0x1,6
 012A FECF              rjmp L18
 012C                   .dbline 248
 012C           ;             ;
 012C           ;      data_port=data;
 012C 0BBB              out 0x1b,R16
 012E                   .dbline 249
 012E           ;        wait;
 012E 0000              nop
 0130 0000               nop
 0132                   .dbline 250
 0132           ;        set_answer;
 0132 1F9A              sbi 0x03,7
 0134                   .dbline 251
 0134           ;        wait;
 0134 0000              nop
 0136 0000               nop
 0138           L21:
 0138                   .dbline 253
 0138           L22:
 0138                   .dbline 252
 0138           ;        while(ask==0)
 0138 0E9B              sbis 0x1,6
 013A FECF              rjmp L21
 013C                   .dbline 254
 013C           ;             ;           
 013C           ;        clr_answer; 
 013C 1F98              cbi 0x03,7
 013E                   .dbline -2
 013E                   .dbline 255
 013E           ;     }
 013E           L17:
 013E                   .dbline 0 ; func end
 013E 0895              ret
 0140                   .dbsym r data 16 c
 0140                   .dbend
 0140                   .dbfunc e ico_tran _ico_tran fV
 0140           ;              j -> R20
 0140           ;              i -> R14
 0140           ;          ico_p -> R10,R11
 0140           ;              y -> R12
 0140           ;              x -> R22
                        .even
 0140           _ico_tran::
 0140 0E940000          xcall push_gset5
 0144 C22E              mov R12,R18
 0146 602F              mov R22,R16
 0148 AA84              ldd R10,y+10
 014A BB84              ldd R11,y+11
 014C                   .dbline -1
 014C                   .dbline 260
 014C           ; /*         传送32*32ICO点阵数据到LCD       */
 014C           ; /*         x:0~15(字节为单位)  y:0~64      */
 014C           ; /*         ico_p:指向图形数据的指针        */ 
 014C           ; void ico_tran(unsigned char x,unsigned char y,const unsigned char *ico_p)
 014C           ;      {
 014C                   .dbline 262
 014C           ;         unsigned char i,j;
 014C           ;         x+=4;
 014C 6C5F              subi R22,252    ; addi 4
 014E                   .dbline 263
 014E           ;         for(j=0;j<32;j++)
 014E 4427              clr R20
 0150 16C0              xjmp L28
 0152           L25:
 0152                   .dbline 264
 0152           ;            {
 0152                   .dbline 265
 0152           ;                 for(i=0;i<4;i++)
 0152 EE24              clr R14
 0154 0EC0              xjmp L32
 0156           L29:
 0156                   .dbline 266
 0156                   .dbline 267
 0156 03EF              ldi R16,243
 0158 E7DF              xcall _ocmj_write
 015A                   .dbline 268
 015A 062F              mov R16,R22
 015C E5DF              xcall _ocmj_write
 015E                   .dbline 269
 015E 0C2D              mov R16,R12
 0160 E3DF              xcall _ocmj_write
 0162                   .dbline 270
 0162 F501              movw R30,R10
 0164 0491              lpm R16,Z
 0166 E0DF              xcall _ocmj_write
 0168                   .dbline 271
 0168 C501              movw R24,R10
 016A 0196              adiw R24,1
 016C 5C01              movw R10,R24
 016E                   .dbline 272
 016E 6395              inc R22
 0170                   .dbline 273
 0170           L30:
 0170                   .dbline 265
 0170 E394              inc R14
 0172           L32:
 0172                   .dbline 265
 0172 8E2D              mov R24,R14
 0174 8430              cpi R24,4
 0176 78F3              brlo L29
 0178                   .dbline 274
 0178 6450              subi R22,4
 017A                   .dbline 275
 017A C394              inc R12
 017C                   .dbline 276
 017C           L26:
 017C                   .dbline 263
 017C 4395              inc R20
 017E           L28:
 017E                   .dbline 263
 017E 4032              cpi R20,32
 0180 40F3              brlo L25
 0182                   .dbline -2
 0182                   .dbline 277
 0182           ;                   {
 0182           ;                        ocmj_write(0xf3);
 0182           ;                        ocmj_write(x);
 0182           ;                        ocmj_write(y);
 0182           ;                        ocmj_write(*ico_p);
 0182           ;                        ico_p++;
 0182           ;                        x++;
 0182           ;                       }
 0182           ;                 x-=4;
 0182           ;                 y++;  
 0182           ;                }
 0182           ;        }
 0182           L24:
 0182 0E940000          xcall pop_gset5
 0186                   .dbline 0 ; func end
 0186 0895              ret
 0188                   .dbsym r j 20 c
 0188                   .dbsym r i 14 c
 0188                   .dbsym r ico_p 10 pc
 0188                   .dbsym r y 12 c
 0188                   .dbsym r x 22 c
 0188                   .dbend
 0188                   .dbfunc e cls _cls fV
 0188           ;              j -> R20
 0188           ;              i -> R14
 0188           ;          width -> R22
 0188           ;           high -> R10
 0188           ;              y -> R12,R13
 0188           ;              x -> y+10
                        .even
 0188           _cls::
 0188 0E940000          xcall push_arg4
 018C 0E940000          xcall push_gset5
 0190 6901              movw R12,R18
 0192 AE84              ldd R10,y+14
 0194 6889              ldd R22,y+16
 0196                   .dbline -1
 0196                   .dbline 280
 0196           ; /*      清除屏幕区域      */   
 0196           ; void cls(unsigned x,unsigned y,unsigned char high,unsigned char width)
 0196           ;   {
 0196                   .dbline 282
 0196           ;    unsigned char i,j;
 0196           ;    x+=2;
 0196 8A85              ldd R24,y+10
 0198 9B85              ldd R25,y+11
 019A 0296              adiw R24,2
 019C 8A87              std y+10,R24
 019E 9B87              std y+11,R25
 01A0                   .dbline 283
 01A0           ;    for(j=0;j<high;j++)
 01A0 4427              clr R20
 01A2 21C0              xjmp L37
 01A4           L34:
 01A4                   .dbline 284
 01A4           ;       {
 01A4                   .dbline 285
 01A4           ;        for(i=0;i<width;i++)
 01A4 EE24              clr R14
 01A6 11C0              xjmp L41
 01A8           L38:
 01A8                   .dbline 286
 01A8                   .dbline 287
 01A8 00EF              ldi R16,240
 01AA BEDF              xcall _ocmj_write
 01AC                   .dbline 288
 01AC 0A85              ldd R16,y+10
 01AE 1B85              ldd R17,y+11
 01B0 BBDF              xcall _ocmj_write
 01B2                   .dbline 289
 01B2 0C2D              mov R16,R12
 01B4 B9DF              xcall _ocmj_write
 01B6                   .dbline 290
 01B6 07E3              ldi R16,55
 01B8 B7DF              xcall _ocmj_write
 01BA                   .dbline 291
 01BA 0AE5              ldi R16,90
 01BC B5DF              xcall _ocmj_write
 01BE                   .dbline 292
 01BE 8A85              ldd R24,y+10
 01C0 9B85              ldd R25,y+11
 01C2 0196              adiw R24,1
 01C4 8A87              std y+10,R24
 01C6 9B87              std y+11,R25
 01C8                   .dbline 293
 01C8           L39:
 01C8                   .dbline 285
 01C8 E394              inc R14
 01CA           L41:
 01CA                   .dbline 285
 01CA E616              cp R14,R22
 01CC 68F3              brlo L38
 01CE                   .dbline 294
 01CE 262E              mov R2,R22
 01D0 3324              clr R3
 01D2 0A84              ldd R0,y+10
 01D4 1B84              ldd R1,y+11
 01D6 0218              sub R0,R2
 01D8 1308              sbc R1,R3
 01DA 0A86              std y+10,R0
 01DC 1B86              std y+11,R1
 01DE                

⌨️ 快捷键说明

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