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

📄 lcd_driver.lis

📁 AVR控制12864液晶画圆弧,在AVR单片机的控制下完成圆弧的绘制。
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module LCD_DRIVER.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\ygksb0108\programme2_can_run\LCD_DRIVER.c
 0000                   .dbfunc e lcd_out_dat_l _lcd_out_dat_l fV
 0000           ;            dat -> R20
                        .even
 0000           _lcd_out_dat_l::
 0000 0E940000          xcall push_gset1
 0004 402F              mov R20,R16
 0006                   .dbline -1
 0006                   .dbline 18
 0006           ; //**********************************************************
 0006           ; //本文件实现了用于驱动KS0108B/HD61202的基本常量和
 0006           ; //函数,用于基本的读写操作(没有实现读的函数,
 0006           ; //当然你可以自己实现).
 0006           ; //              ---北京交通大学电气学院 杨罡 2008.8
 0006           ; //**********************************************************
 0006           ; 
 0006           ; #include  "LCD_DRIVER.H"
 0006           ; 
 0006           ; //***********************************************************
 0006           ; //if you want it to run on the protues then define this below
 0006           ; //***********************************************************
 0006           ; #define debug_protues
 0006           ; //***********************************************************
 0006           ; 
 0006           ; void lcd_out_dat_l( unsigned char dat)
 0006           ; 
 0006           ; {    
 0006                   .dbline 19
 0006           ;      choose_left_screen();
 0006 6ED0              xcall _choose_left_screen
 0008                   .dbline 20
 0008           ;      LCD_DATA_MODE();   //D_I = CMD_MODE;
 0008 C29A              sbi 0x18,2
 000A                   .dbline 21
 000A           ;        LCD_WRITE_MODE();  //R_W=WRITE_MODE;
 000A C398              cbi 0x18,3
 000C                   .dbline 22
 000C           ;        LCD_E_HIGH();      //E=1;
 000C C49A              sbi 0x18,4
 000E                   .dbline 23
 000E           ;        DATA_PORT=dat;
 000E 4BBB              out 0x1b,R20
 0010                   .dbline 24
 0010           ;        _delay_us(2);
 0010 02E0              ldi R16,2
 0012 0E940000          xcall __delay_us
 0016                   .dbline 25
 0016           ;        LCD_E_LOW();       //E=0;
 0016 C498              cbi 0x18,4
 0018                   .dbline 26
 0018           ;         _delay_us(2);
 0018 02E0              ldi R16,2
 001A 0E940000          xcall __delay_us
 001E                   .dbline -2
 001E           L1:
 001E 0E940000          xcall pop_gset1
 0022                   .dbline 0 ; func end
 0022 0895              ret
 0024                   .dbsym r dat 20 c
 0024                   .dbend
 0024                   .dbfunc e lcd_out_dat_r _lcd_out_dat_r fV
 0024           ;            dat -> R20
                        .even
 0024           _lcd_out_dat_r::
 0024 0E940000          xcall push_gset1
 0028 402F              mov R20,R16
 002A                   .dbline -1
 002A                   .dbline 30
 002A           ; }
 002A           ; 
 002A           ; void lcd_out_dat_r(  unsigned char dat)
 002A           ; {    
 002A                   .dbline 31
 002A           ;      choose_right_screen() ;
 002A 5FD0              xcall _choose_right_screen
 002C                   .dbline 32
 002C           ;      LCD_DATA_MODE();   //D_I = CMD_MODE;
 002C C29A              sbi 0x18,2
 002E                   .dbline 33
 002E           ;        LCD_WRITE_MODE();  //R_W=WRITE_MODE;
 002E C398              cbi 0x18,3
 0030                   .dbline 34
 0030           ;        LCD_E_HIGH();      //E=1;
 0030 C49A              sbi 0x18,4
 0032                   .dbline 35
 0032           ;        DATA_PORT=dat;
 0032 4BBB              out 0x1b,R20
 0034                   .dbline 36
 0034           ;         _delay_us(2);
 0034 02E0              ldi R16,2
 0036 0E940000          xcall __delay_us
 003A                   .dbline 37
 003A           ;        LCD_E_LOW();       //E=0;
 003A C498              cbi 0x18,4
 003C                   .dbline 38
 003C           ;         _delay_us(2);
 003C 02E0              ldi R16,2
 003E 0E940000          xcall __delay_us
 0042                   .dbline -2
 0042           L2:
 0042 0E940000          xcall pop_gset1
 0046                   .dbline 0 ; func end
 0046 0895              ret
 0048                   .dbsym r dat 20 c
 0048                   .dbend
 0048                   .dbfunc e lcd_out_ctl_l _lcd_out_ctl_l fV
 0048           ;            cmd -> R20
                        .even
 0048           _lcd_out_ctl_l::
 0048 0E940000          xcall push_gset1
 004C 402F              mov R20,R16
 004E                   .dbline -1
 004E                   .dbline 41
 004E           ; }
 004E           ; void lcd_out_ctl_l( unsigned char cmd)
 004E           ; {
 004E                   .dbline 42
 004E           ;      choose_left_screen();
 004E 4AD0              xcall _choose_left_screen
 0050                   .dbline 43
 0050           ;      LCD_CMD_MODE();    //D_I = CMD_MODE;
 0050 C298              cbi 0x18,2
 0052                   .dbline 44
 0052           ;        LCD_WRITE_MODE();  //R_W=WRITE_MODE;
 0052 C398              cbi 0x18,3
 0054                   .dbline 45
 0054           ;        LCD_E_HIGH();      //E=1;
 0054 C49A              sbi 0x18,4
 0056                   .dbline 46
 0056           ;        DATA_PORT=cmd;
 0056 4BBB              out 0x1b,R20
 0058                   .dbline 47
 0058           ;         _delay_us(2);
 0058 02E0              ldi R16,2
 005A 0E940000          xcall __delay_us
 005E                   .dbline 48
 005E           ;        LCD_E_LOW();       //E=0;
 005E C498              cbi 0x18,4
 0060                   .dbline 49
 0060           ;       _delay_us(2);
 0060 02E0              ldi R16,2
 0062 0E940000          xcall __delay_us
 0066                   .dbline -2
 0066           L3:
 0066 0E940000          xcall pop_gset1
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbsym r cmd 20 c
 006C                   .dbend
 006C                   .dbfunc e lcd_out_ctl_r _lcd_out_ctl_r fV
 006C           ;            cmd -> R20
                        .even
 006C           _lcd_out_ctl_r::
 006C 0E940000          xcall push_gset1
 0070 402F              mov R20,R16
 0072                   .dbline -1
 0072                   .dbline 52
 0072           ; }
 0072           ; void lcd_out_ctl_r( unsigned char cmd)
 0072           ; {    
 0072                   .dbline 53
 0072           ;      choose_right_screen() ;
 0072 3BD0              xcall _choose_right_screen
 0074                   .dbline 54
 0074           ;      LCD_CMD_MODE();    //D_I = CMD_MODE;
 0074 C298              cbi 0x18,2
 0076                   .dbline 55
 0076           ;        LCD_WRITE_MODE();  //R_W=WRITE_MODE;
 0076 C398              cbi 0x18,3
 0078                   .dbline 56
 0078           ;        LCD_E_HIGH();      //E=1;
 0078 C49A              sbi 0x18,4
 007A                   .dbline 57
 007A           ;        DATA_PORT=cmd;
 007A 4BBB              out 0x1b,R20
 007C                   .dbline 58
 007C           ;         _delay_us(2);
 007C 02E0              ldi R16,2
 007E 0E940000          xcall __delay_us
 0082                   .dbline 59
 0082           ;        LCD_E_LOW();       //E=0;
 0082 C498              cbi 0x18,4
 0084                   .dbline 60
 0084           ;       _delay_us(2);
 0084 02E0              ldi R16,2
 0086 0E940000          xcall __delay_us
 008A                   .dbline -2
 008A           L4:
 008A 0E940000          xcall pop_gset1
 008E                   .dbline 0 ; func end
 008E 0895              ret
 0090                   .dbsym r cmd 20 c
 0090                   .dbend
 0090                   .dbfunc e lcd_out_ctl _lcd_out_ctl fV
 0090           ;          nctrl -> R22
 0090           ;            cmd -> R20
                        .even
 0090           _lcd_out_ctl::
 0090 0E940000          xcall push_gset2
 0094 622F              mov R22,R18
 0096 402F              mov R20,R16
 0098                   .dbline -1
 0098                   .dbline 63
 0098           ; }
 0098           ; void lcd_out_ctl( unsigned char cmd,  unsigned char nctrl)
 0098           ; {
 0098                   .dbline 64
 0098           ;       if(nctrl==1)lcd_out_ctl_l(cmd);
 0098 6130              cpi R22,1
 009A 11F4              brne L6
 009C                   .dbline 64
 009C 042F              mov R16,R20
 009E D4DF              xcall _lcd_out_ctl_l
 00A0           L6:
 00A0                   .dbline 65
 00A0           ;         if(nctrl==2)lcd_out_ctl_r(cmd);
 00A0 6230              cpi R22,2
 00A2 11F4              brne L8
 00A4                   .dbline 65
 00A4 042F              mov R16,R20
 00A6 E2DF              xcall _lcd_out_ctl_r
 00A8           L8:
 00A8                   .dbline 66
 00A8 6330              cpi R22,3
 00AA 21F4              brne L10
 00AC                   .dbline 66
 00AC                   .dbline 67
 00AC 042F              mov R16,R20
 00AE CCDF              xcall _lcd_out_ctl_l
 00B0                   .dbline 68
 00B0 042F              mov R16,R20
 00B2 DCDF              xcall _lcd_out_ctl_r
 00B4                   .dbline 69
 00B4           L10:
 00B4                   .dbline -2
 00B4           L5:
 00B4 0E940000          xcall pop_gset2
 00B8                   .dbline 0 ; func end
 00B8 0895              ret
 00BA                   .dbsym r nctrl 22 c
 00BA                   .dbsym r cmd 20 c
 00BA                   .dbend
 00BA                   .dbfunc e lcd_out_dat _lcd_out_dat fV
 00BA           ;          nctrl -> R22
 00BA           ;            dat -> R20
                        .even
 00BA           _lcd_out_dat::
 00BA 0E940000          xcall push_gset2
 00BE 622F              mov R22,R18
 00C0 402F              mov R20,R16
 00C2                   .dbline -1
 00C2                   .dbline 72
 00C2           ;         if(nctrl==3){
 00C2           ;                       lcd_out_ctl_l(cmd);
 00C2           ;                                       lcd_out_ctl_r(cmd);
 00C2           ;                                  }
 00C2           ; }
 00C2           ; void lcd_out_dat( unsigned char dat,  unsigned char nctrl)
 00C2           ; {
 00C2                   .dbline 73
 00C2           ;      if(nctrl==1)lcd_out_dat_l(dat);
 00C2 6130              cpi R22,1
 00C4 11F4              brne L13
 00C6                   .dbline 73
 00C6 042F              mov R16,R20
 00C8 9BDF              xcall _lcd_out_dat_l
 00CA           L13:
 00CA                   .dbline 74
 00CA           ;         if(nctrl==2)lcd_out_dat_r(dat);
 00CA 6230              cpi R22,2
 00CC 11F4              brne L15
 00CE                   .dbline 74
 00CE 042F              mov R16,R20
 00D0 A9DF              xcall _lcd_out_dat_r
 00D2           L15:
 00D2                   .dbline 75
 00D2 6330              cpi R22,3
 00D4 21F4              brne L17
 00D6                   .dbline 75
 00D6                   .dbline 76
 00D6 042F              mov R16,R20
 00D8 93DF              xcall _lcd_out_dat_l
 00DA                   .dbline 77
 00DA 042F              mov R16,R20
 00DC A3DF              xcall _lcd_out_dat_r
 00DE                   .dbline 78
 00DE           L17:
 00DE                   .dbline -2
 00DE           L12:
 00DE 0E940000          xcall pop_gset2
 00E2                   .dbline 0 ; func end
 00E2 0895              ret
 00E4                   .dbsym r nctrl 22 c
 00E4                   .dbsym r dat 20 c
 00E4                   .dbend
 00E4                   .dbfunc e choose_left_screen _choose_left_screen fV
                        .even
 00E4           _choose_left_screen::
 00E4                   .dbline -1
 00E4                   .dbline 81
 00E4           ;         if(nctrl==3){
 00E4           ;                      lcd_out_dat_l(dat);
 00E4           ;                                  lcd_out_dat_r(dat);
 00E4           ;                                 }
 00E4           ; }
 00E4           ; void   choose_left_screen(void)   
 00E4           ; { 
 00E4                   .dbline 86
 00E4           ;    #ifndef debug_protues
 00E4           ;   LCD_LEFT_SELECT();
 00E4           ;   LCD_RIGHT_STOP();
 00E4           ;   #else
 00E4           ;   LCD_LEFT_STOP();
 00E4 C09A              sbi 0x18,0
 00E6                   .dbline 87
 00E6           ;   LCD_RIGHT_SELECT();
 00E6 C198              cbi 0x18,1
 00E8                   .dbline -2
 00E8           L19:
 00E8                   .dbline 0 ; func end
 00E8 0895              ret
 00EA                   .dbend
 00EA                   .dbfunc e choose_right_screen _choose_right_screen fV
                        .even
 00EA           _choose_right_screen::
 00EA                   .dbline -1
 00EA                   .dbline 91
 00EA           ;   #endif
 00EA           ; }
 00EA           ; void   choose_right_screen(void)  
 00EA           ; {
 00EA                   .dbline 96
 00EA           ;   #ifndef debug_protues
 00EA           ;   LCD_LEFT_STOP();
 00EA           ;   LCD_RIGHT_SELECT();
 00EA           ;   #else
 00EA           ;   LCD_LEFT_SELECT();
 00EA C098              cbi 0x18,0
 00EC                   .dbline 97
 00EC           ;   LCD_RIGHT_STOP();
 00EC C19A              sbi 0x18,1
 00EE                   .dbline -2
 00EE           L20:
 00EE                   .dbline 0 ; func end
 00EE 0895              ret
 00F0                   .dbend
 00F0                   .dbfunc e choose_full_screen _choose_full_screen fV
                        .even
 00F0           _choose_full_screen::
 00F0                   .dbline -1
 00F0                   .dbline 101
 00F0           ;   #endif
 00F0           ; }
 00F0           ; void   choose_full_screen(void)  
 00F0           ; {
 00F0                   .dbline 102
 00F0           ;   LCD_LEFT_SELECT();
 00F0 C098              cbi 0x18,0
 00F2                   .dbline 103
 00F2           ;   LCD_RIGHT_SELECT();
 00F2 C198              cbi 0x18,1
 00F4                   .dbline -2
 00F4           L21:
 00F4                   .dbline 0 ; func end
 00F4 0895              ret

⌨️ 快捷键说明

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