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

📄 lcd.lis

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0337           ; *--------------------------------------------*/
 0337           ; void LcdShGrClr(void)
 0337           ; {  
 0337                   .dbline 145
 0337           ;   unsigned char Px,y;//行页号,列坐标的循环变量
 0337           ;   Wtite_Command(0b00110110);//扩展指令,绘图开
 0337 A636              lda #54
 0339 87                psha
 033A CD0417            jsr _Wtite_Command
 033D A701              ais #1
 033F 95                tsx
 0340                   .dbline 147
 0340           ;   //[清图形显示屏(清GDRAM)]
 0340           ;   for(y=0;y<=31;y++)
 0340 7F                clr ,X
 0341 2020              bra L47
 0343           L44:
 0343                   .dbline 148
 0343           ;      for(Px=0;Px<=15;Px++)
 0343 6F01              clr 1,X
 0345 2015              bra L51
 0347           L48:
 0347                   .dbline 149
 0347 450000            ldhx #0
 034A 89                pshx
 034B 8B                pshh
 034C 95                tsx
 034D AF02              aix #2
 034F E601              lda 1,X
 0351 87                psha
 0352 F6                lda ,X
 0353 87                psha
 0354 CD03E1            jsr _LcdShGr16P
 0357 A704              ais #4
 0359 95                tsx
 035A           L49:
 035A                   .dbline 148
 035A 6C01              inc 1,X
 035C           L51:
 035C                   .dbline 148
 035C E601              lda 1,X
 035E A10F              cmp #15
 0360 23E5              bls L48
 0362           L45:
 0362                   .dbline 147
 0362 7C                inc ,X
 0363           L47:
 0363                   .dbline 147
 0363 F6                lda ,X
 0364 A11F              cmp #31
 0366 23DB              bls L44
 0368                   .dbline 150
 0368           ;         LcdShGr16P(y,Px,0);  //写入0为清屏
 0368           ;   Wtite_Command(0b00110000);//基本指令
 0368 A630              lda #48
 036A 87                psha
 036B CD0417            jsr _Wtite_Command
 036E A701              ais #1
 0370 95                tsx
 0371                   .dbline -2
 0371           L43:
 0371 A702              ais #2
 0373                   .dbline 0 ; func end
 0373 81                rts
 0374                   .dbsym l y 0 c
 0374                   .dbsym l Px 1 c
 0374                   .dbend
 0374                   .dbfunc e LcdShGr1P _LcdShGr1P fV
 0374           ;          value -> 0,X
 0374           ;              x -> 5,X
 0374           ;              y -> 4,X
 0374           _LcdShGr1P::
 0374                   .dbline -1
 0374 A7FE              ais #-2
 0376 95                tsx
 0377                   .dbline 159
 0377           ; }
 0377           ; 
 0377           ; /*LcdShGr1P:在Lcd的指定位置上画一个点------------------*
 0377           ; *功  能:在Lcd的指定位置上画一个点                      *
 0377           ; *参  数:y为纵坐标(0-63),x为横坐标(0-127)              *
 0377           ; *返  回:无                                             *
 0377           ; *-----------------------------------------------------*/
 0377           ; void LcdShGr1P(unsigned char y,unsigned char x)
 0377           ; {
 0377                   .dbline 160
 0377           ;   unsigned int value=32768;//初始值为0b1000000000000000
 0377 A680              lda #-128
 0379 F7                sta ,X
 037A A600              lda #0
 037C E701              sta 1,X
 037E                   .dbline 161
 037E           ;   if(y>=32)                //第三四行必须调整x和y坐标
 037E E604              lda 4,X
 0380 A120              cmp #32
 0382 250A              blo L53
 0384                   .dbline 162
 0384           ;      {y=y-32;x=x+16*8;}
 0384                   .dbline 162
 0384 A020              sub #32
 0386 E704              sta 4,X
 0388                   .dbline 162
 0388 E605              lda 5,X
 038A AB80              add #-128
 038C E705              sta 5,X
 038E                   .dbline 162
 038E           L53:
 038E                   .dbline 163
 038E           ;   value>>=(x-x/16*16);     //写入的16位数据
 038E 3F00              clr *__r0
 0390 E605              lda 5,X
 0392 B700              sta *__rlo
 0394 4E0000            mov *__r0,*__rhi
 0397 A610              lda #16
 0399 87                psha
 039A 4F                clra
 039B 87                psha
 039C CD0000            jsr __divmod16s
 039F A702              ais #2
 03A1 4E0000            mov *__rhi,*__r0
 03A4 4E0000            mov *__rlo,*__r1
 03A7 A604              lda #4
 03A9           X5:
 03A9 3800              lsl *__r1
 03AB 3900              rol *__r0
 03AD 4BFA              dbnza X5
 03AF 3F00              clr *__r2
 03B1 E605              lda 5,X
 03B3 B000              sub *__r1
 03B5 B700              sta *__r1
 03B7 B600              lda *__r2
 03B9 B200              sbc *__r0
 03BB B600              lda *__r1
 03BD A40F              and #15
 03BF 2705              beq X7
 03C1           X6:
 03C1 74                lsr ,X
 03C2 6601              ror 1,X
 03C4 4BFB              dbnza X6
 03C6           X7:
 03C6                   .dbline 164
 03C6           ;   LcdShGr16P(y,x/16,value);//显示相应的点
 03C6 E601              lda 1,X
 03C8 87                psha
 03C9 F6                lda ,X
 03CA 87                psha
 03CB E605              lda 5,X
 03CD AE10              ldx #16
 03CF 8C                clrh
 03D0 52                div
 03D1 95                tsx
 03D2 AF02              aix #2
 03D4 87                psha
 03D5 E604              lda 4,X
 03D7 87                psha
 03D8 CD03E1            jsr _LcdShGr16P
 03DB A704              ais #4
 03DD 95                tsx
 03DE                   .dbline -2
 03DE           L52:
 03DE A702              ais #2
 03E0                   .dbline 0 ; func end
 03E0 81                rts
 03E1                   .dbsym l value 0 i
 03E1                   .dbsym l x 5 c
 03E1                   .dbsym l y 4 c
 03E1                   .dbend
 03E1                   .dbfunc e LcdShGr16P _LcdShGr16P fV
 03E1           ;          value -> 4,X
 03E1           ;             Px -> 3,X
 03E1           ;              y -> 2,X
 03E1           _LcdShGr16P::
 03E1                   .dbline -1
 03E1 95                tsx
 03E2                   .dbline 173
 03E2           ;  }
 03E2           ; 
 03E2           ; /*LcdShGr16P:在Lcd指定位置上设置线型16个点的显示-----------*
 03E2           ; *功  能:在Lcd指定位置上设置线型16个点的显示                *
 03E2           ; *参  数:y为纵坐标(0-63),Px为页号(0-15),value为16位数据   *
 03E2           ; *返  回:无                                                 *
 03E2           ; *---------------------------------------------------------*/
 03E2           ; void LcdShGr16P(unsigned char y,unsigned char Px,int value)
 03E2           ; {
 03E2                   .dbline 175
 03E2           ;  //Wtite_Command(0b00110110); //8位数据,扩展指令,绘图开
 03E2           ;   Wtite_Command(y|0b10000000);//设置6位绘图列地址
 03E2 E602              lda 2,X
 03E4 AA80              ora #-128
 03E6 87                psha
 03E7 CD0417            jsr _Wtite_Command
 03EA A701              ais #1
 03EC 95                tsx
 03ED                   .dbline 176
 03ED           ;   Wtite_Command(Px|0b10000000);//设置4位绘图行地址
 03ED E603              lda 3,X
 03EF AA80              ora #-128
 03F1 87                psha
 03F2 CD0417            jsr _Wtite_Command
 03F5 A701              ais #1
 03F7 95                tsx
 03F8                   .dbline 177
 03F8           ;   Wtite_Data((unsigned char)(value>>8));//写入高8个字节
 03F8 E604              lda 4,X
 03FA B700              sta *__r1
 03FC 3F00              clr *__r0
 03FE 3D00              tst *__r1
 0400 2A02              bpl X8
 0402 3300              com *__r0
 0404           X8:
 0404 B600              lda *__r1
 0406 87                psha
 0407 CD0432            jsr _Wtite_Data
 040A A701              ais #1
 040C 95                tsx
 040D                   .dbline 178
 040D           ;   Wtite_Data((unsigned char)value);     //写入低8个字节
 040D E605              lda 5,X
 040F 87                psha
 0410 CD0432            jsr _Wtite_Data
 0413 A701              ais #1
 0415 95                tsx
 0416                   .dbline -2
 0416           L55:
 0416                   .dbline 0 ; func end
 0416 81                rts
 0417                   .dbsym l value 4 I
 0417                   .dbsym l Px 3 c
 0417                   .dbsym l y 2 c
 0417                   .dbend
 0417                   .dbfunc e Wtite_Command _Wtite_Command fV
 0417           ;        command -> 2,X
 0417           _Wtite_Command::
 0417                   .dbline -1
 0417 95                tsx
 0418                   .dbline 189
 0418           ;  //Wtite_Command(0b00110000); //8位数据,基本指令
 0418           ; }
 0418           ; 
 0418           ; //===========[Lcd基本操作:包括写指令,写数据和延时]===========
 0418           ; /*Wtite_Command:执行参数中的给定命令-------------------*
 0418           ; *功  能:执行参数中的给定命令                           *
 0418           ; *参  数:command为待执行的命令码                        *
 0418           ; *返  回:无                                             *
 0418           ; *-----------------------------------------------------*/
 0418           ; void Wtite_Command(unsigned char command)
 0418           ; {
 0418                   .dbline 190
 0418           ;       LCD_CtrlPort&=~(1<<LCD_RS);  //RS=0
 0418 1302              bclr #1,0x2
 041A                   .dbline 191
 041A           ;       LCD_CtrlPort&=~(1<<LCD_RW);  //RW=0
 041A 1502              bclr #2,0x2
 041C                   .dbline 192
 041C           ;       LCD_DataPort=command;        //数据上线
 041C E602              lda 2,X
 041E B701              sta 0x1
 0420                   .dbline 193
 0420           ;       LCD_CtrlPort|=(1<<LCD_E);    //E=1
 0420 1602              bset #3,0x2
 0422                   .dbline 194
 0422           ;     asm("nop");                  //使数据稳定
 0422 9D                nop
 0423                   .dbline 195
 0423           ;     asm("nop");
 0423 9D                nop
 0424                   .dbline 196
 0424           ;       LCD_CtrlPort&=~(1<<LCD_E);   //E=0,使数据有效
 0424 1702              bclr #3,0x2
 0426                   .dbline 197
 0426           ;       delay72us;                   //延时>72us
 0426 45001E            ldhx #30
 0429 89                pshx
 042A 8B                pshh
 042B CD044D            jsr _DelayTimes
 042E A702              ais #2
 0430 95                tsx
 0431                   .dbline -2
 0431           L56:
 0431                   .dbline 0 ; func end
 0431 81                rts
 0432                   .dbsym l command 2 c
 0432                   .dbend
 0432                   .dbfunc e Wtite_Data _Wtite_Data fV
 0432           ;           data -> 2,X
 0432           _Wtite_Data::
 0432                   .dbline -1
 0432 95                tsx
 0433                   .dbline 206
 0433           ; }
 0433           ; 
 0433           ; /*Wtite_Data:将参数中给定的数据写入液晶控制器----------*
 0433           ; *功  能:将参数中给定的数据写入液晶控制器               *
 0433           ; *参  数:data为待写入的数据                             *
 0433           ; *返  回:无                                             *
 0433           ; *-----------------------------------------------------*/
 0433           ; void Wtite_Data(unsigned char data)
 0433           ; {
 0433                   .dbline 207
 0433           ;       LCD_CtrlPort|=(1<<LCD_RS);    //RS=1
 0433 1202              bset #1,0x2
 0435                   .dbline 208
 0435           ;       LCD_CtrlPort&=~(1<<LCD_RW);   //RW=0
 0435 1502              bclr #2,0x2
 0437                   .dbline 209
 0437           ;       LCD_DataPort=data;            //数据上线
 0437 E602              lda 2,X
 0439 B701              sta 0x1
 043B                   .dbline 210
 043B           ;       LCD_CtrlPort|=(1<<LCD_E);     //E=1
 043B 1602              bset #3,0x2
 043D                   .dbline 211
 043D           ;     asm("nop");                   //使数据稳定
 043D 9D                nop
 043E                   .dbline 212
 043E           ;     asm("nop");
 043E 9D                nop
 043F                   .dbline 213
 043F           ;       LCD_CtrlPort&=~(1<<LCD_E);    //E=0,使数据有效
 043F 1702              bclr #3,0x2
 0441                   .dbline 214
 0441           ;       delay72us;                    //延时>72us
 0441 45001E            ldhx #30
 0444 89                pshx
 0445 8B                pshh
 0446 CD044D            jsr _DelayTimes
 0449 A702              ais #2
 044B 95                tsx
 044C                   .dbline -2
 044C           L57:
 044C                   .dbline 0 ; func end
 044C 81                rts
 044D                   .dbsym l data 2 c
 044D                   .dbend
 044D                   .dbfunc e DelayTimes _DelayTimes fV
 044D           ;              i -> 0,X
 044D           ;             tn -> 4,X
 044D           _DelayTimes::
 044D                   .dbline -1
 044D A7FE              ais #-2
 044F 95                tsx
 0450                   .dbline 223
 0450           ; }
 0450           ; 
 0450           ; /*DelayTimes:延时指定时间---------------*
 0450           ; *功  能:延时指定的时间                  *
 0450           ; *入  口:tn为延时时间数(0到65535)        *
 0450           ; *出  口:无                              *
 0450           ; *--------------------------------------*/
 0450           ; void DelayTimes(unsigned int tn)
 0450           ; {
 0450                   .dbline 225
 0450 6F01              clr 1,X
 0452 7F                clr ,X
 0453 200A              bra L62
 0455           L59:
 0455                   .dbline 225
 0455           L60:
 0455                   .dbline 225
 0455 E601              lda 1,X
 0457 AB01              add #1
 0459 E701              sta 1,X
 045B F6                lda ,X
 045C A900              adc #0
 045E F7                sta ,X
 045F           L62:
 045F                   .dbline 225
 045F           ;   unsigned int i;    //循环变量
 045F           ;   for(i=0;i<tn;i++);
 045F E605              lda 5,X
 0461 B700              sta *__r1
 0463 E604              lda 4,X
 0465 B700              sta *__r0
 0467 E601              lda 1,X
 0469 B700              sta *__r3
 046B F6                lda ,X
 046C B700              sta *__r2
 046E 5500              ldhx *__r2
 0470 7500              cphx *__r0
 0472 95                tsx
 0473 25E0              blo L59
 0475                   .dbline -2
 0475           L58:
 0475 A702              ais #2
 0477                   .dbline 0 ; func end
 0477 81                rts
 0478                   .dbsym l i 0 i
 0478                   .dbsym l tn 4 i
 0478                   .dbend

⌨️ 快捷键说明

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