概览
NI Multisim MCU模块为Multisim软件增添了微控制器(microcontroller unit)协同仿真功能,从而使得您可以在使用SPICE建模的电路中加入一个可使用汇编语言或C语言进行编程的微控制器。
Multisim MCU模块使得学生、教师以及专业用户可以在熟悉的Multisim环境中以汇编语言或C语言对MCU进行编程。这个MCU模块可与Multisim中任意一个虚拟仪器共同使用以实现一个完整的系统仿真,包括微控制器以及全部所连接的模拟和数字SPICE元件。
Multisim MCU模块支持Intel®/Atmel® 8051/8052和Microchip PIC16F84a芯片以及众多高级的外围器件,例如外部RAM和ROM、键盘、图形型和字符型液晶等等。MCU模块充分利用了Multisim软件的教育平台功能从而使得它成为许多电子类课程的理想选择,例如数字电路、计算机体系结构、MCU编程、嵌入式系统控制、高级设计以及其他相关课程!
开始前的准备工作
本指南要求Multisim MCU模块已被激活或者处于有效的试用期内,而且建议您已对标准的NI Multisim软件环境有所了解。
本指南要求Multisim MCU模块已被激活或者处于有效的试用期内,而且建议您已对标准的NI Multisim软件环境有所了解。
附带的文档包括了完成此指南所需的全部文件。但是,本指南只是说明了如何从零开始创建一个MCU模块工程,而没有解释源文件。
文件名
|
文件类型
|
文件目录
|
PIC UpDown Counter.ms10
|
Multisim 10 Circuit
|
..\
|
PIC UpDown Counter.mcuws
|
MCU Module Workspace
|
..\PIC UpDown Counter\
|
C Project.mcuprj
|
MCU Module Project
|
..\PIC UpDown Counter\C Project
|
UpDown_Counter.c
|
C-Code Source File
|
..\PIC UpDown Counter\C Project
|
Assembly Project.mcuprj
|
MCU Module Project
|
..\PIC UpDown Counter\Assembly Project
|
UpDown Counter.asm
|
Assembly Source File
|
..\PIC UpDown Counter\Assembly Project
|
本指南中所使用的MCU工程是利用Microchip公司的PIC16F84芯片来演示一个简单的加碱计数器。微控制器的端口A配置为输入并连接到两个开关,而端口B则配置为输出并连接到一个7段显示器。两个开关用以打开或关闭显示器以及改变计数方向。7段显示器以十六进制显示了当前的计数器数值(0-F)。这个MCU模块例程包含了两个相同的工程,一个使用汇编语言创建,而另一个则是使用C代码创建。
创建一个新的MCU工程
- Multisim中打开一个新的电路原理图并从元件库中放置PIC16F84
- 根据MCU向导逐步执行
步骤1:定义Workspace文件
- workspace文件路径:例如“c:\MCU Projects”
- 输入workspace文件名:例如“PIC UpDown Counter”
步骤2:定义工程
- 编程语言:C语言
- 汇编器/编译器工具:Hi-Tech PICC-Lite编译器
- 工程名:例如“C Code Project”
步骤3:定义源文件
- main.c”
- 保存您的电路文件:例如“PIC UpDown Counter.ms10”
您的设计工具箱应当如下图所示(选择菜单VIEW > Design Toolbox)

输入源代码及添加其它工程
- C源代码文件“main.c”上双击以打开源代码编辑器
设置当前活动工程为:例如“Assembler Project” - 使用文本编辑器打开存档文件中的“UpDown_Counter.c”文件并从该文件复制所有的C代码1
-void main () 函数调用)并粘贴到“main.c”中
-在编辑器窗口中右键单击并选择“Show line number” - 保存文件“main.c”并关闭编辑器
- 打开MCU代码管理器(MCU Code Manager)
-MCU > MCU PIC16F84 U1 > MCU Code Manager
- 在设计工具箱中右键单击workspace、工程或源文件名并选择“MCU Code Manager” - 在当前的workspace中添加一个新的汇编语言工程
-New MCU Project”
-工程名:例如“Assembler Project”
-向新工程添加已有的源文件
-单击“Files…”
-从存档文件中选择文件“UpDown Counter.asm” - 单击OK以关闭MCU代码管理器
- 您马上即可进入源代码编辑器以编辑新的汇编语言源文件
- 右键单击编辑器窗口并选择“Show line number”
- 关闭源代码编辑器并保存完整的电路文件

放置并连接外围组件
由于已假定您基本了解NI Multisim软件,所以我们将不会详细地介绍如何实现这个电路。
使用下述的组件来实现如下图所示的电路。所有的组件都可按默认的设置来使用。如果您希望查看这些默认设置,请右键单击任意一个组件并选择属性。
数量
|
名称
|
元件组
|
元件类别
|
元件符号
|
1
|
POWER_SOURCES, VSS
|
Sources
|
Power_Sources
|
VSS
|
1
|
POWER_SOURCES, VDD
|
Sources
|
Power_Sources
|
VDD
|
1
|
SEVEN_SEG_COM_A
|
Indicators
|
Hex_Display
|
U2
|
2
|
SPST
|
Basic
|
Switch
|
J1, J2
|
1
|
PIC, PIC16F84
|
MCU Module
|
PIC
|
U1
|
2
|
RESISTOR, 10kΩ 5%
|
Basic
|
Resistor
|
R1, R2
|

注意:可以使用直接连线的方式来代替用于VDD和总线向量(即连接PIC6F84的端口B与十六进制数字显示器的向量)的虚拟连线。
仿真您的电路
- Assembler Project这个工程设置为您当前的活动工程
-右键单击工程名并选择“Set Active MCU Project” - 开始仿真
- 十六进制数字显示器U2开始向上计数
- 使用开关J1和J2来测试电路特性
-J1来打开和关闭显示器
- 单击J2来改变计数方向
-您也可以从键盘分配键值来操作开关(元件属性中的Value标签) - 停止仿真
调试您的源代码
- J2
- 打开源代码编辑器
- UpDown Counter.asm” - 在第76行放置一个断点
-Show Line Numbers”
-在第76行右键单击并选择“Toggle Breakpoint” - 关闭源代码编辑器并保存所进行的更改
- 开始仿真
- 关闭开关
-仿真将运行至断点处并且切换至暂停模式
- 弹出调试窗口 - 选择菜单Window > Tile Horizontal
- 单击Run/Resume仿真按钮(工具条中的绿色三角形按钮)
-显示器将显示下一个数字 - 打开内存映像(Memory View)
-workspace、工程或源文件名上右键单击并选择“Memory View”
-选择菜单MCU > MCU Windows.. > U1 Memory View > OK
- 如果需要的话可以调整内存映像的大小
-每当仿真器处于暂停模式之时,寄存器和内存映像就会更新 - 对变量Counter重写内存空间(Counter EQU 0x1C)
-IRAM内存映像
- 定位到地址0x1C
-双击以进行编辑和输入新的数值(例如,0D)
-单击Run/Resume仿真按钮
-仿真在断点处将再次暂停并且显示器显示数值0C - 熟悉调试工具(单步进入、单步跳过、单步跳出…)
-从菜单MCU >中选择 - 停止仿真
- 删除所有的断点
-MCU > Remove all breakpoints - 选择菜单File > Save all


在活动工程之间切换
一个MCU模块的Workspace中可以含有多个由汇编语言或C语言源文件构成的工程。如果您希望重复上述步骤,那么您可以将工程“C Code Project”设置为当前活动的MCU工程。
- Assembler Project这个工程设置为您当前的活动工程
-在工程名上右键单击并选择“Set Active MCU Project” - 重复上述步骤
注意:源代码的行数以及内存地址可能会改变