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

📄 lcd.lis

📁 为苏州一家公司所做的的恒温恒湿车间控制 系统
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0339           ; *--------------------------------------------*/
 0339           ; void LcdShGrClr(void)
 0339           ; {  
 0339                   .dbline 144
 0339           ;   unsigned char Px,y;//行页号,列坐标的循环变量
 0339           ;   Wtite_Command(0b00110110);//扩展指令,绘图开
 0339 A636              lda #54
 033B 87                psha
 033C CD0419            jsr _Wtite_Command
 033F A701              ais #1
 0341 95                tsx
 0342                   .dbline 146
 0342           ;   //[清图形显示屏(清GDRAM)]
 0342           ;   for(y=0;y<=31;y++)
 0342 7F                clr ,X
 0343 2020              bra L47
 0345           L44:
 0345                   .dbline 147
 0345           ;      for(Px=0;Px<=15;Px++)
 0345 6F01              clr 1,X
 0347 2015              bra L51
 0349           L48:
 0349                   .dbline 148
 0349 450000            ldhx #0
 034C 89                pshx
 034D 8B                pshh
 034E 95                tsx
 034F AF02              aix #2
 0351 E601              lda 1,X
 0353 87                psha
 0354 F6                lda ,X
 0355 87                psha
 0356 CD03E3            jsr _LcdShGr16P
 0359 A704              ais #4
 035B 95                tsx
 035C           L49:
 035C                   .dbline 147
 035C 6C01              inc 1,X
 035E           L51:
 035E                   .dbline 147
 035E E601              lda 1,X
 0360 A10F              cmp #15
 0362 23E5              bls L48
 0364           L45:
 0364                   .dbline 146
 0364 7C                inc ,X
 0365           L47:
 0365                   .dbline 146
 0365 F6                lda ,X
 0366 A11F              cmp #31
 0368 23DB              bls L44
 036A                   .dbline 149
 036A           ;         LcdShGr16P(y,Px,0);  //写入0为清屏
 036A           ;   Wtite_Command(0b00110000);//基本指令
 036A A630              lda #48
 036C 87                psha
 036D CD0419            jsr _Wtite_Command
 0370 A701              ais #1
 0372 95                tsx
 0373                   .dbline -2
 0373           L43:
 0373 A702              ais #2
 0375                   .dbline 0 ; func end
 0375 81                rts
 0376                   .dbsym l y 0 c
 0376                   .dbsym l Px 1 c
 0376                   .dbend
 0376                   .dbfunc e LcdShGr1P _LcdShGr1P fV
 0376           ;          value -> 0,X
 0376           ;              x -> 5,X
 0376           ;              y -> 4,X
 0376           _LcdShGr1P::
 0376                   .dbline -1
 0376 A7FE              ais #-2
 0378 95                tsx
 0379                   .dbline 158
 0379           ; }
 0379           ; 
 0379           ; /*LcdShGr1P:在Lcd的指定位置上画一个点------------------*
 0379           ; *功  能:在Lcd的指定位置上画一个点                      *
 0379           ; *参  数:y为纵坐标(0-63),x为横坐标(0-127)              *
 0379           ; *返  回:无                                             *
 0379           ; *-----------------------------------------------------*/
 0379           ; void LcdShGr1P(unsigned char y,unsigned char x)
 0379           ; {
 0379                   .dbline 159
 0379           ;   unsigned int value=32768;//初始值为0b1000000000000000
 0379 A680              lda #-128
 037B F7                sta ,X
 037C A600              lda #0
 037E E701              sta 1,X
 0380                   .dbline 160
 0380           ;   if(y>=32)                //第三四行必须调整x和y坐标
 0380 E604              lda 4,X
 0382 A120              cmp #32
 0384 250A              blo L53
 0386                   .dbline 161
 0386           ;      {y=y-32;x=x+16*8;}
 0386                   .dbline 161
 0386 A020              sub #32
 0388 E704              sta 4,X
 038A                   .dbline 161
 038A E605              lda 5,X
 038C AB80              add #-128
 038E E705              sta 5,X
 0390                   .dbline 161
 0390           L53:
 0390                   .dbline 162
 0390           ;   value>>=(x-x/16*16);     //写入的16位数据
 0390 3F00              clr *__r0
 0392 E605              lda 5,X
 0394 B700              sta *__rlo
 0396 4E0000            mov *__r0,*__rhi
 0399 A610              lda #16
 039B 87                psha
 039C 4F                clra
 039D 87                psha
 039E CD0000            jsr __divmod16s
 03A1 A702              ais #2
 03A3 4E0000            mov *__rhi,*__r0
 03A6 4E0000            mov *__rlo,*__r1
 03A9 A604              lda #4
 03AB           X5:
 03AB 3800              lsl *__r1
 03AD 3900              rol *__r0
 03AF 4BFA              dbnza X5
 03B1 3F00              clr *__r2
 03B3 E605              lda 5,X
 03B5 B000              sub *__r1
 03B7 B700              sta *__r1
 03B9 B600              lda *__r2
 03BB B200              sbc *__r0
 03BD B600              lda *__r1
 03BF A40F              and #15
 03C1 2705              beq X7
 03C3           X6:
 03C3 74                lsr ,X
 03C4 6601              ror 1,X
 03C6 4BFB              dbnza X6
 03C8           X7:
 03C8                   .dbline 163
 03C8           ;   LcdShGr16P(y,x/16,value);//显示相应的点
 03C8 E601              lda 1,X
 03CA 87                psha
 03CB F6                lda ,X
 03CC 87                psha
 03CD E605              lda 5,X
 03CF AE10              ldx #16
 03D1 8C                clrh
 03D2 52                div
 03D3 95                tsx
 03D4 AF02              aix #2
 03D6 87                psha
 03D7 E604              lda 4,X
 03D9 87                psha
 03DA CD03E3            jsr _LcdShGr16P
 03DD A704              ais #4
 03DF 95                tsx
 03E0                   .dbline -2
 03E0           L52:
 03E0 A702              ais #2
 03E2                   .dbline 0 ; func end
 03E2 81                rts
 03E3                   .dbsym l value 0 i
 03E3                   .dbsym l x 5 c
 03E3                   .dbsym l y 4 c
 03E3                   .dbend
 03E3                   .dbfunc e LcdShGr16P _LcdShGr16P fV
 03E3           ;          value -> 4,X
 03E3           ;             Px -> 3,X
 03E3           ;              y -> 2,X
 03E3           _LcdShGr16P::
 03E3                   .dbline -1
 03E3 95                tsx
 03E4                   .dbline 172
 03E4           ;  }
 03E4           ; 
 03E4           ; /*LcdShGr16P:在Lcd指定位置上设置线型16个点的显示-----------*
 03E4           ; *功  能:在Lcd指定位置上设置线型16个点的显示                *
 03E4           ; *参  数:y为纵坐标(0-63),Px为页号(0-15),value为16位数据   *
 03E4           ; *返  回:无                                                 *
 03E4           ; *---------------------------------------------------------*/
 03E4           ; void LcdShGr16P(unsigned char y,unsigned char Px,int value)
 03E4           ; {
 03E4                   .dbline 174
 03E4           ;  //Wtite_Command(0b00110110); //8位数据,扩展指令,绘图开
 03E4           ;   Wtite_Command(y|0b10000000);//设置6位绘图列地址
 03E4 E602              lda 2,X
 03E6 AA80              ora #-128
 03E8 87                psha
 03E9 CD0419            jsr _Wtite_Command
 03EC A701              ais #1
 03EE 95                tsx
 03EF                   .dbline 175
 03EF           ;   Wtite_Command(Px|0b10000000);//设置4位绘图行地址
 03EF E603              lda 3,X
 03F1 AA80              ora #-128
 03F3 87                psha
 03F4 CD0419            jsr _Wtite_Command
 03F7 A701              ais #1
 03F9 95                tsx
 03FA                   .dbline 176
 03FA           ;   Wtite_Data((unsigned char)(value>>8));//写入高8个字节
 03FA E604              lda 4,X
 03FC B700              sta *__r1
 03FE 3F00              clr *__r0
 0400 3D00              tst *__r1
 0402 2A02              bpl X8
 0404 3300              com *__r0
 0406           X8:
 0406 B600              lda *__r1
 0408 87                psha
 0409 CD0434            jsr _Wtite_Data
 040C A701              ais #1
 040E 95                tsx
 040F                   .dbline 177
 040F           ;   Wtite_Data((unsigned char)value);     //写入低8个字节
 040F E605              lda 5,X
 0411 87                psha
 0412 CD0434            jsr _Wtite_Data
 0415 A701              ais #1
 0417 95                tsx
 0418                   .dbline -2
 0418           L55:
 0418                   .dbline 0 ; func end
 0418 81                rts
 0419                   .dbsym l value 4 I
 0419                   .dbsym l Px 3 c
 0419                   .dbsym l y 2 c
 0419                   .dbend
 0419                   .dbfunc e Wtite_Command _Wtite_Command fV
 0419           ;        command -> 2,X
 0419           _Wtite_Command::
 0419                   .dbline -1
 0419 95                tsx
 041A                   .dbline 188
 041A           ;  //Wtite_Command(0b00110000); //8位数据,基本指令
 041A           ; }
 041A           ; 
 041A           ; //===========[Lcd基本操作:包括写指令,写数据和延时]===========
 041A           ; /*Wtite_Command:执行参数中的给定命令-------------------*
 041A           ; *功  能:执行参数中的给定命令                           *
 041A           ; *参  数:command为待执行的命令码                        *
 041A           ; *返  回:无                                             *
 041A           ; *-----------------------------------------------------*/
 041A           ; void Wtite_Command(unsigned char command)
 041A           ; {
 041A                   .dbline 189
 041A           ;       LCD_CtrlPort&=~(1<<LCD_RS);  //RS=0
 041A 1903              bclr #4,0x3
 041C                   .dbline 190
 041C           ;       LCD_CtrlPort&=~(1<<LCD_RW);  //RW=0
 041C 1B03              bclr #5,0x3
 041E                   .dbline 191
 041E           ;       LCD_DataPort=command;        //数据上线
 041E E602              lda 2,X
 0420 B701              sta 0x1
 0422                   .dbline 192
 0422           ;       LCD_CtrlPort|=(1<<LCD_E);    //E=1
 0422 1C03              bset #6,0x3
 0424                   .dbline 193
 0424           ;     asm("nop");                  //使数据稳定
 0424 9D                nop
 0425                   .dbline 194
 0425           ;     asm("nop");
 0425 9D                nop
 0426                   .dbline 195
 0426           ;       LCD_CtrlPort&=~(1<<LCD_E);   //E=0,使数据有效
 0426 1D03              bclr #6,0x3
 0428                   .dbline 196
 0428           ;       delay72us;                   //延时>72us
 0428 45001E            ldhx #30
 042B 89                pshx
 042C 8B                pshh
 042D CD044F            jsr _DelayTimes
 0430 A702              ais #2
 0432 95                tsx
 0433                   .dbline -2
 0433           L56:
 0433                   .dbline 0 ; func end
 0433 81                rts
 0434                   .dbsym l command 2 c
 0434                   .dbend
 0434                   .dbfunc e Wtite_Data _Wtite_Data fV
 0434           ;           data -> 2,X
 0434           _Wtite_Data::
 0434                   .dbline -1
 0434 95                tsx
 0435                   .dbline 205
 0435           ; }
 0435           ; 
 0435           ; /*Wtite_Data:将参数中给定的数据写入液晶控制器----------*
 0435           ; *功  能:将参数中给定的数据写入液晶控制器               *
 0435           ; *参  数:data为待写入的数据                             *
 0435           ; *返  回:无                                             *
 0435           ; *-----------------------------------------------------*/
 0435           ; void Wtite_Data(unsigned char data)
 0435           ; {
 0435                   .dbline 206
 0435           ;       LCD_CtrlPort|=(1<<LCD_RS);    //RS=1
 0435 1803              bset #4,0x3
 0437                   .dbline 207
 0437           ;       LCD_CtrlPort&=~(1<<LCD_RW);   //RW=0
 0437 1B03              bclr #5,0x3
 0439                   .dbline 208
 0439           ;       LCD_DataPort=data;            //数据上线
 0439 E602              lda 2,X
 043B B701              sta 0x1
 043D                   .dbline 209
 043D           ;       LCD_CtrlPort|=(1<<LCD_E);     //E=1
 043D 1C03              bset #6,0x3
 043F                   .dbline 210
 043F           ;     asm("nop");                   //使数据稳定
 043F 9D                nop
 0440                   .dbline 211
 0440           ;     asm("nop");
 0440 9D                nop
 0441                   .dbline 212
 0441           ;       LCD_CtrlPort&=~(1<<LCD_E);    //E=0,使数据有效
 0441 1D03              bclr #6,0x3
 0443                   .dbline 213
 0443           ;       delay72us;                    //延时>72us
 0443 45001E            ldhx #30
 0446 89                pshx
 0447 8B                pshh
 0448 CD044F            jsr _DelayTimes
 044B A702              ais #2
 044D 95                tsx
 044E                   .dbline -2
 044E           L57:
 044E                   .dbline 0 ; func end
 044E 81                rts
 044F                   .dbsym l data 2 c
 044F                   .dbend
 044F                   .dbfunc e DelayTimes _DelayTimes fV
 044F           ;              i -> 0,X
 044F           ;             tn -> 4,X
 044F           _DelayTimes::
 044F                   .dbline -1
 044F A7FE              ais #-2
 0451 95                tsx
 0452                   .dbline 222
 0452           ; }
 0452           ; 
 0452           ; /*DelayTimes:延时指定时间---------------*
 0452           ; *功  能:延时指定的时间                  *
 0452           ; *入  口:tn为延时时间数(0到65535)        *
 0452           ; *出  口:无                              *
 0452           ; *--------------------------------------*/
 0452           ; void DelayTimes(unsigned int tn)
 0452           ; {
 0452                   .dbline 224
 0452 6F01              clr 1,X
 0454 7F                clr ,X
 0455 200A              bra L62
 0457           L59:
 0457                   .dbline 224
 0457           L60:
 0457                   .dbline 224
 0457 E601              lda 1,X
 0459 AB01              add #1
 045B E701              sta 1,X
 045D F6                lda ,X
 045E A900              adc #0
 0460 F7                sta ,X
 0461           L62:
 0461                   .dbline 224
 0461           ;   unsigned int i;    //循环变量
 0461           ;   for(i=0;i<tn;i++);
 0461 E605              lda 5,X
 0463 B700              sta *__r1
 0465 E604              lda 4,X
 0467 B700              sta *__r0
 0469 E601              lda 1,X
 046B B700              sta *__r3
 046D F6                lda ,X
 046E B700              sta *__r2
 0470 5500              ldhx *__r2
 0472 7500              cphx *__r0
 0474 95                tsx
 0475 25E0              blo L59
 0477                   .dbline -2
 0477           L58:
 0477 A702              ais #2
 0479                   .dbline 0 ; func end
 0479 81                rts
 047A                   .dbsym l i 0 i
 047A                   .dbsym l tn 4 i
 047A                   .dbend

⌨️ 快捷键说明

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