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

📄 1602.lis

📁 1602LCD_mega16.rar
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module _1602.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\学习工具\单片机程序\1602液晶\1602.c
                        .area code(ram, con, rel)
 0000                   .dbfile D:\学习工具\单片机程序\1602液晶\1602.c
                        .area lit(rom, con, rel)
 0000           _table_1::
 0000 3135313534383431363600    .byte 49,53,49,53,52,56,52,49,54,54,0
 000B                   .dbsym e table_1 _table_1 A[11:11]kc
                        .area data(ram, con, rel)
 0000                   .dbfile D:\学习工具\单片机程序\1602液晶\1602.c
 0000           _table_2::
 0000                   .blkb 2
                        .area idata
 0000 3030              .byte 48,48
                        .area data(ram, con, rel)
 0002                   .dbfile D:\学习工具\单片机程序\1602液晶\1602.c
 0002                   .blkb 2
                        .area idata
 0002 2D30              .byte 45,48
                        .area data(ram, con, rel)
 0004                   .dbfile D:\学习工具\单片机程序\1602液晶\1602.c
 0004                   .blkb 2
                        .area idata
 0004 302D              .byte 48,45
                        .area data(ram, con, rel)
 0006                   .dbfile D:\学习工具\单片机程序\1602液晶\1602.c
 0006                   .blkb 2
                        .area idata
 0006 3030              .byte 48,48
                        .area data(ram, con, rel)
 0008                   .dbfile D:\学习工具\单片机程序\1602液晶\1602.c
 0008                   .dbsym e table_2 _table_2 A[8:8]c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\学习工具\单片机程序\1602液晶\1602.c
 0000                   .dbfunc e WriteDataLCM _WriteDataLCM fV
 0000           ;          WDLCM -> R10
                        .even
 0000           _WriteDataLCM::
 0000 AA92              st -y,R10
 0002 A02E              mov R10,R16
 0004                   .dbline -1
 0004                   .dbline 71
 0004           ; //把明浩的1602的程序移植到了ATMEGA8上,共享一下。
 0004           ; /*============================================================
 0004           ;         使用1602液晶显示的实验例子     明浩  2004/2/27
 0004           ; ==============================================================
 0004           ; 
 0004           ; SMC1602A(16*2)模拟口线接线方式
 0004           ; 连接线图: 
 0004           ;        ---------------------------------------------------
 0004           ;        |LCM-----51   | LCM-----51   | LCM------51      |
 0004           ;        --------------------------------------------------|
 0004           ;        |DB0-----P1.0 | DB4-----P1.4 | RW-------P2.0    |
 0004           ;        |DB1-----P1.1 | DB5-----P1.5 | RS-------P2.1    |
 0004           ;        |DB2-----P1.2 | DB6-----P1.6 | E--------P2.2    |
 0004           ;        |DB3-----P1.3 | DB7-----P1.7 | VLCD接1K电阻到GND|
 0004           ;        ---------------------------------------------------
 0004           ; 
 0004           ; SMC1602A(16*2)模拟口线接线方式
 0004           ; 连接线图: 
 0004           ;        ---------------------------------------------------
 0004           ;        |LCM-----M8  |  LCM-----M8 | LCM------M8    |
 0004           ;        ----------------------------------------------|
 0004           ;        |DB0-----PB0 | DB4-----PB4 | RW-------PD6     |
 0004           ;        |DB1-----PB1 | DB5-----PB5 | RS-------PD7     |
 0004           ;        |DB2-----PB2 | DB6-----PB6 | E--------PD5     |
 0004           ;        |DB3-----PB3 | DB7-----PB7 | VLCD接1K电阻到GND|
 0004           ;        ---------------------------------------------------
 0004           ; ==============================================================*/
 0004           ; #include <iom16V.h>
 0004           ; #include <macros.h>
 0004           ; 
 0004           ; #define CTLPORT PORTD   //模拟总线用了PD口的PD5,PD6,PD7
 0004           ; #define LCD_RS  5       // pin-0 on CTLPORT
 0004           ; #define LCD_RW  6       // pin-1 on CTLPORT
 0004           ; #define LCD_E   7       // pin-2 on CTLPORT
 0004           ; 
 0004           ; #define SET_LCD_E       CTLPORT|=(1<<LCD_E)        // LCD: E = 1
 0004           ; #define CLR_LCD_E       CTLPORT&=~(1<<LCD_E)       // LCD: E = 0
 0004           ; #define SET_LCD_RW      CTLPORT|=(1<<LCD_RW)       // LCD: R/W = 1 (read)
 0004           ; #define CLR_LCD_RW      CTLPORT&=~(1<<LCD_RW)      // LCD: R/W = 0 (write)
 0004           ; #define SET_LCD_RS      CTLPORT|=(1<<LCD_RS)       // LCD: R/S = 1 (data reg)
 0004           ; #define CLR_LCD_RS      CTLPORT&=~(1<<LCD_RS)      // LCD: R/S = 0 (status reg)
 0004           ; 
 0004           ; //#define DataPortOUT     PORTB                // 数据端口PB口
 0004           ; //#define DataPortIN      PINB
 0004           ; #define DataPortfx      DDRB
 0004           ; #define Busy            0x80
 0004           ; #define LCM_Data        PORTB                // 数据端口PB口
 0004           ; #define LCM_Data1       PINB                 // 数据端口PB口
 0004           ; 
 0004           ; #pragma data:code
 0004           ; unsigned char const table_1[] = {"1515484166"};
 0004           ; //unsigned char  table_2[] = {'0','0','-','0','0','-','0','0'}; 
 0004           ; #pragma data:data
 0004           ; unsigned char  table_2[] = {'0','0','-','0','0','-','0','0'}; 
 0004           ; void WriteDataLCM(unsigned char WDLCM);
 0004           ; void WriteCommandLCM(unsigned char WCLCM,unsigned char BuysC);
 0004           ; unsigned char ReadDataLCM(void);
 0004           ; unsigned char ReadStatusLCM(void);
 0004           ; void LCMInit(void);
 0004           ; void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
 0004           ; void DisplayListChar(unsigned char X, unsigned char Y, unsigned char const *DData);
 0004           ; void Delay5Ms(void);
 0004           ; void Delay400Ms(void);
 0004           ; 
 0004           ; 
 0004           ; 
 0004           ; 
 0004           ; 
 0004           ; //写数据
 0004           ; void WriteDataLCM(unsigned char WDLCM)
 0004           ; {
 0004                   .dbline 72
 0004           ;  ReadStatusLCM(); //检测忙
 0004 31D0              xcall _ReadStatusLCM
 0006                   .dbline 73
 0006           ;  LCM_Data = WDLCM;
 0006 A8BA              out 0x18,R10
 0008                   .dbline 74
 0008           ;  SET_LCD_RS;
 0008 959A              sbi 0x12,5
 000A                   .dbline 75
 000A           ;  CLR_LCD_RW;
 000A 9698              cbi 0x12,6
 000C                   .dbline 76
 000C           ;  SET_LCD_RS;
 000C 959A              sbi 0x12,5
 000E                   .dbline 77
 000E           ;  CLR_LCD_RW;
 000E 9698              cbi 0x12,6
 0010                   .dbline 78
 0010           ;  CLR_LCD_E; //若晶振速度太高可以在这后加小的延时
 0010 9798              cbi 0x12,7
 0012                   .dbline 79
 0012           ;  CLR_LCD_E; //延时
 0012 9798              cbi 0x12,7
 0014                   .dbline 80
 0014           ;  CLR_LCD_E;
 0014 9798              cbi 0x12,7
 0016                   .dbline 81
 0016           ;  CLR_LCD_E;
 0016 9798              cbi 0x12,7
 0018                   .dbline 82
 0018           ;  CLR_LCD_E;
 0018 9798              cbi 0x12,7
 001A                   .dbline 83
 001A           ;  CLR_LCD_E;
 001A 9798              cbi 0x12,7
 001C                   .dbline 84
 001C           ;  SET_LCD_E;
 001C 979A              sbi 0x12,7
 001E                   .dbline 85
 001E           ;  SET_LCD_E;
 001E 979A              sbi 0x12,7
 0020                   .dbline -2
 0020           L1:
 0020                   .dbline 0 ; func end
 0020 A990              ld R10,y+
 0022 0895              ret
 0024                   .dbsym r WDLCM 10 c
 0024                   .dbend
 0024                   .dbfunc e WriteCommandLCM _WriteCommandLCM fV
 0024           ;          BuysC -> R12
 0024           ;          WCLCM -> R10
                        .even
 0024           _WriteCommandLCM::
 0024 AA92              st -y,R10
 0026 CA92              st -y,R12
 0028 C22E              mov R12,R18
 002A A02E              mov R10,R16
 002C                   .dbline -1
 002C                   .dbline 90
 002C           ; }
 002C           ; 
 002C           ; //写指令
 002C           ; void WriteCommandLCM(unsigned char WCLCM,unsigned char BuysC) //BuysC为0时忽略忙检测
 002C           ; {
 002C                   .dbline 91
 002C           ;  if (BuysC) ReadStatusLCM(); //根据需要检测忙
 002C CC20              tst R12
 002E 09F0              breq L3
 0030           X0:
 0030                   .dbline 91
 0030 1BD0              xcall _ReadStatusLCM
 0032           L3:
 0032                   .dbline 92
 0032           ;  LCM_Data = WCLCM;
 0032 A8BA              out 0x18,R10
 0034                   .dbline 93
 0034           ;  CLR_LCD_RS;
 0034 9598              cbi 0x12,5
 0036                   .dbline 94
 0036           ;  CLR_LCD_RW; 
 0036 9698              cbi 0x12,6
 0038                   .dbline 95
 0038           ;  CLR_LCD_E;
 0038 9798              cbi 0x12,7
 003A                   .dbline 96
 003A           ;  CLR_LCD_E;
 003A 9798              cbi 0x12,7
 003C                   .dbline 97
 003C           ;  CLR_LCD_E;
 003C 9798              cbi 0x12,7
 003E                   .dbline 98
 003E           ;  CLR_LCD_E;
 003E 9798              cbi 0x12,7
 0040                   .dbline 99
 0040           ;  CLR_LCD_E;
 0040 9798              cbi 0x12,7
 0042                   .dbline 100
 0042           ;  CLR_LCD_E;
 0042 9798              cbi 0x12,7
 0044                   .dbline 101
 0044           ;  SET_LCD_E; 
 0044 979A              sbi 0x12,7
 0046                   .dbline 102
 0046           ;  SET_LCD_E; 
 0046 979A              sbi 0x12,7
 0048                   .dbline -2
 0048           L2:
 0048                   .dbline 0 ; func end
 0048 C990              ld R12,y+
 004A A990              ld R10,y+
 004C 0895              ret
 004E                   .dbsym r BuysC 12 c
 004E                   .dbsym r WCLCM 10 c
 004E                   .dbend
 004E                   .dbfunc e ReadDataLCM _ReadDataLCM fc
                        .even
 004E           _ReadDataLCM::
 004E                   .dbline -1
 004E                   .dbline 107
 004E           ; }
 004E           ; 
 004E           ; //读数据
 004E           ; unsigned char ReadDataLCM(void)
 004E           ; {
 004E                   .dbline 108
 004E           ;  SET_LCD_RS; 
 004E 959A              sbi 0x12,5
 0050                   .dbline 109
 0050           ;  SET_LCD_RW;
 0050 969A              sbi 0x12,6
 0052                   .dbline 110
 0052           ;  CLR_LCD_E;
 0052 9798              cbi 0x12,7
 0054                   .dbline 111
 0054           ;  CLR_LCD_E;
 0054 9798              cbi 0x12,7
 0056                   .dbline 112
 0056           ;  CLR_LCD_E;
 0056 9798              cbi 0x12,7
 0058                   .dbline 113
 0058           ;  CLR_LCD_E;
 0058 9798              cbi 0x12,7
 005A                   .dbline 114
 005A           ;  CLR_LCD_E;
 005A 9798              cbi 0x12,7
 005C                   .dbline 115
 005C           ;  CLR_LCD_E;
 005C 9798              cbi 0x12,7
 005E                   .dbline 116
 005E           ;  CLR_LCD_E;
 005E 9798              cbi 0x12,7
 0060                   .dbline 117
 0060           ;  SET_LCD_E;
 0060 979A              sbi 0x12,7
 0062                   .dbline 118
 0062           ;  SET_LCD_E;
 0062 979A              sbi 0x12,7
 0064                   .dbline 119
 0064           ;  return(LCM_Data);
 0064 08B3              in R16,0x18
 0066                   .dbline -2
 0066           L5:
 0066                   .dbline 0 ; func end
 0066 0895              ret
 0068                   .dbend
 0068                   .dbfunc e ReadStatusLCM _ReadStatusLCM fc
                        .even
 0068           _ReadStatusLCM::
 0068                   .dbline -1
 0068                   .dbline 124
 0068           ; }
 0068           ; 
 0068           ; //读状态
 0068           ; unsigned char ReadStatusLCM(void)
 0068           ; {
 0068                   .dbline 125
 0068           ;  DDRB=0x00; //输入
 0068 2224              clr R2
 006A 27BA              out 0x17,R2
 006C                   .dbline 126
 006C           ;  CLR_LCD_RS;

⌨️ 快捷键说明

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