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

📄 ac14-1.lis

📁 AVR学习资料
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module ac14-1.c
                        .area lit(rom, con, rel)
 0000           _str0::
 0000 2D546869732069732061204C43442D21  .byte 45,'T,'h,'i,'s,32,'i,'s,32,'a,32,'L,'C,'D,45,33
 0010 00                .byte 0
 0011                   .dbfile d:\MYDOCU~1\ac14-1\ac14-1.c
 0011                   .dbsym e str0 _str0 A[17:17]kc
 0011           _str1::
 0011 2D44657369676E206279205A58482D21  .byte 45,'D,'e,'s,'i,'g,'n,32,'b,'y,32,'Z,'X,'H,45,33
 0021 00                .byte 0
 0022                   .dbsym e str1 _str1 A[17:17]kc
                        .area text(rom, con, rel)
 0000                   .dbfile d:\MYDOCU~1\ac14-1\ac14-1.c
 0000                   .dbfunc e main _main fV
                        .even
 0000           _main::
 0000 2297              sbiw R28,2
 0002                   .dbline -1
 0002                   .dbline 32
 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 str0[]={"-This is a LCD-!"};
 0002           ; const uchar str1[]={"-Design by ZXH-!"};
 0002           ; //========函数声明=========
 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 33
 0002           ;     Delay_nms(400);                   
 0002 00E9              ldi R16,400
 0004 11E0              ldi R17,1
 0006 E2D0              xcall _Delay_nms
 0008                   .dbline 34
 0008           ;       DDRA=0xff;PORTA=0x00;   
 0008 8FEF              ldi R24,255
 000A 8ABB              out 0x1a,R24
 000C                   .dbline 34
 000C 2224              clr R2
 000E 2BBA              out 0x1b,R2
 0010                   .dbline 35
 0010           ;       DDRB=0xff;PORTB=0x00;
 0010 87BB              out 0x17,R24
 0012                   .dbline 35
 0012 28BA              out 0x18,R2
 0014                   .dbline 36
 0014           ;       InitLcd();                              
 0014 79D0              xcall _InitLcd
 0016 2AC0              xjmp L3
 0018           L2:
 0018                   .dbline 39
 0018                   .dbline 40
 0018 21E0              ldi R18,1
 001A 01E0              ldi R16,1
 001C 97D0              xcall _LcdWriteCommand
 001E                   .dbline 41
 001E 21E0              ldi R18,1
 0020 0CE0              ldi R16,12
 0022 94D0              xcall _LcdWriteCommand
 0024                   .dbline 42
 0024 81E4              ldi R24,65
 0026 8883              std y+0,R24
 0028 21E0              ldi R18,1
 002A 0027              clr R16
 002C 61D0              xcall _DisplayOneChar
 002E                   .dbline 43
 002E 80E0              ldi R24,<_str0
 0030 90E0              ldi R25,>_str0
 0032 9983              std y+1,R25
 0034 8883              std y+0,R24
 0036 2227              clr R18
 0038 0027              clr R16
 003A 1BD0              xcall _ePutstr
 003C                   .dbline 44
 003C 00ED              ldi R16,2000
 003E 17E0              ldi R17,7
 0040 C5D0              xcall _Delay_nms
 0042                   .dbline 45
 0042 21E0              ldi R18,1
 0044 01E0              ldi R16,1
 0046 82D0              xcall _LcdWriteCommand
 0048                   .dbline 46
 0048 21E0              ldi R18,1
 004A 0CE0              ldi R16,12
 004C 7FD0              xcall _LcdWriteCommand
 004E                   .dbline 47
 004E 82E4              ldi R24,66
 0050 8883              std y+0,R24
 0052 2227              clr R18
 0054 08E0              ldi R16,8
 0056 4CD0              xcall _DisplayOneChar
 0058                   .dbline 48
 0058 80E0              ldi R24,<_str1
 005A 90E0              ldi R25,>_str1
 005C 9983              std y+1,R25
 005E 8883              std y+0,R24
 0060 21E0              ldi R18,1
 0062 0027              clr R16
 0064 06D0              xcall _ePutstr
 0066                   .dbline 49
 0066 00ED              ldi R16,2000
 0068 17E0              ldi R17,7
 006A B0D0              xcall _Delay_nms
 006C                   .dbline 50
 006C           L3:
 006C                   .dbline 38
 006C D5CF              xjmp L2
 006E           X0:
 006E                   .dbline -2
 006E           L1:
 006E 2296              adiw R28,2
 0070                   .dbline 0 ; func end
 0070 0895              ret
 0072                   .dbend
 0072                   .dbfunc e ePutstr _ePutstr fV
 0072           ;              l -> R20
 0072           ;              i -> R22
 0072           ;            ptr -> R10,R11
 0072           ;              y -> R12
 0072           ;              x -> R14
                        .even
 0072           _ePutstr::
 0072 0E940000          xcall push_gset5
 0076 C22E              mov R12,R18
 0078 E02E              mov R14,R16
 007A 2197              sbiw R28,1
 007C AB84              ldd R10,y+11
 007E BC84              ldd R11,y+12
 0080                   .dbline -1
 0080                   .dbline 54
 0080           ;       /********************************************/
 0080           ;               while(1)              
 0080           ;               {
 0080           ;                  LcdWriteCommand(0x01,1); 
 0080           ;                  LcdWriteCommand(0x0c,1);       
 0080           ;                  DisplayOneChar(0,1,0x41); 
 0080           ;                  ePutstr(0,0,str0); 
 0080           ;                  Delay_nms(2000);     
 0080           ;                  LcdWriteCommand(0x01,1);  
 0080           ;                  LcdWriteCommand(0x0c,1);  
 0080           ;                  DisplayOneChar(8,0,0x42);    
 0080           ;                  ePutstr(0,1,str1);  
 0080           ;                  Delay_nms(2000); 
 0080           ;          }
 0080           ; }                
 0080           ; //**********************显示指定座标的一串字符子函数**************
 0080           ; void ePutstr(uchar x,uchar y,uchar const *ptr)
 0080           ; {
 0080                   .dbline 55
 0080           ; uchar i,l=0;
 0080 4427              clr R20
 0082 01C0              xjmp L7
 0084           L6:
 0084                   .dbline 56
 0084                   .dbline 56
 0084 4395              inc R20
 0086                   .dbline 56
 0086           L7:
 0086                   .dbline 56
 0086           ;       while(ptr[l]>31){l++;}
 0086 E42F              mov R30,R20
 0088 FF27              clr R31
 008A EA0D              add R30,R10
 008C FB1D              adc R31,R11
 008E E491              lpm R30,Z
 0090 8FE1              ldi R24,31
 0092 8E17              cp R24,R30
 0094 B8F3              brlo L6
 0096                   .dbline 57
 0096 6627              clr R22
 0098 14C0              xjmp L12
 009A           L9:
 009A                   .dbline 57
 009A           ;       for(i=0;i<l;i++){
 009A                   .dbline 58
 009A           ;       DisplayOneChar(x++,y,ptr[i]);
 009A E62F              mov R30,R22
 009C FF27              clr R31
 009E EA0D              add R30,R10
 00A0 FB1D              adc R31,R11
 00A2 E491              lpm R30,Z
 00A4 E883              std y+0,R30
 00A6 2C2D              mov R18,R12
 00A8 2E2C              mov R2,R14
 00AA 822D              mov R24,R2
 00AC 8F5F              subi R24,255    ; addi 1
 00AE E82E              mov R14,R24
 00B0 022D              mov R16,R2
 00B2 1ED0              xcall _DisplayOneChar
 00B4                   .dbline 59
 00B4           ;       if(x==16){
 00B4 8E2D              mov R24,R14
 00B6 8031              cpi R24,16
 00B8 19F4              brne L13
 00BA                   .dbline 59
 00BA                   .dbline 60
 00BA           ;               x=0;y^=1;
 00BA EE24              clr R14
 00BC                   .dbline 60
 00BC 81E0              ldi R24,1
 00BE C826              eor R12,R24
 00C0                   .dbline 61
 00C0           ;       }
 00C0           L13:
 00C0                   .dbline 62
 00C0           L10:
 00C0                   .dbline 57
 00C0 6395              inc R22
 00C2           L12:
 00C2                   .dbline 57
 00C2 6417              cp R22,R20
 00C4 50F3              brlo L9
 00C6                   .dbline -2
 00C6           L5:
 00C6 2196              adiw R28,1
 00C8 0E940000          xcall pop_gset5
 00CC                   .dbline 0 ; func end
 00CC 0895              ret
 00CE                   .dbsym r l 20 c
 00CE                   .dbsym r i 22 c
 00CE                   .dbsym r ptr 10 pkc
 00CE                   .dbsym r y 12 c
 00CE                   .dbsym r x 14 c
 00CE                   .dbend
 00CE                   .dbfunc e LocateXY _LocateXY fV
 00CE           ;           temp -> R20
 00CE           ;           posy -> R22
 00CE           ;           posx -> R10
                        .even
 00CE           _LocateXY::
 00CE 0E940000          xcall push_gset3
 00D2 622F              mov R22,R18
 00D4 A02E              mov R10,R16
 00D6                   .dbline -1
 00D6                   .dbline 66
 00D6           ;   }
 00D6           ; }
 00D6           ; //*******************显示光标定位子函数******************
 00D6           ; void LocateXY(char posx,char posy)
 00D6           ; {
 00D6                   .dbline 68
 00D6           ; uchar temp;
 00D6           ;       temp&=0x7f;
 00D6 4F77              andi R20,127
 00D8                   .dbline 69
 00D8           ;       temp=posx&0x0f;
 00D8 4A2D              mov R20,R10
 00DA 4F70              andi R20,15
 00DC                   .dbline 70
 00DC           ;       posy&=0x01;
 00DC 6170              andi R22,1
 00DE                   .dbline 71
 00DE           ;       if(posy)temp|=0x40;
 00DE 09F0              breq L16
 00E0                   .dbline 71
 00E0 4064              ori R20,64
 00E2           L16:
 00E2                   .dbline 72
 00E2           ;       temp|=0x80;
 00E2 4068              ori R20,128
 00E4                   .dbline 73
 00E4           ;       LcdWriteCommand(temp,0);
 00E4 2227              clr R18
 00E6 042F              mov R16,R20
 00E8 31D0              xcall _LcdWriteCommand
 00EA                   .dbline -2
 00EA           L15:
 00EA 0E940000          xcall pop_gset3
 00EE                   .dbline 0 ; func end
 00EE 0895              ret
 00F0                   .dbsym r temp 20 c
 00F0                   .dbsym r posy 22 c
 00F0                   .dbsym r posx 10 c
 00F0                   .dbend
 00F0                   .dbfunc e DisplayOneChar _DisplayOneChar fV
 00F0           ;          Wdata -> y+4
 00F0           ;              y -> R22
 00F0           ;              x -> R20
                        .even
 00F0           _DisplayOneChar::
 00F0 0E940000          xcall push_gset2
 00F4 622F              mov R22,R18
 00F6 402F              mov R20,R16
 00F8                   .dbline -1
 00F8                   .dbline 77
 00F8           ; }
 00F8           ; //*******************显示指定座标的一个字符子函数*******************
 00F8           ; void DisplayOneChar(uchar x,uchar y,uchar Wdata)
 00F8           ; {
 00F8                   .dbline 78

⌨️ 快捷键说明

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