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

📄 1602.lis

📁 用AVR单片机Mega16控制的1602液晶屏显示
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module _1602.c
                        .area data(ram, con, rel)
 0000           _DATA1::
 0000                   .blkb 17
                        .area idata
 0000 20202057656C636F6D6520746F202020  .byte 32,32,32,'W,'e,'l,'c,'o,'m,'e,32,'t,'o,32,32,32
 0010 00                .byte 0
                        .area data(ram, con, rel)
 0011                   .dbfile E:\单片机\单片机程序\AVR程序\1602\1602.c
 0011                   .dbsym e DATA1 _DATA1 A[17:17]c
 0011           _DATA2::
 0011                   .blkb 28
                        .area idata
 0011 202020202020202020202043554D5421  .byte 32,32,32,32,32,32,32,32,32,32,32,'C,'U,'M,'T,33
 0021 202020202020202020202000  .byte 32,32,32,32,32,32,32,32,32,32,32,0
                        .area data(ram, con, rel)
 002D                   .dbfile E:\单片机\单片机程序\AVR程序\1602\1602.c
 002D                   .dbsym e DATA2 _DATA2 A[28:28]c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\单片机\单片机程序\AVR程序\1602\1602.c
 0000                   .dbfunc e delay _delay fV
 0000           ;              t -> R16,R17
                        .even
 0000           _delay::
 0000                   .dbline -1
 0000                   .dbline 18
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include <stdio.h>                    //标准输入输出头文件
 0000           ; #define uchar unsigned char
 0000           ; #define uint  unsigned int
 0000           ; 
 0000           ; //uchar DATA[16] = {'W','e','l','c','o','m','e',' ','t','o',' ','C','U','M','T','!'};
 0000           ; uchar DATA1[] = {"   Welcome to   "};
 0000           ; uchar DATA2[] = {"           CUMT!           "};
 0000           ; /********** LCD1602接线引脚定义 ***********/
 0000           ; //E  -- PD4
 0000           ; //RW -- PD5
 0000           ; //RS -- PD6
 0000           ; //DB0~7  --  PC0~7
 0000           ; 
 0000           ; /****************** 延时函数 *****************/
 0000           ; void delay(uint t)
 0000           ; {
 0000           L2:
 0000                   .dbline 19
 0000           L3:
 0000                   .dbline 19
 0000           ;   while(t--);
 0000 1801              movw R2,R16
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006 2220              tst R2
 0008 D9F7              brne L2
 000A 3320              tst R3
 000C C9F7              brne L2
 000E           X0:
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbsym r t 16 i
 0010                   .dbend
 0010                   .dbfunc e delay_ms _delay_ms fV
 0010           ;              i -> R20,R21
 0010           ;              j -> R22,R23
 0010           ;              t -> R16,R17
                        .even
 0010           _delay_ms::
 0010 0E940000          xcall push_gset2
 0014                   .dbline -1
 0014                   .dbline 23
 0014           ; }
 0014           ; 
 0014           ; void delay_ms(uint t)
 0014           ; {
 0014                   .dbline 25
 0014           ;  uint i,j;
 0014           ;  for(i=t;i>0;i--)
 0014 A801              movw R20,R16
 0016 0BC0              xjmp L9
 0018           L6:
 0018                   .dbline 26
 0018 6627              clr R22
 001A 7727              clr R23
 001C 02C0              xjmp L13
 001E           L10:
 001E                   .dbline 26
 001E           L11:
 001E                   .dbline 26
 001E 6F5F              subi R22,255  ; offset = 1
 0020 7F4F              sbci R23,255
 0022           L13:
 0022                   .dbline 26
 0022 6437              cpi R22,116
 0024 E4E0              ldi R30,4
 0026 7E07              cpc R23,R30
 0028 D0F3              brlo L10
 002A           L7:
 002A                   .dbline 25
 002A 4150              subi R20,1
 002C 5040              sbci R21,0
 002E           L9:
 002E                   .dbline 25
 002E 4030              cpi R20,0
 0030 4507              cpc R20,R21
 0032 91F7              brne L6
 0034           X1:
 0034                   .dbline -2
 0034           L5:
 0034 0E940000          xcall pop_gset2
 0038                   .dbline 0 ; func end
 0038 0895              ret
 003A                   .dbsym r i 20 i
 003A                   .dbsym r j 22 i
 003A                   .dbsym r t 16 i
 003A                   .dbend
 003A                   .dbfunc e port_init _port_init fV
                        .even
 003A           _port_init::
 003A                   .dbline -1
 003A                   .dbline 31
 003A           ;     for(j=0;j<1140;j++);
 003A           ; }
 003A           ; 
 003A           ; /****************** 端口初始化 *****************/
 003A           ; void port_init(void)
 003A           ; {
 003A                   .dbline 32
 003A           ;  PORTA = 0x00;
 003A 2224              clr R2
 003C 2BBA              out 0x1b,R2
 003E                   .dbline 33
 003E           ;  DDRA  = 0xFF;
 003E 8FEF              ldi R24,255
 0040 8ABB              out 0x1a,R24
 0042                   .dbline 34
 0042           ;  PORTB = 0x00;
 0042 28BA              out 0x18,R2
 0044                   .dbline 35
 0044           ;  DDRB  = 0x00;
 0044 27BA              out 0x17,R2
 0046                   .dbline 36
 0046           ;  PORTC = 0x00;
 0046 25BA              out 0x15,R2
 0048                   .dbline 37
 0048           ;  DDRC  = 0xFF;
 0048 84BB              out 0x14,R24
 004A                   .dbline 38
 004A           ;  PORTD = 0x00;
 004A 22BA              out 0x12,R2
 004C                   .dbline 39
 004C           ;  DDRD  = 0xFF;
 004C 81BB              out 0x11,R24
 004E                   .dbline -2
 004E           L14:
 004E                   .dbline 0 ; func end
 004E 0895              ret
 0050                   .dbend
 0050                   .dbfunc e init_devices _init_devices fV
                        .even
 0050           _init_devices::
 0050                   .dbline -1
 0050                   .dbline 44
 0050           ; }
 0050           ; 
 0050           ; /****************** mega16 初始化 *****************/
 0050           ; void init_devices(void)
 0050           ; {
 0050                   .dbline 45
 0050           ;  CLI();
 0050 F894              cli
 0052                   .dbline 46
 0052           ;  port_init();
 0052 F3DF              xcall _port_init
 0054                   .dbline 47
 0054           ;  MCUCR = 0x00;
 0054 2224              clr R2
 0056 25BE              out 0x35,R2
 0058                   .dbline 48
 0058           ;  GICR  = 0x00;
 0058 2BBE              out 0x3b,R2
 005A                   .dbline 49
 005A           ;  TIMSK = 0x00;
 005A 29BE              out 0x39,R2
 005C                   .dbline 50
 005C           ;  SEI();
 005C 7894              sei
 005E                   .dbline -2
 005E           L15:
 005E                   .dbline 0 ; func end
 005E 0895              ret
 0060                   .dbend
 0060                   .dbfunc e lcd_busy _lcd_busy fV
                        .even
 0060           _lcd_busy::
 0060                   .dbline -1
 0060                   .dbline 55
 0060           ; }
 0060           ; 
 0060           ; /****************** 检查忙信号 *****************/
 0060           ; void lcd_busy()
 0060           ; {
 0060                   .dbline 56
 0060           ;  DDRC = 0X00;                    //PC 口改为输入
 0060 2224              clr R2
 0062 24BA              out 0x14,R2
 0064                   .dbline 57
 0064           ;  PORTD = 0X20;
 0064 80E2              ldi R24,32
 0066 82BB              out 0x12,R24
 0068                   .dbline 58
 0068           ;  delay(10);
 0068 0AE0              ldi R16,10
 006A 10E0              ldi R17,0
 006C C9DF              xcall _delay
 006E                   .dbline 59
 006E           ;  PORTD = 0X30;
 006E 80E3              ldi R24,48
 0070 82BB              out 0x12,R24
 0072           L17:
 0072                   .dbline 60
 0072           L18:
 0072                   .dbline 60
 0072           ;  while(PINC & 0X80);  //lcd 忙,则在此循环
 0072 9F99              sbic 0x13,7
 0074 FECF              rjmp L17
 0076                   .dbline 61
 0076           ;  PORTD = 0X20;
 0076 80E2              ldi R24,32
 0078 82BB              out 0x12,R24
 007A                   .dbline 62
 007A           ;  DDRC = 0XFF;                    //PC 口改为输出
 007A 8FEF              ldi R24,255
 007C 84BB              out 0x14,R24
 007E                   .dbline -2
 007E           L16:
 007E                   .dbline 0 ; func end
 007E 0895              ret
 0080                   .dbend
 0080                   .dbfunc e lcd_cmd _lcd_cmd fV
 0080           ;            cmd -> R20
                        .even
 0080           _lcd_cmd::
 0080 0E940000          xcall push_gset1
 0084 402F              mov R20,R16
 0086                   .dbline -1
 0086                   .dbline 67
 0086           ; }
 0086           ; 
 0086           ; /****************** 写命令函数 *****************/
 0086           ; void lcd_cmd(uchar cmd)
 0086           ; {
 0086                   .dbline 68
 0086           ;  lcd_busy();
 0086 ECDF              xcall _lcd_busy
 0088                   .dbline 69
 0088           ;  PORTD = 0X00;
 0088 2224              clr R2
 008A 22BA              out 0x12,R2
 008C                   .dbline 70
 008C           ;  delay(1);
 008C 01E0              ldi R16,1
 008E 10E0              ldi R17,0
 0090 B7DF              xcall _delay
 0092                   .dbline 71
 0092           ;  PORTC = cmd;                    //PC 口输出命令
 0092 45BB              out 0x15,R20
 0094                   .dbline 72
 0094           ;  delay(1);
 0094 01E0              ldi R16,1
 0096 10E0              ldi R17,0
 0098 B3DF              xcall _delay
 009A                   .dbline 73
 009A           ;  PORTD = 0X10;
 009A 80E1              ldi R24,16
 009C 82BB              out 0x12,R24
 009E                   .dbline 74
 009E           ;  delay(1);                       //延时
 009E 01E0              ldi R16,1
 00A0 10E0              ldi R17,0
 00A2 AEDF              xcall _delay
 00A4                   .dbline 75
 00A4           ;  PORTD = 0X00;
 00A4 2224              clr R2
 00A6 22BA              out 0x12,R2
 00A8                   .dbline -2
 00A8           L20:
 00A8 0E940000          xcall pop_gset1
 00AC                   .dbline 0 ; func end
 00AC 0895              ret
 00AE                   .dbsym r cmd 20 c
 00AE                   .dbend
 00AE                   .dbfunc e lcd_data _lcd_data fV
 00AE           ;           data -> R20
                        .even
 00AE           _lcd_data::
 00AE 0E940000          xcall push_gset1

⌨️ 快捷键说明

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