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

📄 12864.lis

📁 iccavr12864液晶程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module _12864.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\M16开发板实验教程\icc-avr\12864\12864.c
 0000                   .dbfunc e LCD_init _LCD_init fV
                        .even
 0000           _LCD_init::
 0000                   .dbline -1
 0000                   .dbline 19
 0000           ; #include "iom16v.h"
 0000           ; #include "macros.h"
 0000           ; #include "12864.h"
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; /**********************************************************
 0000           ; RT12864M LCD DISPLAY
 0000           ; 建立时间:2005年2月1号
 0000           ; 修改日期:2005年2月1号
 0000           ; 
 0000           ; **********************************************************/
 0000           ; extern void delay_nus(unsigned int n);
 0000           ; extern void delay_nms(unsigned int n);
 0000           ; 
 0000           ; 
 0000           ; void LCD_init(void)
 0000           ;   { 
 0000                   .dbline 20
 0000           ;       LCD_EN_PORT &= ~LCD_EN; //EN=0
 0000 C198              cbi 0x18,1
 0002                   .dbline 21
 0002           ;     delay_nms(1);
 0002 01E0              ldi R16,1
 0004 10E0              ldi R17,0
 0006 A6D0              xcall _delay_nms
 0008                   .dbline 22
 0008           ;       LCD_write_char(0x34,0);
 0008 2227              clr R18
 000A 3327              clr R19
 000C 04E3              ldi R16,52
 000E 10E0              ldi R17,0
 0010 1CD0              xcall _LCD_write_char
 0012                   .dbline 23
 0012           ;       delay_nms(8);
 0012 08E0              ldi R16,8
 0014 10E0              ldi R17,0
 0016 9ED0              xcall _delay_nms
 0018                   .dbline 24
 0018           ;       LCD_write_char(0x30,0);
 0018 2227              clr R18
 001A 3327              clr R19
 001C 00E3              ldi R16,48
 001E 10E0              ldi R17,0
 0020 14D0              xcall _LCD_write_char
 0022                   .dbline 25
 0022           ;       delay_nms(8);
 0022 08E0              ldi R16,8
 0024 10E0              ldi R17,0
 0026 96D0              xcall _delay_nms
 0028                   .dbline 26
 0028           ;     LCD_write_char(0x0C,0);      //显示清屏
 0028 2227              clr R18
 002A 3327              clr R19
 002C 0CE0              ldi R16,12
 002E 10E0              ldi R17,0
 0030 0CD0              xcall _LCD_write_char
 0032                   .dbline 27
 0032           ;       delay_nms(8);
 0032 08E0              ldi R16,8
 0034 10E0              ldi R17,0
 0036 8ED0              xcall _delay_nms
 0038                   .dbline 28
 0038           ;     LCD_write_char(0x01,0);      //显示开
 0038 2227              clr R18
 003A 3327              clr R19
 003C 01E0              ldi R16,1
 003E 10E0              ldi R17,0
 0040 04D0              xcall _LCD_write_char
 0042                   .dbline 29
 0042           ;       delay_nms(8);
 0042 08E0              ldi R16,8
 0044 10E0              ldi R17,0
 0046 86D0              xcall _delay_nms
 0048                   .dbline -2
 0048           L1:
 0048                   .dbline 0 ; func end
 0048 0895              ret
 004A                   .dbend
 004A                   .dbfunc e LCD_write_char _LCD_write_char fV
 004A           ;      data_temp -> R22,R23
 004A           ;   command_temp -> R20,R21
 004A           ;           data -> R12,R13
 004A           ;        command -> R10,R11
                        .even
 004A           _LCD_write_char::
 004A 0E940000          xcall push_gset4
 004E 6901              movw R12,R18
 0050 5801              movw R10,R16
 0052                   .dbline -1
 0052                   .dbline 47
 0052           ;   
 0052           ;   }
 0052           ; 
 0052           ; 
 0052           ; 
 0052           ; /*-----------------------------------------------------------------------
 0052           ; LCD_write_char    : 中英文字符串显示函数
 0052           ; LCD_write函数功能:当command=0时,向LCD写入数据,否则向LCD写
 0052           ;                    入命令
 0052           ; 输入参数:*s      :中英文字符串指针;
 0052           ;           X、Y    : 显示字符串的位置,X:0-15,Y:0-1
 0052           ;                     LCD第一行显示寄存器地址:0X80-0X87
 0052           ;                                       LCD第二行显示寄存器地址:0X90-0X9F
 0052           ;                                       LCD第三行显示寄存器地址:0X88-0X8F
 0052           ;                     LCD第四行显示寄存器地址:0X98-0X9F
 0052           ; -----------------------------------------------------------------------*/
 0052           ; void LCD_write_char(unsigned command,unsigned  data)
 0052           ;   {
 0052                   .dbline 50
 0052           ;    unsigned  command_temp;
 0052           ;       unsigned  data_temp;        
 0052           ;     command_temp = command;
 0052 A501              movw R20,R10
 0054                   .dbline 51
 0054           ;     data_temp = data;
 0054 B601              movw R22,R12
 0056                   .dbline 52
 0056           ;      if (command == 0)
 0056 4030              cpi R20,0
 0058 4507              cpc R20,R21
 005A 61F4              brne L3
 005C           X0:
 005C                   .dbline 53
 005C           ;       {
 005C                   .dbline 54
 005C           ;         LCD_DATA_PORT = data_temp;   //send 8bit 
 005C 6BBB              out 0x1b,R22
 005E                   .dbline 56
 005E           ;        
 005E           ;         LCD_RS_PORT |= LCD_RS;  //RS=1       
 005E C09A              sbi 0x18,0
 0060                   .dbline 58
 0060           ;    
 0060           ;          LCD_EN_PORT &= ~LCD_EN; //EN=0
 0060 C198              cbi 0x18,1
 0062                   .dbline 59
 0062           ;          delay_nus(2);
 0062 02E0              ldi R16,2
 0064 10E0              ldi R17,0
 0066 5DD0              xcall _delay_nus
 0068                   .dbline 60
 0068           ;         LCD_EN_PORT |= LCD_EN;    //EN=1
 0068 C19A              sbi 0x18,1
 006A                   .dbline 61
 006A           ;     delay_nus(500);
 006A 04EF              ldi R16,500
 006C 11E0              ldi R17,1
 006E 59D0              xcall _delay_nus
 0070                   .dbline 62
 0070           ;     LCD_EN_PORT &= ~LCD_EN;   //EN=0
 0070 C198              cbi 0x18,1
 0072                   .dbline 63
 0072           ;       }
 0072 0BC0              xjmp L4
 0074           L3:
 0074                   .dbline 65
 0074                   .dbline 66
 0074 4BBB              out 0x1b,R20
 0076                   .dbline 68
 0076 C098              cbi 0x18,0
 0078                   .dbline 69
 0078 C198              cbi 0x18,1
 007A                   .dbline 70
 007A 02E0              ldi R16,2
 007C 10E0              ldi R17,0
 007E 51D0              xcall _delay_nus
 0080                   .dbline 71
 0080 C19A              sbi 0x18,1
 0082                   .dbline 72
 0082 04EF              ldi R16,500
 0084 11E0              ldi R17,1
 0086 4DD0              xcall _delay_nus
 0088                   .dbline 73
 0088 C198              cbi 0x18,1
 008A                   .dbline 74
 008A           L4:
 008A                   .dbline -2
 008A           L2:
 008A 0E940000          xcall pop_gset4
 008E                   .dbline 0 ; func end
 008E 0895              ret
 0090                   .dbsym r data_temp 22 i
 0090                   .dbsym r command_temp 20 i
 0090                   .dbsym r data 12 i
 0090                   .dbsym r command 10 i
 0090                   .dbend
 0090                   .dbfunc e LCD_set_xy _LCD_set_xy fV
 0090           ;        address -> R20
 0090           ;              y -> R20
 0090           ;              x -> R22
                        .even
 0090           _LCD_set_xy::
 0090 0E940000          xcall push_gset2
 0094 422F              mov R20,R18
 0096 602F              mov R22,R16
 0098                   .dbline -1
 0098                   .dbline 90
 0098           ;     else 
 0098           ;       {
 0098           ;         LCD_DATA_PORT = command_temp;//send command
 0098           ;         
 0098           ;         LCD_RS_PORT &= ~LCD_RS; //RS=0     
 0098           ;         LCD_EN_PORT &= ~LCD_EN;  //EN=0
 0098           ;         delay_nus(2); 
 0098           ;         LCD_EN_PORT |= LCD_EN;    //EN=1
 0098           ;       delay_nus(500);
 0098           ;       LCD_EN_PORT &= ~LCD_EN;   //EN=0
 0098           ;       }
 0098           ;        
 0098           ;   }
 0098           ; 
 0098           ; 
 0098           ; /*-----------------------------------------------------------------------
 0098           ; LCD_set_xy        : 设置LCD显示的起始位置
 0098           ; 
 0098           ; 输入参数:x、y    : 显示字符串的位置,X:0-15,Y:0-3
 0098           ;                     LCD第一行显示寄存器地址:0X80-0X8F
 0098           ;                     LCD第一行显示寄存器地址:0XC0-0XCF
 0098           ; 
 0098           ; 编写日期          :2005
 0098           ; 最后修改日期      :2005      
 0098           ; -----------------------------------------------------------------------*/
 0098           ; void LCD_set_xy( unsigned char x, unsigned char y )
 0098           ;   {
 0098                   .dbline 92
 0098 5527              clr R21
 009A 4030              cpi R20,0
 009C 4507              cpc R20,R21
 009E 69F0              breq L9
 00A0           X1:
 00A0 4130              cpi R20,1
 00A2 E0E0              ldi R30,0
 00A4 5E07              cpc R21,R30
 00A6 61F0              breq L10
 00A8 4230              cpi R20,2
 00AA E0E0              ldi R30,0
 00AC 5E07              cpc R21,R30
 00AE 59F0              breq L11
 00B0 4330              cpi R20,3
 00B2 E0E0              ldi R30,0
 00B4 5E07              cpc R21,R30
 00B6 51F0              breq L12
 00B8 0CC0              xjmp L6
 00BA           X2:
 00BA                   .dbline 92
 00BA           ;     unsigned char address;
 00BA           ;       switch(y){
 00BA           L9:
 00BA                   .dbline 94
 00BA           ;       case 0: 
 00BA           ;          address = 0x80 + x;
 00BA 462F              mov R20,R22

⌨️ 快捷键说明

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