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

📄 lcd.lis

📁 用于ATMEGA8单片机调试 包括串口
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module lcd.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\新建文件夹\lcd.c
 0000                   .dbfunc e LCD_WIRTE_DELAY _LCD_WIRTE_DELAY fV
 0000           ;       lcd_time -> R16,R17
                        .even
 0000           _LCD_WIRTE_DELAY::
 0000                   .dbline -1
 0000                   .dbline 4
 0000           ; #include "config.h"
 0000           ; 
 0000           ; void LCD_WIRTE_DELAY(unsigned int lcd_time) 
 0000           ; {
 0000                   .dbline 5
 0000           ; WDR();
 0000 A895              wdr
 0002           L2:
 0002                   .dbline 7
 0002           ; while(--lcd_time)
 0002           ; {;}
 0002                   .dbline 7
 0002                   .dbline 7
 0002           L3:
 0002                   .dbline 6
 0002 C801              movw R24,R16
 0004 0197              sbiw R24,1
 0006 8C01              movw R16,R24
 0008 0030              cpi R16,0
 000A 0107              cpc R16,R17
 000C D1F7              brne L2
 000E           X0:
 000E                   .dbline 8
 000E           ; WDR();
 000E A895              wdr
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbsym r lcd_time 16 i
 0012                   .dbend
 0012                   .dbfunc e LCD_WRI_ORDER _LCD_WRI_ORDER fV
 0012           ;           DATA -> <dead>
 0012           ;          ORDER -> R10
                        .even
 0012           _LCD_WRI_ORDER::
 0012 AA92              st -y,R10
 0014 A02E              mov R10,R16
 0016                   .dbline -1
 0016                   .dbline 14
 0016           ; }
 0016           ; 
 0016           ;  /*--------------------------向LCD写命令---------*/
 0016           ; ///////////////////////////////////////////////////////////////////////////////////////////////////
 0016           ; void LCD_WRI_ORDER(unsigned char ORDER)
 0016           ;  { 
 0016                   .dbline 16
 0016           ;   unsigned char DATA;
 0016           ;   WDR();
 0016 A895              wdr
 0018                   .dbline 18
 0018           ;  // PORTD=PORTD&0X1F;//PD7,6,5置0
 0018           ;   PORTA=PORTA&0XF8;
 0018 8BB3              in R24,0x1b
 001A 887F              andi R24,248
 001C 8BBB              out 0x1b,R24
 001E                   .dbline 28
 001E           ;  /*
 001E           ;   PORTD=PORTD|0X40; 
 001E           ;   DDRB=0X00;
 001E           ;   DATA=PINB;
 001E           ;   while(DATA&&0x80)
 001E           ;   {DATA=PINB;WDR();}
 001E           ;   PORTD=PORTD&0X1F;
 001E           ;   DDRB=0Xff;
 001E           ; */
 001E           ;   LCD_WIRTE_DELAY(200);
 001E 08EC              ldi R16,200
 0020 10E0              ldi R17,0
 0022 EEDF              xcall _LCD_WIRTE_DELAY
 0024                   .dbline 30
 0024           ;   //PORTD=PORTD&0X1F;//PD7,6,5置0
 0024           ;   PORTA=PORTA&0XF8;
 0024 8BB3              in R24,0x1b
 0026 887F              andi R24,248
 0028 8BBB              out 0x1b,R24
 002A                   .dbline 31
 002A           ;   PORTB=ORDER;                                        //
 002A A8BA              out 0x18,R10
 002C                   .dbline 33
 002C           ;   //PORTD=PORTD|0X80;//PD7置1
 002C           ;   PORTA=PORTA |0X04;
 002C DA9A              sbi 0x1b,2
 002E                   .dbline 34
 002E           ;   LCD_WIRTE_DELAY(200);
 002E 08EC              ldi R16,200
 0030 10E0              ldi R17,0
 0032 E6DF              xcall _LCD_WIRTE_DELAY
 0034                   .dbline 36
 0034           ;   //PORTD=PORTD&0X1F;//PD7,6,5置0
 0034           ;   PORTA=PORTA&0XF8;
 0034 8BB3              in R24,0x1b
 0036 887F              andi R24,248
 0038 8BBB              out 0x1b,R24
 003A                   .dbline -2
 003A           L5:
 003A                   .dbline 0 ; func end
 003A A990              ld R10,y+
 003C 0895              ret
 003E                   .dbsym l DATA 1 c
 003E                   .dbsym r ORDER 10 c
 003E                   .dbend
 003E                   .dbfunc e LCD_WRI_DATA _LCD_WRI_DATA fV
 003E           ;           ords -> <dead>
 003E           ;           DATA -> R10
                        .even
 003E           _LCD_WRI_DATA::
 003E AA92              st -y,R10
 0040 A02E              mov R10,R16
 0042                   .dbline -1
 0042                   .dbline 43
 0042           ;  }
 0042           ; 
 0042           ; 
 0042           ; /*-----------写到lcd中显示数据---------*/
 0042           ; ////////////////////////////////////////////////////////////////////////////////////
 0042           ; void LCD_WRI_DATA(unsigned char DATA)
 0042           ; {
 0042                   .dbline 46
 0042           ; 
 0042           ;  unsigned char ords;
 0042           ;   WDR();
 0042 A895              wdr
 0044                   .dbline 58
 0044           ;   
 0044           ;   /*
 0044           ;   PORTD=PORTD&0X1F; 
 0044           ;   PORTD=PORTD|0X40; 
 0044           ;   DDRB=0X00;
 0044           ;   ords=PINB;
 0044           ;   while(ords&&0x80)
 0044           ;   {ords=PINB;WDR();}
 0044           ;   DDRB=0Xff;
 0044           ;   */
 0044           ;   //PORTD=PORTD&0X7F;//PD7置0
 0044           ;   PORTA=PORTA&0XFB; 
 0044 8BB3              in R24,0x1b
 0046 8B7F              andi R24,251
 0048 8BBB              out 0x1b,R24
 004A                   .dbline 59
 004A           ;   LCD_WIRTE_DELAY(200);
 004A 08EC              ldi R16,200
 004C 10E0              ldi R17,0
 004E D8DF              xcall _LCD_WIRTE_DELAY
 0050                   .dbline 61
 0050           ;   //PORTD=PORTD|0X20; //PD5置1
 0050           ;   PORTA=PORTA|0X01;
 0050 D89A              sbi 0x1b,0
 0052                   .dbline 62
 0052           ;   PORTB=DATA;
 0052 A8BA              out 0x18,R10
 0054                   .dbline 64
 0054           ;   //PORTD=PORTD|0X80;//PD7置1
 0054           ;   PORTA=PORTA |0X04;
 0054 DA9A              sbi 0x1b,2
 0056                   .dbline 65
 0056           ;   LCD_WIRTE_DELAY(200);
 0056 08EC              ldi R16,200
 0058 10E0              ldi R17,0
 005A D2DF              xcall _LCD_WIRTE_DELAY
 005C                   .dbline 67
 005C           ;   //PORTD=PORTD&0X1F;//PD7,6,5置0
 005C           ;   PORTA=PORTA & 0XF8;
 005C 8BB3              in R24,0x1b
 005E 887F              andi R24,248
 0060 8BBB              out 0x1b,R24
 0062                   .dbline -2
 0062           L6:
 0062                   .dbline 0 ; func end
 0062 A990              ld R10,y+
 0064 0895              ret
 0066                   .dbsym l ords 1 c
 0066                   .dbsym r DATA 10 c
 0066                   .dbend
 0066                   .dbfunc e LCD_DELAY _LCD_DELAY fV
 0066           ;           time -> R16,R17
                        .even
 0066           _LCD_DELAY::
 0066                   .dbline -1
 0066                   .dbline 75
 0066           ; }
 0066           ; 
 0066           ; 
 0066           ; 
 0066           ; 
 0066           ; /*-------------延时46us----------*/
 0066           ; void LCD_DELAY()
 0066           ;  {
 0066                   .dbline 76
 0066           ;   unsigned int time=500;
 0066 04EF              ldi R16,500
 0068 11E0              ldi R17,1
 006A                   .dbline 77
 006A           ;   WDR();
 006A A895              wdr
 006C           L8:
 006C                   .dbline 78
 006C           ;   while(--time);
 006C           L9:
 006C                   .dbline 78
 006C C801              movw R24,R16
 006E 0197              sbiw R24,1
 0070 8C01              movw R16,R24
 0072 0030              cpi R16,0
 0074 0107              cpc R16,R17
 0076 D1F7              brne L8
 0078           X1:
 0078                   .dbline 79
 0078           ;   WDR();
 0078 A895              wdr
 007A                   .dbline -2
 007A           L7:
 007A                   .dbline 0 ; func end
 007A 0895              ret
 007C                   .dbsym r time 16 i
 007C                   .dbend
 007C                   .dbfunc e LCD_CLEAR _LCD_CLEAR fV
                        .even
 007C           _LCD_CLEAR::
 007C                   .dbline -1
 007C                   .dbline 84
 007C           ;  }
 007C           ;  
 007C           ;  
 007C           ; void LCD_CLEAR()
 007C           ; {
 007C                   .dbline 85
 007C           ;   LCD_WRI_ORDER(0X01);
 007C 01E0              ldi R16,1
 007E C9DF              xcall _LCD_WRI_ORDER
 0080                   .dbline 86
 0080           ;   LCD_DELAY();
 0080 F2DF              xcall _LCD_DELAY
 0082                   .dbline -2
 0082           L11:
 0082                   .dbline 0 ; func end
 0082 0895              ret
 0084                   .dbend
 0084                   .dbfunc e LCD_WORD_INI _LCD_WORD_INI fV
                        .even
 0084           _LCD_WORD_INI::
 0084                   .dbline -1
 0084                   .dbline 101
 0084           ; }
 0084           ; 
 0084           ; 
 0084           ; //#define EN (DDRD|=BIT(PD7))
 0084           ; //#define RW (DDRD|=BIT(PD6))
 0084           ; //#define CR (DDRD|=BIT(PD5))
 0084           ; //////////////////////////////////////////////////////////////
 0084           ; #define EN (DDRA|=BIT(PA2))
 0084           ; #define RW (DDRA|=BIT(PA1))
 0084           ; #define CR (DDRA|=BIT(PA0))
 0084           ; /////////////////////////////////////////////////////////////
 0084           ; 
 0084           ; 
 0084           ; void LCD_WORD_INI(void)
 0084           ;  {
 0084                   .dbline 102
 0084           ;     WDR();
 0084 A895              wdr
 0086                   .dbline 103
 0086           ;     EN;RW;CR;
 0086 D29A              sbi 0x1a,2
 0088                   .dbline 103
 0088 D19A              sbi 0x1a,1
 008A                   .dbline 103
 008A D09A              sbi 0x1a,0
 008C                   .dbline 104
 008C           ;    LCD_WRI_ORDER(0X30);                          /*----------------清显示--------------------*/
 008C 00E3              ldi R16,48
 008E C1DF              xcall _LCD_WRI_ORDER
 0090                   .dbline 105
 0090           ;    LCD_DELAY();
 0090 EADF              xcall _LCD_DELAY
 0092                   .dbline 106
 0092           ;    LCD_WRI_ORDER(0X30);                          /*----------------清显示--------------------*/
 0092 00E3              ldi R16,48
 0094 BEDF              xcall _LCD_WRI_ORDER
 0096                   .dbline 107
 0096           ;    LCD_DELAY();
 0096 E7DF              xcall _LCD_DELAY
 0098                   .dbline 108
 0098           ;    LCD_DELAY();
 0098 E6DF              xcall _LCD_DELAY
 009A                   .dbline 109
 009A           ;    LCD_WRI_ORDER(0X0C);                          /*------------ 显示右移光标右移 --------------*/
 009A 0CE0              ldi R16,12
 009C BADF              xcall _LCD_WRI_ORDER
 009E                   .dbline 110
 009E           ;    LCD_DELAY(); 
 009E E3DF              xcall _LCD_DELAY
 00A0                   .dbline 111
 00A0           ;    LCD_WRI_ORDER(0X01);                          /*------------ 显示右移光标右移 --------------*/
 00A0 01E0              ldi R16,1
 00A2 B7DF              xcall _LCD_WRI_ORDER
 00A4                   .dbline 112
 00A4           ;    Delay1ms(1);
 00A4 01E0              ldi R16,1
 00A6 10E0              ldi R17,0
 00A8 0E940000          xcall _Delay1ms
 00AC                   .dbline 113
 00AC           ;    LCD_WRI_ORDER(0X06);                          /*-------功能定为基本指令集动作8位------------*/
 00AC 06E0              ldi R16,6
 00AE B1DF              xcall _LCD_WRI_ORDER
 00B0                   .dbline 114
 00B0           ;    LCD_DELAY();
 00B0 DADF              xcall _LCD_DELAY
 00B2                   .dbline -2
 00B2           L12:
 00B2                   .dbline 0 ; func end
 00B2 0895              ret
 00B4                   .dbend
 00B4                   .dbfunc e LCD_ADD _LCD_ADD fV
 00B4           ;            ADD -> R10
                        .even
 00B4           _LCD_ADD::
 00B4 AA92              st -y,R10
 00B6 A02E              mov R10,R16
 00B8                   .dbline -1
 00B8                   .dbline 127
 00B8           ;  }
 00B8           ; /*
 00B8           ; void LCD_PIC_INI()
 00B8           ;  {
 00B8           ;    WDR();
 00B8           ;    LCD_WORD_INI();
 00B8           ;    LCD_WRI_ORDER(0X32);                        /*-------功能设定为基本指令集8位显示图形-----------*/
 00B8           ;  /*  LCD_DELAY();
 00B8           ;    LCD_WRI_ORDER(0X36);                        /*-------功能设定为扩充指令集8位显示图形-----------*/
 00B8           ;  //  LCD_DELAY();
 00B8           ;  //}*/
 00B8           ; void LCD_ADD(unsigned char ADD)//写入地址
 00B8           ;  {
 00B8                   .dbline 128
 00B8           ;    LCD_WRI_ORDER(ADD);
 00B8 0A2D              mov R16,R10
 00BA ABDF              xcall _LCD_WRI_ORDER
 00BC                   .dbline 129
 00BC           ;    LCD_DELAY();
 00BC D4DF              xcall _LCD_DELAY
 00BE                   .dbline -2
 00BE           L13:
 00BE                   .dbline 0 ; func end
 00BE A990              ld R10,y+
 00C0 0895              ret
 00C2                   .dbsym r ADD 10 c
 00C2                   .dbend
 00C2                   .dbfunc e DISPLAY_LCD _DISPLAY_LCD fV
 00C2           ;              Y -> R10
 00C2           ;           DISP -> R20,R21
 00C2           ;            ADD -> R10
                        .even
 00C2           _DISPLAY_LCD::
 00C2 0E940000          xcall push_xgset300C
 00C6 A901              movw R20,R18
 00C8 A02E              mov R10,R16
 00CA                   .dbline -1
 00CA                   .dbline 133
 00CA           ;   } 
 00CA           ;   
 00CA           ; void DISPLAY_LCD(unsigned char ADD,unsigned char *DISP)//显示字符串
 00CA           ; {  

⌨️ 快捷键说明

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