DG128监控程序(汇编带中文注释)
- 格式:doc
- 大小:210.00 KB
- 文档页数:30
MS9S12DG128(256)主板使用说明一、功能概述紫光机器人的控制部件---主板,它由很多电子元器件组成,在控制机器人运动时,要完成接收信息、处理信息、发出指令等一系列过程。
1、四路直流电机控制接口,可分别进行PWM控制2、四路伺服电机控制接口(可扩展)3、8路I/O端口(可提供更多的扩展机会)4、16路AD信号接口(接传感)5、液晶模块接口6、BKGD接口7、串行下载接口8、三路程序控制的LED发光二极管9、电源接口(最高可接24V)二、主控芯片DG128是Freescale公司HCS12系列16位MCU 中的一种,其内部集成了很多功能模块。
芯片具有5V输入和驱动能力,CPU的工作频率可达到50MHz,总线频率可达到25MHz,并支持单线背景调试模式(BDM)。
DG128 的内部存储器包括128KB 的Flash EEPROM、8KB 的RAM、2KB 的EEPROM。
DG128 的内部功能模块主要如下:①通用I/O:29路独立数字I/O,20路带中断和唤醒功能的数字I/O。
②A/D转换接口:两个8 通道的10位A/D转换器。
③CAN总线接口:内部集成了3 个CAN协议控制器——MSCAN12模块,符合CAN 2.0A/B协议标准。
④输入捕捉/输出比较与PWM:具有8个通道的输入捕捉/输出比较。
还具有8 个可编程PWM通道,可配置成8通道8位或4通道16位PWM,其每个通道的周期和占空比均可以通过编程独立设置。
可编程的时钟选择逻辑,使得输出脉冲的频率可设定在较宽的范围内。
⑤串行通信接口:具有两个串行异步通讯接口SCI、两个同步串行外设接口SPI、Byteflight、Inter-IC总线。
三、电机控制芯片L298的特点1、电源的驱动电压Vs可达5V-6V2、输入高电压为Vih2.3-Vss,输入低电压为0V-1.5V3、相应速度快,提供纳秒级的响应速度4、正常工作温度为13℃-35℃。
温度过高时或温度过低时,芯片均会停止工作,防止其损坏四、主板端口功能使用说明1、开关按钮:ON/OFF电源。
keaz128程序例程keaz128是一款基于ARM Cortex-M0+内核的32位微控制器。
它具有低功耗、高性能和丰富的外设接口等特点,适用于各种嵌入式应用领域。
我们来了解一下keaz128的基本特点。
keaz128采用了低功耗的ARM Cortex-M0+内核,运行频率可达50MHz,具有较高的计算性能。
它集成了128KB的闪存和16KB的RAM,可以存储大量的程序代码和数据。
此外,keaz128还拥有丰富的外设接口,包括GPIO、UART、SPI、I2C等,可满足不同应用的需求。
接下来,我们将介绍keaz128程序的开发环境和工具。
keaz128的程序开发可以使用多种集成开发环境(IDE),如Keil MDK、IAR Embedded Workbench等。
这些IDE提供了丰富的开发工具和调试功能,能够帮助开发人员快速、高效地开发和调试keaz128程序。
在开始编写keaz128程序之前,我们需要了解keaz128的编程语言和编程模型。
keaz128支持多种编程语言,包括C语言和汇编语言。
C语言是开发keaz128程序的主要语言,它具有良好的可移植性和易读性。
汇编语言则可以用于对高效率和低级别的程序进行优化。
当我们进行keaz128程序的开发时,需要注意一些常见的编程技巧和注意事项。
首先,我们应该熟悉keaz128的寄存器和外设的配置方法,以便正确地初始化和使用它们。
其次,我们应该合理地进行程序结构设计,包括模块划分、函数调用等,以提高程序的可读性和可维护性。
此外,我们还应该注意程序的性能和资源利用情况,尽量避免不必要的浪费。
在实际开发过程中,我们可以借助一些常用的库函数和驱动程序来简化开发工作。
keaz128的厂商提供了一些常用的库函数,如GPIO操作函数、中断处理函数等,可以方便地进行程序开发。
此外,还有一些第三方开发库可以提供更多的功能和工具,如通信协议库、图形库等。
我们需要进行keaz128程序的编译、烧录和调试。
本文由pknew贡献pdf文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
使用监控程序经行程序烧写、调试的方法说明C语言编程版对MC9S12DG128进行调试、程序烧写可以有两种方式:用BDM工具通过专门接口进行和利用监控程序通过串口进行。
BDM方式是芯片厂商提供的调试、烧写方式,在DG128芯片上留有管脚,通过仿真器将目标板和PC机相连,PC机通过Hiwave程序将程序通过仿真器烧写至单片机中。
BDM的一大特点是需要专门的仿真器和开发环境,在没有仿真器或者Hiwave程序时就无法进行程序的烧写。
另外一种方式,也就是利用监控程序通过串口进行程序烧写的方式,不用专门的调试器,不用专门的程序就可进行程序的烧写。
一、简单原理简单的说,通过串口烧写程序就是用已经烧写在单片机内部的一小段程序,通过异步串行接口与PC机通信,把得到的程序数据写在单片机的Flash中。
已烧写进单片机的程序称为监控程序,由Freescale公司提供,在发单片机开发板或提供的硬件平台之前已用BDM烧写至单片机内。
由于监控程序的存在,单片机的一些存储空间被占用,中断向量表的位置也要改变。
已有监控程序的单片机在运行时,首先运行的程序就是监控程序,监控程序首先会等待3秒,同时查询串口是否接收到任何数据,若接收到数据,就进入调试状态,通过指令进行程序烧写、调试;若3秒之内没有从串口上接收到数据,就去执行用户烧写到单片机内的程序。
二、使用CodeWarrior进行程序编写时的注意事项由于使用了监控程序,在进行程序编写时就要比平常多注意两个方面的东西,一是对整个程序存储空间的定义,一是中断向量的偏移。
1.程序存储空间的定义监控程序占用了¥F000-¥FEFF的存储空间,并且通过串口烧写程序时对此存储空间进行了写保护,故用户在写程序时要注意必要将程序编译连接至此存储空间中,为了解决此问题,要在Full_Chip_Simulation_linker.prm进行改动,如下:将改为2.中断向量表偏移的处理监控程序将中断向量表从¥FF00-¥FFFF偏移至¥EF00-¥EFFF,即用户的程序入口和中断程序的向量号需要改变。
Timer寄存器说明1、定时器/计数器系统控制寄存器1(TSCR1)TSCR1 寄存器是定时器模块的总开关,它决定模块是否启动以及在中断等待、BDM 方式下的行为,还包括标志的管理方式。
其各位的意义如下:TEN:定时器使能位,此外它还控制定时器的时钟信号源。
要使用定时器模块的IC/OC 功能,必须将TEN 置位。
如果因为某种原因定时器没有使能,脉冲累加器也将得不到ECLK/64 时钟,因为ECLK/64 是由定时器的分频器产生的,这种情况下,脉冲累加器将不能进行引脚电平持续时间的累加。
0:定时器/计数器被禁止,有利于降低功耗。
1:定时器/计数器使能,正常工作。
TSWAI:等待模式下计时器关闭控制位。
【注意】定时器中断不能用于使MCU 退出等待模式。
0:在中断等待模式下允许MCU 继续运行。
1:当MCU 进入中断等待模式时,禁止计时器。
TSFRZ:在冻结模式下计时器和计数器停止位。
0:在冻结模式下允许计时器和计数器继续运行。
1:在冻结模式下禁止计时器和计数器,用于仿真调试。
【注意】TSFRZ 不能停止脉冲累加。
TFFCA:定时器标志快速清除选择位。
0:定时器标志普通清除方式。
1:对于TFLGl($0E)中的各位,读输入捕捉寄存器或者写输出比较寄存器会自动清除相应的标志位CnF。
对于TFLG2($0F)中的各位,任何对TCNT 寄存器($04、$05)的访问均会清除TOF 标志;任何对PACN3 和PACN2 寄存器($22,$23)的访问都会清除PAFLG 寄存器($21)中的PAOVF 和PAIF 位。
任何对PACN1 和PACN0 寄存器($24,$25)的访问都会清除PBFLG 寄存器($21)中的PBOVF 位。
【说明】这种方式的好处是削减了另外清除标志位的软件开销。
此外,必须特别注意避免对标志位的意外清除。
2、计时器系统控制寄存器2(TSCR2)寄存器偏移量:$000DTOI:定时器/计时器溢出中断使能。
MC9S12DG128实验使用手册目录第一章概述 (2)第二章硬件电路原理 (4)2.1子板硬件原理 (4)2.1.1、MCU引脚接口部分 (5)2.1.2、串口通信部分 (6)2.1.3、电源部分 (6)2.1.4、复位电路部分 (6)2.1.5、I/O端口电路部分 (7)2.1.6、晶振电路与BDM插头部分 (7)2.2母板硬件原理 (8)2.2.1、电源部分 (9)2.2.2、MC9S12DG128开发板与各接口部分 (9)2.2.3、串口通信部分 (11)2.2.4、LED数码管显示部分 (12)2.2.5、8位数字量输入输出部分 (13)2.2.6、红外发射接收部分 (15)2.2.7、LCD显示部分 (15)2.2.8、模拟量输入部分 (15)2.2.9、蜂鸣器和喇叭部分 (15)2.2.10、键盘输入部分 (16)2.2.11、继电器部分 (16)2.2.12、打印机部分 (17)2.2.13、CAN总线部分 (17)第三章MC9S12DG128教学平台快速入门 (18)3.1硬件连接 (18)3.2软件应用 (20)第一章概述天津工业大学Freescale MCU/DSP研发中心开发的DG128实验系统,其功能基本上和美国MCUSLK系统相同,而且根据中国的教学情况重新设计了一些功能、力求达到更好的实验效果。
DG128实验系统由主板和独立的MCU子板构成。
DG128实验系统的主板插槽和美国的MCUSLK系统相互兼容,主板的插槽可以插包括S12、S08、 HC08各系列MCU子板。
MCU子板可以单独调试运行,也可以插在主板上调试,充分利用主板丰富的硬件资源。
MC9S12DG128具有16位中央处理器(HCS12 CPU)、128KB Flash EEPROM、8KB RAM、2KB EEPROM,以及定时器通道、键盘中断和A/D通道等接口。
MC9S12DG128实验系统可以直接与CodeWarrior相连,具有下载程序、在线单步运行、断点调试、连续运行、修改寄存器和存储单元等特点,可以很方便的进行教学。
飞思卡尔DG128—PE编程入门教程(1)首先打开CodeWarrior 5.0 开发环境,然后在弹出的选项中选择新建工程注释:如果没有弹出这个对话框,可以在下面的File中选择New Project新建一个工程。
(2) 选择开发芯片的型号(这里我们使用的是MC9S12DG128)接着选择TBDML,这个是我们使用在线调试功能的选项。
(3) 选择工程的生成路径,注意:如果我们不使用PE编程功能的话,在这步结束后,可以直接选择完成按钮来完成工程的新建。
(4) (PE编程功能的步骤)下一步,这个对话框我们什么都不用选择,直接点击下一步。
(5)选择下面这个选项来启动PE编程功能。
(6) 红色边框中选项的功能为是否启动浮点数据的使用,默认第一个是不启用;第二个是启用,float数据为32位,double为32位;第三个是启用,float 数据为32位,double数据为64位。
(7)最后一步什么都不要设置,直接点击完成。
(8) 以上步骤我们完成了一个DG128工程的新建步骤。
PE的使用步骤:(1) 新建工程后,会自动弹出个芯片封装型号的选择,选择后点击OK。
(注意:我们学校使用的芯片是112管脚,所以注意选择红线标注的选项)(2) 点击OK后,就会出现我们要编程的环境了。
如下所示:(3)红色标注的地方就是该工程的工作区。
细心的同学就会发现,它生成的文件中没有我们需要写的源文件XXX.c 。
那我们现在就来生成这些文件,找到下图的选项Processor Expert 。
然后点击第二个选项的Generate Code ' XXX .mcp' (这里的XXX 表示该工程名称)。
下面是自动生成的文件。
这时候发现软件为我们自动的生成了一个Project.c (Project 是我这个工程建立的文件命,不同的工程文件名将导致这个名字不同)的文件。
这个就是我们将要编写的源文件了,它里面包含了主函数main()。
HCS12微控制器系列教程---第一讲:PWM 模块介绍该教程以MC9S12DG128单片机为核心进行讲解,全面阐释该16位单片机资源。
本文为第一讲,开始介绍S12 MCU的PWM模块。
PWM 调制波有8 个输出通道,每一个输出通道都可以独立的进行输出。
每一个输出通道都有一,一个周期控制寄存器和两个可供选择的时钟源。
每一个PWM 输出个精确的计数器(计算脉冲的个数)通道都能调制出占空比从0—100% 变化的波形。
PWM 的主要特点有:1、它有8 个独立的输出通道,并且通过编程可控制其输出波形的周期。
2、每一个输出通道都有一个精确的计数器。
3、每一个通道的PWM 输出使能都可以由编程来控制。
4、PWM输出波形的翻转控制可以通过编程来实现。
5、周期和脉宽可以被双缓冲。
当通道关闭或PWM计数器为0时,改变周期和脉宽才起作用。
6、8 字节或16 字节的通道协议。
,他们提供了一个宽范围的时钟频率。
7、有4 个时钟源可供选择(A、SA、B、SB)8、通过编程可以实现希望的时钟周期。
9、具有遇到紧急情况关闭程序的功能。
10、每一个通道都可以通过编程实现左对齐输出还是居中对齐输出。
HCS12微控制器系列教程---第二讲:PWM 寄存器简介1、PWM启动寄存器PWMEPWME 寄存器每一位如图1所示:复位默认值:0000 0000B图1 PWME 寄存器每一个PWM 的输出通道都有一个使能位PWMEx 。
它相当于一个开关,用来启动和关闭相应通道的PWM 波形输出。
当任意的PWMEx 位置1,则相关的PWM输出通道就立刻可用。
用法:PWME7=1 --- 通道7 可对外输出波形PWME7=0 --- 通道7 不能对外输出波形注意:在通道使能后所输出的第一个波形可能是不规则的。
当输出通道工作在串联模式时(PWMCTL寄存器中的CONxx置1),那么)使能相应的16位PWM 输出通道是由PWMEx的高位控制的,例如:设置PWMCTL_CON01 = 1,通道0、1级联,形成一个16位PWM 通道,由通道1 的使能位控制PWM 的输出。
Honeywell霍尼韦尔VISTA系列报警主机编程说明深圳市麦驰物联股份有限公司工程服务部-整理编辑目录一、设备认识 (3)Vista系列报警主机(以Vista 128BPT为例) (3)Vista系列报警主机控制键盘(6160) (7)4193SN/SNP单地址码两回路模块(已停产) (7)4293SN单防区扩充模块 (8)4101SN V-Plex单防区总线继电器模块 (9)4204ECP总线继电器模块 (9)4208SN V-Plex总线8防区扩充模块 (10)4297总线延伸器 (10)4232AP 32路继电器模组 (12)VPlex-VSI总线监测/隔离模块 (13)IP-2000 2.0网络接口模块 (14)二、主机编程 (17)防区编程: (17)删除防区: (21)子系统编程: (23)1.子系统数量划分: (23)2.子系统跳转功能设置: (23)3.防区子系统划分及布防延时更改 (24)继电器输出设备编程: (25)1.4101SN单防区继电器模块编程 (25)2.防区列表编程 (29)3.查看防区列表 (30)4.4232AP 32路继电器模块编程设置(VISTA 128BPT) (30)4100SN与IP2000模块编程: (31)三、键盘日常使用操作 (33)1.布撤防操作 (33)2.子系统跳转 (33)四、主机常见问题解析 (34)五、键盘常见显示中英文对照 (36)一、设备认识Vista系列报警主机(以Vista 128BPT为例)(图1)由原安定宝、C&K打底建立的Honeywell安防是全球最大的报警器材制造商,其制造的VISTA系列报警主机(图1)是业界最早、认可度最高的大型总线制报警主机,主要用来接收处理前端探测器发送回来的报警信号,是先进的多功能控制主机。
功能框图Vista - 128BPT常规接线方式Vista - 128BPT总线接线方式Vista - 128BPT无线接线方式Vista - 128BPT总线连接图表格(一):总线负载电流、线径与总线驱动距离的关系Vista系列报警主机控制键盘(6160)(图2)6160键盘(图2)用来给报警主机编程和防区布撤防相关操作4193SN/SNP单地址码两回路模块(已停产)4193SN用于总线扩充,可以扩展成2个回路:白色线与黄色线组成一个10K电阻监测的回路或者黄色线与黑色线组成常闭回路;这两个回路任选其一,都是第一个防区;绿、黑线组成常闭形式的第二个防区,在编程时要注意防区回路选择。
产品特点•高性能、低功耗的 AVR® 8位微处理器•先进的 RISC 结构–133条指令 – 大多数可以在一个时钟周期内完成–32 x 8 通用工作寄存器 + 外设控制寄存器–全静态工作–工作于16 MHz时性能高达16 MIPS–只需两个时钟周期的硬件乘法器•非易失性的程序和数据存储器–128K 字节的系统内可编程Flash寿命: 10,000次写/擦除周期–具有独立锁定位、可选择的启动代码区通过片内的启动程序实现系统内编程真正的读-修改-写操作–4K字节的EEPROM寿命: 100,000次写/擦除周期–4K 字节的内部SRAM–多达64K字节的优化的外部存储器空间–可以对锁定位进行编程以实现软件加密–可以通过SPI实现系统内编程•JTAG接口(与IEEE 1149.1标准兼容)–遵循JTAG标准的边界扫描功能–支持扩展的片内调试–通过JTAG接口实现对Flash, EEPROM, 熔丝位和锁定位的编程•外设特点–两个具有独立的预分频器和比较器功能的8位定时器/计数器–两个具有预分频器、比较功能和捕捉功能的16位定时器/计数器–具有独立预分频器的实时时钟计数器–两路8位PWM–6路分辨率可编程(2到16位)的PWM–输出比较调制器–8路10位ADC8个单端通道7个差分通道2个具有可编程增益(1x, 10x, 或200x)的差分通道–面向字节的两线接口–两个可编程的串行USART–可工作于主机/从机模式的SPI串行接口–具有独立片内振荡器的可编程看门狗定时器–片内模拟比较器•特殊的处理器特点–上电复位以及可编程的掉电检测–片内经过标定的RC振荡器–片内/片外中断源–6种睡眠模式: 空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式–可以通过软件进行选择的时钟频率–通过熔丝位可以选择ATmega103兼容模式–全局上拉禁止功能•I/O和封装–53个可编程I/O口线–64引脚TQFP与 64引脚 MLF封装•工作电压–2.7 - 5.5V ATmega128L–4.5 - 5.5V ATmega128•速度等级–0 - 8 MHz ATmega128L–0 - 16 MHz ATmega128微处理器,具有128K字节的系统2ATmega1282467L–AVR–05/04引脚配置Figure 1. ATmega128的引脚综述ATmega128为基于AVR RISC 结构的8位低功耗CMOS 微处理器。
1:如何设置A VR单片机的时钟?答:可以通过设置熔丝位来确定A VR单片机工作时的时钟是来自外部晶振还是来自内部的振荡器。
熔丝位设置:芯片有如下几种通过熔丝位选择的时钟源。
时钟输入到AVR 时钟发生器,并通往其他合适的模块。
Table 6.时钟源选择芯片时钟选项CKSEL3..0(1)外部晶体/ 陶瓷振荡器1111 - 1010外部低频晶体1001外部RC 振荡器1000 - 0101标定的内部RC 振荡器0100 - 0001外部时钟0000 2.如何操作定时器计数器1,让其工作在定时状态?答:(1)通过设置寄存器TCCR1A,和寄存器TCCR1B中的相应位来给定时器选择分频系数。
(2)向数据寄存器TCNT1H,TCNT1L装初值。
(3)设置定时器/ 计数器中断屏蔽寄存器TIMSK中的第二位TOIE1=1;(4)打开总中断,置SREG中的第4位为‘1’,打开总中断,这里只需使SREG|=0X80即可;(5)在中断函数中重装初值。
3.中断函数格式:#pragma interrupt_handler函数名():中断向量序号void 函数名(){重装初值;其它程序代码.}4.如何计算计数初始值?答:举例说明:若我们设置定时器工作的分频为M分频,时钟频率为fclk,则单片机产生一次中断的时间为t=fclk/m.则若设置定时T则要记的数N为:N=T/t;定时器1 (16位定时器)寄存器TCCR1B = 0x04 设定256预分频要利用定时器定时1秒1,4000000 / 256 = 15625 说明定时器每当1/15625 秒就会触发一次中断2,65535 - 15625 = 49910 //1s/(产生一次中断的时间)计算出要累加多少次才能在1秒后出发定时器1的溢出中断3,49910 <==> C2 F6 将计算后的值换算成16进制4,TCNT1H = 0xC2 ; 对寄存器赋初值TCNT1L = 0xF6 ;。
*********************************************************** Tsinghua Motorola MCU/DSP Application Center* Motorola Program for 9S12DP256* V. 1.1* All Right Reserved* Shao Beibei, Liu Yongyi 2003.12.26**********************************************************段描述:用EQU定义一些常量,用RMB预留一些空间XDEF Entry,MAINNUL EQU $00 ;Control Characters in ASCIIEOT EQU $04 ;字符串结尾用EOT字符(end of text),这个字符在ASCII码中定义的值是0x04, ;在C语言中,字符串结束符为0x00.LF EQU $0A ;换行符"\n".CR EQU $0D ;回车CTRLA EQU $01 ;ctrl+A修改ACTRLB EQU $02 ;ctrl+B.修改BCTRLC EQU $03 ;ctrl+C修改CCTRLH EQU $08CTRLP EQU $10 ctrl+P修改页面寄存器CTRLU EQU $15CTRLX EQU $18 ;ctrl+x.修改XCTRLY EQU $19 ;ctrl+Y..修改Y*PORTB EQU $01 ;Port B Data(端口B的数据寄存器所对应的地址)DDRB EQU $03 ;Port B Direction(端口B的数据方向寄存器所对应的地址)*SCI0BDH EQU $C8 ;SCI Registers波特率寄存器高位和低位寄存器SCI0BDL EQU $C9 ;SCI0CR1 EQU $CA ;SCI控制寄存器地址SCI0CR2 EQU $CBSCI0SR1 EQU $CC ;SCI状态寄存器地址SCI0SR2 EQU $CDSCI0DRH EQU $CE ;SCI数据寄存器地址SCI0DRL EQU $CF*BKPCT0 EQU $28 ;Break Point registers (第一个断点控制寄存器地址)BKPCT1 EQU $29 ;第二个断点控制寄存器地址BKP0X EQU $2A ;第一个断点所在的页面地址BKP0H EQU $2B ;第一个断点的高位地址BKP0L EQU $2C ;第一个断点低位地址BKP1X EQU $2D ;第二`个断点的页面地址``````BKP1H EQU $2E ;第二个断点的高位和低位地址*SYNR EQU $34 ;Synthesizer Loop Divider register(时钟合成寄存器地址)REFDV EQU $35 ;Reference Divider register(时钟分频寄存器地址)CRGFLG EQU $37 ;CRG Flag register(时钟产生模块标志寄存器)CLKSEL EQU $39 ;CRG clock select register(时钟选择寄存器地址,用于选定系统时钟)ARMCOP EQU $3F ;COP reset register*INITRM EQU $10 ;RAM START addres define registerINITRGDF EQU $11 ;Default addres of INITRG (I/O mapping register)INITEE EQU $12 ;EEPROM START addres define registerPPAGE EQU $30 ;Registers(页面寄存器地址)FCNFG EQU $0103 ;(flash配置寄存器,用于flash的擦除和写入)FCMD EQU $0106 ;flash的命令寄存器FSTAT EQU $0105 ;flash的状态寄存器CBEIF EQU $80 ;flash状态寄存器中的第7位,标志命令缓冲区是否可用ERASE EQU $40 ;flash命令寄存器中的擦除命令PVIOL EQU $20 ;flash状态寄存器第5位,检测操作是否正常ACCERR EQU $10 ;标志操作是否正常CCIF EQU $40 ;命令完成中断标志BLANK EQU $04 ;标志flash擦除是否干净FCLKDIV EQU $0100 ;用于设置flash擦除时的工作频率ECLKDIV EQU $0110 ;用于设置eeprom擦除时的工作频率PROG EQU $20PPAGESIZE EQU $16384 ;一页的大小SECTORSIZE EQU 512 ;一段的大小(一页32段)BOOTBLKSIZE EQU 4096FlashSTART EQU $8000 ;flash起始位RAMTOP EQU $3FFFFlashRAM EQU RAMTOP-$1FF ;本程序中将flash中的程序复制到此RAMPGMBUF EQU FlashRAM-$100 ;一般用于栈空间*ORG $3FD0 ;This debug needs 24 bytes of RAM*MRCC RMB 1 ;SP-->Initialed Here (保留一个字节空间,保存条件码寄存器中的值) MRB RMB 1 ;SP + 1(保存ACCB中的值)MRA RMB 1 ;SP + 2 (保存ACCA中的值)MRX RMB 2 ;SP + 3 (保存X中的值)MRY RMB 2 ;SP + 5 (保存Y中的值)MRPC RMB 2 ;SP + 7 (保存PC中的值)SPBUF RMB 2 ;SP + 9 (保存SP中的值)ERA RMB 2 ;以下几个字节为缓存区,有多种用途ERA1 RMB 2BUF0 RMB 1BUF1 RMB 1BUF2 RMB 1BUF3 RMB 1BUF4 RMB 1BUF5 RMB 1ECHO RMB 1CCRCOPY RMB 1NOTUSED RMB 1*STACK EQU MRCC-1 ;栈的底端** Interrupt VICTORS Are Moved to here*ORG $EF8C ;58 Vectors*PWMSDN EQU $EF8C ;PWM Emergency ShutdownPTPIF EQU $EF8E ;PORT P InterruptC4TIER EQU $EF90 ;MSCAN 4 transmitC4RIER0 EQU $EF92 ;MSCAN 4 receiveC4RIER1 EQU $EF94 ;MSCAN 4 errorsC4RIER2 EQU $EF96 ;MSCAN 4 wake-upC3TIER EQU $EF98 ;MSCAN 3 transmitC3RIER0 EQU $EF9A ;MSCAN 3 receiveC3RIER1 EQU $EF9C ;MSCAN 3 errorsC3RIER2 EQU $EF9E ;MSCAN 3 wake-upC2TIER EQU $EFA0 ;MSCAN 2 transmitC2RIER0 EQU $EFA2 ;MSCAN 2 receiveC2RIER1 EQU $EFA4 ;MSCAN 2 errorsC2RIER2 EQU $EFA6 ;MSCAN 2 wake-upC1TIER EQU $EFA8 ;MSCAN 1 transmitC1RIER0 EQU $EFAA ;MSCAN 1 receiveC1RIER1 EQU $EFAC ;MSCAN 1 errorsC1RIER2 EQU $EFAE ;MSCAN 1 wake-upC0TIER EQU $EFB0 ;MSCAN 0 transmitC0RIER0 EQU $EFB2 ;MSCAN 0 receiveC0RIER1 EQU $EFB4 ;MSCAN 0 errorsC0RIER2 EQU $EFB6 ;MSCAN 0 wake-upFCTL EQU $EFB8 ;FLASHEECTL EQU $EFBA ;EEPROMSP2CR1 EQU $EFBC ;SPI2SP1CR1 EQU $EFBE ;SPI1IBCR EQU $EFC0 ;IIC BUSDLCBCR1 EQU $EFC2 ;DLCPLLCR0 EQU $EFC4 ;SCMEPLLCR1 EQU $EFC6 ;CRG LOCKPBCTL EQU $EFC8 ;Pulse Accumulator B OverFlow MCCTL EQU $EFCA ;Modulus down counter underflow PTHIF EQU $EFCC ;Port HPTJIF EQU $EFCE ;Port JATD1CTL2 EQU $EFD0 ;A TO D1ATD0CTL2 EQU $EFD2 ;A TO D0SC1CR2 EQU $EFD4 ;SCI 1SC0CR2 EQU $EFD6 ;SCI 0SPI0CR1 EQU $EFD8 ;SPI0PACTL0 EQU $EFDA ;Pulse Accumulator input edge PACTL1 EQU $EFDC ;Pulse Accumulator A OverFlow TMSK2 EQU $EFDE ;Timer OverFlowTMSK17 EQU $EFE0 ;Timer channel 7TMSK16 EQU $EFE2 ;Timer channel 6TMSK15 EQU $EFE4 ;Timer channel 5TMSK14 EQU $EFE6 ;Timer channel 4TMSK13 EQU $EFE8 ;Timer channel 3TMSK12 EQU $EFEA ;Timer channel 2TMSK11 EQU $EFEC ;Timer channel 1TMSK10 EQU $EFEE ;Timer channel 0CRGINT EQU $EFF0 ;Real Time InterruptINTCR EQU $EFF2 ;IRQXIRQ EQU $EFF4 ;XIRQVSWI EQU $EFF6 ;SWIVTRAP EQU $EFF8 ;Unimplemented instruction trapCOPFR EQU $EFFA ;COP failure resetCMFR EQU $EFFC ;Clock monitor fail resetRESET EQU $EFFE ;Reset**段描述:系统初始化,包括系统时钟初始化,接口初始化,固定影象初始化等。