5671|1

1万

帖子

24

TA的资源

版主

楼主
 

CH554:ISD51的使用补充 [复制链接]

前几天论坛已经有网友发过一篇的《使用ISD51进行在线仿真》帖子,不过光看是掌握不了的,还需要自己实际演练,用不同的方法去使用,才能真正掌握。虽然这篇帖子写的很清楚了,但是在学习ISD51的过程中还是遇到一些问题,因此做了一些补充,希望方便其他使用者。

使用方法:
  • 添加ISD51.A51和ISD51.H两个文件到项目中(无需修改文件内容)。
  • 在用户程序中进行串口0的初始化,允许ES中断和全局中断。
  • 用户程序使用ISDinit()或者ISDwait()函数进行初始化。
  • 在项目属性中,设置仿真方式为ISD51,并设置仿真的串口和波特率。仿真的波特率必须和单片机的一致。
  • 编译用户程序,并下载到单片机,就可以联机仿真了。仿真过程和用仿真器没有太大区别,非常方便,速度不比低端硬件仿真器慢(甚至更快)。


注意问题:
  • 如果仿真联机失败,通常是串口初始化、仿真设置、中断使能的问题,只要设置正确,基本就不会失败。
  • 串口波特率可以任意设置,9600、19200、115200都可以,只要硬件支持就可以。当然速率越高,仿真的速度也越快。
  • 在使用USB转串口时,如果你安装过的串口设备较多,可能会超过KEIL中允许的串口设备号(COM1-COM16)。这时只能在串口设备的属性中修改,将串口设备的串口号改为COM1-COM16之间。
  • 在使用RTOS时,因为RTOS对中断的管理,会对ISD51造成一些影响,有时在断点处不能停下,需要手动中断程序运行。


附RTX51-Tiny下使用ISD51的例子:

  1. #include <SST89X5XXRD2.H>
  2. #include <intrins.h>
  3. #include <rtx51tny.h>
  4. #include "ISD51.H"

  5. sbit LED1 = P1^6;
  6. sbit LED2 = P1^7;

  7. void init()
  8. {
  9.   T2MOD |= 0xA0;  // bTMR_CLK = bT1_CLK = 1
  10.   T2CON &= 0x18;  // RCLK = TCLK = 0
  11.   PCON |= 0x80;   // SMOD = 1

  12.   TMOD &= 0x0F;
  13.   TMOD |= 0x20;
  14.   TH1 = 256 - 6000000UL / (16 * 9600UL);
  15.   TR1 = 1;

  16.   SCON = 0x50;
  17.   ES = 1;
  18. }

  19. void UART0_putc(char dat)
  20. {
  21.   SBUF = dat;  
  22.   while (!TI);
  23.   TI = 0;
  24. }

  25. void UART0_puts(char *s)
  26. {
  27.   while(*s)
  28.   {
  29.     UART0_putc(*s);
  30.     s++;
  31.   }
  32. }

  33. job0 () _task_ 0
  34. {
  35.   init();
  36.   LED1 = !LED1;
  37.   os_wait(K_TMO, 1, 0);
  38.   LED1 = !LED1;
  39.   os_wait(K_TMO, 1, 0);
  40.   LED1 = !LED1;
  41.   os_wait(K_TMO, 1, 0);
  42.   LED1 = !LED1;
  43.   os_wait(K_TMO, 1, 0);
  44.   //UART0_puts("12345\n");
  45.   //ISDwait();
  46.   ISDinit();
  47.   
  48.   os_create_task (1);
  49.        
  50.   while(1)
  51.   {
  52.     ISDcheck();
  53.     //UART0_putc('1');
  54.     // 1s
  55.     LED1 = !LED1;
  56.     os_wait(K_TMO, 10, 0);
  57.   }
  58. }

  59. job1 () _task_ 1
  60. {
  61.   while(1)
  62.   {
  63.     // 500ms
  64.     LED2 = !LED2;
  65.     os_wait(K_TMO, 1, 0);
  66.   }
  67. }

复制代码


完整项目文件:
ISD51_blinky.zip (73.7 KB, 下载次数: 2)


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

最新回复

  详情 回复 发表于 2017-10-30 09:13
点赞 关注
 

回复
举报

305

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
此帖出自单片机论坛
 
个人签名单价1元含税的USB和Touchkey单片机CH551G已大批量出货,试样QQ:1258305301
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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