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

📄 tg1286~1.lst

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0145) *返  回:无                                                                 *
(0146) *-------------------------------------------------------------------------*/
(0147) void LcdShGrClr(void)
(0148) {  
    94BF A6 36        ldA	#54
    94C1 87           pshA	
    94C2 CD 959F      jsr	_Wtite_Command
    94C5 A7 01        aiS	#1
    94C7 95           tSX	
(0149)   INT8U Px,y;               //行页号,列坐标的循环变量
(0150)   Wtite_Command(0b00110110);//扩展指令,绘图开  
(0151)   //[清图形显示屏(清GDRAM)]
(0152)   for(y=0;y<=31;y++)
    94C8 7F           clr	0,X
    94C9 20 20        bra	0x94EB
(0153)      for(Px=0;Px<=15;Px++)
    94CB 6F 01        clr	1,X
    94CD 20 15        bra	0x94E4
(0154)         LcdShGr16P(y,Px,0);  //写入0为清屏
    94CF 45 0000      ldHX	#0x0000
    94D2 89           pshX	
    94D3 8B           pshH	
    94D4 95           tSX	
    94D5 AF 02        aiX	#2
    94D7 E6 01        ldA	1,X
    94D9 87           pshA	
    94DA F6           ldA	0,X
    94DB 87           pshA	
    94DC CD 9569      jsr	_LcdShGr16P
    94DF A7 04        aiS	#4
    94E1 95           tSX	
    94E2 6C 01        inc	1,X
    94E4 E6 01        ldA	1,X
    94E6 A1 0F        cmp	#15
    94E8 23 E5        bls	0x94CF
    94EA 7C           inc	0,X
    94EB F6           ldA	0,X
    94EC A1 1F        cmp	#31
    94EE 23 DB        bls	0x94CB
(0155)   Wtite_Command(0b00110000);//基本指令
    94F0 A6 30        ldA	#48
    94F2 87           pshA	
    94F3 CD 959F      jsr	_Wtite_Command
    94F6 A7 01        aiS	#1
    94F8 95           tSX	
    94F9 A7 02        aiS	#2
    94FB 81           rts	
_LcdShGr1P:
  value                --> X+0
  x                    --> X+5
  y                    --> X+4
    94FC A7 FE        aiS	#-2
    94FE 95           tSX	
(0156) }
(0157) 
(0158) /*LcdShGr1P:在Lcd的指定位置上画一个点--------------------------------------*
(0159) *功  能:在Lcd的指定位置上画一个点                                          *
(0160) *参  数:y为纵坐标(0-63),x为横坐标(0-127)                                  *
(0161) *返  回:无                                                                 *
(0162) *-------------------------------------------------------------------------*/
(0163) void LcdShGr1P(INT8U y,INT8U x)
(0164) {
    94FF A6 80        ldA	#-128
    9501 F7           stA	0,X
    9502 A6 00        ldA	#0
    9504 E7 01        stA	1,X
(0165)   INT16U value=32768;      //初始值为0b1000000000000000
(0166)   if(y>=32)                //第三四行必须调整x和y坐标
    9506 E6 04        ldA	4,X
    9508 A1 20        cmp	#32
    950A 25 0A        bcs	0x9516
(0167)      {y=y-32;x=x+16*8;}
    950C A0 20        sub	#32
    950E E7 04        stA	4,X
    9510 E6 05        ldA	5,X
    9512 AB 80        add	#-128
    9514 E7 05        stA	5,X
(0168)   value>>=(x-x/16*16);     //写入的16位数据
    9516 3F 40        clr	*__r0
    9518 E6 05        ldA	5,X
    951A B7 4D        stA	*__rlo
    951C 4E 404C      mov	*__r0,*__rhi
    951F A6 10        ldA	#16
    9521 87           pshA	
    9522 4F           clrA	
    9523 87           pshA	
    9524 CD 98E0      jsr	__divmod16s
    9527 A7 02        aiS	#2
    9529 4E 4C40      mov	*__rhi,*__r0
    952C 4E 4D41      mov	*__rlo,*__r1
    952F A6 04        ldA	#4
    9531 38 41        lsl	*__r1
    9533 39 40        rol	*__r0
    9535 4B FA        dbnzA	0x9578
    9537 3F 42        clr	*__r2
    9539 E6 05        ldA	5,X
    953B B0 41        sub	*__r1
    953D B7 41        stA	*__r1
    953F B6 42        ldA	*__r2
    9541 B2 40        sbc	*__r0
    9543 B6 41        ldA	*__r1
    9545 A4 0F        and	#15
    9547 27 05        beq	0x954E
    9549 74           lsr	0,X
    954A 66 01        ror	1,X
    954C 4B FB        dbnzA	0x958F
(0169)   LcdShGr16P(y,x/16,value);//显示相应的点
    954E E6 01        ldA	1,X
    9550 87           pshA	
    9551 F6           ldA	0,X
    9552 87           pshA	
    9553 E6 05        ldA	5,X
    9555 AE 10        ldX	#16
    9557 8C           clrH	
    9558 52           div	
    9559 95           tSX	
    955A AF 02        aiX	#2
    955C 87           pshA	
    955D E6 04        ldA	4,X
    955F 87           pshA	
    9560 CD 9569      jsr	_LcdShGr16P
    9563 A7 04        aiS	#4
    9565 95           tSX	
    9566 A7 02        aiS	#2
    9568 81           rts	
_LcdShGr16P:
  value                --> X+4
  Px                   --> X+3
  y                    --> X+2
    9569 95           tSX	
(0170)  }
(0171) 
(0172) /*LcdShGr16P:在Lcd指定位置上设置线型16个点的显示---------------------------*
(0173) *功  能:在Lcd指定位置上设置线型16个点的显示                                *
(0174) *参  数:y为纵坐标(0-63),Px为页号(0-15),value为16位数据                   *
(0175) *返  回:无                                                                 *
(0176) *-------------------------------------------------------------------------*/
(0177) void LcdShGr16P(INT8U y,INT8U Px,INT16S value)
(0178) {
    956A E6 02        ldA	2,X
    956C AA 80        orA	#-128
    956E 87           pshA	
    956F CD 959F      jsr	_Wtite_Command
    9572 A7 01        aiS	#1
    9574 95           tSX	
(0179)  //Wtite_Command(0b00110110); //8位数据,扩展指令,绘图开
(0180)   Wtite_Command(y|0b10000000);//设置6位绘图列地址
(0181)   Wtite_Command(Px|0b10000000);//设置4位绘图行地址
    9575 E6 03        ldA	3,X
    9577 AA 80        orA	#-128
    9579 87           pshA	
    957A CD 959F      jsr	_Wtite_Command
    957D A7 01        aiS	#1
    957F 95           tSX	
(0182)   Wtite_Data((INT8U)(value>>8));//写入高8个字节
    9580 E6 04        ldA	4,X
    9582 B7 41        stA	*__r1
    9584 3F 40        clr	*__r0
    9586 3D 41        tst	*__r1
    9588 2A 02        bpl	0x958C
    958A 33 40        com	*__r0
    958C B6 41        ldA	*__r1
    958E 87           pshA	
    958F CD 95BA      jsr	_Wtite_Data
    9592 A7 01        aiS	#1
    9594 95           tSX	
(0183)   Wtite_Data((INT8U)value);     //写入低8个字节
    9595 E6 05        ldA	5,X
    9597 87           pshA	
    9598 CD 95BA      jsr	_Wtite_Data
    959B A7 01        aiS	#1
    959D 95           tSX	
    959E 81           rts	
_Wtite_Command:
  command              --> X+2
    959F 95           tSX	
(0184)  //Wtite_Command(0b00110000); //8位数据,基本指令
(0185) }
(0186) 
(0187) /*===============[Lcd基本操作:包括写指令,写数据和延时]===================*/
(0188) /*Wtite_Command:执行参数中的给定命令---------------------------------------*
(0189) *功  能:执行参数中的给定命令                                               *
(0190) *参  数:command为待执行的命令码                                            *
(0191) *返  回:无                                                                 *
(0192) *-------------------------------------------------------------------------*/
(0193) void Wtite_Command(INT8U command)
(0194) {
    95A0 13 02        Bclr	1,0x02
(0195) 	LCD_CtrlPort&=~(1<<LCD_RS);  //RS=0
(0196) 	LCD_CtrlPort&=~(1<<LCD_RW);  //RW=0
    95A2 15 02        Bclr	2,0x02
(0197) 	LCD_DataPort=command;        //数据上线
    95A4 E6 02        ldA	2,X
    95A6 B7 01        stA	0x01
(0198) 	LCD_CtrlPort|=(1<<LCD_E);    //E=1
    95A8 16 02        Bset	3,0x02
(0199)     asm("nop");                  //使数据稳定
    95AA 9D           nop	
(0200)     asm("nop");
    95AB 9D           nop	
(0201) 	LCD_CtrlPort&=~(1<<LCD_E);   //E=0,使数据有效
    95AC 17 02        Bclr	3,0x02
(0202) 	delay72us;                   //延时>72us
    95AE 45 001E      ldHX	#0x001E
    95B1 89           pshX	
    95B2 8B           pshH	
    95B3 CD 95D5      jsr	_DelayTimes
    95B6 A7 02        aiS	#2
    95B8 95           tSX	
    95B9 81           rts	
_Wtite_Data:
  data                 --> X+2
    95BA 95           tSX	
(0203) }
(0204) 
(0205) /*Wtite_Data:将参数中给定的数据写入液晶控制器------------------------------*
(0206) *功  能:将参数中给定的数据写入液晶控制器                                   *
(0207) *参  数:data为待写入的数据                                                 *
(0208) *返  回:无                                                                 *
(0209) *-------------------------------------------------------------------------*/
(0210) void Wtite_Data(INT8U data)
(0211) {
    95BB 12 02        Bset	1,0x02
(0212) 	LCD_CtrlPort|=(1<<LCD_RS);    //RS=1
(0213) 	LCD_CtrlPort&=~(1<<LCD_RW);   //RW=0
    95BD 15 02        Bclr	2,0x02
(0214) 	LCD_DataPort=data;            //数据上线
    95BF E6 02        ldA	2,X
    95C1 B7 01        stA	0x01
(0215) 	LCD_CtrlPort|=(1<<LCD_E);     //E=1
    95C3 16 02        Bset	3,0x02
(0216)     asm("nop");                   //使数据稳定
    95C5 9D           nop	
(0217)     asm("nop");
    95C6 9D           nop	
(0218) 	LCD_CtrlPort&=~(1<<LCD_E);    //E=0,使数据有效
    95C7 17 02        Bclr	3,0x02
(0219) 	delay72us;                    //延时>72us
    95C9 45 001E      ldHX	#0x001E
    95CC 89           pshX	
    95CD 8B           pshH	
    95CE CD 95D5      jsr	_DelayTimes
    95D1 A7 02        aiS	#2
    95D3 95           tSX	
    95D4 81           rts	
_DelayTimes:
  i                    --> X+0
  tn                   --> X+4
    95D5 A7 FE        aiS	#-2
    95D7 95           tSX	
(0220) }
(0221) 
(0222) /*DelayTimes:延时指定时间--------------------------------------------------*
(0223) *功  能:延时指定的时间                                                     *
(0224) *入  口:tn为延时时间数(0到65535)                                           *
(0225) *出  口:无                                                                 *
(0226) *-------------------------------------------------------------------------*/
(0227) void DelayTimes(INT16U tn)
(0228) {
    95D8 6F 01        clr	1,X
    95DA 7F           clr	0,X
    95DB 20 0A        bra	0x95E7
(0229)   INT16U i;    //循环变量
(0230)   for(i=0;i<tn;i++);
    95DD E6 01        ldA	1,X
    95DF AB 01        add	#1
    95E1 E7 01        stA	1,X
    95E3 F6           ldA	0,X
    95E4 A9 00        adc	#0
    95E6 F7           stA	0,X
    95E7 E6 05        ldA	5,X
    95E9 B7 41        stA	*__r1
    95EB E6 04        ldA	4,X
    95ED B7 40        stA	*__r0
    95EF E6 01        ldA	1,X
    95F1 B7 43        stA	*__r3
    95F3 F6           ldA	0,X
    95F4 B7 42        stA	*__r2
    95F6 55 42        ldHX	*__r2
    95F8 75 40        cpHX	*__r0
    95FA 95           tSX	
    95FB 25 E0        bcs	0x95DD
    95FD A7 02        aiS	#2
    95FF 81           rts	
_LcdShBigNum:
  GBit                 --> X+0
  BBit                 --> X+1
  SBit                 --> X+2
  Yi                   --> X+3
  Num                  --> X+10
  BigNumCodeAdrr       --> X+8
  X                    --> X+7
  Y                    --> X+6
    9600 A7 FC        aiS	#-4
    9602 95           tSX	
(0231) }
(0232) 
(0233) //其他特殊功能函数
(0234) /*LcdShBigNum:在Lcd上显示自定义32*16点阵的数字(0--999)---------------------*
(0235) *功  能:在Lcd上显示自定义32*16点阵的数字(0--999)                           *
(0236) *参  数:X表示Lcd上显示字符的横坐标(0--5),Y为显示字符的纵坐标(0--1)         *
(0237) *       BigNumCodeAdrr为32*16点阵数字编码首地址,Num为当前的数据值(0--999)  *
(0238) *返  回:无                                                                 *
(0239) *内部调用:LcdShGr16P:在Lcd指定位置上设置线型16个点的显示                   *
(0240) *         Wtite_Command:执行参数中的给定命令                               *
(0241) *-------------------------------------------------------------------------*/
(0242) void LcdShBigNum(INT8U Y,INT8U X,INT16U * BigNumCodeAdrr,INT16U Num)
(0243) {
    9603 E6 06        ldA	6,X
    9605 A1 01        cmp	#1
    9607 22 16        bhi	0x961F
    9609 E6 07        ldA	7,X
    960B A1 05        cmp	#5
    960D 22 10        bhi	0x961F
    960F E6 0B        ldA	11,X
    9611 B7 41        stA	*__r1
    9613 E6 0A        ldA	10,X
    9615 B7 40        stA	*__r0
    9617 55 40        ldHX	*__r0
    9619 65 03E7      cpHX	#0x03E7
    961C 95           tSX	
    961D 23 03        bls	0x9622
(0244)   INT8U GBit,SBit,BBit;               //存放个位,十位,百位数据 
(0245)   INT8U Yi;                           //Y坐标方向的循环控制变量  
(0246)   if(Y>1||X>5||Num>999) goto LcdShBigNum_End; //参数值范围检测 
    961F CC 979D      jmp	0x979D
(0247)   GBit=Num%10; BBit=Num/100; SBit=(Num%100)/10;
    9622 E6 0B        ldA	11,X
    9624 B7 4D        stA	*__rlo
    9626 E6 0A        ldA	10,X
    9628 B7 4C        stA	*__rhi
    962A A6 0A        ldA	#10
    962C 87           pshA	
    962D 4F           clrA	
    962E 87           pshA	
    962F CD 993E      jsr	__divmod16u
    9632 86           pulA	
    9633 86           pulA	
    9634 F7           stA	0,X
    9635 E6 0B        ldA	11,X
    9637 B7 4D        stA	*__rlo
    9639 E6 0A        ldA	10,X
    963B B7 4C        stA	*__rhi
    963D A6 64        ldA	#100

⌨️ 快捷键说明

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