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

📄 lcd.lis

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0335           L27:
 0335 A709              ais #9
 0337                   .dbline 0 ; func end
 0337 81                rts
 0338                   .dbsym l RC 0 I
 0338                   .dbsym l LC 2 I
 0338                   .dbsym l TBC 4 I
 0338                   .dbsym l i 6 c
 0338                   .dbsym l y 7 c
 0338                   .dbsym l Px 8 c
 0338                   .dbsym l GrE 12 c
 0338                   .dbsym l ln 11 c
 0338                   .dbend
 0338                   .dbfunc e LcdShGrClr _LcdShGrClr fV
 0338           ;              y -> 0,X
 0338           ;             Px -> 1,X
 0338           _LcdShGrClr::
 0338                   .dbline -1
 0338 A7FE              ais #-2
 033A 95                tsx
 033B                   .dbline 149
 033B           ; }
 033B           ; 
 033B           ; /*LcdShGrClr:在Lcd上清图形显示屏-------------------------------------------*
 033B           ; *功  能:在Lcd上清图形显示屏(清GDRAM)                                       *
 033B           ; *参  数:无                                                                 *
 033B           ; *返  回:无                                                                 *
 033B           ; *-------------------------------------------------------------------------*/
 033B           ; void LcdShGrClr(void)
 033B           ; {  
 033B                   .dbline 151
 033B           ;   INT8U Px,y;               //行页号,列坐标的循环变量
 033B           ;   Wtite_Command(0b00110110);//扩展指令,绘图开  
 033B A636              lda #54
 033D 87                psha
 033E CD041B            jsr _Wtite_Command
 0341 A701              ais #1
 0343 95                tsx
 0344                   .dbline 153
 0344           ;   //[清图形显示屏(清GDRAM)]
 0344           ;   for(y=0;y<=31;y++)
 0344 7F                clr ,X
 0345 2020              bra L47
 0347           L44:
 0347                   .dbline 154
 0347           ;      for(Px=0;Px<=15;Px++)
 0347 6F01              clr 1,X
 0349 2015              bra L51
 034B           L48:
 034B                   .dbline 155
 034B 450000            ldhx #0
 034E 89                pshx
 034F 8B                pshh
 0350 95                tsx
 0351 AF02              aix #2
 0353 E601              lda 1,X
 0355 87                psha
 0356 F6                lda ,X
 0357 87                psha
 0358 CD03E5            jsr _LcdShGr16P
 035B A704              ais #4
 035D 95                tsx
 035E           L49:
 035E                   .dbline 154
 035E 6C01              inc 1,X
 0360           L51:
 0360                   .dbline 154
 0360 E601              lda 1,X
 0362 A10F              cmp #15
 0364 23E5              bls L48
 0366           L45:
 0366                   .dbline 153
 0366 7C                inc ,X
 0367           L47:
 0367                   .dbline 153
 0367 F6                lda ,X
 0368 A11F              cmp #31
 036A 23DB              bls L44
 036C                   .dbline 156
 036C           ;         LcdShGr16P(y,Px,0);  //写入0为清屏
 036C           ;   Wtite_Command(0b00110000);//基本指令
 036C A630              lda #48
 036E 87                psha
 036F CD041B            jsr _Wtite_Command
 0372 A701              ais #1
 0374 95                tsx
 0375                   .dbline -2
 0375           L43:
 0375 A702              ais #2
 0377                   .dbline 0 ; func end
 0377 81                rts
 0378                   .dbsym l y 0 c
 0378                   .dbsym l Px 1 c
 0378                   .dbend
 0378                   .dbfunc e LcdShGr1P _LcdShGr1P fV
 0378           ;          value -> 0,X
 0378           ;              x -> 5,X
 0378           ;              y -> 4,X
 0378           _LcdShGr1P::
 0378                   .dbline -1
 0378 A7FE              ais #-2
 037A 95                tsx
 037B                   .dbline 165
 037B           ; }
 037B           ; 
 037B           ; /*LcdShGr1P:在Lcd的指定位置上画一个点--------------------------------------*
 037B           ; *功  能:在Lcd的指定位置上画一个点                                          *
 037B           ; *参  数:y为纵坐标(0-63),x为横坐标(0-127)                                  *
 037B           ; *返  回:无                                                                 *
 037B           ; *-------------------------------------------------------------------------*/
 037B           ; void LcdShGr1P(INT8U y,INT8U x)
 037B           ; {
 037B                   .dbline 166
 037B           ;   INT16U value=32768;      //初始值为0b1000000000000000
 037B A680              lda #-128
 037D F7                sta ,X
 037E A600              lda #0
 0380 E701              sta 1,X
 0382                   .dbline 167
 0382           ;   if(y>=32)                //第三四行必须调整x和y坐标
 0382 E604              lda 4,X
 0384 A120              cmp #32
 0386 250A              blo L53
 0388                   .dbline 168
 0388           ;      {y=y-32;x=x+16*8;}
 0388                   .dbline 168
 0388 A020              sub #32
 038A E704              sta 4,X
 038C                   .dbline 168
 038C E605              lda 5,X
 038E AB80              add #-128
 0390 E705              sta 5,X
 0392                   .dbline 168
 0392           L53:
 0392                   .dbline 169
 0392           ;   value>>=(x-x/16*16);     //写入的16位数据
 0392 3F00              clr *__r0
 0394 E605              lda 5,X
 0396 B700              sta *__rlo
 0398 4E0000            mov *__r0,*__rhi
 039B A610              lda #16
 039D 87                psha
 039E 4F                clra
 039F 87                psha
 03A0 CD0000            jsr __divmod16s
 03A3 A702              ais #2
 03A5 4E0000            mov *__rhi,*__r0
 03A8 4E0000            mov *__rlo,*__r1
 03AB A604              lda #4
 03AD           X5:
 03AD 3800              lsl *__r1
 03AF 3900              rol *__r0
 03B1 4BFA              dbnza X5
 03B3 3F00              clr *__r2
 03B5 E605              lda 5,X
 03B7 B000              sub *__r1
 03B9 B700              sta *__r1
 03BB B600              lda *__r2
 03BD B200              sbc *__r0
 03BF B600              lda *__r1
 03C1 A40F              and #15
 03C3 2705              beq X7
 03C5           X6:
 03C5 74                lsr ,X
 03C6 6601              ror 1,X
 03C8 4BFB              dbnza X6
 03CA           X7:
 03CA                   .dbline 170
 03CA           ;   LcdShGr16P(y,x/16,value);//显示相应的点
 03CA E601              lda 1,X
 03CC 87                psha
 03CD F6                lda ,X
 03CE 87                psha
 03CF E605              lda 5,X
 03D1 AE10              ldx #16
 03D3 8C                clrh
 03D4 52                div
 03D5 95                tsx
 03D6 AF02              aix #2
 03D8 87                psha
 03D9 E604              lda 4,X
 03DB 87                psha
 03DC CD03E5            jsr _LcdShGr16P
 03DF A704              ais #4
 03E1 95                tsx
 03E2                   .dbline -2
 03E2           L52:
 03E2 A702              ais #2
 03E4                   .dbline 0 ; func end
 03E4 81                rts
 03E5                   .dbsym l value 0 i
 03E5                   .dbsym l x 5 c
 03E5                   .dbsym l y 4 c
 03E5                   .dbend
 03E5                   .dbfunc e LcdShGr16P _LcdShGr16P fV
 03E5           ;          value -> 4,X
 03E5           ;             Px -> 3,X
 03E5           ;              y -> 2,X
 03E5           _LcdShGr16P::
 03E5                   .dbline -1
 03E5 95                tsx
 03E6                   .dbline 179
 03E6           ;  }
 03E6           ; 
 03E6           ; /*LcdShGr16P:在Lcd指定位置上设置线型16个点的显示---------------------------*
 03E6           ; *功  能:在Lcd指定位置上设置线型16个点的显示                                *
 03E6           ; *参  数:y为纵坐标(0-63),Px为页号(0-15),value为16位数据                   *
 03E6           ; *返  回:无                                                                 *
 03E6           ; *-------------------------------------------------------------------------*/
 03E6           ; void LcdShGr16P(INT8U y,INT8U Px,INT16S value)
 03E6           ; {
 03E6                   .dbline 181
 03E6           ;  //Wtite_Command(0b00110110); //8位数据,扩展指令,绘图开
 03E6           ;   Wtite_Command(y|0b10000000);//设置6位绘图列地址
 03E6 E602              lda 2,X
 03E8 AA80              ora #-128
 03EA 87                psha
 03EB CD041B            jsr _Wtite_Command
 03EE A701              ais #1
 03F0 95                tsx
 03F1                   .dbline 182
 03F1           ;   Wtite_Command(Px|0b10000000);//设置4位绘图行地址
 03F1 E603              lda 3,X
 03F3 AA80              ora #-128
 03F5 87                psha
 03F6 CD041B            jsr _Wtite_Command
 03F9 A701              ais #1
 03FB 95                tsx
 03FC                   .dbline 183
 03FC           ;   Wtite_Data((INT8U)(value>>8));//写入高8个字节
 03FC E604              lda 4,X
 03FE B700              sta *__r1
 0400 3F00              clr *__r0
 0402 3D00              tst *__r1
 0404 2A02              bpl X8
 0406 3300              com *__r0
 0408           X8:
 0408 B600              lda *__r1
 040A 87                psha
 040B CD0436            jsr _Wtite_Data
 040E A701              ais #1
 0410 95                tsx
 0411                   .dbline 184
 0411           ;   Wtite_Data((INT8U)value);     //写入低8个字节
 0411 E605              lda 5,X
 0413 87                psha
 0414 CD0436            jsr _Wtite_Data
 0417 A701              ais #1
 0419 95                tsx
 041A                   .dbline -2
 041A           L55:
 041A                   .dbline 0 ; func end
 041A 81                rts
 041B                   .dbsym l value 4 I
 041B                   .dbsym l Px 3 c
 041B                   .dbsym l y 2 c
 041B                   .dbend
 041B                   .dbfunc e Wtite_Command _Wtite_Command fV
 041B           ;        command -> 2,X
 041B           _Wtite_Command::
 041B                   .dbline -1
 041B 95                tsx
 041C                   .dbline 195
 041C           ;  //Wtite_Command(0b00110000); //8位数据,基本指令
 041C           ; }
 041C           ; 
 041C           ; /*===============[Lcd基本操作:包括写指令,写数据和延时]===================*/
 041C           ; /*Wtite_Command:执行参数中的给定命令---------------------------------------*
 041C           ; *功  能:执行参数中的给定命令                                               *
 041C           ; *参  数:command为待执行的命令码                                            *
 041C           ; *返  回:无                                                                 *
 041C           ; *-------------------------------------------------------------------------*/
 041C           ; void Wtite_Command(INT8U command)
 041C           ; {
 041C                   .dbline 196
 041C           ;       LCD_CtrlPort&=~(1<<LCD_RS);  //RS=0
 041C 1302              bclr #1,0x2
 041E                   .dbline 197
 041E           ;       LCD_CtrlPort&=~(1<<LCD_RW);  //RW=0
 041E 1502              bclr #2,0x2
 0420                   .dbline 198
 0420           ;       LCD_DataPort=command;        //数据上线
 0420 E602              lda 2,X
 0422 B701              sta 0x1
 0424                   .dbline 199
 0424           ;       LCD_CtrlPort|=(1<<LCD_E);    //E=1
 0424 1602              bset #3,0x2
 0426                   .dbline 200
 0426           ;     asm("nop");                  //使数据稳定
 0426 9D                nop
 0427                   .dbline 201
 0427           ;     asm("nop");
 0427 9D                nop
 0428                   .dbline 202
 0428           ;       LCD_CtrlPort&=~(1<<LCD_E);   //E=0,使数据有效
 0428 1702              bclr #3,0x2
 042A                   .dbline 203
 042A           ;       delay72us;                   //延时>72us
 042A 45001E            ldhx #30
 042D 89                pshx
 042E 8B                pshh
 042F CD0451            jsr _DelayTimes
 0432 A702              ais #2
 0434 95                tsx
 0435                   .dbline -2
 0435           L56:
 0435                   .dbline 0 ; func end
 0435 81                rts
 0436                   .dbsym l command 2 c
 0436                   .dbend
 0436                   .dbfunc e Wtite_Data _Wtite_Data fV
 0436           ;           data -> 2,X
 0436           _Wtite_Data::
 0436                   .dbline -1
 0436 95                tsx
 0437                   .dbline 212
 0437           ; }
 0437           ; 
 0437           ; /*Wtite_Data:将参数中给定的数据写入液晶控制器------------------------------*
 0437           ; *功  能:将参数中给定的数据写入液晶控制器                                   *
 0437           ; *参  数:data为待写入的数据                                                 *
 0437           ; *返  回:无                                                                 *
 0437           ; *-------------------------------------------------------------------------*/
 0437           ; void Wtite_Data(INT8U data)
 0437           ; {
 0437                   .dbline 213
 0437           ;       LCD_CtrlPort|=(1<<LCD_RS);    //RS=1
 0437 1202              bset #1,0x2
 0439                   .dbline 214
 0439           ;       LCD_CtrlPort&=~(1<<LCD_RW);   //RW=0
 0439 1502              bclr #2,0x2
 043B                   .dbline 215
 043B           ;       LCD_DataPort=data;            //数据上线
 043B E602              lda 2,X
 043D B701              sta 0x1
 043F                   .dbline 216
 043F           ;       LCD_CtrlPort|=(1<<LCD_E);     //E=1
 043F 1602              bset #3,0x2
 0441                   .dbline 217
 0441           ;     asm("nop");                   //使数据稳定
 0441 9D                nop
 0442                   .dbline 218
 0442           ;     asm("nop");
 0442 9D                nop
 0443                   .dbline 219
 0443           ;       LCD_CtrlPort&=~(1<<LCD_E);    //E=0,使数据有效
 0443 1702              bclr #3,0x2
 0445                   .dbline 220
 0445           ;       delay72us;                    //延时>72us
 0445 45001E            ldhx #30
 0448 89                pshx
 0449 8B                pshh
 044A CD0451            jsr _DelayTimes
 044D A702              ais #2
 044F 95                tsx
 0450                   .dbline -2
 0450           L57:
 0450                   .dbline 0 ; func end
 0450 81                rts
 0451                   .dbsym l data 2 c
 0451                   .dbend
 0451                   .dbfunc e DelayTimes _DelayTimes fV
 0451           ;              i -> 0,X
 0451           ;             tn -> 4,X
 0451           _DelayTimes::
 0451                   .dbline -1
 0451 A7FE              ais #-2
 0453 95                tsx
 0454                   .dbline 229
 0454           ; }
 0454           ; 
 0454           ; /*DelayTimes:延时指定时间--------------------------------------------------*
 0454           ; *功  能:延时指定的时间                                                     *
 0454           ; *入  口:tn为延时时间数(0到65535)                                           *
 0454           ; *出  口:无                                                                 *
 0454           ; *-------------------------------------------------------------------------*/
 0454           ; void DelayTimes(INT16U tn)
 0454           ; {
 0454                   .dbline 231
 0454 6F01              clr 1,X
 0456 7F                clr ,X
 0457 200A              bra L62

⌨️ 快捷键说明

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