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

📄 tg1286~1.lst

📁 为日本瑞萨苏州分公司做的一个温控系统
💻 LST
📖 第 1 页 / 共 4 页
字号:
    81C8 87           pshA	
    81C9 CD 85C3      jsr	_Wtite_Command
    81CC A7 01        aiS	#1
(0040)  	Wtite_Command(0b00000001); //清屏
    81CE A6 01        ldA	#1
    81D0 87           pshA	
    81D1 CD 85C3      jsr	_Wtite_Command
    81D4 A7 01        aiS	#1
(0041) 	delay1600us;               //延时>1.6ms
    81D6 45 0FA0      ldHX	#0x0FA0
    81D9 89           pshX	
    81DA 8B           pshH	
    81DB CD 85F9      jsr	_DelayTimes
    81DE A7 02        aiS	#2
(0042) 	Wtite_Command(0b00000110); //进入模式设定
    81E0 A6 06        ldA	#6
    81E2 87           pshA	
    81E3 CD 85C3      jsr	_Wtite_Command
    81E6 A7 01        aiS	#1
(0043)     LcdShGrClr();              //清Lcd图形显示屏
    81E8 CD 84E0      jsr	_LcdShGrClr
    81EB 95           tSX	
    81EC 81           rts	
_LcdShCh:
  i                    --> X+0
  LcdSBuff             --> X+3
    81ED A7 FF        aiS	#-1
    81EF 95           tSX	
(0044) }
(0045) 
(0046) //==================[Lcd显示字符操作]========================
(0047) /*LcdShCh:在液晶显示屏上显示字符数据-------------------*
(0048) *功  能:在液晶显示屏上显示以LcdSBuff为首地址的64个数据 *
(0049) *参  数:待显示的64个数据的首地址                       *
(0050) *返  回:无                                             *
(0051) *-----------------------------------------------------*/
(0052) void LcdShCh(unsigned char *LcdSBuff)
(0053) {
    81F0 A6 80        ldA	#-128
    81F2 87           pshA	
    81F3 CD 85C3      jsr	_Wtite_Command
    81F6 A7 01        aiS	#1
    81F8 95           tSX	
(0054) 	unsigned char i;             //data数组计数器(0-63)
(0055)   //[Lcd显示64个数据]   
(0056)     Wtite_Command(0x80);         //DDRAM地址设置
(0057) 	for(i=0;i<64;i++)            //显示data中的64个数据
    81F9 7F           clr	0,X
    81FA 20 65        bra	0x8261
(0058)  	 { 
    81FC F6           ldA	0,X
    81FD A1 0F        cmp	#15
    81FF 23 04        bls	0x8205
    8201 A1 30        cmp	#48
    8203 25 19        bcs	0x821E
(0059)  	  //[Lcd按行显示16个数据]
(0060)  	  if((i<=15)||(i>=48))         //第一行和第四行不变
(0061)  	  	Wtite_Data(LcdSBuff[i]);   
    8205 3F 40        clr	*__r0
    8207 F6           ldA	0,X
    8208 EB 04        add	4,X
    820A B7 41        stA	*__r1
    820C B6 40        ldA	*__r0
    820E E9 03        adc	3,X
    8210 B7 40        stA	*__r0
    8212 55 40        ldHX	*__r0
    8214 F6           ldA	0,X
    8215 87           pshA	
    8216 CD 85DE      jsr	_Wtite_Data
    8219 A7 01        aiS	#1
    821B 95           tSX	
    821C 20 42        bra	0x8260
(0062)  	  else if(i<=31)       //显示的第二行为缓冲的第三行
    821E F6           ldA	0,X
    821F A1 1F        cmp	#31
    8221 22 1A        bhi	0x823D
(0063)  	    Wtite_Data(LcdSBuff[i+16]);
    8223 3F 40        clr	*__r0
    8225 EB 04        add	4,X
    8227 B7 41        stA	*__r1
    8229 B6 40        ldA	*__r0
    822B E9 03        adc	3,X
    822D B7 40        stA	*__r0
    822F 55 40        ldHX	*__r0
    8231 AF 10        aiX	#16
    8233 F6           ldA	0,X
    8234 87           pshA	
    8235 CD 85DE      jsr	_Wtite_Data
    8238 A7 01        aiS	#1
    823A 95           tSX	
    823B 20 23        bra	0x8260
(0064)  	  else                 //显示的第三行为缓冲的第二行
(0065)  	    Wtite_Data(LcdSBuff[i-16]);
    823D 3F 40        clr	*__r0
    823F F6           ldA	0,X
    8240 A0 10        sub	#16
    8242 B7 41        stA	*__r1
    8244 B6 40        ldA	*__r0
    8246 A2 00        sbc	#0
    8248 B7 40        stA	*__r0
    824A B6 41        ldA	*__r1
    824C EB 04        add	4,X
    824E B7 41        stA	*__r1
    8250 B6 40        ldA	*__r0
    8252 E9 03        adc	3,X
    8254 B7 40        stA	*__r0
    8256 55 40        ldHX	*__r0
    8258 F6           ldA	0,X
    8259 87           pshA	
    825A CD 85DE      jsr	_Wtite_Data
    825D A7 01        aiS	#1
    825F 95           tSX	
(0066)  	 }        
    8260 7C           inc	0,X
    8261 F6           ldA	0,X
    8262 A1 40        cmp	#64
    8264 25 96        bcs	0x81FC
    8266 A7 01        aiS	#1
    8268 81           rts	
_LcdShGrCil:
  y                    --> X+0
  mistake              --> X+1
  x                    --> X+5
  GrE                  --> X+12
  GrCilMV              --> X+11
  CR                   --> X+10
  Cx                   --> X+9
  Cy                   --> X+8
    8269 A7 FA        aiS	#-6
    826B 95           tSX	
(0067) }
(0068) 
(0069) //=====[Lcd画图操作:包括画圆,画矩形框,图形清屏,画点等]=====
(0070) /*LcdShGrCil:在Lcd上显示或取消空心圆型-----------------*
(0071) *功  能:在Lcd上的指定位置显示或取消空心圆型            *
(0072) *参  数:Cx为圆心横坐标,Cy为圆心纵坐标                  *
(0073) *       CR为圆的半径,GrE确定图形是否有效               *
(0074) *       GrCilMV为显示圆型时的正误差值                  *
(0075) *       例如:半径为10,误差为4;半径为30,误差为30     *
(0076) *返  回:无                                             *
(0077) *-----------------------------------------------------*/
(0078) void LcdShGrCil(unsigned char Cy,unsigned char Cx,
(0079)                 unsigned char CR,unsigned char 
(0080)                 GrCilMV,unsigned char GrE)
(0081) {
    826C A6 36        ldA	#54
    826E 87           pshA	
    826F CD 85C3      jsr	_Wtite_Command
    8272 A7 01        aiS	#1
    8274 95           tSX	
(0082)   unsigned char x,y;            //坐标的循环控制变量
(0083)   long int mistake;             //显示时的误差值
(0084)   Wtite_Command(0b00110110);    //扩展指令,绘图开
(0085)   for(y=Cy-CR;y<=Cy+CR;y++)
    8275 E6 08        ldA	8,X
    8277 E0 0A        sub	10,X
    8279 F7           stA	0,X
    827A CC 83FA      jmp	0x83FA
(0086)       for(x=Cx-CR;x<=Cx+CR;x++)
    827D E6 09        ldA	9,X
    827F E0 0A        sub	10,X
    8281 E7 05        stA	5,X
    8283 CC 83EA      jmp	0x83EA
(0087) 	     {  
    8286 3F 40        clr	*__r0
    8288 E6 09        ldA	9,X
    828A B7 41        stA	*__r1
    828C 3F 42        clr	*__r2
    828E E6 05        ldA	5,X
    8290 B0 41        sub	*__r1
    8292 B7 41        stA	*__r1
    8294 B6 42        ldA	*__r2
    8296 B2 40        sbc	*__r0
    8298 B7 40        stA	*__r0
    829A 3F 42        clr	*__r2
    829C E6 08        ldA	8,X
    829E B7 43        stA	*__r3
    82A0 3F 44        clr	*__r4
    82A2 F6           ldA	0,X
    82A3 B0 43        sub	*__r3
    82A5 B7 43        stA	*__r3
    82A7 B6 44        ldA	*__r4
    82A9 B2 42        sbc	*__r2
    82AB B7 42        stA	*__r2
    82AD B6 43        ldA	*__r3
    82AF 87           pshA	
    82B0 B6 42        ldA	*__r2
    82B2 87           pshA	
    82B3 B6 43        ldA	*__r3
    82B5 87           pshA	
    82B6 B6 42        ldA	*__r2
    82B8 87           pshA	
    82B9 CD 881C      jsr	__mul16
    82BC A7 04        aiS	#4
    82BE 4E 4D43      mov	*__rlo,*__r3
    82C1 4E 4C42      mov	*__rhi,*__r2
    82C4 B6 41        ldA	*__r1
    82C6 87           pshA	
    82C7 B6 40        ldA	*__r0
    82C9 87           pshA	
    82CA B6 41        ldA	*__r1
    82CC 87           pshA	
    82CD B6 40        ldA	*__r0
    82CF 87           pshA	
    82D0 CD 881C      jsr	__mul16
    82D3 A7 04        aiS	#4
    82D5 4E 4D41      mov	*__rlo,*__r1
    82D8 4E 4C40      mov	*__rhi,*__r0
    82DB B6 41        ldA	*__r1
    82DD BB 43        add	*__r3
    82DF B7 41        stA	*__r1
    82E1 B6 40        ldA	*__r0
    82E3 B9 42        adc	*__r2
    82E5 B7 40        stA	*__r0
    82E7 3F 42        clr	*__r2
    82E9 E6 0A        ldA	10,X
    82EB B7 43        stA	*__r3
    82ED 3F 44        clr	*__r4
    82EF E6 0A        ldA	10,X
    82F1 87           pshA	
    82F2 B6 44        ldA	*__r4
    82F4 87           pshA	
    82F5 B6 43        ldA	*__r3
    82F7 87           pshA	
    82F8 B6 42        ldA	*__r2
    82FA 87           pshA	
    82FB CD 881C      jsr	__mul16
    82FE A7 04        aiS	#4
    8300 4E 4D43      mov	*__rlo,*__r3
    8303 4E 4C42      mov	*__rhi,*__r2
    8306 B6 41        ldA	*__r1
    8308 B0 43        sub	*__r3
    830A B7 41        stA	*__r1
    830C B6 40        ldA	*__r0
    830E B2 42        sbc	*__r2
    8310 B7 40        stA	*__r0
    8312 4F           clrA	
    8313 E7 02        stA	2,X
    8315 E7 01        stA	1,X
    8317 B6 41        ldA	*__r1
    8319 E7 04        stA	4,X
    831B B6 40        ldA	*__r0
    831D E7 03        stA	3,X
    831F 2A 04        bpl	0x8325
    8321 63 02        com	2,X
    8323 63 01        com	1,X
(0088) 	      mistake=(x-Cx)*(x-Cx)+(y-Cy)*(y-Cy)-CR*CR;
(0089) 	      //误差在范围之内时,显示该点
(0090) 	      if((mistake<=GrCilMV)&&(mistake>=-GrCilMV))
    8325 3F 42        clr	*__r2
    8327 3F 41        clr	*__r1
    8329 3F 40        clr	*__r0
    832B E6 0B        ldA	11,X
    832D B7 43        stA	*__r3
    832F E6 04        ldA	4,X
    8331 87           pshA	
    8332 E6 03        ldA	3,X
    8334 87           pshA	
    8335 E6 02        ldA	2,X
    8337 87           pshA	
    8338 E6 01        ldA	1,X
    833A 87           pshA	
    833B B6 43        ldA	*__r3
    833D 87           pshA	
    833E B6 42        ldA	*__r2
    8340 87           pshA	
    8341 B6 41        ldA	*__r1
    8343 87           pshA	
    8344 B6 40        ldA	*__r0
    8346 87           pshA	
    8347 CD 8730      jsr	__cmp32
    834A A7 08        aiS	#8
    834C 93 03        ble	0x8351
    834E CC 83E8      jmp	0x83E8
    8351 3F 40        clr	*__r0
    8353 E6 0B        ldA	11,X
    8355 B7 41        stA	*__r1
    8357 B6 40        ldA	*__r0
    8359 40           negA	
    835A 87           pshA	
    835B B6 41        ldA	*__r1
    835D 40           negA	
    835E B7 41        stA	*__r1
    8360 86           pulA	
    8361 A2 00        sbc	#0
    8363 B7 40        stA	*__r0
    8365 4E 4143      mov	*__r1,*__r3
    8368 4E 4042      mov	*__r0,*__r2
    836B 3F 41        clr	*__r1
    836D 3F 40        clr	*__r0
    836F 3D 42        tst	*__r2
    8371 2A 04        bpl	0x8377
    8373 33 41        com	*__r1
    8375 33 40        com	*__r0
    8377 E6 04        ldA	4,X
    8379 87           pshA	
    837A E6 03        ldA	3,X
    837C 87           pshA	
    837D E6 02        ldA	2,X
    837F 87           pshA	
    8380 E6 01        ldA	1,X
    8382 87           pshA	
    8383 B6 43        ldA	*__r3
    8385 87           pshA	
    8386 B6 42        ldA	*__r2
    8388 87           pshA	
    8389 B6 41        ldA	*__r1
    838B 87           pshA	
    838C B6 40        ldA	*__r0
    838E 87           pshA	
    838F CD 8730      jsr	__cmp32
    8392 A7 08        aiS	#8
    8394 91 52        blt	0x83E8
(0091) 	 	     {
    8396 E6 0C        ldA	12,X
    8398 A1 01        cmp	#1
    839A 26 0D        bne	0x83A9
(0092)  	          if(GrE==1)   LcdShGr1P(y,x);//显示该点
    839C E6 05        ldA	5,X
    839E 87           pshA	
    839F F6           ldA	0,X
    83A0 87           pshA	
    83A1 CD 8520      jsr	_LcdShGr1P
    83A4 A7 02        aiS	#2
    83A6 95           tSX	
    83A7 20 3F        bra	0x83E8
(0093) 	 	      //清除该点
(0094) 	 	      else if(y<=31) LcdShGr16P(y,(x/16),0);        
    83A9 F6           ldA	0,X
    83AA A1 1F        cmp	#31
    83AC 22 1C        bhi	0x83CA
    83AE 45 0000      ldHX	#0x0000
    83B1 89           pshX	
    83B2 8B           pshH	
    83B3 95           tSX	
    83B4 AF 02        aiX	#2
    83B6 E6 05        ldA	5,X
    83B8 AE 10        ldX	#16
    83BA 8C           clrH	
    83BB 52           div	
    83BC 95           tSX	
    83BD AF 02        aiX	#2
    83BF 87           pshA	
    83C0 F6           ldA	0,X
    83C1 87           pshA	
    83C2 CD 858D      jsr	_LcdShGr16P
    83C5 A7 04        aiS	#4
    83C7 95           tSX	
    83C8 20 1E        bra	0x83E8
(0095) 	 	      else           LcdShGr16P(y-32,x/16+8,0); 
    83CA 45 0000      ldHX	#0x0000
    83CD 89           pshX	
    83CE 8B           pshH	
    83CF 95           tSX	
    83D0 AF 02        aiX	#2
    83D2 E6 05        ldA	5,X
    83D4 AE 10        ldX	#16
    83D6 8C           clrH	
    83D7 52           div	
    83D8 95           tSX	
    83D9 AF 02        aiX	#2
    83DB AB 08        add	#8
    83DD 87           pshA	
    83DE F6           ldA	0,X
    83DF A0 20        sub	#32
    83E1 87           pshA	
    83E2 CD 858D      jsr	_LcdShGr16P
    83E5 A7 04        aiS	#4
    83E7 95           tSX	
(0096) 	 	     }
    83E8 6C 05        inc	5,X
    83EA E6 09        ldA	9,X
    83EC EB 0A        add	10,X
    83EE B7 40        stA	*__r0
    83F0 E6 05        ldA	5,X
    83F2 B1 40        cmp	*__r0
    83F4 22 03        bhi	0x83F9
    83F6 CC 8286      jmp	0x8286
    83F9 7C           inc	0,X
    83FA E6 08        ldA	8,X
    83FC EB 0A        add	10,X
    83FE B7 40        stA	*__r0
    8400 F6           ldA	0,X
    8401 B1 40        cmp	*__r0
    8403 22 03        bhi	0x8408
    8405 CC 827D      jmp	0x827D
(0097) 	 	 } 
(0098)  // LcdShGr1P(Cy,Cx);//显示圆心       	   
(0099)   Wtite_Command(0b00110000);//基本指令
    8408 A6 30        ldA	#48
    840A 87           pshA	
    840B CD 85C3      jsr	_Wtite_Command
    840E A7 01        aiS	#1
    8410 95           tSX	
    8411 A7 06        aiS	#6
    8413 81           rts	
_LcdShGrRe:
  RC                   --> X+0
  LC                   --> X+2
  TBC                  --> X+4
  i                    --> X+6
  y                    --> X+7
  Px                   --> X+8
  GrE                  --> X+12
  ln                   --> X+11
    8414 A7 F7        aiS	#-9
    8416 95           tSX	
(0100) }
(0101) 
(0102) /*LcdShGrRe:在Lcd的指定行上显示或取消矩型边框--------*
(0103) *功  能:在Lcd上指定行上显示或取消矩型边框            *
(0104) *参  数:ln为指定的行数(0-3), GrE确定图形是否有效     *
(0105) *返  回:无                                           *
(0106) *---------------------------------------------------*/
(0107) void LcdShGrRe(unsigned char ln,unsigned char GrE)
(0108) {  
    8417 E6 0B        ldA	11,X
    8419 27 04        beq	0x841F
    841B A1 02        cmp	#2
    841D 26 04        bne	0x8423
(0109)   unsigned char Px,y;//行页号坐标,列坐标
(0110)   unsigned char i;   //循环变量

⌨️ 快捷键说明

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