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

📄 sci_po~1.lst

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 LST
📖 第 1 页 / 共 3 页
字号:
    813A 95           tSX	
    813B 91 BA        blt	0x80F7
(0101)    return 0;	 
    813D 4F           clrA	
    813E A7 03        aiS	#3
    8140 81           rts	
_main:
  ADValue              --> X+0
  Temp                 --> X+22
  i                    --> X+23
    8141 A7 E8        aiS	#-24
    8143 95           tSX	
FILE: Main.c
(0001) //-------------------------------------------------------------------------*
(0002) //工程文件名:TLC2543.prj                                                   *
(0003) //硬件连接:                                                                *
(0004) //    TLC2543的CS,I/O CLOCK,DATA INPUT,DATA OUT分别接PTC0,PTD1~PTD3      *
(0005) //程序描述:由TLC2543采集11路AD值                                           *
(0006) //日    期:2007.04.18                                                      *
(0007) //-------------------------------------------------------------------------*
(0008) #include "Includes.h"   //总头文件
(0009) 
(0010) //主函数
(0011) void main()
(0012) {
    8144 CD 818B      jsr	_MCUInit
(0013)     INT16U ADValue[11];
(0014)     INT8U Temp[1];
(0015)     INT8U i;
(0016)     MCUInit();
(0017)     SPIInit();
    8147 CD 81B0      jsr	_SPIInit
(0018)     SCIInit();          //调串行口初始化子程序              
    814A CD 8035      jsr	_SCIInit
    814D 95           tSX	
    814E 20 36        bra	0x8186
(0019)     while(1)
(0020)     {
    8150 AF 16        aiX	#22
    8152 89           pshX	
    8153 8B           pshH	
    8154 A6 01        ldA	#1
    8156 87           pshA	
    8157 CD 80EE      jsr	_SCIReN
    815A A7 03        aiS	#3
    815C 95           tSX	
    815D B7 41        stA	*__r1
    815F E7 17        stA	23,X
(0021)        i=SCIReN(1,Temp);
(0022)        if(i==0)
    8161 26 23        bne	0x8186
(0023)        {
    8163 E6 16        ldA	22,X
    8165 A1 AA        cmp	#-86
    8167 26 1D        bne	0x8186
(0024)          if(Temp[0]==0xAA) 
(0025)          {    
    8169 89           pshX	
    816A 8B           pshH	
    816B 4F           clrA	
    816C 87           pshA	
    816D CD 81B9      jsr	_ADC11P
    8170 A7 03        aiS	#3
    8172 95           tSX	
(0026)           ADC11P(0,ADValue);
(0027)           SCISendN(22,(INT8U*)ADValue);
    8173 89           pshX	
    8174 8B           pshH	
    8175 A6 16        ldA	#22
    8177 87           pshA	
    8178 CD 8051      jsr	_SCISendN
    817B A7 03        aiS	#3
(0028)           SCISend1(0xAA);
    817D A6 AA        ldA	#-86
    817F 87           pshA	
    8180 CD 8042      jsr	_SCISend1
    8183 A7 01        aiS	#1
    8185 95           tSX	
(0029)          }
    8186 20 C8        bra	0x8150
    8188 A7 18        aiS	#24
    818A 81           rts	
FILE: SetUp.c
(0001) //_HC08Setup:芯片初始化----------------------------------------------------*
(0002) //功能:系统初始化设置                                                      *
(0003) //     (1)由外部晶振f,通过本程序设置内部总线频率fbus                       *
(0004) //     (2) 确定是否禁止看门狗(COP)                                         *
(0005) //参数:无                                                                  *
(0006) //返回:无                                                                  *
(0007) //说明:该程序与芯片具体型号有关.                                           *
(0008) //     (1)外部晶振f=32.768kHz,使用内部PLL(锁相环),产生内部总线时钟频率     *
(0009) //        fbus=2.4576MHz.                                                  *
(0010) //     (2)禁止COP模块                                                      *
(0011) //-------------------------------------------------------------------------*
(0012) 
(0013) #include "GP32C.h"    //映像寄存器名定义
(0014) 
(0015) void MCUInit(void)
(0016)  {   
_MCUInit:
    818B A6 01        ldA	#1
    818D B7 1E        stA	0x1E
(0017)    //1.设置CONFIG2、CONFIG1
(0018)    //1.1 设置CONFIG2 
(0019)    CONFIG2=0b00000001;          
(0020)          //        ||_SCIBDSRC=1内部总线时钟用作SCI时钟 
(0021)          //        |__OSCSTOPENB=0 在stop模式下禁止振荡器工作
(0022)         
(0023)    //1.2 设置CONFIG1
(0024)    CONFIG1=0b00111101;
    818F A6 3D        ldA	#61
    8191 B7 1F        stA	0x1F
(0025)            //||||||||_COPD=1 禁止COP模块
(0026)            //|||||||__STOP=0 禁止STOP指令
(0027)            //||||||___SSREC=1 32个CGMXCLK周期退出STOP模式
(0028)            //|||||____LVI5OR3=1 LVI工作在5V
(0029)            //||||_____LVIPWRD=1 禁止LVI模块电源
(0030)            //|||______LVIRSTD=1 允许LVI复位信号
(0031)            //||_______LVISTOP=0 在stop模式下禁止LVI
(0032)            //|________COPRS=0 COP溢出范围使用长的时间
(0033) 
(0034) //2.  PLL编程 
(0035)    PCTL=0x00;         //①禁止PLL:清零PLL控制寄存器PCTL             
    8193 3F 36        clr	0x36
(0036)    PCTL=0x01;         //②将P、E写入PTCL,置VCO的参考频率为2             
    8195 A6 01        ldA	#1
    8197 B7 36        stA	0x36
(0037)    PMSH=0x01;         //③将N写入PMSH、PMSL,置VCO的倍频因子为$12C          
    8199 A6 01        ldA	#1
    819B B7 38        stA	0x38
(0038)    PMSL=0x2C;             
    819D A6 2C        ldA	#44
    819F B7 39        stA	0x39
(0039)    PMRS=0b10000000;   //④将L写入PMRS,置VCO的输出频率范围系数为$80   
    81A1 A6 80        ldA	#-128
    81A3 B7 3A        stA	0x3A
(0040)    PRDS=0x01;         //⑤将R写入PRDS
    81A5 A6 01        ldA	#1
    81A7 B7 3B        stA	0x3B
(0041)    PCTL|=(1<<5);      //⑥置PCTL.PLLON=1,启动PLL电路  
    81A9 1A 36        Bset	5,0x36
(0042)    PBWC|=(1<<7);      //⑦PBWC自动带宽控制位=1,选择自动控制方式  
    81AB 1E 37        Bset	7,0x37
(0043)    PCTL|=(1<<4);      //⑧PCTL.BCS=1,选择PLL电路为时钟源
    81AD 18 36        Bset	4,0x36
    81AF 81           rts	
FILE: SPIInit.c
(0001) //SPIInit:SPI初始化子程序--------------------------------------------------*
(0002) //功 能:对SPI进行初始化,默认为允许SPI,主机工作方式,时钟                    *
(0003) //      空闲低电平,比特率8分频,                                           *
(0004) //      波特率为CGMOUT/2*BD(设CGMOUT=2*fBUS=2*2.4576MHz)                  *
(0005) //参 数:无                                                                 *
(0006) //返 回:无                                                                 *
(0007) //-------------------------------------------------------------------------*
(0008) #include "GP32C.h"
(0009) void SPIInit(void)
(0010)  {  
_SPIInit:
    81B0 A6 22        ldA	#34
    81B2 B7 10        stA	0x10
(0011) 	SPCR=0b00100010;   //不产生中断、主机方式、时钟空闲低电平
(0012) 	SPSCR=0b00000001;  //8分频
    81B4 A6 01        ldA	#1
    81B6 B7 11        stA	0x11
    81B8 81           rts	
_ADC11P:
  i                    --> X+0
  j                    --> X+1
  temp                 --> X+2
  buff                 --> X+4
  flag                 --> X+6
  channel              --> X+7
  ADValue              --> X+11
  cs                   --> X+10
    81B9 A7 F8        aiS	#-8
    81BB 95           tSX	
FILE: ADC11P.c
(0001) //-------------------------------------------------------------------------*
(0002) //文件描述:本文件包含了AD采集的2子程序,分别为:                             * 
(0003) //(1)ADC11P:1片2543-11路AD采集                                            *
(0004) //(2)TLC2543:TLC2543芯片A/D转换子程序                                      *
(0005) //-------------------------------------------------------------------------*
(0006) #include "ADC11P.h"
(0007) 
(0008) //A/D转换并求平均值(11路)子程序(AD22P.ASM)---------------------------------*
(0009) //功  能:采集TLC2543,共11通道,取16次平均值放入内存ADValue               *
(0010) //参  数:cs:片选,cs=0~7对应PTC0~7                                        *
(0011) //        ADValue:存放11路AD转换结果的数组首地址                           *
(0012) //返  回:内存ADValue开始连续的11个地址内即为转换的结果                    *
(0013) //调  用:TLC2543                                                          *
(0014) //-------------------------------------------------------------------------*
(0015) void ADC11P(INT8U cs,INT16U *ADValue)
(0016) {   
    81BC 6F 06        clr	6,X
    81BE 20 20        bra	0x81E0
(0017) 	INT8U i,j,channel,flag,buff[2]; 
(0018)     INT16U temp; 
(0019)      
(0020)     //1 将A/D数据存放区清0   
(0021)     for(flag=0;flag<=10;flag++)      
(0022)     	ADValue[flag]=0; 
    81C0 3F 40        clr	*__r0
    81C2 E6 06        ldA	6,X
    81C4 B7 41        stA	*__r1
    81C6 38 41        lsl	*__r1
    81C8 39 40        rol	*__r0
    81CA B6 41        ldA	*__r1
    81CC EB 0C        add	12,X
    81CE B7 41        stA	*__r1
    81D0 B6 40        ldA	*__r0
    81D2 E9 0B        adc	11,X
    81D4 B7 40        stA	*__r0
    81D6 4F           clrA	
    81D7 55 40        ldHX	*__r0
    81D9 F7           stA	0,X
    81DA 4F           clrA	
    81DB E7 01        stA	1,X
    81DD 95           tSX	
    81DE 6C 06        inc	6,X
    81E0 E6 06        ldA	6,X
    81E2 A1 0A        cmp	#10
    81E4 23 DA        bls	0x81C0
(0023)     	
(0024)     
(0025)     //3 对11个通道采集数据,每一路采集16次,16次的数据总和-->ADValue   
(0026)     for(j=1;j<=16;j++)   
    81E6 A6 01        ldA	#1
    81E8 E7 01        stA	1,X
    81EA CC 8273      jmp	0x8273
(0027)     {  
    81ED 6F 06        clr	6,X
(0028)       flag=0; 
(0029)       //3.1第0片TLC2543的0~10通道转换      
(0030)       for(channel=0;channel<=10;channel++)      
    81EF 6F 07        clr	7,X
    81F1 20 78        bra	0x826B
(0031)       {    
    81F3 AF 04        aiX	#4
    81F5 89           pshX	
    81F6 8B           pshH	
    81F7 95           tSX	
    81F8 AF 02        aiX	#2
    81FA 3F 40        clr	*__r0
    81FC E6 07        ldA	7,X
    81FE 87           pshA	
    81FF B6 40        ldA	*__r0
    8201 87           pshA	
    8202 3F 40        clr	*__r0
    8204 E6 0A        ldA	10,X
    8206 87           pshA	
    8207 B6 40        ldA	*__r0
    8209 87           pshA	
    820A CD 82BC      jsr	_TLC2543
    820D A7 06        aiS	#6
    820F 95           tSX	
(0032)         //3.1.1将通道j的AD转换结果存入内存buff     
(0033)         TLC2543(cs,channel,buff);   //得到"空数据"--不要
(0034)         TLC2543(cs,channel,buff);        
    8210 AF 04        aiX	#4
    8212 89           pshX	
    8213 8B           pshH	
    8214 95           tSX	
    8215 AF 02        aiX	#2
    8217 3F 40        clr	*__r0
    8219 E6 07        ldA	7,X
    821B 87           pshA	
    821C B6 40        ldA	*__r0
    821E 87           pshA	
    821F 3F 40        clr	*__r0
    8221 E6 0A        ldA	10,X
    8223 87           pshA	
    8224 B6 40        ldA	*__r0
    8226 87           pshA	
    8227 CD 82BC      jsr	_TLC2543
    822A A7 06        aiS	#6
    822C 95           tSX	
(0035)         //3.1.2从内存buff取出数据-->ADValue[flag]中         
(0036)         temp=*((unsigned int *)buff);         
    822D E6 04        ldA	4,X
    822F E7 02        stA	2,X
    8231 E6 05        ldA	5,X
    8233 E7 03        stA	3,X
(0037)         ADValue[flag]=ADValue[flag]+temp;
    8235 3F 40        clr	*__r0
    8237 E6 06        ldA	6,X
    8239 B7 41        stA	*__r1
    823B 38 41        lsl	*__r1

⌨️ 快捷键说明

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