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

📄 tg1286~1.lst

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 LST
📖 第 1 页 / 共 5 页
字号:
    913A 55 92        ldHX	0xFFFFFF92
    913C 89           pshX	
    913D 8B           pshH	
    913E A6 00        ldA	#0
    9140 87           pshA	
    9141 A6 80        ldA	#-128
    9143 87           pshA	
    9144 B6 91        ldA	0xFFFFFF91
    9146 87           pshA	
    9147 B6 90        ldA	0xFFFFFF90
    9149 87           pshA	
    914A CD 9600      jsr	_LcdShBigNum
    914D A7 06        aiS	#6
    914F 95           tSX	
(0031)    //在指定位置显示点
(0032)    //LcdShGr1P(31,64);
(0033)    //清除定时器溢出标志位
(0034)    T1SC&=~(1<<TOFBit);
    9150 1F 20        Bclr	7,0x20
(0035)    asm("CLI");            //开总中断
    9152 9A           clI	
    9153 86           pulA	
    9154 B7 4D        stA	*__rlo
    9156 86           pulA	
    9157 B7 4C        stA	*__rhi
    9159 86           pulA	
    915A B7 4B        stA	*__r11
    915C 86           pulA	
    915D B7 4A        stA	*__r10
    915F 86           pulA	
    9160 B7 49        stA	*__r9
    9162 86           pulA	
    9163 B7 48        stA	*__r8
    9165 86           pulA	
    9166 B7 47        stA	*__r7
    9168 86           pulA	
    9169 B7 46        stA	*__r6
    916B 86           pulA	
    916C B7 45        stA	*__r5
    916E 86           pulA	
    916F B7 44        stA	*__r4
    9171 86           pulA	
    9172 B7 43        stA	*__r3
    9174 86           pulA	
    9175 B7 42        stA	*__r2
    9177 86           pulA	
    9178 B7 41        stA	*__r1
    917A 86           pulA	
    917B B7 40        stA	*__r0
    917D 8A           pulH	
    917E 80           rti	
_isrDummy:
    917F 8B           pshH	
(0036)   }
(0037) 
(0038) //未定义的中断处理函数,本函数不能删除
(0039) #pragma interrupt_handler isrDummy  
(0040) void isrDummy(void) 
(0041)   {
    9180 8A           pulH	
    9181 80           rti	
FILE: lcd.c
(0001) /*-------------------------------------------------------------------------*
(0002) *文件描述:本文件包含了液晶显示相关子程序,分别为:                           *  
(0003) *(1)Lcdinit:液晶初始化子程序                                               *
(0004) *(2)LcdShCh:在液晶显示屏上显示字符数据                                     *
(0005) *(3)LcdShGrRe:在Lcd的指定行上显示或取消矩型边框                            *
(0006) *(4)LcdShGrCil:在Lcd上显示或取消空心圆型                                   *
(0007) *-------------------------------------------------------------------------*/
(0008) 
(0009) //包含头文件 
(0010) #include "lcd.h"    //Lcd头文件
(0011) 
(0012) //定义延时子程序
(0013) #define delay1600us DelayTimes(4000)      //延时>1.6ms
(0014) #define delay72us   DelayTimes(30)	      //延时>72us
(0015) #define delay40ms   DelayTimes(10000)     //延时>40ms
(0016) 
(0017) //内部调用函数声明
(0018) //在Lcd指定位置上设置线型16个点的显示
(0019) void LcdShGr16P(INT8U,INT8U,INT16S);
(0020) //在Lcd指定位置上画1个点
(0021) void LcdShGr1P(INT8U,INT8U);
(0022) void DelayTimes(INT16U);                  //延时指定时间
(0023) void Wtite_Command(INT8U);                //将控制命令写入Lcd
(0024) void Wtite_Data(INT8U);                   //将数据写入Lcd
(0025) void LcdShGrClr(void);                    //在Lcd上清图形显示屏
(0026) 
(0027) /*===========================[Lcd初始化操作]==============================*/
(0028) /*Lcdinit:初始化液晶-------------------------------------------------------*
(0029) *功  能:初始化液晶,设置显示方式,清屏、C自动+1                             *
(0030) *参  数:无                                                                 *
(0031) *返  回:无                                                                 *
(0032) *-------------------------------------------------------------------------*/
(0033) void Lcdinit(void)
(0034) {
_Lcdinit:
    9182 12 06        Bset	1,0x06
(0035)     /*控制口高四位设置为输出*/
(0036)     LCD_CtrlPortDDR|=(1<<LCD_RS);//RS的方向为输出
(0037) 	LCD_CtrlPortDDR|=(1<<LCD_RW);//RW的方向为输出
    9184 14 06        Bset	2,0x06
(0038) 	LCD_CtrlPortDDR|=(1<<LCD_E); // E的方向为输出
    9186 16 06        Bset	3,0x06
(0039) 	LCD_CtrlPortDDR|=(1<<LCD_BL);//BL的方向为输出
    9188 18 06        Bset	4,0x06
(0040) 	//数据口设置为输出
(0041) 	LCD_DataPortDDR=0xff;      
    918A A6 FF        ldA	#-1
    918C B7 05        stA	0x05
(0042) 	//[Lcd初始化]
(0043) 	delay40ms;                 //延时>40ms
    918E 45 2710      ldHX	#0x2710
    9191 89           pshX	
    9192 8B           pshH	
    9193 CD 95D5      jsr	_DelayTimes
    9196 A7 02        aiS	#2
(0044)     Wtite_Command(0b00110000); //8位数据,基本指令
    9198 A6 30        ldA	#48
    919A 87           pshA	
    919B CD 959F      jsr	_Wtite_Command
    919E A7 01        aiS	#1
(0045) 	Wtite_Command(0b00001100); //开显示
    91A0 A6 0C        ldA	#12
    91A2 87           pshA	
    91A3 CD 959F      jsr	_Wtite_Command
    91A6 A7 01        aiS	#1
(0046)  	Wtite_Command(0b00000001); //清屏
    91A8 A6 01        ldA	#1
    91AA 87           pshA	
    91AB CD 959F      jsr	_Wtite_Command
    91AE A7 01        aiS	#1
(0047) 	delay1600us;               //延时>1.6ms
    91B0 45 0FA0      ldHX	#0x0FA0
    91B3 89           pshX	
    91B4 8B           pshH	
    91B5 CD 95D5      jsr	_DelayTimes
    91B8 A7 02        aiS	#2
(0048) 	Wtite_Command(0b00000110); //进入模式设定
    91BA A6 06        ldA	#6
    91BC 87           pshA	
    91BD CD 959F      jsr	_Wtite_Command
    91C0 A7 01        aiS	#1
(0049)     LcdShGrClr();              //清Lcd图形显示屏
    91C2 CD 94BC      jsr	_LcdShGrClr
    91C5 95           tSX	
(0050)     LCD_CtrlPort&=~(1<<LCD_BL);//BL=0,打开背光
    91C6 19 02        Bclr	4,0x02
    91C8 81           rts	
_LcdShCh:
  i                    --> X+0
  LcdSBuff             --> X+3
    91C9 A7 FF        aiS	#-1
    91CB 95           tSX	
(0051) }
(0052) 
(0053) /*=======================[Lcd显示字符操作]================================*/
(0054) /*LcdShCh:在液晶显示屏上显示字符数据---------------------------------------*
(0055) *功  能:在液晶显示屏上显示以LcdSBuff为首地址的64个数据                     *
(0056) *参  数:待显示的64个数据的首地址                                           *
(0057) *返  回:无                                                                 *
(0058) *-------------------------------------------------------------------------*/
(0059) void LcdShCh(INT8U *LcdSBuff)
(0060) {
    91CC A6 80        ldA	#-128
    91CE 87           pshA	
    91CF CD 959F      jsr	_Wtite_Command
    91D2 A7 01        aiS	#1
    91D4 95           tSX	
(0061) 	unsigned char i;             //data数组计数器(0-63)
(0062)   //[Lcd显示64个数据]   
(0063)     Wtite_Command(0x80);         //DDRAM地址设置
(0064) 	for(i=0;i<64;i++)            //显示data中的64个数据
    91D5 7F           clr	0,X
    91D6 20 65        bra	0x923D
(0065)  	 { 
    91D8 F6           ldA	0,X
    91D9 A1 0F        cmp	#15
    91DB 23 04        bls	0x91E1
    91DD A1 30        cmp	#48
    91DF 25 19        bcs	0x91FA
(0066)  	  //[Lcd按行显示16个数据]
(0067)  	  if((i<=15)||(i>=48))         //第一行和第四行不变
(0068)  	  	Wtite_Data(LcdSBuff[i]);   
    91E1 3F 40        clr	*__r0
    91E3 F6           ldA	0,X
    91E4 EB 04        add	4,X
    91E6 B7 41        stA	*__r1
    91E8 B6 40        ldA	*__r0
    91EA E9 03        adc	3,X
    91EC B7 40        stA	*__r0
    91EE 55 40        ldHX	*__r0
    91F0 F6           ldA	0,X
    91F1 87           pshA	
    91F2 CD 95BA      jsr	_Wtite_Data
    91F5 A7 01        aiS	#1
    91F7 95           tSX	
    91F8 20 42        bra	0x923C
(0069)  	  else if(i<=31)       //显示的第二行为缓冲的第三行
    91FA F6           ldA	0,X
    91FB A1 1F        cmp	#31
    91FD 22 1A        bhi	0x9219
(0070)  	    Wtite_Data(LcdSBuff[i+16]);
    91FF 3F 40        clr	*__r0
    9201 EB 04        add	4,X
    9203 B7 41        stA	*__r1
    9205 B6 40        ldA	*__r0
    9207 E9 03        adc	3,X
    9209 B7 40        stA	*__r0
    920B 55 40        ldHX	*__r0
    920D AF 10        aiX	#16
    920F F6           ldA	0,X
    9210 87           pshA	
    9211 CD 95BA      jsr	_Wtite_Data
    9214 A7 01        aiS	#1
    9216 95           tSX	
    9217 20 23        bra	0x923C
(0071)  	  else                 //显示的第三行为缓冲的第二行
(0072)  	    Wtite_Data(LcdSBuff[i-16]);
    9219 3F 40        clr	*__r0
    921B F6           ldA	0,X
    921C A0 10        sub	#16
    921E B7 41        stA	*__r1
    9220 B6 40        ldA	*__r0
    9222 A2 00        sbc	#0
    9224 B7 40        stA	*__r0
    9226 B6 41        ldA	*__r1
    9228 EB 04        add	4,X
    922A B7 41        stA	*__r1
    922C B6 40        ldA	*__r0
    922E E9 03        adc	3,X
    9230 B7 40        stA	*__r0
    9232 55 40        ldHX	*__r0
    9234 F6           ldA	0,X
    9235 87           pshA	
    9236 CD 95BA      jsr	_Wtite_Data
    9239 A7 01        aiS	#1
    923B 95           tSX	
(0073)  	 }        
    923C 7C           inc	0,X
    923D F6           ldA	0,X
    923E A1 40        cmp	#64
    9240 25 96        bcs	0x91D8
    9242 A7 01        aiS	#1
    9244 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
    9245 A7 FA        aiS	#-6
    9247 95           tSX	
(0074) }
(0075) 
(0076) /*===[Lcd画图操作:包括画圆,画矩形框,图形清屏,画点等]===================*/
(0077) /*LcdShGrCil:在Lcd上显示或取消空心圆型-------------------------------------*
(0078) *功  能:在Lcd上的指定位置显示或取消空心圆型                                *
(0079) *参  数:Cx为圆心横坐标,Cy为圆心纵坐标                                      *
(0080) *       CR为圆的半径,GrE确定图形是否有效                                   *
(0081) *       GrCilMV为显示圆型时的正误差值                                      *
(0082) *       例如:半径为10,误差为4;半径为30,误差为30                         *
(0083) *返  回:无                                                                 *
(0084) *-------------------------------------------------------------------------*/
(0085) void LcdShGrCil(INT8U Cy,INT8U Cx,INT8U CR,INT8U GrCilMV,INT8U GrE)
(0086) {
    9248 A6 36        ldA	#54
    924A 87           pshA	
    924B CD 959F      jsr	_Wtite_Command
    924E A7 01        aiS	#1
    9250 95           tSX	
(0087)   INT8U x,y;                    //坐标的循环控制变量
(0088)   INT32S mistake;               //显示时的误差值
(0089)   Wtite_Command(0b00110110);    //扩展指令,绘图开
(0090)   for(y=Cy-CR;y<=Cy+CR;y++)
    9251 E6 08        ldA	8,X
    9253 E0 0A        sub	10,X
    9255 F7           stA	0,X
    9256 CC 93D6      jmp	0x93D6
(0091)       for(x=Cx-CR;x<=Cx+CR;x++)
    9259 E6 09        ldA	9,X
    925B E0 0A        sub	10,X
    925D E7 05        stA	5,X
    925F CC 93C6      jmp	0x93C6
(0092) 	     {  
    9262 3F 40        clr	*__r0
    9264 E6 09        ldA	9,X
    9266 B7 41        stA	*__r1
    9268 3F 42        clr	*__r2
    926A E6 05        ldA	5,X
    926C B0 41        sub	*__r1
    926E B7 41        stA	*__r1
    9270 B6 42        ldA	*__r2
    9272 B2 40        sbc	*__r0
    9274 B7 40        stA	*__r0
    9276 3F 42        clr	*__r2
    9278 E6 08        ldA	8,X
    927A B7 43        stA	*__r3
    927C 3F 44        clr	*__r4
    927E F6           ldA	0,X
    927F B0 43        sub	*__r3
    9281 B7 43        stA	*__r3
    9283 B6 44        ldA	*__r4
    9285 B2 42        sbc	*__r2
    9287 B7 42        stA	*__r2
    9289 B6 43        ldA	*__r3
    928B 87           pshA	
    928C B6 42        ldA	*__r2
    928E 87           pshA	
    928F B6 43        ldA	*__r3
    9291 87           pshA	
    9292 B6 42        ldA	*__r2
    9294 87           pshA	
    9295 CD 9998      jsr	__mul16
    9298 A7 04        aiS	#4
    929A 4E 4D43      mov	*__rlo,*__r3
    929D 4E 4C42      mov	*__rhi,*__r2
    92A0 B6 41        ldA	*__r1
    92A2 87           pshA	
    92A3 B6 40        ldA	*__r0
    92A5 87           pshA	
    92A6 B6 41        ldA	*__r1
    92A8 87           pshA	
    92A9 B6 40        ldA	*__r0
    92AB 87           pshA	
    92AC CD 9998      jsr	__mul16
    92AF A7 04        aiS	#4
    92B1 4E 4D41      mov	*__rlo,*__r1
    92B4 4E 4C40      mov	*__rhi,*__r0
    92B7 B6 41        ldA	*__r1
    92B9 BB 43        add	*__r3
    92BB B7 41        stA	*__r1
    92BD B6 40        ldA	*__r0
    92BF B9 42        adc	*__r2
    92C1 B7 40        stA	*__r0
    92C3 3F 42        clr	*__r2
    92C5 E6 0A        ldA	10,X
    92C7 B7 43        stA	*__r3
    92C9 3F 44        clr	*__r4
    92CB E6 0A        ldA	10,X
    92CD 87           pshA	

⌨️ 快捷键说明

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