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

📄 prgframe.lst

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
    8000 45 0240      ldHX	#0x0240
    8003 94           tXS	
    8004 CD 8201      jsr	__HC08Setup
    8007 45 0044      ldHX	#0x0044
    800A 65 0046      cpHX	#0x0046
    800D 27 06        beq	0x8015
    800F 6F 00        clr	0,X
    8011 AF 01        aiX	#1
    8013 20 F5        bra	0x800A
    8015 45 0045      ldHX	#0x0045
    8018 94           tXS	
    8019 45 8000      ldHX	#0x8000
    801C 65 8000      cpHX	#0x8000
    801F 27 0B        beq	0x802C
    8021 E6 00        ldA	0,X
    8023 9EE7 00      stA	0,S
    8026 AF 01        aiX	#1
    8028 A7 01        aiS	#1
    802A 20 F0        bra	0x801C
    802C 45 0240      ldHX	#0x0240
    802F 94           tXS	
    8030 CD 8060      jsr	_main
_exit:
    8033 20 FE        bra	0x8033
_Delay:
  u                    --> X+0
  k                    --> X+4
    8035 A7 FE        aiS	#-2
    8037 95           tSX	
FILE: GeneralFun.c
(0001) //[GenneralFun.c]通用函数--------------------------------------------------*
(0002) //本文件包含:                                                              *  
(0003) //(1)Delay:延时函数                                                        *
(0004) //-------------------------------------------------------------------------*
(0005) 
(0006) #include "GeneralFun.h"       //该头文件中包含了类型别名定义
(0007) 
(0008) //Delay:延时函数-----------------------------------------------------------*
(0009) //功  能:用程序的方法延时一段时间                                          *
(0010) //参  数:k=延时长度(0-65535)                                               *
(0011) //返  回:无                                                                *	
(0012) //-------------------------------------------------------------------------*
(0013) void Delay(INT16U k)
(0014) { 
    8038 6F 01        clr	1,X
    803A 7F           clr	0,X
    803B 20 0A        bra	0x8047
(0015)     INT16U u;
(0016)     for(u=0;u<=k;u++);
    803D E6 01        ldA	1,X
    803F AB 01        add	#1
    8041 E7 01        stA	1,X
    8043 F6           ldA	0,X
    8044 A9 00        adc	#0
    8046 F7           stA	0,X
    8047 E6 05        ldA	5,X
    8049 B7 41        stA	*__r1
    804B E6 04        ldA	4,X
    804D B7 40        stA	*__r0
    804F E6 01        ldA	1,X
    8051 B7 43        stA	*__r3
    8053 F6           ldA	0,X
    8054 B7 42        stA	*__r2
    8056 55 42        ldHX	*__r2
    8058 75 40        cpHX	*__r0
    805A 95           tSX	
    805B 23 E0        bls	0x803D
    805D A7 02        aiS	#2
    805F 81           rts	
_main:
  i                    --> X+0
    8060 A7 FF        aiS	#-1
    8062 95           tSX	
FILE: Main.c
(0001) //-------------------------------------------------------------------------*
(0002) //工程文件名:PrgFrame.prj                                                  *
(0003) //硬件连接:                                                                *
(0004) //    (1)MCU的I/O口引脚接继电器                                            *
(0005) //程序描述:用I/O口驱动小灯                                                 *
(0006) //目    的:测试模拟开关                                                    *
(0007) //说    明:                                                                *
(0008) //注    意:                                                                *
(0009) //-------------------------------------------------------------------------*
(0010) 
(0011) #include "Includes.h"   //总头文件
(0012) //主函数
(0013) void main()
(0014) {  
    8063 CD 8096      jsr	_MCUInit
(0015)   INT8U i;
(0016) 
(0017)   //1 初始化
(0018)   MCUInit();
(0019)   SCIInit();                      //串口初始化
    8066 CD 80F5      jsr	_SCIInit
(0020)   SwitchOutput_Init();            //模拟开关引脚初始化
    8069 CD 80BE      jsr	_SwitchOutput_Init
    806C 95           tSX	
    806D 20 22        bra	0x8091
(0021)   
(0022)   //2 程序总循环入口
(0023)   while(1)
(0024)   {
    806F A6 44        ldA	#68
    8071 87           pshA	
    8072 A6 00        ldA	#0
    8074 87           pshA	
    8075 A6 02        ldA	#2
    8077 87           pshA	
    8078 CD 81AE      jsr	_SCIReN
    807B A7 03        aiS	#3
    807D 95           tSX	
    807E B7 41        stA	*__r1
    8080 F7           stA	0,X
(0025)      i=SCIReN(2,SerialBuff);     //接收PC发来的2个数据
(0026)                                  //第1个:引脚号;第2个:状态
(0027)      if(i==0)
    8081 26 0E        bne	0x8091
(0028)         SwitchOutput(SerialBuff[0],SerialBuff[1]);
    8083 C6 0045      ldA	_SerialBuff+1
    8086 87           pshA	
    8087 C6 0044      ldA	_SerialBuff
    808A 87           pshA	
    808B CD 80C5      jsr	_SwitchOutput
    808E A7 02        aiS	#2
    8090 95           tSX	
(0029)   }			          
    8091 20 DC        bra	0x806F
    8093 A7 01        aiS	#1
    8095 81           rts	
FILE: SetUp.c
(0001) //MCUInit:芯片初始化-------------------------------------------------------*
(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:
    8096 A6 01        ldA	#1
    8098 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;
    809A A6 3D        ldA	#61
    809C 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             
    809E 3F 36        clr	0x36
(0036)    PCTL=0x01;         //②将P、E写入PTCL,置VCO的参考频率为2             
    80A0 A6 01        ldA	#1
    80A2 B7 36        stA	0x36
(0037)    PMSH=0x01;         //③将N写入PMSH、PMSL,置VCO的倍频因子为$12C          
    80A4 A6 01        ldA	#1
    80A6 B7 38        stA	0x38
(0038)    PMSL=0x2C;             
    80A8 A6 2C        ldA	#44
    80AA B7 39        stA	0x39
(0039)    PMRS=0b10000000;   //④将L写入PMRS,置VCO的输出频率范围系数为$80   
    80AC A6 80        ldA	#-128
    80AE B7 3A        stA	0x3A
(0040)    PRDS=0x01;         //⑤将R写入PRDS
    80B0 A6 01        ldA	#1
    80B2 B7 3B        stA	0x3B
(0041)    PCTL|=(1<<5);      //⑥置PCTL.PLLON=1,启动PLL电路  
    80B4 1A 36        Bset	5,0x36
(0042)    PBWC|=(1<<7);      //⑦PBWC自动带宽控制位=1,选择自动控制方式  
    80B6 1E 37        Bset	7,0x37
(0043)    PCTL|=(1<<4);      //⑧PCTL.BCS=1,选择PLL电路为时钟源
    80B8 18 36        Bset	4,0x36
    80BA 81           rts	
_isrDummy:
    80BB 8B           pshH	
FILE: Vectors08.c
(0001) //[Vectors08.c]中断处理函数与中断向量表------------------------------------*
(0002) //功能:                                                                   *
(0003) //     (1)定义中断处理子程序                                               *
(0004) //     (2)放置中断向量表                                                   *
(0005) //说明:该文件与芯片具体型号有关.                                           *
(0006) //     (1)芯片型号MC68HC908GP32                                            *
(0007) //-------------------------------------------------------------------------*
(0008) 
(0009) //此处为用户中断处理函数的存放处
(0010) 
(0011) //
(0012) 
(0013) //未定义的中断处理函数,本函数不能删除
(0014) #pragma interrupt_handler isrDummy  
(0015) void isrDummy(void) 
(0016)   {
    80BC 8A           pulH	
    80BD 80           rti	
FILE: SwitchOutput.c
(0001) //[SwitchOutput.c]开关驱动-------------------------------------------------*
(0002) //本文件包含:                                                              *  
(0003) //   (1)SwitchOutput_Init:定义控制开关的MCU的I/O引脚为输出                 *
(0004) //   (2)SwitchOutput:将某引脚模拟为开关的开闭                              *
(0005) //硬件连接:                                                                *
(0006) //   (1)本处的开关是接触器,由MCU的I/O引脚控制                              *
(0007) //   (2)控制引脚=高电平时,模拟开关的闭状态;反之,模拟开关的开状态;          *
(0008) //-------------------------------------------------------------------------*
(0009) 
(0010) #include"SwitchOutput.h"   //该头文件中包含了开关控制引脚定义和相关函数声明
(0011) 
(0012) //SwitchOutput_Init:定义控制开关的MCU引脚为输出----------------------------*
(0013) //功能:定义控制开关的MCU引脚为输出,并模拟开关初始为开                      *
(0014) //参数:无                                                                 *
(0015) //返回:无                                                                 *
(0016) //-------------------------------------------------------------------------*
(0017) void SwitchOutput_Init(void)
(0018) {
_SwitchOutput_Init:
    80BE A6 FF        ldA	#-1
    80C0 B7 04        stA	0x04
(0019)   SwitchOutput_D=0xFF;       //令开关输出端口为输出
(0020)   SwitchOutput_P=0x00;       //初始输出全为低,模拟开关的开状态
    80C2 3F 00        clr	0x00
    80C4 81           rts	
_SwitchOutput:
  Status               --> X+3
  PinNo                --> X+2
    80C5 95           tSX	
(0021) }
(0022) 
(0023) //SwitchOutput:驱动开关"开"、"闭"------------------------------------------*
(0024) //功能:通过给某引脚设定状态来模拟开关的开闭                                *
(0025) //参数:PinNo=需设定状态的引脚(0~7)                                         *
(0026) //     Status=Open,开;Status=Close,闭                                      *
(0027) //返回:无                                                                  *
(0028) //-------------------------------------------------------------------------* 
(0029) void SwitchOutput(INT8U PinNo,INT8U Status)
(0030) {
    80C6 E6 03        ldA	3,X
    80C8 26 17        bne	0x80E1
(0031)   if(Status==0)
(0032)     SwitchOutput_P &=~(1<<PinNo);      //开关“开” 
    80CA 6E 0140      mov	#1,*__r0
    80CD E6 02        ldA	2,X
    80CF A4 07        and	#7
    80D1 27 04        beq	0x80D7
    80D3 38 40        lsl	*__r0
    80D5 4B FC        dbnzA	0x8117
    80D7 33 40        com	*__r0
    80D9 B6 00        ldA	0x00
    80DB B4 40        and	*__r0
    80DD B7 00        stA	0x00
    80DF 20 13        bra	0x80F4
(0033)   else 
(0034)     SwitchOutput_P |=(1<<PinNo);         //开关“闭” 
    80E1 6E 0140      mov	#1,*__r0
    80E4 E6 02        ldA	2,X
    80E6 A4 07        and	#7
    80E8 27 04        beq	0x80EE

⌨️ 快捷键说明

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