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

📄 tg1286~1.lst

📁 为日本瑞萨苏州分公司做的一个温控系统
💻 LST
📖 第 1 页 / 共 4 页
字号:
(0111)   int LC,RC,TBC;     //左,右和上下边框色
(0112)   //[确定ln所在行的起始坐标(左上角)]
(0113)   if((ln==0)||(ln==2))  y=0;
    841F 6F 07        clr	7,X
    8421 20 04        bra	0x8427
(0114)   else  y=16;
    8423 A6 10        ldA	#16
    8425 E7 07        stA	7,X
(0115)   if(ln<=1)  Px=0;
    8427 E6 0B        ldA	11,X
    8429 A1 01        cmp	#1
    842B 22 04        bhi	0x8431
    842D 6F 08        clr	8,X
    842F 20 04        bra	0x8435
(0116)   else  Px=8;
    8431 A6 08        ldA	#8
    8433 E7 08        stA	8,X
(0117)   //[确定有无边框(有GrE决定)]
(0118)   if(GrE==1)   //有表框
    8435 E6 0C        ldA	12,X
    8437 A1 01        cmp	#1
    8439 26 18        bne	0x8453
(0119)   	 {TBC=65535;LC=32768;RC=1;}
    843B A6 FF        ldA	#-1
    843D E7 04        stA	4,X
    843F A6 FF        ldA	#-1
    8441 E7 05        stA	5,X
    8443 A6 80        ldA	#-128
    8445 E7 02        stA	2,X
    8447 A6 00        ldA	#0
    8449 E7 03        stA	3,X
    844B 4F           clrA	
    844C F7           stA	0,X
    844D A6 01        ldA	#1
    844F E7 01        stA	1,X
    8451 20 0B        bra	0x845E
(0120)   else         //无边框
(0121)      {TBC=0;LC=0;RC=0;}
    8453 6F 05        clr	5,X
    8455 6F 04        clr	4,X
    8457 6F 03        clr	3,X
    8459 6F 02        clr	2,X
    845B 6F 01        clr	1,X
    845D 7F           clr	0,X
(0122)   Wtite_Command(0b00110110);//扩展指令,绘图开
    845E A6 36        ldA	#54
    8460 87           pshA	
    8461 CD 85C3      jsr	_Wtite_Command
    8464 A7 01        aiS	#1
    8466 95           tSX	
(0123)   //[在Lcd上指定行上显示矩型边框]
(0124)   for(i=0;i<=7;i++,Px++)
    8467 6F 06        clr	6,X
    8469 20 2A        bra	0x8495
(0125)      {   
    846B E6 05        ldA	5,X
    846D 87           pshA	
    846E E6 04        ldA	4,X
    8470 87           pshA	
    8471 E6 08        ldA	8,X
    8473 87           pshA	
    8474 E6 07        ldA	7,X
    8476 87           pshA	
    8477 CD 858D      jsr	_LcdShGr16P
    847A A7 04        aiS	#4
    847C 95           tSX	
(0126)         LcdShGr16P(y,Px,TBC);    //显示上边框 
(0127)         LcdShGr16P(y+15,Px,TBC); //显示下边框
    847D E6 05        ldA	5,X
    847F 87           pshA	
    8480 E6 04        ldA	4,X
    8482 87           pshA	
    8483 E6 08        ldA	8,X
    8485 87           pshA	
    8486 E6 07        ldA	7,X
    8488 AB 0F        add	#15
    848A 87           pshA	
    848B CD 858D      jsr	_LcdShGr16P
    848E A7 04        aiS	#4
    8490 95           tSX	
(0128)      }  
    8491 6C 06        inc	6,X
    8493 6C 08        inc	8,X
    8495 E6 06        ldA	6,X
    8497 A1 07        cmp	#7
    8499 23 D0        bls	0x846B
(0129)   for(i=1,y++,Px--;i<=14;i++,y++)
    849B A6 01        ldA	#1
    849D E7 06        stA	6,X
    849F 6C 07        inc	7,X
    84A1 6A 08        dec	8,X
    84A3 20 29        bra	0x84CE
(0130)      {
    84A5 E6 01        ldA	1,X
    84A7 87           pshA	
    84A8 F6           ldA	0,X
    84A9 87           pshA	
    84AA E6 08        ldA	8,X
    84AC 87           pshA	
    84AD E6 07        ldA	7,X
    84AF 87           pshA	
    84B0 CD 858D      jsr	_LcdShGr16P
    84B3 A7 04        aiS	#4
    84B5 95           tSX	
(0131)         LcdShGr16P(y,Px,RC);    //显示右边框 
(0132)         LcdShGr16P(y,Px-7,LC);  //显示左边框      
    84B6 E6 03        ldA	3,X
    84B8 87           pshA	
    84B9 E6 02        ldA	2,X
    84BB 87           pshA	
    84BC E6 08        ldA	8,X
    84BE A0 07        sub	#7
    84C0 87           pshA	
    84C1 E6 07        ldA	7,X
    84C3 87           pshA	
    84C4 CD 858D      jsr	_LcdShGr16P
    84C7 A7 04        aiS	#4
    84C9 95           tSX	
(0133)      }
    84CA 6C 06        inc	6,X
    84CC 6C 07        inc	7,X
    84CE E6 06        ldA	6,X
    84D0 A1 0E        cmp	#14
    84D2 23 D1        bls	0x84A5
(0134)   Wtite_Command(0b00110000);//基本指令
    84D4 A6 30        ldA	#48
    84D6 87           pshA	
    84D7 CD 85C3      jsr	_Wtite_Command
    84DA A7 01        aiS	#1
    84DC 95           tSX	
    84DD A7 09        aiS	#9
    84DF 81           rts	
_LcdShGrClr:
  y                    --> X+0
  Px                   --> X+1
    84E0 A7 FE        aiS	#-2
    84E2 95           tSX	
(0135) }
(0136) 
(0137) /*LcdShGrClr:在Lcd上清图形显示屏--------------*
(0138) *功  能:在Lcd上清图形显示屏(清GDRAM)          *
(0139) *参  数:无                                    *
(0140) *返  回:无                                    *
(0141) *--------------------------------------------*/
(0142) void LcdShGrClr(void)
(0143) {  
    84E3 A6 36        ldA	#54
    84E5 87           pshA	
    84E6 CD 85C3      jsr	_Wtite_Command
    84E9 A7 01        aiS	#1
    84EB 95           tSX	
(0144)   unsigned char Px,y;//行页号,列坐标的循环变量
(0145)   Wtite_Command(0b00110110);//扩展指令,绘图开
(0146)   //[清图形显示屏(清GDRAM)]
(0147)   for(y=0;y<=31;y++)
    84EC 7F           clr	0,X
    84ED 20 20        bra	0x850F
(0148)      for(Px=0;Px<=15;Px++)
    84EF 6F 01        clr	1,X
    84F1 20 15        bra	0x8508
(0149)         LcdShGr16P(y,Px,0);  //写入0为清屏
    84F3 45 0000      ldHX	#0x0000
    84F6 89           pshX	
    84F7 8B           pshH	
    84F8 95           tSX	
    84F9 AF 02        aiX	#2
    84FB E6 01        ldA	1,X
    84FD 87           pshA	
    84FE F6           ldA	0,X
    84FF 87           pshA	
    8500 CD 858D      jsr	_LcdShGr16P
    8503 A7 04        aiS	#4
    8505 95           tSX	
    8506 6C 01        inc	1,X
    8508 E6 01        ldA	1,X
    850A A1 0F        cmp	#15
    850C 23 E5        bls	0x84F3
    850E 7C           inc	0,X
    850F F6           ldA	0,X
    8510 A1 1F        cmp	#31
    8512 23 DB        bls	0x84EF
(0150)   Wtite_Command(0b00110000);//基本指令
    8514 A6 30        ldA	#48
    8516 87           pshA	
    8517 CD 85C3      jsr	_Wtite_Command
    851A A7 01        aiS	#1
    851C 95           tSX	
    851D A7 02        aiS	#2
    851F 81           rts	
_LcdShGr1P:
  value                --> X+0
  x                    --> X+5
  y                    --> X+4
    8520 A7 FE        aiS	#-2
    8522 95           tSX	
(0151) }
(0152) 
(0153) /*LcdShGr1P:在Lcd的指定位置上画一个点------------------*
(0154) *功  能:在Lcd的指定位置上画一个点                      *
(0155) *参  数:y为纵坐标(0-63),x为横坐标(0-127)              *
(0156) *返  回:无                                             *
(0157) *-----------------------------------------------------*/
(0158) void LcdShGr1P(unsigned char y,unsigned char x)
(0159) {
    8523 A6 80        ldA	#-128
    8525 F7           stA	0,X
    8526 A6 00        ldA	#0
    8528 E7 01        stA	1,X
(0160)   unsigned int value=32768;//初始值为0b1000000000000000
(0161)   if(y>=32)                //第三四行必须调整x和y坐标
    852A E6 04        ldA	4,X
    852C A1 20        cmp	#32
    852E 25 0A        bcs	0x853A
(0162)      {y=y-32;x=x+16*8;}
    8530 A0 20        sub	#32
    8532 E7 04        stA	4,X
    8534 E6 05        ldA	5,X
    8536 AB 80        add	#-128
    8538 E7 05        stA	5,X
(0163)   value>>=(x-x/16*16);     //写入的16位数据
    853A 3F 40        clr	*__r0
    853C E6 05        ldA	5,X
    853E B7 4D        stA	*__rlo
    8540 4E 404C      mov	*__r0,*__rhi
    8543 A6 10        ldA	#16
    8545 87           pshA	
    8546 4F           clrA	
    8547 87           pshA	
    8548 CD 8764      jsr	__divmod16s
    854B A7 02        aiS	#2
    854D 4E 4C40      mov	*__rhi,*__r0
    8550 4E 4D41      mov	*__rlo,*__r1
    8553 A6 04        ldA	#4
    8555 38 41        lsl	*__r1
    8557 39 40        rol	*__r0
    8559 4B FA        dbnzA	0x859C
    855B 3F 42        clr	*__r2
    855D E6 05        ldA	5,X
    855F B0 41        sub	*__r1
    8561 B7 41        stA	*__r1
    8563 B6 42        ldA	*__r2
    8565 B2 40        sbc	*__r0
    8567 B6 41        ldA	*__r1
    8569 A4 0F        and	#15
    856B 27 05        beq	0x8572
    856D 74           lsr	0,X
    856E 66 01        ror	1,X
    8570 4B FB        dbnzA	0x85B3
(0164)   LcdShGr16P(y,x/16,value);//显示相应的点
    8572 E6 01        ldA	1,X
    8574 87           pshA	
    8575 F6           ldA	0,X
    8576 87           pshA	
    8577 E6 05        ldA	5,X
    8579 AE 10        ldX	#16
    857B 8C           clrH	
    857C 52           div	
    857D 95           tSX	
    857E AF 02        aiX	#2
    8580 87           pshA	
    8581 E6 04        ldA	4,X
    8583 87           pshA	
    8584 CD 858D      jsr	_LcdShGr16P
    8587 A7 04        aiS	#4
    8589 95           tSX	
    858A A7 02        aiS	#2
    858C 81           rts	
_LcdShGr16P:
  value                --> X+4
  Px                   --> X+3
  y                    --> X+2
    858D 95           tSX	
(0165)  }
(0166) 
(0167) /*LcdShGr16P:在Lcd指定位置上设置线型16个点的显示-----------*
(0168) *功  能:在Lcd指定位置上设置线型16个点的显示                *
(0169) *参  数:y为纵坐标(0-63),Px为页号(0-15),value为16位数据   *
(0170) *返  回:无                                                 *
(0171) *---------------------------------------------------------*/
(0172) void LcdShGr16P(unsigned char y,unsigned char Px,int value)
(0173) {
    858E E6 02        ldA	2,X
    8590 AA 80        orA	#-128
    8592 87           pshA	
    8593 CD 85C3      jsr	_Wtite_Command
    8596 A7 01        aiS	#1
    8598 95           tSX	
(0174)  //Wtite_Command(0b00110110); //8位数据,扩展指令,绘图开
(0175)   Wtite_Command(y|0b10000000);//设置6位绘图列地址
(0176)   Wtite_Command(Px|0b10000000);//设置4位绘图行地址
    8599 E6 03        ldA	3,X
    859B AA 80        orA	#-128
    859D 87           pshA	
    859E CD 85C3      jsr	_Wtite_Command
    85A1 A7 01        aiS	#1
    85A3 95           tSX	
(0177)   Wtite_Data((unsigned char)(value>>8));//写入高8个字节
    85A4 E6 04        ldA	4,X
    85A6 B7 41        stA	*__r1
    85A8 3F 40        clr	*__r0
    85AA 3D 41        tst	*__r1
    85AC 2A 02        bpl	0x85B0
    85AE 33 40        com	*__r0
    85B0 B6 41        ldA	*__r1
    85B2 87           pshA	
    85B3 CD 85DE      jsr	_Wtite_Data
    85B6 A7 01        aiS	#1
    85B8 95           tSX	
(0178)   Wtite_Data((unsigned char)value);     //写入低8个字节
    85B9 E6 05        ldA	5,X
    85BB 87           pshA	
    85BC CD 85DE      jsr	_Wtite_Data
    85BF A7 01        aiS	#1
    85C1 95           tSX	
    85C2 81           rts	
_Wtite_Command:
  command              --> X+2
    85C3 95           tSX	
(0179)  //Wtite_Command(0b00110000); //8位数据,基本指令
(0180) }
(0181) 
(0182) //===========[Lcd基本操作:包括写指令,写数据和延时]===========
(0183) /*Wtite_Command:执行参数中的给定命令-------------------*
(0184) *功  能:执行参数中的给定命令                           *
(0185) *参  数:command为待执行的命令码                        *
(0186) *返  回:无                                             *
(0187) *-----------------------------------------------------*/
(0188) void Wtite_Command(unsigned char command)
(0189) {
    85C4 13 02        Bclr	1,0x02
(0190) 	LCD_CtrlPort&=~(1<<LCD_RS);  //RS=0
(0191) 	LCD_CtrlPort&=~(1<<LCD_RW);  //RW=0
    85C6 15 02        Bclr	2,0x02
(0192) 	LCD_DataPort=command;        //数据上线
    85C8 E6 02        ldA	2,X
    85CA B7 01        stA	0x01
(0193) 	LCD_CtrlPort|=(1<<LCD_E);    //E=1
    85CC 16 02        Bset	3,0x02
(0194)     asm("nop");                  //使数据稳定
    85CE 9D           nop	
(0195)     asm("nop");
    85CF 9D           nop	
(0196) 	LCD_CtrlPort&=~(1<<LCD_E);   //E=0,使数据有效
    85D0 17 02        Bclr	3,0x02
(0197) 	delay72us;                   //延时>72us
    85D2 45 001E      ldHX	#0x001E
    85D5 89           pshX	
    85D6 8B           pshH	
    85D7 CD 85F9      jsr	_DelayTimes
    85DA A7 02        aiS	#2
    85DC 95           tSX	
    85DD 81           rts	
_Wtite_Data:
  data                 --> X+2
    85DE 95           tSX	
(0198) }
(0199) 
(0200) /*Wtite_Data:将参数中给定的数据写入液晶控制器----------*
(0201) *功  能:将参数中给定的数据写入液晶控制器               *
(0202) *参  数:data为待写入的数据                             *
(0203) *返  回:无                                             *
(0204) *-----------------------------------------------------*/
(0205) void Wtite_Data(unsigned char data)
(0206) {
    85DF 12 02        Bset	1,0x02
(0207) 	LCD_CtrlPort|=(1<<LCD_RS);    //RS=1
(0208) 	LCD_CtrlPort&=~(1<<LCD_RW);   //RW=0
    85E1 15 02        Bclr	2,0x02
(0209) 	LCD_DataPort=data;            //数据上线
    85E3 E6 02        ldA	2,X
    85E5 B7 01        stA	0x01
(0210) 	LCD_CtrlPort|=(1<<LCD_E);     //E=1
    85E7 16 02        Bset	3,0x02
(0211)     asm("nop");                   //使数据稳定
    85E9 9D           nop	
(0212)     asm("nop");
    85EA 9D           nop	
(0213) 	LCD_CtrlPort&=~(1<<LCD_E);    //E=0,使数据有效
    85EB 17 02        Bclr	3,0x02
(0214) 	delay72us;                    //延时>72us
    85ED 45 001E      ldHX	#0x001E
    85F0 89           pshX	
    85F1 8B           pshH	
    85F2 CD 85F9      jsr	_DelayTimes
    85F5 A7 02        aiS	#2
    85F7 95           tSX	
    85F8 81           rts	
_DelayTimes:
  i                    --> X+0
  tn                   --> X+4
    85F9 A7 FE        aiS	#-2
    85FB 95           tSX	
(0215) }
(0216) 
(0217) /*DelayTimes:延时指定时间---------------*
(0218) *功  能:延时指定的时间                  *
(0219) *入  口:tn为延时时间数(0到65535)        *
(0220) *出  口:无                              *
(0221) *--------------------------------------*/
(0222) void DelayTimes(unsigned int tn)
(0223) {
    85FC 6F 01        clr	1,X
    85FE 7F           clr	0,X
    85FF 20 0A        bra	0x860B
(0224)   unsigned int i;    //循环变量
(0225)   for(i=0;i<tn;i++);
    8601 E6 01        ldA	1,X
    8603 AB 01        add	#1
    8605 E7 01        stA	1,X
    8607 F6           ldA	0,X
    8608 A9 00        adc	#0
    860A F7           stA	0,X
    860B E6 05        ldA	5,X
    860D B7 41        stA	*__r1
    860F E6 04        ldA	4,X
    8611 B7 40        stA	*__r0
    8613 E6 01        ldA	1,X
    8615 B7 43        stA	*__r3
    8617 F6           ldA	0,X
    8618 B7 42        stA	*__r2
    861A 55 42        ldHX	*__r2
    861C 75 40        cpHX	*__r0

⌨️ 快捷键说明

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