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

📄 lcd.lis

📁 12C887 的驱动程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00BC                   .dbline 79
 00BC           ;        {      
 00BC           ;          lcddatas(0,0x00);
 00BC           ;          lcddatas(1,0x00);                               //Y地址可以自增
 00BC           ;        }                    
 00BC           ;     }
 00BC           ; }
 00BC           ;                                          
 00BC           ; void LCD_Init(void)                     //LCD初始化子函数
 00BC           ; {
 00BC                   .dbline 81
 00BC           ;   /*首先关闭12864的显示*/
 00BC           ;   check_busy(0);                        //LCD左半屏正在工作,等待......
 00BC 0027              clr R16
 00BE A7DF              xcall _check_busy
 00C0                   .dbline 82
 00C0           ;   L_command=LCD_OFF;                    //先关闭LCD左半屏的显示
 00C0 8EE3              ldi R24,62
 00C2 80930094          sts 37888,R24
 00C6                   .dbline 83
 00C6           ;   check_busy(1);                        //LCD右半屏正在工作,等待......
 00C6 01E0              ldi R16,1
 00C8 A2DF              xcall _check_busy
 00CA                   .dbline 84
 00CA           ;   R_command=LCD_OFF;                    //先关闭LCD右半屏的显示
 00CA 8EE3              ldi R24,62
 00CC 80930098          sts 38912,R24
 00D0                   .dbline 87
 00D0           ;   
 00D0           ;   /*开启12864的显示*/
 00D0           ;   check_busy(0);
 00D0 0027              clr R16
 00D2 9DDF              xcall _check_busy
 00D4                   .dbline 88
 00D4           ;   L_command=LCD_ON;                     //打开LCD左半屏的显示
 00D4 8FE3              ldi R24,63
 00D6 80930094          sts 37888,R24
 00DA                   .dbline 89
 00DA           ;   check_busy(1);
 00DA 01E0              ldi R16,1
 00DC 98DF              xcall _check_busy
 00DE                   .dbline 90
 00DE           ;   R_command=LCD_ON;                     //打开LCD右半屏的显示
 00DE 8FE3              ldi R24,63
 00E0 80930098          sts 38912,R24
 00E4                   .dbline 93
 00E4           ;   
 00E4           ;   /*设置LCD显示的起始行*/
 00E4           ;   check_busy(0);
 00E4 0027              clr R16
 00E6 93DF              xcall _check_busy
 00E8                   .dbline 94
 00E8           ;   L_command=LCD_X;                      //LCD左半屏起始行为0
 00E8 80EC              ldi R24,192
 00EA 80930094          sts 37888,R24
 00EE                   .dbline 95
 00EE           ;   check_busy(1);
 00EE 01E0              ldi R16,1
 00F0 8EDF              xcall _check_busy
 00F2                   .dbline 96
 00F2           ;   R_command=LCD_X;                      //LCD右半屏起始行为0
 00F2 80EC              ldi R24,192
 00F4 80930098          sts 38912,R24
 00F8                   .dbline -2
 00F8           L23:
 00F8                   .dbline 0 ; func end
 00F8 0895              ret
 00FA                   .dbend
 00FA                   .dbfunc e init_devices _init_devices fV
                        .even
 00FA           _init_devices::
 00FA                   .dbline -1
 00FA                   .dbline 100
 00FA           ; }
 00FA           ; 
 00FA           ; void init_devices(void)
 00FA           ; {
 00FA                   .dbline 101
 00FA           ;  XMCRA = 0x00;                          //外部存储器控制
 00FA 2224              clr R2
 00FC 20926D00          sts 109,R2
 0100                   .dbline 102
 0100           ;  XMCRB = 0x00; //外存储高位地址屏蔽,释放端口C
 0100 20926C00          sts 108,R2
 0104                   .dbline 103
 0104           ;  port_init();
 0104 7DDF              xcall _port_init
 0106                   .dbline 104
 0106           ;  MCUCR = 0x80;                          //外部SRAM使能
 0106 80E8              ldi R24,128
 0108 85BF              out 0x35,R24
 010A                   .dbline -2
 010A           L24:
 010A                   .dbline 0 ; func end
 010A 0895              ret
 010C                   .dbend
 010C                   .dbfunc e displaychar_left _displaychar_left fV
 010C           ;              i -> R20
 010C           ;              y -> y+4
 010C           ;              x -> R20
 010C           ;          array -> R22,R23
                        .even
 010C           _displaychar_left::
 010C 0E940000          xcall push_gset2
 0110 422F              mov R20,R18
 0112 B801              movw R22,R16
 0114                   .dbline -1
 0114                   .dbline 110
 0114           ; }
 0114           ; 
 0114           ; /**********************************LCD字符显示函数(8*8)**********************************************/
 0114           ; 
 0114           ; void displaychar_left(uchar *array,uchar x,uchar y)        
 0114           ;  {
 0114                   .dbline 112
 0114           ;   uchar i;
 0114           ;   lcdcommand(0,LCD_PAGE+x);
 0114 242F              mov R18,R20
 0116 2854              subi R18,72    ; addi 184
 0118 0027              clr R16
 011A 8ADF              xcall _lcdcommand
 011C                   .dbline 113
 011C           ;   lcdcommand(0,LCD_Y+y);
 011C 2C81              ldd R18,y+4
 011E 205C              subi R18,192    ; addi 64
 0120 0027              clr R16
 0122 86DF              xcall _lcdcommand
 0124                   .dbline 114
 0124           ;   for(i=0;i<8;i++)
 0124 4427              clr R20
 0126 08C0              xjmp L29
 0128           L26:
 0128                   .dbline 115
 0128                   .dbline 116
 0128 E42F              mov R30,R20
 012A FF27              clr R31
 012C E60F              add R30,R22
 012E F71F              adc R31,R23
 0130 2081              ldd R18,z+0
 0132 0027              clr R16
 0134 8FDF              xcall _lcddatas
 0136                   .dbline 117
 0136           L27:
 0136                   .dbline 114
 0136 4395              inc R20
 0138           L29:
 0138                   .dbline 114
 0138 4830              cpi R20,8
 013A B0F3              brlo L26
 013C                   .dbline -2
 013C           L25:
 013C 0E940000          xcall pop_gset2
 0140                   .dbline 0 ; func end
 0140 0895              ret
 0142                   .dbsym r i 20 c
 0142                   .dbsym l y 4 c
 0142                   .dbsym r x 20 c
 0142                   .dbsym r array 22 pc
 0142                   .dbend
 0142                   .dbfunc e displaychar_right _displaychar_right fV
 0142           ;              i -> R20
 0142           ;              y -> y+4
 0142           ;              x -> R20
 0142           ;          array -> R22,R23
                        .even
 0142           _displaychar_right::
 0142 0E940000          xcall push_gset2
 0146 422F              mov R20,R18
 0148 B801              movw R22,R16
 014A                   .dbline -1
 014A                   .dbline 122
 014A           ;     {
 014A           ;        lcddatas(0,*(array+i));
 014A           ;       }
 014A           ;  }
 014A           ; 
 014A           ; 
 014A           ; void displaychar_right(uchar *array,uchar x,uchar y)        
 014A           ; {
 014A                   .dbline 124
 014A           ;   uchar i;
 014A           ;   lcdcommand(1,LCD_PAGE+x);
 014A 242F              mov R18,R20
 014C 2854              subi R18,72    ; addi 184
 014E 01E0              ldi R16,1
 0150 6FDF              xcall _lcdcommand
 0152                   .dbline 125
 0152           ;   lcdcommand(1,LCD_Y+y);
 0152 2C81              ldd R18,y+4
 0154 205C              subi R18,192    ; addi 64
 0156 01E0              ldi R16,1
 0158 6BDF              xcall _lcdcommand
 015A                   .dbline 126
 015A           ;   for(i=0;i<8;i++)
 015A 4427              clr R20
 015C 08C0              xjmp L34
 015E           L31:
 015E                   .dbline 127
 015E                   .dbline 128
 015E E42F              mov R30,R20
 0160 FF27              clr R31
 0162 E60F              add R30,R22
 0164 F71F              adc R31,R23
 0166 2081              ldd R18,z+0
 0168 01E0              ldi R16,1
 016A 74DF              xcall _lcddatas
 016C                   .dbline 129
 016C           L32:
 016C                   .dbline 126
 016C 4395              inc R20
 016E           L34:
 016E                   .dbline 126
 016E 4830              cpi R20,8
 0170 B0F3              brlo L31
 0172                   .dbline -2
 0172           L30:
 0172 0E940000          xcall pop_gset2
 0176                   .dbline 0 ; func end
 0176 0895              ret
 0178                   .dbsym r i 20 c
 0178                   .dbsym l y 4 c
 0178                   .dbsym r x 20 c
 0178                   .dbsym r array 22 pc
 0178                   .dbend
 0178                   .dbfunc e display_char _display_char fV
 0178           ;           heng -> R10
 0178           ;           zong -> R22
 0178           ;         array2 -> R20,R21
 0178           ;         array1 -> R12,R13
                        .even
 0178           _display_char::
 0178 0E940000          xcall push_gset4
 017C A901              movw R20,R18
 017E 6801              movw R12,R16
 0180 2197              sbiw R28,1
 0182 6985              ldd R22,y+9
 0184 AB84              ldd R10,y+11
 0186                   .dbline -1
 0186                   .dbline 134
 0186           ;      {
 0186           ;         lcddatas(1,*(array+i));
 0186           ;         }
 0186           ; }
 0186           ; 
 0186           ;      
 0186           ; void display_char(uchar*array1,uchar*array2,uchar zong,uchar heng)         
 0186           ; {
 0186                   .dbline 135
 0186           ;   if((heng>=0)&&(heng<=7))       
 0186 8A2D              mov R24,R10
 0188 8030              cpi R24,0
 018A 80F0              brlo L36
 018C 87E0              ldi R24,7
 018E 8A15              cp R24,R10
 0190 68F0              brlo L36
 0192                   .dbline 136
 0192           ;       {displaychar_left(array1,zong,heng*8);  displaychar_left(array2,zong+1,heng*8);}
 0192                   .dbline 136
 0192 88E0              ldi R24,8
 0194 8A9D              mul R24,R10
 0196 0882              std y+0,R0
 0198 262F              mov R18,R22
 019A 8601              movw R16,R12
 019C B7DF              xcall _displaychar_left
 019E                   .dbline 136
 019E 88E0              ldi R24,8
 01A0 8A9D              mul R24,R10
 01A2 0882              std y+0,R0
 01A4 262F              mov R18,R22
 01A6 2F5F              subi R18,255    ; addi 1
 01A8 8A01              movw R16,R20
 01AA B0DF              xcall _displaychar_left
 01AC                   .dbline 136
 01AC           L36:
 01AC                   .dbline 138
 01AC 8A2D              mov R24,R10

⌨️ 快捷键说明

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