Proteus仿真MSP430单片机的若干问题记录
1.支持的具体型号:
P7.8:
Proteus8.9:
Proteus8.9能够支持的类型明显要多于Proteus7.8。但是对于仿真而言,目前个人还是觉得Proteus7.8更稳定。这也是目前能用P7不用P8的原因。
2.时钟设置
在仿真中,外置晶振电路不论如何设计都不会影响单片机的真正运行时钟。MSP430的时钟通过点击芯片“Edit Component”进行设计。下图可以看出可以直接设置MCLK,SMLK和ACLK。经过实际测试可以在程序中选择不同的时钟源,并且可以设计分频。
在仿真的时候可以将几个时钟全部设置成8M,省去配置时钟的麻烦,所有时钟一个标准。
3.精确的延时函数
MSP430单片机内部含有Timer,ADC,中断等等设计,可以通过内部资源进行一些类型的仿真。如果需要外挂芯片,尤其是串行通信的芯片,一个精确稳定的延时函数就必不可少。如果一个延时函数精确,那么几乎所有的51芯片外挂芯片的仿真,应该都可以移植到msp430上来。同理,stm32的仿真也是类似的。
这一点这篇帖子的分析还是比较到位的:
https://www.cnblogs.com/memset/archive/2013/07/05/3173502.html
IAR中实现了__intrinsic void __delay_cycles(unsigned long __cycles)这个内联函数进行系统时钟次数的延时。所以在IAR中可以这样写来实现延时:
#define CPU_CLOCK 8000000 #define delay_us(us) __delay_cycles(CPU_CLOCK/1000000*(us)) #define delay_ms(ms) __delay_cycles(CPU_CLOCK/1000*(ms))
我在实际的仿真中测试过,这套延时函数比实际时钟慢1倍左右。delay_ms(1000)大概在2s左右,所以实际仿真时候应该适当更正一下这个函数。
#define CPU_CLOCK 4000000 #define delay_us(us) __delay_cycles(CPU_CLOCK/1000000*(us)) #define delay_ms(ms) __delay_cycles(CPU_CLOCK/1000*(ms))
这样的延时时间是相当准的,用这个移植51的程序应该有很大希望。
Proteus仿真MSP430单片机的若干问题记录的更多相关文章
- Proteus仿真—51单片机实现AC信号测频、显示、双机通信
文章目录 一.原理图部分 二.源码部分 单片机1 单片机2 在Proteus仿真软件里面使用STC89C52实现指定频率的AC信号的测频.显示.双机通信. 一.原理图部分 整体的电路图如示: DC-A ...
- Proteus 仿真运算放大器出现 GMIN 问题
Proteus 仿真运算放大器出现 GMIN 问题 为了仿真一个反相运算放大器,在仿真时出现 GMIN 问题,将 后面的 4.7UF 去掉就可以正常仿真. 初步检查是因为输入频率太低,输入时我用的是 ...
- MSP430单片机的两种SPI总线实现方式
MSP430单片机上的SPI总线的实现方式分为两种:硬件实现和软件实现. 二者的抽象层次不同,硬件实现方式下程序员只需要完成总线协议的寄存器层,即一字节(char,8位二进制)数据,而软件实现方式下程 ...
- MSP430单片机的位操作
MSP430单片机属于RISC(Reduced Instruction Set Computer)型处理器.与普通的51单片机的复杂指令集相区别.普通51单片机执行一条指令最少需要12个时钟周期,而R ...
- 对MSP430单片机__delay_cycles精确延时的说明及改正
在这里, 我来讨论一下关于MSP430单片机使用__delay_cycles延时的问题. IAR for MSP430编译器提供了一个编译器内联的精确延时函数(并非真正的函数)以提供用户精确延时使用, ...
- MSP430单片机输入与输出
MSP430单片机的输入输出线绝大多数是服用的,除了个别的端口外,基本上是8为为一组,不同的型号的MSP430的端口有所不同,就msp430F5438而言,一共有11个I/O端口,其中除了第十一P11 ...
- TI公司与MSP430单片机
美国德州仪器(Texas Instruments)公司,简称TI,是全球领先的半导体公司,成立于1930 年,成立之初是一家使用地震信号处理技术勘探原油的地质勘探公司,1951年更名为德州仪器公司,1 ...
- [MSP430] 对MSP430单片机__delay_cycles精确延时的说明及改正
在这里, 我来讨论一下关于MSP430单片机使用__delay_cycles延时的问题. IAR for MSP430编译器提供了一个编译器内联的精确延时函数(并非真正的 函数)以提供用户精确延时使用 ...
- proteus仿真 引脚显示电平变化但不能显示波形
proteus仿真 引脚显示电平变化但不能显示波形 原来是没有选择通道问题,proteus默认优先使用A通道才会显示波形,如果优先使用B,C,D通道,需要选择...
随机推荐
- php连接MySQL数据库的三种方式(mysql/mysqli/pdo)
引言 PHP与MySQL的连接有三种API接口,分别是:PHP的MySQL扩展 .PHP的mysqli扩展 .PHP数据对象(PDO) ,下面针对以上三种连接方式做下总结,以备在不同场景下选出最优方案 ...
- Linux配置NTP时间服务器(date、hwclock、NTP服务器的配置)
目录 date命令 hwclock命令 NTP服务的部署 服务端 客户端 date命令 date 命令的作用是查看和设置Linux中的系统日期时间 date ...
- Python脚本扫描给定网段的MAC地址表(scapy或 python-nmap)
目录 用scapy模块写 用 python-nmap 模块写 python3.7 windows环境 以下两个都可以扫描指定主机或者指定网段的 IP 对应的 MAC 地址,然后保存到 csv 文件中 ...
- Windows PE 重定位表编程(枚举重定位地址)
原理之前单独总结过,在这里: http://blog.csdn.net/u013761036/article/details/54051347 下面是枚举重定位信息的代码: // ReLocation ...
- Windbg 字符串条件断点
0x01 前言 Windbg 作为 Windows 下的主流调试器,除了人机交互相比其他调试器略有不足外,其他功能都是十分强大的存在. 在所有的调试器中断点功能都是必不可少的,Windbg 可以使用 ...
- Intel汇编程序设计-整数算术指令(上)
第七章 整数算术指令 7.1 简介 每种汇编语言都有进行操作数移位的指令,移位和循环移位指令在控制硬件设备.加密数据,以及实现高速的图形操作时特别有用.本章讲述如何进行移位和循环移位操作以及如何使用移 ...
- Eureka讲解与应用
Eureka[juˈriːkə] 简介 Eureka是Netflix服务发现的服务端与客户端,Eureka提供服务注册以及服务发现的能力,当是Eureka Server时(注册中心),所有的客户端会向 ...
- Java常见异常(Runtime Exception )小结
java.lang.NullPointerException 程序遇上了空指针 UnsupportedOperationException 不支持的操作 IllegalArgumentExceptio ...
- 使用git rebase去掉无谓的融合
git pull 預設的行為是將遠端的 repo. 與本地的 repo. 合併,這也是 DVCS 的初衷,將兩個 branch 合併.但是,很多時候會發生以下這種情形: 這是因為,我們團隊的開發模式是 ...
- Convert character array to string in MATLAB
Matlab提取特征值是经常要读取多个图片文件,把文件名保存在数组中后再读取会出错.从stackoverflow中找到如下解决方法: I've a M by N matrix, each cell c ...