仿真板说明v7资料.docx
- 文档编号:10654475
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:27
- 大小:389.90KB
仿真板说明v7资料.docx
《仿真板说明v7资料.docx》由会员分享,可在线阅读,更多相关《仿真板说明v7资料.docx(27页珍藏版)》请在冰豆网上搜索。
仿真板说明v7资料
KeilC51
源程序仿真开发功能板
.可仿真调试各种8051,包括带ISP功能的新型单片机
.学习单片机高级语言C51的硬件平台
.Windows编译环境接口,简单可靠
.MAX7219驱动8位高亮LED
.用户程序零地址仿真
.单片机引脚插座
.用户扩展区
KeilC51源程序仿真板使用说明
KeilC51源程序仿真板是一种功能强大而实用的单片机开发调试工具,它充分利用台式PC机的系统资源,使用户可以轻松完成8051单片机应用系统的仿真调试工作.用户在PC机上完成软件程序的编辑,编译,连接,通过串行口通信方式将目标程序相比之下载到C51仿真开发功能板中,可对汇编语言和高级语言源程序进行跟踪调试,具有指令单步/过程单步运行,设置多达10个临时断点,随时察看内存数据或单片机内部资源,在线修改源程序等多种功能,仿真开发功能板上预留了用户扩展区,并将单片机的引脚全部引出,可作为外部仿真头使用,还预留了若干译码输出,可作为8279键盘,A/D,D/A等接口使用。
采用本仿真开发功能板对用户源程序进行实时在线调试,可极大地缩短单片机应用系统的开发时间。
一、仿真开发功能板资源
*.单一+5V电源供电。
*.8-32K仿真RAM/用户ROM,配有32KRAM芯片62256,调试时用户
程序被下载到该芯片中,调试完成后可将其换为固化有用户程序
的2764/27256芯片。
*.8K/24K用户RAM,配有8KRAM芯片6264,作为用户的数据存储器。
*.MAX7219共阴极8段LED驱动器,可直接驱动8个共阴极数码显
示器。
*.8031单片机(基本配置),可选配其它类型单片机如:
Winbond77E58,DS80C320,Phiips98C51RDx(ISP),SST89C58(ISP)
等新型单片机。
仿真开发板仅占用单片机内部串行口和定时器T1
以便于与PC机的通信,完成用户程序的仿真调试,其它所有片内
资源均可由用户使用。
如在开发中需使用串行口,可选用内部带
有双串口的单片机如DS80C320,Winbond77E58等
*.单片机全部引脚都引出,可作为仿真插头接口,还预置了若干译
码输出端口(地址线)以及数据线以便于用户使用,板上留有充
分的用户扩展区,方便用户进行各种接口扩展。
二、扩展插座引脚说明电源/UART0引脚说明:
插座P3(8279键盘板)引脚说明:
插座P4(仿真头)引脚说明:
┏┓┏┓
ALE1┫┣2VCCVCC1┫┣2P1.0
┫┣RSTP0.0┫┣P1.1
WR┫┣RDP0.1┫┣P1.2
A0┫┣C800HP1.2┫┣P1.3
D1┫┣D0P1.3┫┣P1.4
GND┫┣D2P1.4┫┣P1.5
REK┫┣D3P1.5┫┣P1.6
┫┣D4P1.6┫┣P1.7
D7┫┣D5P1.7┫┣RST
GND19┫┣20D6┫┣RXD
┗┛ALE┫┣TXD
PSEN┫┣INT0
P2.7┫┣INT1
P2.6┫┣T0
P2.5┫┣T1
P2.4┫┣WR
P2.3┫┣RD
P2.2┫┣
P2.1┫┣
P2.039┫┣40
┗┛
三、插座及跳线说明
U2插座可插入32K仿真RAM62256芯片,用于从KEIL仿真环境下载程序进行调试,也可插入用户ROM27256芯片,用于全速运行调试通过的用户程序。
该插座地址范围为0000H~7FFFH,配有4个跳线,其作用如下:
跳线名
跳线位置
功能作用
连接方式
说明
默认位置
JP1
RSE
仿真
仿真调试
RSE
A15
用户ROM
运行用户程序
JP2
PSEN
用户ROM
哈弗(数据程序分开)
P/S
P/S
仿真
冯诺依曼(数据程序共享)
JP3
27256
用户ROM
运行用户程序
62256
62256
仿真
仿真调试
JP4
27256
用户ROM
运行用户程序
62256
62256
仿真
仿真调试
U4插座可插入RAM6264或62256芯片,用于存贮用户数据,该插座地址范围为8000H~DFFFH。
配有3个跳线,其作用如下:
跳线名
跳线位置
功能作用
连接方式
说明
默认位置
JP5
RD
哈弗(数据程序分开)
P/S
P/S
冯诺依曼(数据程序共享)
JP6
64
插入6264芯片
64
56
插入62256芯片
JP7
64
插入6264芯片
64
56
插入62256芯片
U5插座上插入的是监控ROM芯片,其中是仿真实验板与KEIL环境连接所需的监控程序,该插座地址范围为E000H~FFFFH。
配有1个跳线,其作用如下:
跳线名
跳线位置
功能作用
连接方式
说明
默认位置
JP8
E000
运行监控程序
E000
GND
实验板检测
GAL16V8插座配有1个跳线,其作用如下:
跳线名
跳线位置
功能作用
连接方式
说明
默认位置
JP9
56K
不用板上扩展地址
48K
48K
用板上扩展地址
U10插座上插入的是单片机8031芯片,用户可根据自己的需要插入其他类型的兼容8051芯片。
该插座配有1个跳线,其作用如下:
跳线名
跳线位置
功能作用
连接方式说明
默认位置
JP10
VCC
运行片内程序或进行ISP操作
GND
GND
运行片外程序
U8插座上插入的是固化74LS04芯片,配有1个跳线,其作用如下:
跳线名
跳线位置
说明
默认位置
JP11
EMU
运行监控程序
EMU
USER
运行用户程序
板上左边靠近MAX232芯片处有一个P2跳线,其作用如下:
跳线名
跳线位置
功能作用
连接方式说明
默认位置
P1.3
此两脚短路时可使用DS80320的第二个串行口UART1
断开
空脚
空脚
此两脚短路时可使用DS80320的第二个串行口UART1
断开
P1.4
UART1插座已经预留在板上,但需要用户自己焊接。
以上跳线的默认位置是为便于与KEIL仿真环境接口,方便下载调试程序而设置的,用户可根据自己需要改变跳线位置。
一般在进行仿真调试时应按默认方式配置,若用户改变跳线位置后出现无法与KEIL环境连接的现象,请蒋跳线恢复到默认位置。
在仿真调试状态与KEIL环境联机后,很容易将用户程序下载到实验板中,可以进行单步运行、插入断点、过程单步运行等,当用户程序调试通过后,可将所生成的HEX文件写入自己的EPROM芯片,插入到实验板的U2插座中,并将U5插座上的监控芯片取下,上电或复位后将全速运行用户的程序。
存储器地址空间分配:
存储器空间
地址范围
仿真RAM/用户ROM区
0x0000~0x7EFF
用户数据/IO扩展区
0x8000~0x9EFF,0xA000~0xBFFF
用户扩展区
0xC000~0xDFFF
监控RAM区
0x9F00~0x9FFF
监控ROM区
0xE000~0xFFFF
四、用户程序的仿真调试使用说明
首先要建立一个项目,如图1所示,启动KeiluVision2后之后,单击“Project菜单/New…”选项:
图1
从弹出的窗口中,选择要保存项目的路径,并输入项目文件名“Hello.uv2”,然后点击保存按钮,如图2所示:
图2
这时会弹出一个选择CPU型号的对话框,可以根据所使用的单片机来选择,如图3所示选择Ateml89C52,选定CPU型号之后从窗口右边一栏可以看到对这个单片机的基本说明,然后点击确定按钮。
图3
接下来要创建程序文件,如图4所示,单击“File菜单/New…”选项:
图4
在弹出的编辑窗口中输入如下C51源程序:
/************************************************************************
HELLO.C
测试KeilC51源程序仿真版及串行口例子程序,需要调用对板上LED接口芯片
MAX7219进行初始化的汇编语言程序:
DINPUT.A51和DISPLY.A51
*************************************************************************/
#include
#include
/*------------------------------------------------------------------------
定义外部汇编语言子程序:
DINPUT为MAX7219初始化命令写入子程序,其中参数aa为MAX7219内部寄存器地址,参数bb为待写入的命令。
DISPLY为MAX7219显示子程序,其中参数*cc为显示缓冲区首地址。
------------------------------------------------------------------------*/
externvoidDINPUT(unsignedcharaa,unsignedcharbb);/*外部A51程序*/
externvoidDISPLY(unsignedchardata*cc);
/*------------------------------------------------------------------
定义在KeilC51源程序仿真版上LED显示的“HELLO”字符数据
---------------------------------------------------------------------*/
staticunsignedchardg[]=
{0x37,0x4f,0x0e,0x0e,0x7e,0x00,0x00,0x00};
/*---------------------------------------------------------------------
使用KeilC51源程序仿真版时,若希望用Debug中的Stop按钮停止运行用
户程序,则需要如下语句来保留串行中断入口
---------------------------------------------------------------------*/
#ifdefMONITOR51
charcodereserve[3]_at_0x23;
#endif
/*主函数*/
voidmain(void){
/*---------------------------------------------------------------------
不使用KeilC51源程序仿真版时,需要初始化串行口,以便从Debug的串行
窗口输出字符串:
“HELLO”
------------------------------------------------------------------------*/
#ifndefMONITOR51
SCON=0x50;/*设置SCON:
方式1,8位UART,允许接收*/
TMOD|=0x20;/*设置TMOD:
使用T1,方式2,8位自动重装初值*/
TH1=0xFD;/*设置TH1初值:
使用11.05MHz晶振,9600波特率*/
TR1=1;/*启动T1*/
TI=1;
#endif
/*-------------------------------------------------------------
初始化MAX7219并显示“HELLO”字符
--------------------------------------------------------------*/
DINPUT(0X0A,0X07);/*将命令0x07写入7219亮度寄存器*/
/*使占空比为15/32*/
DINPUT(0X0B,0X07);/*将命令0x07写入7219扫描界限寄存器*/
/*设置为8位显示方式*/
DINPUT(0X09,0X00);/*将命令0x00写入7219译码方式寄存器*/
/*设置为BCD译码方式*/
DINPUT(0X0c,0X01);/*将命令0x0写入7219停机寄存器*/
/*设置为正常工作状态*/
DISPLY(&dg[0]);/*在C51仿真板上显示HELLO*/
while
(1){
printf("HelloWorld\n");/*在UV2串行口显示HelloWorld*/
}
}
程序输入完成后,单击“File菜单/Saveas…”选项,如图5所示:
图5
从弹出的窗口中,选择要保存程序文件的路径,并输入程序文件名“Hello.c”,然后点击保存按钮,如图6所示:
图6
重复上述步骤输入以下汇编语言程序,并在同一个路径下保存为“DINPUT.A51”文件:
;*************************************************************
;MAX7219初始化命令写入子程序:
DINPUT.A51
;*************************************************************
NAMEDINPUT
?
PR?
_dinput?
DINPUTSEGMENTCODE
PUBLIC_DINPUT
RSEG?
PR?
_dinput?
DINPUT
_DINPUT:
MOVA,R7;C51函数传递的第1个参数保存在R7中
MOVR2,#08;作为Max7219控制寄存器的8位地址值
LOOP1:
RLCA
MOVP1.0,C
CLRP1.2
SETBP1.2
DJNZR2,LOOP1
MOVA,R5;C51函数传递的第2个参数保存在R5中
MOVR2,#08;作为写入Max7219控制寄存器的8位命令数据值
LOOP2:
RLCA
MOVP1.0,C
CLRP1.2
SETBP1.2
DJNZR2,LOOP2
CLRP1.1
SETBP1.1
RET
END
再重复上述步骤输入以下汇编语言程序,并在同一个路径下保存为“DISPLY.A51”文件:
;**************************************************************
;MAX7219显示子程序:
DISPLY.A51
;**************************************************************
NAMEDISPLY
?
PR?
_disply?
DISPLYSEGMENTCODE
PUBLIC_DISPLY
EXTRNCODE(_DINPUT)
RSEG?
PR?
_disply?
DISPLY
_DISPLY:
MOVA,R7;R7的内容为Max7219显示缓冲区入口地址
MOVR0,A
MOVR1,#01
MOVR3,#08
LOOP3:
MOVA,@R0
MOVR5,A
MOVA,R1
MOVR7,A
LCALL_DINPUT
INCR0
INCR1
DJNZR3,LOOP3
RET
END
下面需要将刚才创建的程序文件添加到项目中去。
先用鼠标左建点击Target1前面的“+”号,展开里面的内容“sourceGroup1”,然后将鼠标指向“SoureceGroup1”并单击右键,弹出一个右键菜单,单击右键菜单中的“AddFilestoGuoup'SourceGroup1'”选项,如图7所示:
图7
从弹出的窗口中分别选择刚才保存的文件“Hello.c”、“DINPUT.A51”和“DISPLY.A51”,并单击“Add”按钮,将它们分别添加到项目中去,如图8所示。
图8
程序文件添加完毕后,然后将鼠标指向“Target1”并单击右键,再从弹出的右键菜单中单击“OptionsforTarget”选项,如图9所示:
图9
从弹出的“Options”窗口中选择“Target”标签栏,并如图10所示设置其中各项:
图10
重复上述步骤,从弹出的“Options”窗口中选择“Output”标签栏,并如图11所示设置其中各项:
图11
重复上述步骤,从弹出的“Options”窗口中选择“C51”标签栏,并如图12所示设置其中各项:
图12
重复上述步骤,从弹出的“Options”窗口中选择“BL51Locate”标签栏,并如图13所示设置其中各项:
图13
重复上述步骤,从弹出的“Options”窗口中选择“Debug”标签栏,并如图14所示设置其中各项:
图14
为了使KeilC51源程序仿真版能与PC机正常通信,还需要设置COM端口和波特率,单击图14中上部右边的“Settings”按钮,从弹出的窗口中设置COM端口和波特率,如图15所示(仿真板可以进行自动波特率调整,降低波特率可提高联机可靠性):
图15
到此为止完成了必要的各项设置,将鼠标指向“Target1”并单击右键,从弹出的右键菜单中单击“Buildtarget”选项,如图16所示:
图16
开始对项目中的程序文件进行编译连接,并生成与项目文件同名的可执行代码及用于EPROM编程的Hex文件,如果没有错误uVision2环境将如图17所示:
图17
单击“Debug菜单/Start/StopDebugsession”选项,开始进入调试状态,如图18所示:
图18
进入调试状态后uVision2环境将显示联机状态及监控程序版本号,如图19所示:
图19
如果联机失败将弹出如图20所示窗口,这可能是COM口或波特率设置不对,也可能是在单步调试过程中改变了单片机的串行口设置,请单击窗口的“Settings…”按钮重设COM口和波特率,并按一下仿真板上的复位(红色)按钮,即可成功联机。
图20
在联机调试状态下可以启动程序全速运行、单步运行、设置断点等,单击“Debug菜单/Go”选项,启动用户程序全速运行,如图21所示:
图21
全速运行状态下单击“View菜单/SerialWindow#1”选项,可以从uVision2的串行窗口中观察程序的运行结果,如图22所示,这时串行窗口将显示“HelloWorld”字符串,同时仿真板上的LED也将显示“HELLO”字样:
图22
需要注意的是,仿真板上单片机8051的P1.0、P1.1、P1.2分别连接到MAX7219的DI、CS(LOAD)、CLK引脚,通过P1口的这些引脚来模拟7219串行工作时序达到实现与LED显示接口的目的。
关于MAX7219的详细操作过程,请参阅MAX7219的相关资料。
为使用户方便应用仿真板,前面给出了2个关键的MAX7219接口汇编语言子程序文件:
文件“DINPUY.A51”是完成对MAX7219的串行数据输入,以R7的内容作为MAX7219各个控制寄存器的地址,以R5的内容作为写入到各个控制寄存器的数据,实现MAX7219的初始化及其他数据输入操作。
文件“DISPLY.A51”是将8051单片机片内8个显示缓冲区单元的内容送往LED显示,以R7的内容作为显示缓冲区首地址,如果MAX7219采用BCD译码方式工作,则缓冲区每个字节的低4位存放BCD码,并且D7位为1时将点亮小数点。
如果MAX7219不采用BCD译码方式工作,则缓冲区每个字节应存放相应显示数据的段码。
不译码时LED各段数据对应关系如下表所示:
数据位
D7D6D5D4D3D2D1D0
对应段
DPABCDEFG
文件“HELLO.C”是c51演示程序,它通过调用汇编语言子程序实现在仿真板的LED上显示“HELLO”字样,同时还在uVision2仿真环境的串行窗口中输出“HelloWorld”字符串。
需要特别指出的是,若用户在联机时设置了使用了“SerialInterrup”,则在uVision2仿真环境的串行窗口中将不能输出“HelloWorld”字样。
仿真板上的监控程序中包含有一个时钟演示程序,联机成功后进入在线汇编窗口,设置时钟程序的入口0xFc50和中断入口0xFca4,如图23和图24所示,然后全速运行,板上的LED显示器将显示时钟信息。
设置时钟程序的入口设置时钟中断的入口
图24
图23
另外监控程序中还提供了一个恢复PHILIPS89C51Rx2片内BOOTROM默认向量的子程序,其入口地址为0xEF50,如果在进行PHILIPS89C51Rx2单片机的ISP操作过程中改变了其BOOTROM的默认向量,可将89C51Rx2单片机插入到实验板的U10插座,联机后进入仿真调试状态,进入在线汇编窗口并键入汇编指令“LCALL0xEF50”,直接调用该子程序,即可恢复89C51Rx2内部BOOTROM的默认向量。
实验板的监控程序占用了单片机内部定时器T1和串行口,在单步调试用户程序时不能改变T1和串行口的设置,否则可能导致无法联机,但在全速运行时用户程序还是可以使用串行口的。
如果在使用过程中发现任何问题,可联系:
ajxu@或ajxu41@
徐爱钧
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 仿真 说明 v7 资料