2434|4

1万

帖子

16

TA的资源

版主

楼主
 

【沁恒试用】单步仿真 [复制链接]

 

我记得STC单片机有个芯片可以单步仿真。没想到沁恒也可以,今天试了下,表示好用。

其实很简单 :

1.将ISD51.A51和ISD51.H加入项目工程;

         2.初始化串口,配置合适的波特率,最后必须使能全局中断;

         3.选择合适的ISD51初始化函数;

                   ISDinit():初始化并运行用户程序,如果KEIL与单片机通信成功,程序就会立即终止运行

                   ISDwait():初始化ISD51并一直等待KEIL连接上

                   ISDcheck():周期性检查ISD51连接

         4.编译用户程序烧录到单片机内;

         5.在KEIL -> option for target -> DEBUG 设置选择ISD51 In-system Debugger,在setup里设置与ISD51串口初始化相对应的串口波特率。

    6.点击DEBUG按钮进入硬件调试模式。

         ISD51接口函数可在KEIL帮助文档中查到。

那么果真如此么?

我在仿真例程上修改了一下读ID那个程序:


#include	"CH554.H"
#include	"debug.h"
#include	"STDIO.H"
//#include	<absacc.h>										/* Direct access to memory areas. */
#include 	"ISD51.H"										/* Find it at the location like 'C:\Keil\C51\ISD51' */

UINT8 str[] = "hello CH55X!\n";
UINT8 t = 0;
sbit LED	= P1^0;


#define ROM_CHIP_ID_ADDR 0x20

/*******************************************************************************
* Function Name  : GetChipID(void)
* Description    : 获取ID号和ID号和校验
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
UINT32 GetChipID( void )
{
	UINT8	d0, d1;
	UINT16	xl, xh;
	E_DIS = 1;                                                                  //避免进入中断
	d0 = *(PUINT8C)( ROM_CHIP_ID_ADDR + 0 );
	d1 = *(PUINT8C)( ROM_CHIP_ID_ADDR + 1 );                                    //ID号低字
	xl = ( d1 << 8 ) | d0;
	d0 = *(PUINT8C)( ROM_CHIP_ID_ADDR + 2 );
	d1 = *(PUINT8C)( ROM_CHIP_ID_ADDR + 3 );                                    //ID号高字
	xh = ( d1 << 8 ) | d0;
	d0 = *(PUINT8C)( ROM_CHIP_ID_ADDR + 6 );
	d1 = *(PUINT8C)( ROM_CHIP_ID_ADDR + 7 );                                    //ID校验和
	E_DIS = 0;
	if ( (UINT16)( xl + xh ) != (UINT16)( ( d1 << 8 ) | d0 ) ) return( 0xFFFFFFFF );//校验ID号
	return( ( (UINT32)xh << 16 ) | xl );
}

/*******************************************************************************
* Function Name  : CopyChipID(void)
* Description    : 获取ID号,因为Flash双字节访问,低字节在前,使用时要注意
* Input          : PUINT32X buf
* Output         : None
* Return         : None
*******************************************************************************/
void CopyChipID( PUINT32X buf )
{
	E_DIS = 1;
	*( (PUINT16X)buf + 0 ) = *(const unsigned short code *)( ROM_CHIP_ID_ADDR + 0 );
	*( (PUINT16X)buf + 1 ) = *(const unsigned short code *)( ROM_CHIP_ID_ADDR + 2 );
	E_DIS = 0;
}


void main( void )
{
	UINT32 x;
	CfgFsys();
	mDelaymS(10);
	mInitSTDIO();											/* Baudrate = 57600, 8, 1, N */
	EA = 1;
	printf("INIT OK!\n");
	printf("%s",str);
	ISDwait();												/* Wait until Debugger sends 0xA5, comment it if not nessery. */
	while(1)
	{
		t++;												/* Add t to watch windos, this can be changged by manual. */
		ISDcheck();											/* Wait util Debugger send 0xA5, if ISD51 UART already initialized. */
		LED ^= 1;											/* Toggle P1^0 bit. */
		mDelaymS(10);	
		CopyChipID(&x);
        printf("ID:%lx\n",x);	
	}


}

结果仿真如下:

我觉得泌恒这个仿真比较好。不花任何费用。只是考两个程序。然后按排一下函数即可。

 

附仿真例程:

1507967901967569.rar (159.06 KB, 下载次数: 8)




此内容由EEWORLD论坛网友ddllxxrr原创,如需转载或用于商业用途需征得作者同意并注明出处
 

 

最新回复

赞。CH554功能还有不少呢,期待老哥的进一步发掘,分享   详情 回复 发表于 2019-7-8 09:28
点赞 关注
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复
举报

367

帖子

0

TA的资源

一粒金砂(高级)

沙发
 

还有人用XP吗

点评

有啊,我司都用的是XP,怎么????能干活就行呗。   详情 回复 发表于 2019-7-7 20:26
个人签名拿PADS和Allegro软件来吹牛的都是些土鳖
 
 
 

回复

1万

帖子

16

TA的资源

版主

板凳
 

有啊,我司都用的是XP,怎么????能干活就行呗。 

点评

好多设计软件已经不再支持XP了  详情 回复 发表于 2019-7-7 20:41
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 
 

回复

367

帖子

0

TA的资源

一粒金砂(高级)

4
 
ddllxxrr 发表于 2019-7-7 20:26 有啊,我司都用的是XP,怎么????能干活就行呗。 

好多设计软件已经不再支持XP了

个人签名拿PADS和Allegro软件来吹牛的都是些土鳖
 
 
 

回复

46

帖子

0

TA的资源

一粒金砂(中级)

5
 

。CH554功能还有不少呢,期待老哥的进一步发掘,分享

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表