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

📄 assist~1.lst

📁 为苏州一家公司所做的的恒温恒湿车间控制 系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
    868C 38 41        lsl	*__r1
    868E 39 40        rol	*__r0
    8690 B6 41        ldA	*__r1
    8692 EB 04        add	4,X
    8694 B7 41        stA	*__r1
    8696 B6 40        ldA	*__r0
    8698 E9 03        adc	3,X
    869A B7 40        stA	*__r0
    869C 55 40        ldHX	*__r0
    869E AF FE        aiX	#-2
    86A0 E6 01        ldA	1,X
    86A2 B7 41        stA	*__r1
    86A4 F6           ldA	0,X
    86A5 95           tSX	
    86A6 B7 40        stA	*__r0
    86A8 B6 41        ldA	*__r1
    86AA 87           pshA	
    86AB B6 40        ldA	*__r0
    86AD 87           pshA	
    86AE 3F 40        clr	*__r0
    86B0 F6           ldA	0,X
    86B1 87           pshA	
    86B2 B6 40        ldA	*__r0
    86B4 87           pshA	
    86B5 CD 8761      jsr	_TLV5608Z
    86B8 A7 04        aiS	#4
    86BA 95           tSX	
    86BB 7C           inc	0,X
    86BC F6           ldA	0,X
    86BD A1 10        cmp	#16
    86BF 23 C6        bls	0x8687
    86C1 A7 01        aiS	#1
    86C3 81           rts	
_TLV5608Init:
  fs                   --> X+0
    86C4 A7 FF        aiS	#-1
    86C6 95           tSX	
(0035) }
(0036) /*TLV5608芯片D/A转换初始化子程序(TLV5608Init.c)-----------------*
(0037) *功  能:初始化2片TLV5608的CTRL0、CTRL1寄存器                    *
(0038) *参  数:无                                                      *
(0039) *返  回:无                                                      *
(0040) *--------------------------------------------------------------*/
(0041) void TLV5608Init(void)
(0042) {
    86C7 7F           clr	0,X
    86C8 CC 8756      jmp	0x8756
(0043)   INT8U fs;
(0044)   for(fs=0;fs<=1;fs++)
(0045)   {
    86CB B6 06        ldA	0x06
    86CD AA 0C        orA	#12
    86CF B7 06        stA	0x06
(0046)   	CS_D |=0b00001100;  //定义PTC2~3为输出
(0047)   	CS_P |=0b00001100;  //PTC2~3输出为高电平
    86D1 B6 02        ldA	0x02
    86D3 AA 0C        orA	#12
    86D5 B7 02        stA	0x02
(0048)  	//设置CTRL0寄存器  	
(0049)     CS_P &= ~(1<<(fs+2));   //相应片TLV.FS由高电平变为低电平,产生下降沿
    86D7 F6           ldA	0,X
    86D8 AB 02        add	#2
    86DA 6E 0142      mov	#1,*__r2
    86DD A4 07        and	#7
    86DF 27 04        beq	0x86E5
    86E1 38 42        lsl	*__r2
    86E3 4B FC        dbnzA	0x8727
    86E5 4E 4240      mov	*__r2,*__r0
    86E8 33 40        com	*__r0
    86EA B6 02        ldA	0x02
    86EC B4 40        and	*__r0
    86EE B7 02        stA	0x02
(0050)                       //此后在每个SCLK的下降沿传送一位数据,共传输16位数据  
(0051)     Delay();          //延时20个时钟周期          
    86F0 CD 8CC4      jsr	_Delay
    86F3 95           tSX	
(0052)     SPIDR=0b10000000;       //发送高8位数据(CTRL0地址为1000)  
    86F4 A6 80        ldA	#-128
    86F6 B7 12        stA	0x12
(0053)   	while((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
    86F8 07 11FD      BRclr	3,0x11,0x86F8
(0054)                                              //发送完毕 
(0055)   	SPIDR=0b00000000;       //发送低8位数据
    86FB 3F 12        clr	0x12
(0056)   	while((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
    86FD 07 11FD      BRclr	3,0x11,0x86FD
(0057)                                              //发送完毕                                                  
(0058)     asm("nop"); 
    8700 9D           nop	
(0059)     asm("nop");                                              
    8701 9D           nop	
(0060)   	CS_P |= (1<<(fs+2));   //数据传输完毕,相应片TLV.FS由低电平变为高电平  
    8702 F6           ldA	0,X
    8703 AB 02        add	#2
    8705 6E 0142      mov	#1,*__r2
    8708 A4 07        and	#7
    870A 27 04        beq	0x8710
    870C 38 42        lsl	*__r2
    870E 4B FC        dbnzA	0x8752
    8710 B6 02        ldA	0x02
    8712 BA 42        orA	*__r2
    8714 B7 02        stA	0x02
(0061)   	
(0062)   	
(0063)   	//设置CTRL1寄存器   	
(0064)   	CS_P &= ~(1<<(fs+2));   //相应片TLV.FS由高电平变为低电平,产生下降沿
    8716 F6           ldA	0,X
    8717 AB 02        add	#2
    8719 6E 0142      mov	#1,*__r2
    871C A4 07        and	#7
    871E 27 04        beq	0x8724
    8720 38 42        lsl	*__r2
    8722 4B FC        dbnzA	0x8766
    8724 4E 4240      mov	*__r2,*__r0
    8727 33 40        com	*__r0
    8729 B6 02        ldA	0x02
    872B B4 40        and	*__r0
    872D B7 02        stA	0x02
(0065)                       //此后在每个SCLK的下降沿传送一位数据 
(0066)     Delay();          //延时20个时钟周期        
    872F CD 8CC4      jsr	_Delay
    8732 95           tSX	
(0067)     SPIDR=0b10010000;       //发送高8位数据(CTRL1地址为1001)
    8733 A6 90        ldA	#-112
    8735 B7 12        stA	0x12
(0068)   	while((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
    8737 07 11FD      BRclr	3,0x11,0x8737
(0069)                                              //发送完毕 
(0070)   	SPIDR=0b00001111;       //发送低8位数据(正常电压,快速)
    873A A6 0F        ldA	#15
    873C B7 12        stA	0x12
(0071)   	while((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
    873E 07 11FD      BRclr	3,0x11,0x873E
(0072)                                              //发送完毕                                             
(0073)   	CS_P |= (1<<(fs+2));   //数据传输完毕,相应片TLV.FS由低电平变为高电平
    8741 F6           ldA	0,X
    8742 AB 02        add	#2
    8744 6E 0142      mov	#1,*__r2
    8747 A4 07        and	#7
    8749 27 04        beq	0x874F
    874B 38 42        lsl	*__r2
    874D 4B FC        dbnzA	0x8791
    874F B6 02        ldA	0x02
    8751 BA 42        orA	*__r2
    8753 B7 02        stA	0x02
(0074)   }                                    
    8755 7C           inc	0,X
    8756 F6           ldA	0,X
    8757 A1 01        cmp	#1
    8759 22 03        bhi	0x875E
    875B CC 86CB      jmp	0x86CB
    875E A7 01        aiS	#1
    8760 81           rts	
_TLV5608Z:
  value                --> X+0
  fs                   --> X+2
  buf                  --> X+7
  channel              --> X+5
    8761 A7 FD        aiS	#-3
    8763 95           tSX	
(0075) }
(0076) /*TLV5608芯片D/A转换子程序(TLV5608Z.c)--------------------------*
(0077) *TLV5608的接线:                                                 *
(0078) *             ① SCLK(3)接MC08HC908GP32的SPSCK(18)              *
(0079) *             ② DIN(2)接MC08HC908GP32的MISO(17)                *
(0080) *             ③ LDAC(18)接MC08HC908GP32的PTC4                  *
(0081) *             ④ 0-1片FS(4作为片选信号)接分别接的PTC2~3         *
(0082) *                MODE接高电平,选择uC模式                       *
(0083) *入口:channel-通道号(1-16),buf-存放数据                        *
(0084) *--------------------------------------------------------------*/
(0085) void TLV5608Z(INT16U channel, INT16U buf)
(0086) {
    8764 4F           clrA	
    8765 E7 05        stA	5,X
    8767 A6 01        ldA	#1
    8769 E7 06        stA	6,X
(0087)   INT8U fs;//片选号
(0088)   INT16U value;
(0089)   channel=1;
(0090)   if((channel>0)&&(channel<9))
    876B E6 05        ldA	5,X
    876D 26 04        bne	0x8773
    876F E6 06        ldA	6,X
    8771 27 14        beq	0x8787
    8773 E6 06        ldA	6,X
    8775 B7 41        stA	*__r1
    8777 E6 05        ldA	5,X
    8779 B7 40        stA	*__r0
    877B 55 40        ldHX	*__r0
    877D 65 0009      cpHX	#0x0009
    8780 95           tSX	
    8781 24 04        bcc	0x8787
(0091)      fs=0;
    8783 6F 02        clr	2,X
    8785 20 04        bra	0x878B
(0092)   else
(0093)      fs=1; 
    8787 A6 01        ldA	#1
    8789 E7 02        stA	2,X
(0094)   //整合要发送的16位数据-(value的高4位为通道号,后12位为数据位)  
(0095)   value=((channel-fs*8-1)<<12)|buf;
    878B 3F 40        clr	*__r0
    878D E6 02        ldA	2,X
    878F B7 41        stA	*__r1
    8791 38 41        lsl	*__r1
    8793 39 40        rol	*__r0
    8795 38 41        lsl	*__r1
    8797 39 40        rol	*__r0
    8799 38 41        lsl	*__r1
    879B 39 40        rol	*__r0
    879D E6 06        ldA	6,X
    879F B0 41        sub	*__r1
    87A1 B7 41        stA	*__r1
    87A3 E6 05        ldA	5,X
    87A5 B2 40        sbc	*__r0
    87A7 B7 40        stA	*__r0
    87A9 B6 41        ldA	*__r1
    87AB A0 01        sub	#1
    87AD B7 41        stA	*__r1
    87AF B6 40        ldA	*__r0
    87B1 A2 00        sbc	#0
    87B3 B7 40        stA	*__r0
    87B5 A6 0C        ldA	#12
    87B7 38 41        lsl	*__r1
    87B9 39 40        rol	*__r0
    87BB 4B FA        dbnzA	0x87C6
    87BD B6 41        ldA	*__r1
    87BF EA 08        orA	8,X
    87C1 E7 01        stA	1,X
    87C3 B6 40        ldA	*__r0
    87C5 EA 07        orA	7,X
    87C7 F7           stA	0,X
(0096)   //发送16位数据
(0097)   CS_D |=0b00001100;  //定义PTC2~3为输出
    87C8 B6 06        ldA	0x06
    87CA AA 0C        orA	#12
    87CC B7 06        stA	0x06
(0098)   CS_P |=0b00001100;  //PTC2~3输出为高电平
    87CE B6 02        ldA	0x02
    87D0 AA 0C        orA	#12
    87D2 B7 02        stA	0x02
(0099)   	
(0100)   //TLV5608.FS=1    
(0101)   CS_P &= ~(1<<(fs+2));   //相应片TLV.FS由高电平变为低电平,产生下降沿
    87D4 E6 02        ldA	2,X
    87D6 AB 02        add	#2
    87D8 6E 0142      mov	#1,*__r2
    87DB A4 07        and	#7
    87DD 27 04        beq	0x87E3
    87DF 38 42        lsl	*__r2
    87E1 4B FC        dbnzA	0x8825
    87E3 4E 4240      mov	*__r2,*__r0
    87E6 33 40        com	*__r0
    87E8 B6 02        ldA	0x02
    87EA B4 40        and	*__r0
    87EC B7 02        stA	0x02
(0102)                       //此后在每个SCLK的下降沿传送一位数据  
(0103)   Delay();           //延时20个时钟周期                       
    87EE CD 8CC4      jsr	_Delay
    87F1 95           tSX	
(0104)   SPIDR=value>>8;       //发送高8位数据 
    87F2 F6           ldA	0,X
    87F3 B7 12        stA	0x12
(0105)   while((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
    87F5 07 11FD      BRclr	3,0x11,0x87F5
(0106)                                              //发送完毕 
(0107)   SPIDR=value;         //发送低8位数据
    87F8 E6 01        ldA	1,X
    87FA B7 12        stA	0x12
(0108)   while((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
    87FC 07 11FD      BRclr	3,0x11,0x87FC
(0109)                                              //发送完毕
(0110)   asm("nop");
    87FF 9D           nop	
(0111)   CS_P |= (1<<(fs+2));   //数据传输完毕,相应片TLV.FS由低电平变为高电平              
    8800 E6 02        ldA	2,X
    8802 AB 02        add	#2
    8804 6E 0142      mov	#1,*__r2
    8807 A4 07        and	#7
    8809 27 04        beq	0x880F
    880B 38 42        lsl	*__r2
    880D 4B FC        dbnzA	0x8851
    880F B6 02        ldA	0x02
    8811 BA 42        orA	*__r2
    8813 B7 02        stA	0x02
    8815 A7 03        aiS	#3
    8817 81           rts	
FILE: lcd.c
(0001) /*-----------------------------------------------------*
(0002) *文件描述:本文件包含了液晶显示相关子程序,分别为:       *  
(0003) *(1)Lcdinit:液晶初始化子程序                           *
(0004) *(2)LcdShCh:在液晶显示屏上显示字符数据                 *
(0005) *(3)LcdShGrRe:在Lcd的指定行上显示或取消矩型边框        *
(0006) *(4)LcdShGrCil:在Lcd上显示或取消空心圆型               *
(0007) *-----------------------------------------------------*/
(0008) //包含头文件 
(0009) #include "Includes.h"
(0010) //定义延时子程序
(0011) #define delay1600us DelayTimes(4000)     //延时>1.6ms
(0012) #define delay72us   DelayTimes(30)	      //延时>72us
(0013) #define delay40ms   DelayTimes(10000)     //延时>40ms
(0014) //内部调用函数声明
(0015) void DelayTimes(unsigned int);         //延时指定时间
(0016) void Wtite_Command(unsigned char);//将控制命令写入Lcd
(0017) void Wtite_Data(unsigned char);       //将数据写入Lcd
(0018) void LcdShGrClr(void);          //在Lcd上清图形显示屏
(0019) //在Lcd指定位置上设置线型16个点的显示
(0020) void LcdShGr16P(unsigned char,unsigned char,int);
(0021) //在Lcd指定位置上画1个点
(0022) void LcdShGr1P(unsigned char,unsigned char);
(0023) 
(0024) //==================[Lcd初始化操作]==========================
(0025) /*Lcdinit:初始化液晶-----------------------------------*
(0026) *功  能:初始化液晶,设置显示方式,清屏、C自动+1         *
(0027) *参  数:无                                             *
(0028) *返  回:无                                             *
(0029) *-----------------------------------------------------*/
(0030) void Lcdinit(void)
(0031) {
_Lcdinit:
    8818 B6 07        ldA	0x07
    881A AA F0        orA	#-16
    881C B7 07        stA	0x07
(0032)     LCD_CtrlPortDDR |=0xF0;    //控制口高四位设置为输出
(0033) 	LCD_DataPortDDR=0xff;      //数据口设置为输出
    881E A6 FF        ldA	#-1
    8820 B7 05        stA	0x05
(0034) 	//[Lcd初始化]
(0035) 	delay40ms;                 //延时>40ms
    8822 45 2710      ldHX	#0x2710
    8825 89           pshX	
    8826 8B           pshH	
    8827 CD 8C67      jsr	_DelayTimes
    882A A7 02        aiS	#2
(0036)     Wtite_Command(0b00110000); //8位数据,基本指令
    882C A6 30        ldA	#48
    882E 87           pshA	
    882F CD 8C31      jsr	_Wtite_Command
    8832 A7 01        aiS	#1
(0037) 	Wtite_Command(0b00001100); //开显示
    8834 A6 0C        ldA	#12
    8836 87           pshA	
    8837 CD 8C31      jsr	_Wtite_Command
    883A A7 01        aiS	#1
(0038)  	Wtite_Command(0b0

⌨️ 快捷键说明

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