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

📄 ac14-2.lis

📁 AVR学习资料
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module ac14-2.c
                        .area lit(rom, con, rel)
 0000           _exampl::
 0000 2D2D454C454354524F4E4943532D2D20  .byte 45,45,'E,'L,'E,'C,'T,'R,'O,'N,'I,'C,'S,45,45,32
 0010 20574F524C44206D6167617A696E650A  .byte 32,'W,'O,'R,'L,'D,32,'m,'a,'g,'a,'z,'i,'n,'e,10
 0020 00                .byte 0
 0021                   .dbfile d:\MYDOCU~1\ac14-2\ac14-2.c
 0021                   .dbsym e exampl _exampl A[33:33]kc
                        .area text(rom, con, rel)
 0000                   .dbfile d:\MYDOCU~1\ac14-2\ac14-2.c
 0000                   .dbfunc e main _main fV
 0000           ;           temp -> R20
                        .even
 0000           _main::
 0000 2297              sbiw R28,2
 0002                   .dbline -1
 0002                   .dbline 30
 0002           ; #include <iom16v.h>
 0002           ; #include <macros.h>
 0002           ; //----------------------------
 0002           ; #define uchar unsigned char
 0002           ; #define uint unsigned int
 0002           ; //----------------------------
 0002           ; #define LCM_RS_1 PORTB|=BIT(PB0)
 0002           ; #define LCM_RS_0 PORTB&=~BIT(PB0)
 0002           ; #define LCM_RW_1 PORTB|=BIT(PB1)
 0002           ; #define LCM_RW_0 PORTB&=~BIT(PB1)
 0002           ; #define LCM_EN_1 PORTB|=BIT(PB2)
 0002           ; #define LCM_EN_0 PORTB&=~BIT(PB2)
 0002           ; //------------------------------
 0002           ; #define DataPort PORTA
 0002           ; #define Busy 0x80
 0002           ; #define xtal 8                        
 0002           ; //---------------------------------
 0002           ; const uchar exampl[]="--ELECTRONICS--  WORLD magazine\n";
 0002           ; void Delay_1ms(void);
 0002           ; void Delay_nms(uint n);
 0002           ; void WaitForEnable(void);
 0002           ; void LcdWriteData(uchar W);
 0002           ; void LcdWriteCommand(uchar CMD,uchar Attribc);
 0002           ; void InitLcd(void);
 0002           ; void Display(uchar dd);
 0002           ; void DisplayOneChar(uchar x,uchar y,uchar Wdata);
 0002           ; void ePutstr(uchar x,uchar y,uchar const *ptr);
 0002           ; //******************************************
 0002           ; void main(void)
 0002           ; {
 0002                   .dbline 32
 0002           ;     uchar temp;
 0002           ;       Delay_nms(400);
 0002 00E9              ldi R16,400
 0004 11E0              ldi R17,1
 0006 E5D0              xcall _Delay_nms
 0008                   .dbline 33
 0008           ;       DDRA=0xff;PORTA=0x00;
 0008 8FEF              ldi R24,255
 000A 8ABB              out 0x1a,R24
 000C                   .dbline 33
 000C 2224              clr R2
 000E 2BBA              out 0x1b,R2
 0010                   .dbline 34
 0010           ;       DDRB=0xff;PORTB=0x00;
 0010 87BB              out 0x17,R24
 0012                   .dbline 34
 0012 28BA              out 0x18,R2
 0014                   .dbline 35
 0014           ;       InitLcd();
 0014 7CD0              xcall _InitLcd
 0016                   .dbline 36
 0016           ;       temp=32;
 0016 40E2              ldi R20,32
 0018                   .dbline 37
 0018           ;       ePutstr(0,0,exampl);
 0018 80E0              ldi R24,<_exampl
 001A 90E0              ldi R25,>_exampl
 001C 9983              std y+1,R25
 001E 8883              std y+0,R24
 0020 2227              clr R18
 0022 0027              clr R16
 0024 12D0              xcall _ePutstr
 0026                   .dbline 38
 0026           ;       Delay_nms(3200);
 0026 00E8              ldi R16,3200
 0028 1CE0              ldi R17,12
 002A D3D0              xcall _Delay_nms
 002C 0BC0              xjmp L3
 002E           L2:
 002E                   .dbline 40
 002E           ;       while(1)
 002E           ;       {
 002E                   .dbline 41
 002E           ;               temp&=0x7f;
 002E 4F77              andi R20,127
 0030                   .dbline 42
 0030           ;               if(temp<32)temp=32;
 0030 4032              cpi R20,32
 0032 08F4              brsh L5
 0034                   .dbline 42
 0034 40E2              ldi R20,32
 0036           L5:
 0036                   .dbline 43
 0036 242E              mov R2,R20
 0038 4F5F              subi R20,255    ; addi 1
 003A 022D              mov R16,R2
 003C 34D0              xcall _Display
 003E                   .dbline 44
 003E 00E9              ldi R16,400
 0040 11E0              ldi R17,1
 0042 C7D0              xcall _Delay_nms
 0044                   .dbline 45
 0044           L3:
 0044                   .dbline 39
 0044 F4CF              xjmp L2
 0046           X0:
 0046                   .dbline -2
 0046           L1:
 0046 2296              adiw R28,2
 0048                   .dbline 0 ; func end
 0048 0895              ret
 004A                   .dbsym r temp 20 c
 004A                   .dbend
 004A                   .dbfunc e ePutstr _ePutstr fV
 004A           ;              l -> R20
 004A           ;              i -> R22
 004A           ;            ptr -> R10,R11
 004A           ;              y -> R12
 004A           ;              x -> R14
                        .even
 004A           _ePutstr::
 004A 0E940000          xcall push_gset5
 004E C22E              mov R12,R18
 0050 E02E              mov R14,R16
 0052 2197              sbiw R28,1
 0054 AB84              ldd R10,y+11
 0056 BC84              ldd R11,y+12
 0058                   .dbline -1
 0058                   .dbline 49
 0058           ;               Display(temp++);
 0058           ;               Delay_nms(400);
 0058           ;       }
 0058           ; }
 0058           ; //************************************
 0058           ; void ePutstr(uchar x,uchar y,uchar const *ptr)
 0058           ; {
 0058                   .dbline 50
 0058           ; uchar i,l=0;
 0058 4427              clr R20
 005A 01C0              xjmp L9
 005C           L8:
 005C                   .dbline 51
 005C                   .dbline 51
 005C 4395              inc R20
 005E                   .dbline 51
 005E           L9:
 005E                   .dbline 51
 005E           ;       while(ptr[l]>31){l++;}
 005E E42F              mov R30,R20
 0060 FF27              clr R31
 0062 EA0D              add R30,R10
 0064 FB1D              adc R31,R11
 0066 E491              lpm R30,Z
 0068 8FE1              ldi R24,31
 006A 8E17              cp R24,R30
 006C B8F3              brlo L8
 006E                   .dbline 52
 006E 6627              clr R22
 0070 14C0              xjmp L14
 0072           L11:
 0072                   .dbline 52
 0072           ;       for(i=0;i<l;i++){
 0072                   .dbline 53
 0072           ;       DisplayOneChar(x++,y,ptr[i]);
 0072 E62F              mov R30,R22
 0074 FF27              clr R31
 0076 EA0D              add R30,R10
 0078 FB1D              adc R31,R11
 007A E491              lpm R30,Z
 007C E883              std y+0,R30
 007E 2C2D              mov R18,R12
 0080 2E2C              mov R2,R14
 0082 822D              mov R24,R2
 0084 8F5F              subi R24,255    ; addi 1
 0086 E82E              mov R14,R24
 0088 022D              mov R16,R2
 008A 35D0              xcall _DisplayOneChar
 008C                   .dbline 54
 008C           ;       if(x==16){
 008C 8E2D              mov R24,R14
 008E 8031              cpi R24,16
 0090 19F4              brne L15
 0092                   .dbline 54
 0092                   .dbline 55
 0092           ;               x=0;y^=1;
 0092 EE24              clr R14
 0094                   .dbline 55
 0094 81E0              ldi R24,1
 0096 C826              eor R12,R24
 0098                   .dbline 56
 0098           ;       }
 0098           L15:
 0098                   .dbline 57
 0098           L12:
 0098                   .dbline 52
 0098 6395              inc R22
 009A           L14:
 009A                   .dbline 52
 009A 6417              cp R22,R20
 009C 50F3              brlo L11
 009E                   .dbline -2
 009E           L7:
 009E 2196              adiw R28,1
 00A0 0E940000          xcall pop_gset5
 00A4                   .dbline 0 ; func end
 00A4 0895              ret
 00A6                   .dbsym r l 20 c
 00A6                   .dbsym r i 22 c
 00A6                   .dbsym r ptr 10 pkc
 00A6                   .dbsym r y 12 c
 00A6                   .dbsym r x 14 c
 00A6                   .dbend
 00A6                   .dbfunc e Display _Display fV
 00A6           ;              i -> R20
 00A6           ;             dd -> R22
                        .even
 00A6           _Display::
 00A6 0E940000          xcall push_gset2
 00AA 602F              mov R22,R16
 00AC 2197              sbiw R28,1
 00AE                   .dbline -1
 00AE                   .dbline 61
 00AE           ;   }
 00AE           ; }
 00AE           ; //*************************************
 00AE           ; void Display(uchar dd)
 00AE           ; {
 00AE                   .dbline 63
 00AE 4427              clr R20
 00B0 0BC0              xjmp L21
 00B2           L18:
 00B2                   .dbline 63
 00B2           ; uchar i;
 00B2           ;       for(i=0;i<16;i++){
 00B2                   .dbline 64
 00B2           ;       DisplayOneChar(i,1,dd++);
 00B2 262E              mov R2,R22
 00B4 6F5F              subi R22,255    ; addi 1
 00B6 2882              std y+0,R2
 00B8 21E0              ldi R18,1
 00BA 042F              mov R16,R20
 00BC 1CD0              xcall _DisplayOneChar
 00BE                   .dbline 65
 00BE           ;       dd&=0x7f;
 00BE 6F77              andi R22,127
 00C0                   .dbline 66
 00C0           ;       if(dd<32)dd=32;
 00C0 6032              cpi R22,32
 00C2 08F4              brsh L22
 00C4                   .dbline 66
 00C4 60E2              ldi R22,32
 00C6           L22:
 00C6                   .dbline 67
 00C6           L19:
 00C6                   .dbline 63
 00C6 4395              inc R20
 00C8           L21:
 00C8                   .dbline 63
 00C8 4031              cpi R20,16
 00CA 98F3              brlo L18
 00CC                   .dbline -2
 00CC           L17:
 00CC 2196              adiw R28,1
 00CE 0E940000          xcall pop_gset2
 00D2                   .dbline 0 ; func end
 00D2 0895              ret
 00D4                   .dbsym r i 20 c
 00D4                   .dbsym r dd 22 c
 00D4                   .dbend
 00D4                   .dbfunc e LocateXY _LocateXY fV
 00D4           ;           temp -> R20
 00D4           ;           posy -> R22
 00D4           ;           posx -> R10
                        .even
 00D4           _LocateXY::
 00D4 0E940000          xcall push_gset3
 00D8 622F              mov R22,R18
 00DA A02E              mov R10,R16
 00DC                   .dbline -1
 00DC                   .dbline 71
 00DC           ;       }
 00DC           ; }
 00DC           ; //*************************************
 00DC           ; void LocateXY(char posx,char posy)
 00DC           ; {
 00DC                   .dbline 73
 00DC           ; uchar temp;
 00DC           ;       temp&=0x7f;
 00DC 4F77              andi R20,127
 00DE                   .dbline 74
 00DE           ;       temp=posx&0x0f;
 00DE 4A2D              mov R20,R10
 00E0 4F70              andi R20,15
 00E2                   .dbline 75
 00E2           ;       posy&=0x01;
 00E2 6170              andi R22,1
 00E4                   .dbline 76
 00E4           ;       if(posy)temp|=0x40;
 00E4 09F0              breq L25
 00E6                   .dbline 76
 00E6 4064              ori R20,64
 00E8           L25:
 00E8                   .dbline 77
 00E8           ;       temp|=0x80;
 00E8 4068              ori R20,128
 00EA                   .dbline 78
 00EA           ;       LcdWriteCommand(temp,0);
 00EA 2227              clr R18
 00EC 042F              mov R16,R20
 00EE 31D0              xcall _LcdWriteCommand
 00F0                   .dbline -2
 00F0           L24:
 00F0 0E940000          xcall pop_gset3
 00F4                   .dbline 0 ; func end
 00F4 0895              ret
 00F6                   .dbsym r temp 20 c
 00F6                   .dbsym r posy 22 c
 00F6                   .dbsym r posx 10 c
 00F6                   .dbend
 00F6                   .dbfunc e DisplayOneChar _DisplayOneChar fV

⌨️ 快捷键说明

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