目 录 第一章 : 开发工具类第二章 : 指令系统第三章 : 代码编程类第四章 : 工作模式及功耗类第五章 : 复位系统类第六章 : 看门狗及定时器类第七章 : 系统时钟类第八章 :LCD 显示驱动类第九章 : 通信类第十章 :IO 端口类第十一章 :FLASH 存储类第十二章 :AD 转换类第十三

Size: px
Start display at page:

Download "目 录 第一章 : 开发工具类第二章 : 指令系统第三章 : 代码编程类第四章 : 工作模式及功耗类第五章 : 复位系统类第六章 : 看门狗及定时器类第七章 : 系统时钟类第八章 :LCD 显示驱动类第九章 : 通信类第十章 :IO 端口类第十一章 :FLASH 存储类第十二章 :AD 转换类第十三"

Transcription

1 利尔达科技有限公司 技术一部 LSD SCIENCE&TECHNOLOGY CO.,LTD. MSP430 相关 Q&A Question &answer 版本号 :V1.0 提交人 :MSP430 项目组 整理时间 :2009 年 02 月 第 1 页共 68 页

2 目 录 第一章 : 开发工具类第二章 : 指令系统第三章 : 代码编程类第四章 : 工作模式及功耗类第五章 : 复位系统类第六章 : 看门狗及定时器类第七章 : 系统时钟类第八章 :LCD 显示驱动类第九章 : 通信类第十章 :IO 端口类第十一章 :FLASH 存储类第十二章 :AD 转换类第十三章 : 电源类 声明 : 所有问题均来自网络, 部分答案也同样来自网路, 答案仅供参考, 并不能完全解决在使用中碰到的问 题 所以客户在使用 MSP430 单片机时还是以实际情况来决定 如有任何疑问欢迎与我们联系 :haoqiang@lierda.com gufeng@lierda.com chenbing@lierda.com 第 2 页共 68 页

3 第一章 : 开发工具类 Q1: 我自己做了一块 MSP430F149 的试验板, 以前用下载线进行调试没有出现过问题, 但是, 最近我每次 make 后用下载线调试时, 总是弹出一个窗口, 给我提示 :Couldnot find targetstatus. 然后就死到那儿了, 请问这是什么问题呢? A1: 检查 Jtag 口线是否连接正常, 如果 JTAG 口线连接正常, 可能是供电不足, 目标板加电再测试 Q2: 我用的 430f22x 学习套件, 请问在 IAR EmbeddedWorkbench 中仿真时如何看程序运行时间. A2: 只有软件模拟下可以看, VIEW-REGISTER-CYCLECOUNT Q3: 请问各位 msp430 仿真器和编程器有什么区别啊? 是不是我开发的时候这两个东西都得有? 我目前用的是 msp430cg461x 系列或 msp430fg461x 系列, 是不是很多仿真器和编程器都不支持? A3: 一般来讲, 仿真器是在先期调试程序时使用的, 他不会烧断单片机熔丝, 能把程序下载到单片机中, 能够单步, 跟踪, 快速调试 编程器就没有这些调试功能, 就是单纯把你做好的程序的编译后文件写到单片机中去, 就和 51 的编程器一样, 有加密熔丝烧断等功能, 是在你产品成型后, 生产时使用的 MSP430 的仿真器是使用 JTAG 接口的, 分别有四线制的 JTAG 带 TEST 脚的四线 JTAG 和两线制的 SBWJTAG 三种接口,UIF 上三种都支持, 并支持烧熔丝,UIF 就是 USB 接口的仿真 ;PIF 不能支持 SBWJTAG 接口, 也不能烧熔丝,PIF 是并口的仿真器 任何一种 JTAG 接口的仿真器在烧断熔丝后都不能再仿真和写入, 而 BSL 可以通过密码访问 FLASH 空间, 读出写入均可,BSL 是串口实现的, 但 BSL 不能仿真, 注意部分器件不支持 BSL, 如 F20XX 系列就不能用 BSL, 烧掉了熔丝就变板砖 MSP430 任何系列的仿真器只要接口方式一致都是兼容的, 比如 FG461X, 可以使用标准的带 TEST 的四线 JTAG, 而 F22X4 也可以使用带 TEST 的四线 JTAG, 当然 F22X4 还可以选择使用 SBWJTAG, 它支持两种 JTAG 接口 如果不是 TI 标准的 430 系列用 JTAG 仿真器那就不行了, 应该是不兼容的, 不是什么 很多仿真器和编程器都不支持, 而是专用 Q4: 初次使用 430 单片机,F149 高速晶振 8M, 低速 32K, 下载程序时出现 securityfuse **own 字样, 无 法烧录 请各位高人指点, 应该是哪里有问题 A4: 手工复下位应该基本可以解决, 除非芯片熔丝真被烧掉了 如果熔丝断了, 可以用 BSL 方式写入程序. Q5: 运行到断点时程序不能自动结束, 必须自己按 break 我这是程序跑飞了么? A5: 是你断点设置的多了吧 你在程序中, 只设置这一个断点试试 Q6: 当在 RAM 中对其中一变量开辟的尺寸是 512 字节时, 程序总占用 3.5KRAM 空间, 可以正常烧到芯片中, 也可以正常运行 ; 当对同一变量开辟的尺寸是 1024 字节, 而其它均未改变时, 程序总占用 4.0K 左右 RAM 空间, 可以正常烧到芯片中, 却无法运行!!!! A6: 方法一将一些变量定义成 no init 类型方法二修改 IAR 的 cstartup.s43 程序, 具体方法如下 :(iar310a 为例 ) 1 将 cstartup.s43 程序加载到用户自己的项目中,cstartup.s43 在 iar310a 的路径如下 $TOOLKIT_DIR$\src\LIB\ 2 修改 cstartup.s43 中的 program_start 子程序, 加入关闭看门狗的命令 MOV#0x5A80,&0x 在 Project->Options->Linker->Config 页中选择 Override default programe, 并将 Entry lib 设置成 program_start 第 3 页共 68 页

4 Q7: 请问 AR 编译器的 s43 文件用什么编辑器打开? A7: 打开 IAR 编译器后就可以直接打开了 ; 另外, 记事本也可以打开 Q8: 怎么设置才能使 2274 内部 dco 产生稳定的 16M 的时钟信号, 还有就是 2274 是不是提供 FLL+ 功能! A8:2XXX 没有 FLL+, 但是 TI 在出厂芯片的时候已经做过出厂测试, 你只要选择它头文件里的那个 16M 即 可 Q9: 程序编译时提示 :Warning[Pe001]: lastline of fileends without anewline, 这是怎么回事啊, 应该怎么改 呢? A9: 敲个回车就可以了 Q10: 过去用 435/436 等因为仿真的几要线和端口都没有复用. 所以很轻松就搞定. 现在 1232 的仿真口和 P1 口是公用的, 仿真时我把第一脚 TEST 接 VCC, 这样可以下载仿真了, 可是发现这复用的几个 P1 口就不能执行其正确的动作了, 请教 A10: 做仿真口的复用管脚在仿真时, 被作为仿真功能管脚使 Q11:USB 仿真器下载汇编程序时没有问题, 但是下载 C 语言程序时, 出报警信息如下 : The stack plug-in failed tosetabreakpoint on "main".the stackwindow willnot beabletodisplaystackcontents. (You canchange this settinginthetools>options dialog box. 在调试信息窗口出现 operation error. A11: 调试 c 程序时在 Tools>Options dialog box 中 stack 要选中指向 main 函数处 汇编和 c 要建不同的工程下调试 Q12: 装了 MSP-FET430UIF 仿真器, 但是在 AQ430 的 Options 中, 无法找到该仿真器, 正常应该有 LPT1/LPT2/LPT3/TIUSB 四个选项, 为什么看不到 TIUSB? A12: 先看看硬件管理器中有没有那个硬件, 有则先用 IAR 试试. Q13:EZ430-RF2500 中的 USB debugging 可以调试 msp430 其他支持 Spy-Bi-Wire 系列的芯片吗? A13: 可以 Q14: 用 TI 的 USB 仿真器, 采用的是二线法 用 SD_16 采集数据, 发现连接仿真器输出的数据正确, 而把仿真器拔去, 输出的数据就错了 这是为什么? A14: 怎么理解这个数据正确和错误? 你怎么下的判断? 我认为是你接仿真器的时候目标板是从仿真器上取电的, 拔掉仿真器是外部电源供电的, 电源电压不同, 将导致基准源改变, 采样出来的值变化会很大 Q15:sd-fet430uif 仿真器不能外供电吗? A15: 可以, 驱动电流较小, 内部是光 MOS 管, 要注意负载 Q16:430FET 下载出现问题时检查的一般思路 A16: 在完全确定无虚焊 短路的情况下, 一般注意以下事项 : 第 4 页共 68 页

5 1 仿真器的 2 4 脚电源 2 复位脚的 RC 电路 3 是否是 SBW 模式 4 JTAG 复用引脚时注意外部电路的影响 5 外部有功率较大的器件, 当下载时造成外部电路的功耗较大 6 JTAG 线不能太长, 一般在 20CM 以内比较合适 7 如果是 USB 的仿真器还要注意 USB 线不能太长, 使用笔记本的还要注意 USB 上不能连接太多的负载 Q17:LSD-FET430UIF 仿真器, 运用 IAR410 软件, 器件是 F1121A, 无法下载程序也无法仿真, 直接将接口线换在原来的 FETP430IF 上, 把 FET 设置换成并口后就可以, 请问下, 是什么原因造成的? A17: 检查一下驱动安装对吧, 另外再检查下 USB 提供的电源和 USB 线的信号,USB 提供电源不足或 USB 线的信号受到了比较强的干扰都会影响下载 Q18:430 加密用的密码是中断向量的简单组合呢? 还是中断向量的加密组合? 还是用的中断服务程序入口地址的简单组合? 还是用的中断服务程序入口地址的加密组合? A18: 是入口地址的组合 ( 存放在中断向量处的数据 ), 以前是简单组合, 新的 5XX 就有些复杂了, 用户自己还可以定义密码 Q19: 我的程序编译后,DEBUG 调试显示已成功 DOWN 到芯片里了, 连着 EZ430 仿真器也能工作, 但只要把 EZ430 脱开,PCB 重新上电, 芯片怎么也不工作. 不知是什么原因? A19:2013 的 RST 脚接 1 个上拉电阻就解决问题了 Q20: 通过标准的 BSL 方式是不需要编写单片机程序的? 如果是的话, 那自定义串口下载的优点和缺点又是什么? A20: 用 BSL 不需要自己编写单片机程序, 但需要另加入两根或 4 根编程线 自己写升级程序直接使用串口, 但需要自己写自编程程序, 此方式使用方便, 还可以在线大批量升级, 缺点是要占用 FLASH 空间, 如果通讯协议严谨, 再加上密码保护之类的算法, 消耗 2K 的 FLASH 资源还是比较正常的, 所以小 FLASH 容量的就不推荐使用了 Q21: 在编译程序时, 总是出现这样的错误信息, 该怎么样解决呀? Error[e46]:Undefined external "main" referredin?cstart(d:\program Files\iar\430\LIB\CLIB\cl430f.r43) 程序没有错误, 是不是编译器本身有什么问题? A21: 是汇编程序时, 把 OPTIONS 里的 ASSEM ERONLY 选上 Q22:UIF 连接不到 F2274,RST 信号的电容已去掉, 用并口能连接上, 不稳定, 这是为什么? A22:F22X4 支持两种 JTAG 接口, 如果是 UIF 的话, 个人建议使用 SBW 的, 如果用 4 线制的话, 会占用数 个复用端口, 你说连不上是不是就是因为复用端口上连有外围设备造成 JTAG 无法正常工作了呢 检查一下 Q23: 故障现象 : 有时 windows 能识别, 多数不能识别 ; 提示 未知 usb 设备 ; 挑机器 - 换台机器可能好使 ; 升级失败 ; 这是什么原因? A23:1. 使用 IAR 自动更新功能, 只能通过 JTAG 口重新写入 f1612 程序 2.EZ430 板上 TUSB3410 的复位脚 C9 电容小, 增加到 2uF 最好增加旁路滤波电容, 以提高电源质量 第 5 页共 68 页

6 Q24: 使用 430 内置的 info flash 来存放一些配置信息 在用 fet 硬件仿真的时候, 希望直接手动修改 memory 窗口中的的 infoflash 的内容, 但是老是弹出窗口说这些地址是不可访问等提示, 请问有什么办法可以在硬件仿真的时候, 直接修改 info 中的内容么? A24:flash 不能直接修改 这个得用编程器, 仿真器或者软件编程修改 FLASH, 你这样就能修改 FLASH 那也太 嘿嘿 Q25: IAR 如何查看生成的代码的大小? A25: 编译后在信息窗口就是就可以提示, 如果没有提示, 请在 Tool/Options/Meassages/show buildmessage: 选 为 All 就行了 Q26: 程序下不进去, 用的仿真器是一头并口, 一头 14 脚的 jtag, 烧的时候总说找不到设备? A26:RST 连上, 去掉上面的电容 Q27: 给 MSP430F149 仿真的 JTAG 能给 MSP430F2002 仿真吗? 我把腿都对应上了, 但程序下不进去, 说是找不到器件... 以前用同样的方法成功的给 449 仿真过!!! 难道 2002 用的是不同的 JTAG A27: 并口仿真器支持 2002, 不过只能使用四线 JTAG 方式,RST 引脚必须连接, 而且不要有复位电容 Q28:430 如何将程序成功烧入?1. 烧片子的具体的顺序? A28: 首先 option 里得选择正确的芯片型号, 还要在 Debugger 选项卡里的 driver 选择 FET_Debugger, 在按工 具栏内的下载按钮 ( 快捷键 ctrl+d) Q29:MSP430F22X 学习板 SBW 用访真器不能进行调试? A29: 原因可能两点两线制是不能用并口访真器进行调试的, 必须 USB 访真器两线制 RST 并联的电容建议不接, 否则造成程序无法正常下载 Q30: 在研制带处理器的电子产品时, 如何提高抗干扰能力和电磁兼容性? A30: 一 下面的一些系统要特别注意抗电磁干扰 : 1 微控制器时钟频率特别高, 总线周期特别快的系统 2 系统含有大功率, 大电流驱动电路, 如产生火花的继电器, 大电流开关等 3 含微弱模拟信号电路以及高精度 A/D 变换电路的系统 二 为增加系统的抗电磁干扰能力采取如下措施 : 1 选用频率低的微控制器 : 选用外时钟频率低的微控制器可以有效降低噪声和提高系统的抗干扰能力 同样频率的方波和正弦波, 方波 中的高频成份比正弦波多得多 虽然方波的高频成份的波的幅度, 比基波小, 但频率越高越容易发射出成为 噪声源, 微控制器产生的最有影响的高频噪声大约是时钟频率的 3 倍 2 减小信号传输中的畸变 a 微控制器主要采用高速 CMOS 技术制造 信号输入端静态输入电流在 1mA 左右, 输入电容 10PF 左右, 输入阻抗相当高, 高速 CMOS 电路的输出端都有相当的带载能力, 即相当大的输出值, 将一个门的输出端通 第 6 页共 68 页

7 过一段很长线引到输入阻抗相当高的输入端, 反射问题就很严重, 它会引起信号畸变, 增加系统噪声 当 Tpd >Tr 时, 就成了一个传输线问题, 必须考虑信号反射, 阻抗匹配等问题 b 信号在印制板上的延迟时间与引线的特性阻抗有关, 即与印制线路板材料的介电常数有关 可以粗略地认为, 信号在印制板引线的传输速度, 约为光速的 1/3 到 1/2 之间 微控制器构成的系统中常用逻辑电话元件的 Tr( 标准延迟时间 ) 为 3 到 s 之间 c 在印制线路板上, 信号通过一个 7W 的电阻和一段 25cm 长的引线, 线上延迟时间大致在 4~20ns 之间 也就是说, 信号在印刷线路上的引线越短越好, 最长不宜超过 25cm 而且过孔数目也应尽量少, 最好不多于 2 个 d 当信号的上升时间快于信号延迟时间, 就要按照快电子学处理 此时要考虑传输线的阻抗匹配, 对于一块印刷线路板上的集成块之间的信号传输, 要避免出现 Td>Trd 的情况, 印刷线路板越大系统的速度就越不能太快 e 用以下结论归纳印刷线路板设计的一个规则: f 信号在印刷板上传输, 其延迟时间不应大于所用器件的标称延迟时间 3 减小信号线间的交叉干扰 : a A 点一个上升时间为 Tr 的阶跃信号通过引线 AB 传向 B 端 信号在 AB 线上的延迟时间是 Td 在 D 点, 由于 A 点信号的向前传输, 到达 B 点后的信号反射和 AB 线的延迟,Td 时间以后会感应出一个宽度为 Tr 的页脉冲信号 在 C 点, 由于 AB 上信号的传输与反射, 会感应出一个宽度为信号在 AB 线上的延迟时间的两倍, 即 2Td 的正脉冲信号 这就是信号间的交叉干扰 干扰信号的强度与 C 点信号的 di/at 有关, 与线间距离有关 当两信号线不是很长时,AB 上看到的实际是两个脉冲的迭加 b CMOS 工艺制造的微控制由输入阻抗高, 噪声高, 噪声容限也很高, 数字电路是迭加 100~200mv 噪声并不影响其工作 若图中 AB 线是一模拟信号, 这种干扰就变为不能容忍 如印刷线路板为四层板, 其中有一层是大面积的地, 或双面板, 信号线的反面是大面积的地时, 这种信号间的交叉干扰就会变小 原因是, 大面积的地减小了信号线的特性阻抗, 信号在 D 端的反射大为减小 特性阻抗与信号线到地间的介质的介电常数的平方成反比, 与介质厚度的自然对数成正比 若 AB 线为一模拟信号, 要避免数字电路信号线 CD 对 AB 的干扰,AB 线下方要有大面积的地,AB 线到 CD 线的距离要大于 AB 线与地距离的 2~3 倍 可用局部屏蔽地, 在有引结的一面引线左右两侧布以地线 4 减小来自电源的噪声 电源在向系统提供能源的同时, 也将其噪声加到所供电的电源上 电路中微控制器的复位线, 中断线, 以及 其它一些控制线最容易受外界噪声的干扰 电网上的强干扰通过电源进入电路, 即使电池供电的系统, 电池 本身也有高频噪声 模拟电路中的模拟信号更经受不住来自电源的干扰 5 注意印刷线板与元器件的高频特性 a 在高频情况下, 印刷线路板上的引线, 过孔, 电阻 电容 接插件的分布电感与电容等不可忽略 电容的分布电感不可忽略, 电感的分布电容不可忽略 电阻产生对高频信号的反射, 引线的分布电容会起作用, 当长度大于噪声频率相应波长的 1/20 时, 就产生天线效应, 噪声通过引线向外发射 b 印刷线路板的过孔大约引起 0.6pf 的电容 c 一个集成电路本身的封装材料引入 2~6pf 电容 d 一个线路板上的接插件, 有 520nH 的分布电感 一个双列直扦的 24 引脚集成电路扦座, 引入 4~ H 的分布电感 e 这些小的分布参数对于这行较低频率下的微控制器系统中是可以忽略不计的; 而对于高速系统必须予以特别注意 第 7 页共 68 页

8 6 元件布置要合理分区 元件在印刷线路板上排列的位置要充分考虑抗电磁干扰问题, 原则之一是各部件之间的引线要尽量短 在布 局上, 要把模拟信号部分, 高速数字电路部分, 噪声源部分 ( 如继电器, 大电流开关等 ) 这三部分合理地分 开, 使相互间的信号耦合为最小 7 处理好接地线 a 印刷电路板上, 电源线和地线最重要 克服电磁干扰, 最主要的手段就是接地 b 对于双面板, 地线布置特别讲究, 通过采用单点接地法, 电源和地是从电源的两端接到印刷线路板上来的, 电源一个接点, 地一个接点 印刷线路板上, 要有多个返回地线, 这些都会聚到回电源的那个接点上, 就是所谓单点接地 所谓模拟地 数字地 大功率器件地开分, 是指布线分开, 而最后都汇集到这个接地点上来 与印刷线路板以外的信号相连时, 通常采用屏蔽电缆 对于高频和数字信号, 屏蔽电缆两端都接地 低频模拟信号用的屏蔽电缆, 一端接地为好 c 对噪声和干扰非常敏感的电路或高频噪声特别严重的电路应该用金属罩屏蔽起来 8 用好去耦电容 a 好的高频去耦电容可以去除高到 1GHZ 的高频成份 陶瓷片电容或多层陶瓷电容的高频特性较好 设计印刷线路板时, 每个集成电路的电源, 地之间都要加一个去耦电容 去耦电容有两个作用 : 一方面是本集成电路的蓄能电容, 提供和吸收该集成电路开门关门瞬间的充放电能 ; 另一方面旁路掉该器件的高频噪声 数字电路中典型的去耦电容为 0.1uf 的去耦电容有 5nH 分布电感, 它的并行共振频率大约在 7MHz 左右, 也就是说对于 10MHz 以下的噪声有较好的去耦作用, 对 40MHz 以上的噪声几乎不起作用 b 1uf,10uf 电容, 并行共振频率在 20MHz 以上, 去除高频率噪声的效果要好一些 在电源进入印刷板的地方和一个 1uf 或 10uf 的去高频电容往往是有利的, 即使是用电池供电的系统也需要这种电容 c 每 10 片左右的集成电路要加一片充放电电容, 或称为蓄放电容, 电容大小可选 10uf 最好不用电解电容, 电解电容是两层溥膜卷起来的, 这种卷起来的结构在高频时表现为电感, 最好使用胆电容或聚碳酸酝电容 d 去耦电容值的选取并不严格, 可按 C=1/f 计算 ; 即 10MHz 取 0.1uf, 对微控制器构成的系统, 取 0.1~0.01uf 之间都可以 三 降低噪声与电磁干扰的一些经验 1 能用低速芯片就不用高速的, 高速芯片用在关键地方 2 用串一个电阻的办法, 降低控制电路上下沿跳变速率 3 尽量为继电器等提供某种形式的阻尼 4 使用满足系统要求的最低频率时钟 5 时钟产生器尽量靠近到用该时钟的器件 石英晶体振荡器外壳要接地 6 用地线将时钟区圈起来, 时钟线尽量短 7 I/O 驱动电路尽量靠近印刷板边, 让其尽快离开印刷板 对进入印制板的信号要加滤波, 从高噪声区来的信号也要加滤波, 同时用串终端电阻的办法, 减小信号反射 8 MCD 无用端要接高, 或接地, 或定义成输出端, 集成电路上该接电源地的端都要接, 不要悬空 9 闲置不用的门电路输入端不要悬空, 闲置不用的运放正输入端接地, 负输入端接输出端 (10) 印制板尽量使用 45 折线而不用 90 折线布线以减小高频信号对外的发射与耦合 10 印制板按频率和电流开关特性分区, 噪声元件与非噪声元件要距离再远一些 第 8 页共 68 页

9 11 单面板和双面板用单点接电源和单点接地 电源线 地线尽量粗, 经济是能承受的话用多层板以减小电源, 地的容生电感 12 时钟 总线 片选信号要远离 I/O 线和接插件 模拟电压输入线 参考电压端要尽量远离数字电路信号线, 特别是时钟 13 对 A/D 类器件, 数字部分与模拟部分宁可统一下也不要交叉 14 时钟线垂直于 I/O 线比平行 I/O 线干扰小, 时钟元件引脚远离 I/O 电缆 15 元件引脚尽量短, 去耦电容引脚尽量短 16 关键的线要尽量粗, 并在两边加上保护地 高速线要短要直 17 对噪声敏感的线不要与大电流, 高速开关线平行 18 石英晶体下面以及对噪声敏感的器件下面不要走线 19 弱信号电路, 低频电路周围不要形成电流环路 20 任何信号都不要形成环路, 如不可避免, 让环路区尽量小 21 每个集成电路一个去耦电容 每个电解电容边上都要加一个小的高频旁路电容 22 用大容量的钽电容或聚酷电容而不用电解电容作电路充放电储能电容 使用管状电容时, 外壳要接地 Q31: 有关仿真器及编程器的问题 : A31: 对于 51 系统来说, 很容易理解编程器与仿真器的区别 通俗的说, 仿真器是用来仿真调试的, 编程器是用来批量生产时对 MCU 进行烧写目标代码的 对于 MSP430 来说, 无论仿真还是烧写程序一般可以通过 :JTAG/SBW/BSL 接口进行, 这些概念仅是接口, 并不代表哪个型号的编程器和仿真器, 一般 JTAG/SBW 接口用于仿真接口,BSL 不能用于仿真, 只能用于编程 编程器则三种接口都支持 所以并不能说 JTAG 只支持仿真, 不支持编程, 这是概念错误,JTAG 仅仅是一种接口协议而已 下面简单描述一下三种接口的区别 : 1 JTAG 是边界扫描技术, 其在 430 内部有逻辑接口给 JTAG 使用, 内部有若干个寄存器连接到 430 内部的总线上, 所以 JTAG 可以访问到 430 的内部所有资源, 包括对 FLASH 的读写操作 可以用于编程和仿真接口 主要连接线有 TMS/TCK/TDI/TDO/RST/TEST 等 2 SBW 是 SPY-BI-WIRE 的简称 通常称为两线制 JTAG, 主要用 SBWTCK 与 SBWTDIO, 该接口主要用于小于 28 脚的 430 单片机及 5 系列的单片机 因为 28 脚以内的单片机 JTAG 接口与通用 IO 口复用, 为了给用户预留更多的 IO, 才推出 SBW 接口 同样 SBW 接口可以用于仿真器与编程器 3 BSL 是 TI 在 MSP430 出厂时预先固化到 MCU 内部的一段代码, 有点类似与 DSP 的 bootloader, 但与 bootloader 有明显的区别,BSL 只能用于对 MCU 内部的 FLASH 访问, 不能对访问其他资源 所以只能用作编程器接口 BSL 通过 UART 协议与编程器连接通信 编程器可以发送不同的通信命令来对 MCU 的存储器做不同的操作 BLS 的启动有些特殊, 一般 430 复位启动时 PC 指针指向 FFFE 复位向量, 但可以通过特殊的启动方式可以使 PC 指向 BSL 内部固化的程序 启动方式一般由 RST 与 TEST( 或 TCK) 引脚做一个稍复杂的启动逻辑后产生 4 一般的 MCU 都有加密功能,430 如何实现加密的呢? 外部对 430 内部的代码读写只能通过上述的三种方式, 所以引入熔丝位, 熔丝位只存在与 JTAG/SBW 接口逻辑内 BSL 没有熔丝 当熔丝烧断时 ( 物理破坏, 且不可恢复 )JTAG/SBW 的访问将被禁止, 此时只有 BSL 可以访问 而通过 BSL 对 MCU 的访问是需要 32 字节的密码, 密码就是用户代码的中断向量表 5 一般的仿真器型号有:UIF(USB 接口, 支持 JTAG/SBW) PIF( 并口, 只支持 JTAG) EZ430(USB 接口, 只支持 SBW 模式 ) 专业的编程器有 GANG430( 串口, 一拖 8 个目标板, 支持 JTAG/SBW 及烧断熔丝功能 ); 多功能编程器 (JTAG/SBW/BSL 及烧断熔丝功能 ) 这些编程器都可以支持离线烧写, 即脱离计算机来对目标板烧写 当然也可以通过特殊的软件用仿真器来烧写, 这类软件有 MSPFET FET-PRO430 等 第 9 页共 68 页

10 Q32: 最近调试程序, 不知怎么老出现下面的问题, 请问是怎么回事? erasecheck error ataddress0x1100 retryeraseoperation?" 知道是怎么回事? A32: 最可能的就是芯片电压太低, 或者芯片有虚焊的 Q33: 请问 MSP430F149 程序下载时的电源要提供的电流为多大? A33: 这个电流主要用于 flash 的擦写 擦和写的典型电流都是 3mA 第 10 页共 68 页

11 第二章 : 指令系统 Q1. IAR 中怎样描述 P2OUT.3 脚,#define LCD_cs1 P2OUT.3; 对吗? A1:430 不能位寻址, 所以一般的位操作, 都通过 与 来作用 #define LCD_cs1 (P2OUT&BIT3 ) Q2. intrinsic 是什么意思 A2: 本征函数, 不是 C 语言标准库, 而是和 MSP430 汇编直接对应的函数, 比如 : _NOP() _EINT() LPM0 引用 msp430xxxx.h, 默认引用的头文件 Q3:430 中使用 C 和汇编语言的区别, 优缺点比较? A3: 严格来讲 430 的 C 是 ANSIC 的一个子集, 与汇编的差别主要有 : 1 C 有 if (do)while switch 等流程控制语句 2 C 有有限的数据格式, 如 char int float dou e 等 3 对 430 最有特色的 R0--R15 的使用,C 不如汇编 的 C 不易进行 RAM 管理 各版本的 C, 互相之间存在差异, 好象 C 在 430 上还不成熟 6 C 的优点是在 PC 或 PDA 上, 也就是在有操作系统的平台上,C 的优点才会表现出来, 但那已经不是 430 的 C 了, 而是 C++, 它有丰富的数据类型, 如结构 对象等 7 汇编的缺点, 基本上就是 C 的优点, 而汇编的优点基本上都是 C 的缺点 8 C 函数有类型限定的形参和返回值以及强制类型转换, 还有格式化输出, 发挥 C 的这些特长, 再结合结构化程序设计技术, 容易编出思路清晰 结构灵活 可移值性比较强的程序 汇编也可以满足上述要求, 但相对来讲要复杂些 9 初学者建议先用汇编, 由于对硬件的操作更加直观灵活, 有利于对 430 内部结构的熟悉和熟悉编程思路 等掌握了 30 的开发技能, 又熟悉了系统的合理分配资源和组织资源时再学习用 c, 那将使你进步最快的时候, 因为 c 对程序的结构和调度真得很理想! 10 源代码隐藏性比较好, 比较安全 Q4:MSP430 指令系统中, 符号寻址方式有点不太理解 例如连续的两条指令是 : MOV.B#20H,0012H MOV.B#34H,0200H 在反汇编窗口看这两条指令是 : mov.b #0x20,0x1112 mov.b #0x34,0x1300 不理解的是 : 1. 为什么反汇编后指令的第二个操作数地址变成了 0x1112 和 0x1300? 2. 上述反汇编指令似乎都在原有的地址基础上加上了 0x1100, 我知道保存程序的 FLASH 是从 0x1100 开始的 但实际在执行上述两条指令时,PC 的值早就 >0x1100. 符号寻址操作数地址应该 =(PC+0012H) (PC+0200H) 而 PC 值在执行指令中应该是变化的? A4:0012H 和 0200H 是绝对地址 问题中程序用的是立即寻址, 实际上应该用绝对寻址 第 11 页共 68 页

12 MOV.B#0030h,&0200h 就是前面操作数前面有一个 &; 没有 &",MOV.B#0030h,0200h 那么地址就应该 =PCaddrress+0200( 偏移量 ) 反编译出来的代码应该是 mov.b #0x20,&0x1112 mov.b #0x34,&0x1300 才对 Q5: 在程序里循环调用了 sprintf 函数, 当循环了几次后程序就跑飞了, 是堆栈大小不够吗? 还有 sprintf 到底需 要多大的堆栈, 单步走了下, 发现它使用堆栈都不是连续的? A5: 有可能是的 sprintf 函数堆栈数据把跳转地址挤掉, 可以调开堆栈看一下 Q6: 问 MSP430MOV 命令立即数寻址 MOV@PC+, X(PC); 偏移量可变址寻址 MOVX(PC),Y(PC); 怎么理解? A6:MOV@PC+, X(PC); 将 PC 所指单元的内容送给 PC+X 所在单元, 然后 PC 本身加 1, 指向相邻的下一单元. MOVX(PC),Y(PC); 将 PC+X 所指单元的内容送给 PC+Y 所在单元 问题 7: 数据类型 Small,Medium,Large 的区别, 以及怎么访问大于 0X10000 的地址空间? 数据放在大于 0X10000 的地址空间中, 怎么去访问? 同时 Small,Medium,Large 在何处可以体现它们的区别? A7: 可以访问 值得注意的是 option 里的 General Option 选项内的数据类型得选择 Large, 程序大小,RAM 使用, 运行速度都不一样 1.F5XX 430X 2. 选择 Largesmall medium 产生效果是改变指针变量所占字节个数.IAR 中指针变量默认 2 个字节, 选择 large 占用 4 个字节, 那么指针就可以访问超过 64K 范围的地址. 3. 可以采用 IAR 内部函数,*/ void data20_write_char (unsigned long addr, unsigned char value); void data20_write_short(unsigned long addr, unsigned short value); void data20_write_long(unsigned long addr, unsigned long value); unsigned char data20_read_char (unsigned long addr); unsigned long data20_read_long(unsigned long addr); Q8: 关于堆栈问题 问题 :Error[e16]:Segment CSTACK(size: 0x50 align: 0x1) istoo long for segment definition.atleast0x4more bytesneeded. The pro em occurred while processingthe 第 12 页共 68 页

13 segmentplacementcommand "-Z(DATA)CSTACK+_STACK_SIZE#", where atthe momentof placementthe aila ememoryrangeswere "CODE:5B4-600" 请问 : 这个错误是什么意思 A8: 将 stack 设置减小, 可通过编译, 这时 stack 是静态的. 而会不会出错不是 stack 设置问题, 而是在程序运行时, 动态中,RAM 占用量大小所定. 减少程序中的变量个数, 变量类型尽量小, 够用就可以, 能减少动态运行时 RAM 的占用量. Q9: 浮点数运算问题, 既然 2.2A 编译器能实现 64 浮点位运算, 那么它的运算程序在哪个文档里 A9: 要使用 64 位的浮点运算需要设置编译器首先选择 project->option->general->target->dou efloating pointsize 选中 "64" 再选择 project->option->xlink->include->library->cl430d.r43 用 c++ 的朋友要选择 dl430d.r43 库建议用整型数进行运算, 比如像开方,64 位浮点数要用几十毫秒, 而整型数随数据大小只要几微秒到几毫秒不等 Q10: 局部变量的问题, 在中断服务程序中开中断响应其他中断, 发现中断服务中定义的局部变量老被改动, 换成全局变量没问题 想问一下这是啥原因? 还想问一下 c 编程过程中应注意的细节? A10: 局部变量只是暂存变量, 一般编译器会使用通用寄存器来保存这个变量值, 汇编编程的话需要圧栈操作, C 语言编程的话建议把变量申明为全局或者静态 第 13 页共 68 页

14 第三章 : 代码编程类 Q1: 我在一个子程序中定义了一个变量, 是在其头文件中定义的, 然后在主程序中包含了此头文件, 当在主程序中引用此变量时, 编译器没有报错, 但是要 DEBUG 时出错了, 告诉我是 redefine in main, 请问这是怎么回事呢? A1: 肯定不能这样用了, 相当于重复定义了. 用外部变量声明可以解决这个问题. 你可以在头文件中申明 ( 加 extern), 在 C 文件中定义 Q2: 这是我的接收函数, 但是当我发送 ko 时, 收到两个 o, 发送 ok 时收到两个 k, 这是怎么回事呢 #pragma vector=uart1rx_vector interrupt void usart1_rx(void) unsigned j; //IFG2 &=~URXIFG1; for (j=0;j<2;) data[j]=rxbuf1; j++; if(j==2) TX_Flag =1; A2: 程序错了!! 按你的程序, 收到第一个字符 K 时, 你将该字符填入数组, 即数组内容为 K,K; 收到第二个字符 O 时, 你将该字符填入数组, 即数组内容为 O,O, 应该加一个判断, 判断接收缓存里面的数据被存了, 再存第二个 Q3: 问题 : 想要根据一个数据 send, 利用 TA0 产生中断, 控制 P2 口产生 3ms 1ms 3ms 1ms 3ms 1ms... 的一组方波 ( 1 发送 3ms, 0 发送 1ms), 但程序写出来后, 发现执行过程非常不稳定, 忽快忽慢 不知道是单片机的问题还是程序的问题, 请专家帮帮! 附程序 : void data_send (unsigned char send) unsigned char i; for (i=0;i<8;i++)// 发送 8 位 if (send&0x01) // 如果最低位为 1, 发送 3ms CCR0=189;//3ms 定时 CCTL0=CCIE; // 打开中断 P2OUT =BIT3; //P2 口变高电平 第 14 页共 68 页

15 while (flag==0); // 等待中断处理子程序返回标志位 flag=1 flag=0; //flag 清零, 以便下一位的中断 P2OUT&=~BIT3; //P2 口变低 else // 当最低位为 0 时中断 1ms CCR0=63; CCTL0=CCIE; P2OUT =BIT3; while (flag==0); flag=0; P2OUT&=~send_BIT; send=(send>>1); // 左移一位 #pragma vector =TIMERA0_VECTOR //TA 中断 interrupt void TA_start(void) flag=1; // 中断时间到, 设置标志位 TA0 的时钟选用 0.5M 8 分频, 近似计数值 63 为 1ms, 使用连续计数方式 A3:void data_send (unsigned char send) unsigned char i; for (i=0;i<8;i++) // 发送 8 位 if (send&0x01) // 如果最低位为 1, 发送 3ms CCR0=189; //3ms 定时 CCTL0=CCIE; // 打开中断 P2OUT =BIT3; //P2 口变高电平 while (flag==0); // 等待中断处理子程序返回标志位 flag=1 flag=0; //flag 清零, 以便下一位的中断 P2OUT&=~BIT3; //P2 口变低 else // 当最低位为 0 时中断 1ms CCR0=63; CCTL0=CCIE; P2OUT =BIT3; while (flag==0); flag=0; P2OUT&=~BIT3; send=(send>>1); // 左移一位 第 15 页共 68 页

16 #pragma vector =TIMERA0_VECTOR //TA 中断 interrupt void TA_start(void) flag=1; // 中断时间到, 设置标志位 TACTL 中的 MC1 MC0 为 01 值 Q4: 求 msp43 的 pwm 捕捉下降沿的程序 A4:TACCTL2=CM1+CCIS_1+CAP; // 同步捕获模式, 下降沿捕获 TACTL=TASSEL_2+MC_2+TACLR; // 连续计数方式, 时钟设置为 SMCLK I/O 口也需要设置为第二功能口, 建议看 users guide 和 TI 例程 Q5 : C 文件 LINKER 后, 报错 Error[e46]:Udefined external "send1_buff"referred in sys_evet(d:\sc1\debug\obj\sys_evet.r43, 请教如何可解决此问题, 变量 send1_buff 在文件里已定义了 extern A5: 查看一下你的程序编译时先编译哪个文件, 或在这个文件前先申明一下 Q6::DINT MOV.W #FWKEY+WRT,&FCTL1 ;Write bit =1 MOV.W #FWKEY+FSSEL0+FN0+FN1,&FCTL2 MOV.W #FWKEY,&FCTL3 TEST BIT #BUSY,&FCTL3 JNZ TEST MOV.W R14,0(R12) TEST1 BIT #BUSY, &FCTL3 JNZ TEST1 MOV.W #FWKEY,&FCTL1 MOV.W #FWKEY+LOCK,&FCTL3 ;Lock =1 EINT RET 想保存信息,R12 是地址,1080,R14 是内容, 但是通过按键改变参数后,INFO 写入的确实 0, 而不是要保存的数据 很奇怪 为什么不管什么数据, 到 INFO 里都是 0? A6: 原因在于你只改变单个字, 而 FLASH 是要整段擦除, 然后在更改 MOV.W #FWKEY+FSSEL0+FN0+FN1,&FCTL2,flash 擦写时钟也是很重要的, 经分频后时钟应该在 KHz 的频率范围, 偏离值太大, 容易引起擦写的失败 Q7:: 为什么 485 程序只能单字节传输呢? 单片机经过 232/485 转换器接到电脑, 用串口精灵调试的 大家看看有什么问题啊? #include <msp430x14x.h> void main(void) WDTCTL=WDTPW+WDTHOLD; UCTL0 &=~SWRST; UCTL0 =CHAR; 第 16 页共 68 页

17 UBR00 =0X03; UBR10 =0X00; UMCTL0 =0X4A; UTCTL0 =SSEL0; ME1 =UTXE0 +URXE0; IE1 =URXIE0; P3SEL =0X30; P3DIR =0x70; P3OUT&=~BIT6; _BIS_SR(LPM3_bits+GIE); //EnterLPM3 w/ interrupt #pragma vector=uart0rx_vector interrupt void usart0_rx(void) int i; P3OUT =BIT6; while (!(IFG1 &UTXIFG0)); //USART1 TX buffer ready? TXBUF0 =RXBUF0; //RXBUF1 to TXBUF1 for(i=0;i<10000;i++)_nop(); P3OUT&=~BIT6; A7: 程序问题 : 1 发送第一个字节时候, 中断服务程序中 485 使能端口操作 (P3OUT =BIT6 与 P3OUT&=~BIT6) 之间的时间太长, 导致这段时间的调试精灵发出的字节都丢失了 2 一般可以先将所有的数据接受完成之后 ( 即放到缓冲区后 ), 在开始切换 485 端口发送数据, 最后确保所有数据发送完成后在切换成接受方向主动发送, 中断接收, 在串口接收中断中不要做太多事情, 只压接收到的字节数据 Q8: 初学 430, 发现汇编语言中没有除法指令, 请问版主和各位高手, 能否提供一个 32 位 /16 位的除法汇编程序, 谢谢 A8:32 位除以 16 位的自己改 : ;ACCAx: 除数,ACCBx: 商,ACCCx: 余数,ACCDx: 被除数 ; Div48_32 MOV.B #030H,TEMP CLR.W ACClierdalierda ;ACCBx: 商 CLR.W ACCBM CLR.W ACCBH D_DIVS CLR.W ;ACCCx: 余数 CLR.W ACCCH DIV_LOOP CLRC RLC.W ACCDL ;ACCDx: 被除数 RLC.W ACCDM RLC.W ACCDH RLC.W ACCCL RLC.W ACCCH 第 17 页共 68 页

18 JC NOCHK1 MOV.W ACCCH,R15 SUB.W ACCAH,R15 JNZ NOCHK MOV.W ACCCL,R15 SUB.W ACCAL,R15 NOCHK JNC NOGO NOCHK1 SUB.W ACCAL,ACCCL JC NOCHK2 DEC.W ACCCH NOCHK2 SUB.W ACCAH,ACCCH SETC NOGO RLC.W ACClierdalierda RLC.W ACCBM RLC.W ACCBH DEC.B TEMP JNZ DIV_LOOP RET Q9: 在 TI 的例子程序中有 TACCTL1 =CCIS0 +OUTMOD0+CCIE; TACCTL1 = OUTMOD2; 怎么理解 A9:TACCTL1 =CCIS0 +OUTMOD0 ; 是写整个寄存器 ; 执行后, 寄存器 TACCTL1 的值 =0x1000+0x2000=0x3000; 而 TACCTL1 = OUTMOD2; 只是把寄存器中的相关位置 1, 剩余的位保持不变 ; 执行后, 寄存器 TACCTL1 的 BIT7(0x0080) 改写为 1. Q10: 在程序中作循环, 执行时间比较长 若循环次数少, 则改变的数组中个数少 ; 若多加, 两次循环改 变的个数就多 A10: 可能是堆栽溢出了! Q11: 想让 menu_b 定义在 ROM 区 unsigned int const menu_a[][3]=1,2,3; unsigned int const menu_b[1]=&menu_a[0][0]; IAR 编译器为何编译不了? 但这样就行, 但是 menu_b 是定义在 RAM 区的 unsigned int const menu_a[][3]=1,2,3; unsigned int const *menu_b[1]=&menu_a[0][0]; A11:unsigned int const *menu_b[1]=&menu_a[0][0]; unsigned int const * 表示指向 const 型 (ROM 型 )unsigned int 变量的指针, 且由于前面没有再加一个 const( 如 const unsigned int const *xxx), 故按默认定义在 RAM 中 这是标准 C 的语法! Q12: 最近才开始学 MSP430, 看利尔达公司的一个汇编实验程序时, 发现很多类似这样的指令,mov.w #SHT0_2+ADC12ON,&ADC12CTL0 这条指令是不是立即数寻址啊? 如果是的话,# 号后面不是直接加一个立即数 第 18 页共 68 页

19 吗? 这个上面怎么加了 SHT0_2+ADC12ON 这个啊? 另外 SHT0_2+ADC12ON 这个都是 ADC12CTL0 这个寄存器里面的一位或几位 这条指令是什么意思啊? A12:SHT0_2,ADC12ON 已经宏定义好的, 其实表示一个数, 这语句是对寄存器相应位置位 Q13: 用 f147 计算电压有效值, 采样 40 个点, 用平方和除以 40 再开根号, 计算一次居然要 10ms, 有这么长时间么? 我的基础时钟模块这样设的 //set basic system time BCSCTL1 = XTS +XT2OFF;//HF model,4.096m,xt2close BCSCTL2 = SELM_3+SELS; //MCLK SMCLK use LFXT1CLK, 都不分频 //set ADC12 ADC12CTL0 =SHT0_2+REF2_5V+REFON +ADC12ON+MSC; // 采样周期为 8 个 ADC12CLK // 启用多次采样转换位 //2.5V 参考电平, 打开 ADC 内核 // 转换时间溢出中断和溢出中断未打开 ADC12CTL1 =SHP+ADC12SSEL_1+CONSEQ_1;// 使用采样定时器 //ACLK 做时钟源 ADC12MCTL0 = INCH_0+SREF_1; //ref+=vref+,channel =A0 ADC12MCTL1 = INCH_1+SREF_1+EOS;//ref+=Vref+,channel =A1 ADC12IE = BIT1; A13: 是计算的时候出了问题, 首先要求平方, 在开根号, 这样是算需要很多的时间! Q14: 程序运行报错 : Mon Oct1309:56:082008: Target reset Mon Oct1309:56:342008: Breakpoint hit: Mon Oct1309:56:342008: The stack'stack' isfilled to100% (80bytes used out of 80).The warning threshold isset to 90%. Mon Oct1309:56:342008: The stackpointer for stack'stack' (currentlymemory:0x9a4) isoutside the stackrange (Memory:0x9B0 tomemory:0xa00) Mon Oct1309:56:392008: The stack'stack' isfilled to100% (80bytes used out of 80).The warning threshold isset to 90%. Mon Oct1309:56:392008: The stackpointer for stack'stack' (currentlymemory:0x9a4) isoutside the stackrange (Memory:0x9B0 tomemory:0xa00) 请给与解释? A14: 可能是堆栽溢出了, 修改一下 STACK 试试看! Q15:The stack'stack' is filledto100% (80bytes used out of 80).The warningthreshold isset to90%., 这个 LED 时间显示程序, 是不是循环太多, 还是程序太冗余, 下载后出现了上述错误, 该如何修改? A15: 假如真是 STACK 的容量问题, 就说明你的程序结构有问题了 一般显示这些功能用不了几个字的堆栈 程序中尽量不要出现递归类的函数 函数的参数及返回值也不要太多, 如果多了, 可以用指针 Q16: 问题 : 编写 UART 的中断函数时用到语句 interrupt [UART0RX_VECTOR] void UART0RX(void) 可是在编译时总是报错 Error[Pe077]: this declaration has no storage class or type specifier Error[Pe065]:expected a";" 在函数的总前面我已 #include <msp430x14x.h> #include <in430.h> 第 19 页共 68 页

20 在 msp430x14x.h 中已经对 UART0RX_VECTOR 进行审明了啊 请问需要进行怎么修改? A16: 是 IAR 调试软件的问题, 在 IAR1.26 版和以下都是 interrupt [UART0RX_VECTOR] void UART0RX(void) 的写法, 以上都是 #pragma vector=timerb0_vector interrupt void Timer_B (void) 的写法 Q17:P1DIR=0x10; P1SEL=0x10;//p1.4 为 SMCLK P2DIR=0x01; P2SEL=0x01;//P2.0 为 ACLK P5DIR=0x10; P5SEL=0x10;//p5.4 为 MCLK 在设置好了时钟后, 是不是能通过上面的语句在 p1.4,p2.0,p5.4 口用示波器看到时钟信号呢? 但为什么没有看到? 而用示波器观察晶振是起振的 A17: 程序没有死循环, 跑到最后就复位了 原来的程序上加了语句 :while(1); 后当程序跑到这个空循环时, 再用示波器测各个引脚时, 就有 aclk,mclk,sclk Q18: 运用定时器 A 做定时, 程序思想正确却无法执行, 在 tt==20 的地方无法执行 该怎么办? #include <msp430x14x.h> #define uint unsigned int #define uchar unsigned char uchar num,tt; uchar ta e[]= 0xc0,0xfc,0x24,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71; void delay(uint z); void main(void) //WDTCTL =WDTPW +WDTHOLD;//Stop watchdog timer WDTCTL =WDTPW +WDTHOLD;//Stop WDT TACTL =TASSEL1 +TACLR; //SMCLK, QINGCHUTAR CCTL0 =CCIE; //CCR0 interrupt ena ed CCR0 =40000; TACTL = MC0; // P1DIR =0; P2DIR =0; // 第 20 页共 68 页

21 P1SEL =0; P2SEL =0; // P1DIR =BIT0; P1DIR =BIT1; P1DIR =BIT2; P1DIR =BIT3; P1DIR =BIT4; P1DIR =BIT5; P1DIR =BIT6; P1DIR =BIT7; // P2DIR =BIT0; P2DIR =BIT1; P2DIR =BIT2; P2DIR =BIT3; P2DIR =BIT4; P2DIR =BIT5; P2DIR =BIT6; // P1OUT=0x00; while(1) 就在此处不往下执行??? if (tt == 20) tt=0; num++; P1OUT=ta e[num]; //dula=0; delay(1000); void delay(uint z) uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); #pragma vector=timera0_vector interrupt void Timer_A (void) //interrupt [TIMERA0_VECTOR] viod TImerA_ISR(viod) CCR0 =40000; 第 21 页共 68 页

22 tt++;//add Offset toccr0 A18:1 你的定时器没有启动 TimerA 的初始化设置应该为 : void init_timera(void) TACTL =MC_0+TACLR;// 定时器暂停, 定时器和输入分频器复位 CCTL0 =CCIE; // 禁止捕获模式 + 选择比较模式 + 比较模式中断允许 +OUT 对应于输入状态 CCR0 =64000;// TACTL=TASSEL_2 +ID_0+ MC_1;// 时钟源 SMCLK,8M 不分频, 增记数模式, 禁止定时器溢出中断,*** 启动定时器 *** 中断服务程序 #pragma vector=timera0_vector// 比较器 / 捕获器 0 中断服务程序 interrupt void Timer_A (void) TACounter++; 2 注意在初始化你的 TimerA 之前, 应该根据你的实际电路设置时 3 注意开总中断允许 _EINT();// 这一句放在初始化完成后,while() 语句前 Q19:C 语言写程序时候如何让单片机复位? A19: 对 WDT 或者是 FLASH 的口令写错都会导致单片机复位! Q20:#include<msp430x14x.h> void main(void) WDTCTL=WDTPW+WDTHOLD;// 关狗 P1DIR=0XFF; P1OUT=0X00; TACCR1=200; TACCTL1=CCIE; _EINT();// 使能 TACTL =TASSEL_2+ID_2;//smclk TACTL =MC_2;// 连续 LPM0; #pragma vector=timera1_vector interrupt void time(void) if(taiv==0x02) 第 22 页共 68 页

23 P1OUT^=0X01; 这样仿真时, 进入中断,taiv=0; 这是为什么? 按理说 taiv=0x02 A20: 仿真的时因为 jtag 已经读过 TAIV 了, 和你用程序是一样的效果 读过就会复位 Q21: 问题 : 用 430fg437 开发, 片内 flash 大小为 32K, 编译得到的 d43 文件有 33K 多, 怎样优化程序尺寸的? 编程序时怎样估算占用 flash 的大小? A21: 用 SIZE 优化时, 选 MIDDLE 比 MAXIUM 出错少 只要 C 编程时变量分配时限定关键词用好, 如用 volatile 限定变量, 循环不会优化掉 总之, 对于程序大问题, 先用 middle, 后用 maxum, 一定能省出几百或者 1K 以上的代码 还有, 优化时将 inline 前的勾去掉, 别选它. 否则代码反而增大 优化后如果某一模块的代码反而增加了, 可选中该模块后单独对它选其他优化选项 Q22:Error[e16]: Segment CSTACK (size: 0x50 align: 0x1) is too long for segment definition. At least 0x4 more bytes needed. The pro emoccurred while processingthe segment placementcommand "-Z(DATA)CSTACK+_STACK_SIZE#", where atthe moment of placementthe aila ememoryranges were "CODE:5B4-600" 请问 : 这个错误是什么意思? A22:stack 设置太小, 在 option->general option->stack/heap 设置 stack/heap 更大一点 Q23: 调试 ADS1258, 已经可以读寄存器了,SPI 通信正常, 可是现在遇到的问题是通过 SPI 对 ADS1258 的寄存器写数, 读出来的数总是发的命令字, 而不是我发的数据 请高手指点一下 程序如下 : P5OUT&=~BIT0; IFG2 &= ~URXIFG1; //Clear flag U1TXBUF =0x65;// Send address while (!(IFG2&URXIFG1));// Waitfor TX tofinish IFG2 &= ~URXIFG1; //Clear flag U1TXBUF =0x01;// Loaddata for TX after addr while (!(IFG2&URXIFG1));// Waitfor end of addr TXi--); IFG2 &= ~URXIFG1; //Clear flag P5OUT =BIT0 希望寄存器能读出我写的数 0x01 可是现在读出来的数总是 0x65, 这是什么原因? A23: 这是 SPI 的特殊性, 本次通讯输出到 SL E 的数据, 要到下一次 SPI 通讯时才能得到结果. 因此, 在你的程序最后, 再加三行语句进行一次 SPI 传输, 就能得正确的 ADS1258 数据 每传递一次数据发送一次时钟 Q24: 问题 : 高通滤波器的算法问题, 要求实时性比较好, 可是现在的方法之前有个系数是 1/256, 这样子用移位实现的话岂不是都为 0 了? 在滤波器程序中, 系数的大小, 对 430 的 16 位宽度来说, 实在太小了 A24: 在滤波器程序中, 系数的大小, 对 430 的 16 位宽度来说, 实在太小了 解决办法是 : 对事先已算好的系数, 扩大 16,32,64, 等倍后, 作为 430 计算用的常数,430 计算出结果后, 再缩小相应的倍数 这种方法的优点是 : 只进行移位, 甚至是取高 8 位或低 8 位, 不用除法或乘法运算, 结果的精度好 第 23 页共 68 页

24 Q25:C51 中的 XBYTE 用 430 的 C 语言如何表达? A25:430 和 51 不一样, 没有固定的数据线和地址线, 都要自己用 io 去模拟 Q26: 三角函数用 430 单片机计算, 有没有好的方法, 有没有库函数可以直接用来计算的? A26:TI 提供过一个文件."FPP413.exe", 里面的.S430 文件的很全面的说明, 包括程序内容, 调用方法等. 用 C 语言, 直接调用 sin,cos,tan 即可, 只是代码量可能会迅速增大, 速度也会明显收到影响如果是产生正弦波一类的应用, 建议使用查表方式 Q27: 如何从 430 里读回 hex 文件? A27: 没有加密可以通过 jtag 可以读出, 加密后就只能通过 bsl 读出了,bsl 要密码的 Q28: 设计了一个 15k 的程序, 在运行过程中偶尔会出现复位现象, 开始以为是看门狗动作了, 随后初始化时就关闭了看门狗, 但是这种情况还是会发生, 但是用 USB 仿真机全程仿真, 就没有问题, 不知道什么原因 我的程序主要是实时测量, 进行运算, 数学计算的地方较多, 程序中还有定时写 flash uart 通信 两个外部中断处理 timea timeb 定时器中断处理等, 会不会是默认堆栈 80 过小, 导致了复位 ( 堆栈我一直没有更改过 )? 最初我还以为晶振的干扰, 对晶振的外壳做了接地处理, 结果还是没有解决 我用的是 msp430f147 A28: 在程序中作循环, 执行时间比较长 若循环次数少, 则改变的数组中个数少 ; 若多加, 两次循环改变的个数就多 Q29: 芯片为 F149, 用 c 写程序, 复杂的公式怎么实现, 比如 : y=(a )^b, 其中 b= *10^(-4) Q29: 指数运算是 pow, 不过整数次方, 比如 2 3 4, 建议采用连乘, 效率更高 Q30: 在用 MSP430 编程的过程中, 想得到浮点数的整数和小数部分, 不知道哪位有解决的办法? A30: 先将小数变成整数, 在将其个位 十位 百位取出来! Q31: 子函数内调用了 sprintf 函数, 定义了指针变量 *s 来访问格式化后的一整型变量的 ASCII 码 : char *s;sprintf(s,"%-6u",a); 但仿真后发现 s 指向了另一个全局变量, 运行后全局变量的值就改变了, 如何解决? A31: 指针 S 没初始化 虽然你定义了一个指针, 但是这个指针的地址是多少你没定义, 编译过程中应该有警告的 Q32: 怎样用 430 编一个开 4 次方的程序? A32:#include <msp430x14x.h> #include "math.h" float ii,jj; void main(void) WDTCTL =WDTPW +WDTHOLD; jj=100; ii =sqrt(sqrt(jj)); while(1); Q33:IAR 内嵌汇编是用 asm("") 语句, 但我想请问如何在 c 和汇编直接传递函数, 比如用寄存器做了一些运 算, 运算结果在 R12,R13 里, 如何返回他们的值到 c 程序中呢? 第 24 页共 68 页

25 A33:C 语言与汇编语言混合使用有 3 中方式 : 1 内部函数; 2 直接嵌入; 3 调用汇编模块; 调用内部函数 : 内部函数本身是由汇编语言实现的, 所以调用内部函数本身就是在 C 语言中嵌入汇编语言, 不过内部函数数量很少, 只能实现特定的功能 直接嵌入 : 使用 _asm 或 asm 扩展关键字, 这种方法是用起来很简单, 但是编译器只是简单的将汇编语句嵌入程序中, 不考虑与前后语句是否匹配, 因此有可能会造成不稳定, 它有几条限制 : 编译器编译时使用不同的优化级别会忽略嵌入的汇编语句, 或者不进行优化 ; 一些汇编指令不能嵌入 ; 不能访问局部变量 ; 不能声明语句标号 调用汇编模块 : 调用汇编模块时需注意以下 3 点 : 编写汇编模块时, 必须严格遵从调用规则 ; 必须在汇编模块中把函数声明为 PU IC; 调用时, 或者将汇编函数声明为 extern, 或者为汇编模块编写头文件, 以便编译器可以找到函数的位置 Q34: 在做键盘程序时, 遇到一个问题 :4 个按键 K1---K4 分别接到 msp430 的 P1.0---P1.3, 采用定时器每 5mS 中断扫描方式读取键值,K1 要求按下弹起后执行相应的程序 ;K2 要求长按 2 秒以上后每隔 0.5 秒执行一次相应的操作 这些如何实现? A34: 这样处理的 : 1 扫描到按键被按下后, 在状态变量 Keystate 中设置所有被按下按键的状态标志 KEYDOWN ; 备份 Keystate 到 Keystatemem; 若所有按键的状态都是零, 退出 ; 若有按键被按下, 则启动 TA1 两秒定时, 并允许 TA 中断, 退出 2 下次扫描按键的时候, 再次构建 Keystate; 比较 Keystate 和 Keystatemem, 判断哪些按键已经被放开 ; 保持任然保持按下状态的所有按键的 KEYDOWN 标志并清除其 KEYUP 标志 ; 清除已经被放开的且有 KEYDOWN 标志的按键的 KEYDOWN 标志, 设置其 KEYUP 标志 如果所有按键的状态都是 KEYUP 或零, 则终止 TA 记时, 禁止 TA 中断, 退出 3 一旦 TA 定时时间到, 在 TA 中断服务程序中判定所有具有 KEYDOWN 标志的按键为 长按, 清除其 KEYDOWN 标志并设置其 HOLDDOWN 标志 ; 关闭 TA 计时器, 并禁止 TA 中断, 退出 4 在主程序的键盘功能分析程序中, 依照各按键的 KEYUP HOLDDOWN 状态, 分别进行相应的处理 5 在所有循环处理的按键功能都被完成之后, 清除以上所有标志和状态变量 6 完毕 Q35: 用的是 449 的片子, 要用定时器 A 产生 200Hz 的采样频率, 定时器时钟才用 SMCLK, 为 1M, 下面是所有程序 : #include <msp430x44x.h> void init_timera(void); void init_adc12(void); char adc_flag =0; int newvalue; void main(void) 第 25 页共 68 页

26 int datasign1=0, data_x1[500]; WDTCTL =WDTHOLD +WDTPW; // 停止看门狗 _DINT(); // 关闭中断 init_timera(); init_adc12(); // 初始化 ADC12 _EINT(); // 使能中断 while(1) if(adc_flag ==1) adc_flag =0; data_x1[datasign1]=newvalue; datasign1++; void init_adc12(void) P6SEL = 0x01; // Ena e A/D channel A0 ADC12CTL0 &= ~(ENC); // 设置 ENC 为 0, 从而修改 ADC12 寄存器的值 ADC12CTL0 =ADC12ON+MSC; // Turn on ADC12, set sampling time ADC12CTL1 =SHP+CONSEQ_2+ADC12SSEL_1; // Use sampling timer, set mode,adc12 时钟源为 MCLK. ADC12IE =0x01; // Ena e ADC12IFG.0 ADC12MCTL0 =INCH_0+SREF_0; ADC12CTL0 = ENC; // Ena e conversions void init_timera(void) FLL_CTL0 = XCAP14PF; // Configure load caps TACTL =TASSEL1 +TACLR; // SMCLK, clear TAR CCTL0 =CCIE; // CCR0 interrupt ena ed CCR0 =5000; TACTL = MC0; // Start Timer_a in upmode #pragma vector=timera0_vector interrupt void Timer_A (void) ADC12CTL0 &=~ENC; newvalue =ADC12MEM0; adc_flag =1; // 指示有数据要显示 ADC12CTL0 = ENC+ADC12SC; 第 26 页共 68 页

27 问题是, 程序进入到了中断程序后就跳不出来了, 所以无法往下进行请问各位问题会出在哪呢? A35: 把 ADCIE 这句屏蔽掉, 应该可以执行下句, 此程序中断产生生不是 TA 中断, 并且 CCR0 中断是自动清除的, 产生中断的是 ADC 中断 ; 由于配置 ADC 是多次采样单通道, 并且把 MSN 打开, 那么第一次 J 进入中断后将 ADCSC 打开 ADC 开始转换, 完毕后自动又开始采样转换, 反复, 也就是说, 在下一个 TA 中断来前其实 ADC 是一直反复采样转换也就是反复进入中断了. 根据你的意图, 我建议你在 ADC 里面配置为单通道单次转换, 并且触发源可以直接选择用 TA 不需要再 ADCSC Q36: 如何在 IAR 中建立 C 函数库文件? A36: 其实跟做普通 C 项目一样, 没什么太多的差异. 只不过在 option 中选择 Library 即可. 一样可以分 Group, 在每个 Group 中可以包含多个文件 Q37:#pragma vector=port1_vector interrupt void Port1() delay(); //unsigned char q0=0; if((keyifg&key0) ==KEY0) KEYIFG &= ~KEY0; // 清除中断标志 g+=1; if ((KEYIFG&KEY1)==KEY1) // 处理 P1IN.5 中断 //KEYIFG &=~KEY0; // 清除中断标志 KEYIFG &= ~KEY1; // 清除中断标志 //KeyDown=KEY_P15;// 记录按下的键值 FLAG_KEY_3_5=1;// 标识 2 个键同时按下 次数为 0 标识没有同时按下 2 个键 Num_KEY_3_5+=1; KeyZhi=5; // 记录按下的键值 //q0=1; else if((keyifg&key1)==key1) // 处理 P1IN.6 中断 KEYIFG &= ~KEY1; // 清除中断标志 s+=1; //KeyDown=KEY_P16;// 记录按下的键值 //q0=1; else if((keyifg&key2)==key2) // 处理 P1IN.7 中断 第 27 页共 68 页

28 KEYIFG &= ~KEY2; // 清除中断标志 z+=1; //KeyZhi=KEY_P17; // 记录按下的键值 //q0=1; else // 其他干扰引起的中断, 不进行处理, 只清除中断标志 KEYIFG=0; //if(q0==1) // //GoKey(0); // 关闭键盘中断 //KeyTime=0; //KeyCnt=0; //GotimeDfA(100);// 打开定时器 A // // void delay() for(i=5000;i!=0;i--); 请问各位, 二键同时按下有时不响应, 单键按下有时变量加 2 或 3, 不是加 1, 是不是延时有问题 A37: 最好不要在中断中有延时程序, 这样会降低 MCU 的响应 如果需要延时去抖动什么的, 最好采用定时器, 这样既提高了 MCU 的响应速度, 又会降低供耗问题 Q38: 可不可以把常量地址赋给指针变量, 如下 : 代码 :const int abc; int *p =&abc; 主要是想在 abc 的地址处通过擦写 Flash 写入东西 我在 IAR 中报了个错, 不知道是不是这个问题 A38:Flash 擦除肯定是段擦除的, 但是在擦除的时候需要指定段地址. 代码 : #pragma location="infoa" const int xxx =0; const int abc =123; int *p=&abc; p++; 如上面程序, 常量 abc 存放在信息段 A 中, 用来保存设置参数. 当在应用程序中改变此参数值时, 需要整段擦除信息段 A, 然后在常量 abc 的地址处写入其它值. 现在的问题是如何把常量 abc 的地址放到指针变量里去? 像上面代码中做的话, 会报一个错误, 意思是 const int* 型的值不能用来初始化 int* 型的变量, 可以看到, 其中 p 是 int* 型的. 将代码改成以下就不报错了代码 : 第 28 页共 68 页

29 #pragma location="infoa" const int xxx =0; const int abc =123; const int *p =&abc; p++; 其实这个问题是 " 常量指针 " 和 " 指针常量 " 的问题 我开始担心用 const 修饰 int* p 后会是 p 变为常量, 而不能修改, 就是 p++ 处会报错 后来查了下书, 指针常量 ( 指针本身是常量 ) 定义的方法如下 : 代码 : const int* const p=&abc; 上面第二个 const 才是是指针变为常量的因素 第一个 const 表示常量指针 ( 指向常量的指针 ) 所以可以看出, 第二段代码是正确的方法 其实还有一种方法可以解决第一段代码中的报错问题 代码 : #pragma location="infoa" const int xxx =0; const int abc =123; int *p=(int*) &abc; p++; 如上, 采用强制类型转换的方法也可以 Q39: 要把定义的常量放在代码区, 该怎么定义啊! A39:const 比如 : const uchar Number[]= /*-- 文字 :0--*/ /*-- 宋体 12; 此字体下对应的点阵为 : 宽 x 高 =8x16 --*/ 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 一般液晶字模就这样, 放到程序存储区, 避免占内存 Q40:1 在头文件 msp430x44x.h 中, 宏定义 #define TASSEL1 (0x0200), 后面的数字 0x0200 为干什么要加上括号 (); 2. 汇编中,BIC #OscOff, SR 为什么要加上 #,OscOff 应该理解为标号不是吗 ; 3. 在头文件中 #define BASICTIMER_VECTOR (0 *2u), 括号中的 "u" 代表什么? A40: () 起保护作用 2, OscOff 因该有地方定义过 3,u 应该是无符号数 Q41: 请问 IAR 中 CLIB 和 DLIB 区别? 问题 : 请问 IAR 中 CLIB 和 DLIB 区别? A11:DLIB 是一个完整支持 C 标准的库文件, 提供 IEEE754 浮点数计算库 CLIB 是一个相对精简的库文件, 不完全支持 C 语言标准中队对库文件的要求, 没有浮点库的支持, 能够满足一般的需求 第 29 页共 68 页

30 Q42: 这个提示是什么意思? Libraryconfiguration fileisnot specified. Use --dlib_config, please see the compiler reference guide for details. A42: 没有指定库文件, 这个提示已经告诉你使用 DLIB 库了, 你就设置一下就可以了 Q43:printf() 函数是不是将需要打印的数据送到打印机啊? 如果是他又是怎样让外围的硬件与打印机联系起来的呢? 打印机的起始信号与应答信号他都能处理吗? A43: 单片机编程中, 通常使用 printf(...) 不是将数据写入打印机中, 而是将数据进行格式化处理 但是更多的是使用 sprintf(...), 将格式化的数据写入函数指定的字符串中 因为 printf(...) 函数在运行时需要调用 putchar(int value) 函数, 这是一个将字符写到 标准输出设备 的函数, 若你想将数据写入特定的打印机, 如微型打印机 ( 在单片机中运行, 而非 windows 中运行 ), 那必须修改 putchar(...) 函数的原程序 putchar.c 以满足在单片机中对该打印机的起始信号 应答信号 字符点阵转换等工作进行处理 不过一般微型打印机厂家都提供相应的驱动程序供用户使用, 但对于特殊应用还是需要编程的 sprintf(...) 的使用与 printf(...) 完全相同, 不同的是在 sprintf(...) 中第一个形参是输出目标的字符串指针 而 printf(...) 函数没有这个形参, 而是使用 putchar(...) 函数指定的标准输出设备作为输出目标 另外在运行时 sprintf(...) 不调用 putchar(...) 函数 Q44: 我用 F2012 的单片机 typedef struct U32 Band_Low; //Bandlow limit U32 Band_High; //Band high limit U32 Dem_Freq; // video IF U32 Snd_Carr;//sound carrier frequency U32 Hsync; //Hsync st_tv_region; #define GHz #define MHz #define KHz1000 #define Hz1 程序中初始化的时候 const st_tv_region c_tv_region[] = /* Low Limit,High Limit, DemFreq,Snd Carrier,Hsync*/ /* PAL B/G */ 44*MHz, 862*MHz, 9*MHz, 5500*KHz, 15625*Hz, /* PAL D/K*/ 44*MHz, 862*MHz, 9*MHz, 6500*KHz,15625*Hz, /* NTSC-M*/ 56*MHz, 806*MHz, 7*MHz, 4500*KHz, 15750*Hz, ; 5500*KHZ 6500*KHZ 4500*KHZ 的地方提示警告 Warning[Pe061]: integer operation result is outof range 如果 后分别加上 u, 就不会报错如果直接写成 , 也不会出错 请问是怎么会使? A44: 在 IAR 中 #define 的值是根据后面的值来确定长度的 1000 它就以 int 型来表示了 5500*1000 肯定就超过 int 范围了问题 : 关键我的数据类型是 uisigned long 类型啊 第 30 页共 68 页

31 那请问如果我要保持个写法, 应该怎么改 谢谢 如果 5500 后面加个 u, 会对程序有影响么? 回复 : 没有其它方法了, 只能如下 : const st_tv_regionc_tv_region[] = /* Low Limit,HighLimit, DemFreq,Snd Carrier,Hsync*/ /* PALB/G */(U32)44*MHz, (U32)862*MHz,(U32)9*MHz, (U32)5500*KHz,(U32)15625*Hz, /* PALD/K*/(U32)44*MHz,(U32)862*MHz, (U32)9*MHz, (U32)6500*KHz, (U32)15625*Hz, /* NTSC-M*/(U32)56*MHz,(U32)806*MHz,(U32)7*MHz, (U32)4500*KHz, (U32)15750*Hz ; Q45: 问题 : 在 430f149 上运行 ucos-ii 操作系统刚开始的时候没什么问题, 当需要做一个功能函数的时候编译没有错误但是在运行仿真的时候老是跳入 DEBUG 中提示 :the stack'stack'is filled to 100%. 以为是堆栈益处调整堆栈大小以后编译出现错误 The pro em occurred while processing the segment placement command "-Z(DATA)CSTACK+_STACK_SIZE#", whereat the momentof placement the aila ememoryranges were "CODE:29a-2ff" Reserved ranges relevant to this placement: 29a-2ff CSTACK 请问遇到过这个问题没有? 有什么办法能解决呢? A45: 可能是局部变量过大造成的, 也可能是设置 xcl 文件造成的, 总觉得程序不可能占用 2k 的 RAM, 看 CODE:29a-2ff 好象是你设置了 xcl 文件 Q46: 以前用的 1612 的 DCO 是由内部 RC 振荡器产生的频率.4618 的 DCO 频率是由低频振荡器的 N+1 倍决定的. 不知道这样理解对不对. 也就是说 4618 中, 如果要使 MCLK,SMCLK 的频率来自 DCO, 那就必须在 XIN.XOUT 处接表振. 如果 XIN.XOUT 处不接. 是不是 DCO 就没有频率输出 A46:DCO 是内置振荡器, 可以使用 FLL 模块对其进行标定, 标定的基准就是外接的手表晶振, 当没有外接手表晶振时, 也可以使用 DCO 来做时钟 Q47: 如何在程序中定义位操作 : 如 sbit pinint =P3^2; 在 msp430 中能否实现这种操作, 或有无可替找的方法?? A47: 不能像上面这样定义, 可用如下 : #define LED_ON P3OUT = BIT2 #define LED_OFF P3OUT &=~ BIT2 程序中就直接使用 LED_ON LED_OFF 就和位操作一样了 Q48: 有一段程序 : const uchar HELLO[]="HELLO\n"; // 因为这些字符是只读的, 所以定义成 const void fun1(uchar *str) // 函数说明... main( )... fun1(hello);... void fun1(uchar *str) 第 31 页共 68 页

32 ... 结果在编译时在调用 fun1 时出现 function argument imcompati e with its declaration, 将 const 换成 static 就 OK 了, 函数就能正常调用 是 const 类型的数组名不能作为参数传递吗, 字符串数据是不是存在程序存储器中了, 可用 const 定义时, 我在程序中写如 str1=hello[3], 编译和运行也没问题阿, 是不是与 MSP430 的寻址方法有关, 请大家赐教 A48: 用 const 类型的数组名是可以作为参数传递, 但必须进行强制类型转换, 如 const uchar HELLO[]="HELLO\n"; // 因为这些字符是只读的, 所以定义成 const voidfun1(uchar *str) // 函数说明... main( )... fun1((uchar *str)hello);... voidfun1(uchar *str)... Q49: 问题 : 譬如在 C 程序中有如下一个子程序 : void Flash(void0 FlashBegin: FlashEnd:... 在汇编程序中, 想将 FlashBegin 与 FlashEnd 之间的那段程序拷贝到 RAM 中去 目前我是这样实现的 : 先将整个程序编译, 找出该段程序所在存储空间的起始地址, 然后在汇编程序中用立即数的方式直接表示这两个地址 这样做有个弊端, 就是在程序进行修改之后, 该段程序的起始地址会改变, 因此, 每次都需在汇编程序中修改这两个地址值, 一不留神就会忘记, 导致严重的错误 现在我想用 FlashBegin 与 FlashEnd 这两个标号来直接表示地址, 请问在汇编程序中该如何引用? A49: 试试看! ; 在汇编中加入 : ; externcalled_by_asm; rseg code call#called_by_asm end /******************* 第 32 页共 68 页

33 //C 中可以是 : voidcalled_by_asm(void)...// Q50: 想把一份表格存放在代码区, 用的是 C 语言, 不知道有什么方法? A50:const unsigned char Ta e[]=... 第 33 页共 68 页

34 第四章 : 工作模式及功耗类 Q1: 采用 MSP430F2012, 用定时器 A 中断唤醒, 定时器的时钟选择为 ACLK, 外部接 KHZ 晶振,LPM3 模式可以正常被定时器中断唤醒. 因目前 IO 引脚不够用, 想去掉外部的 KHZ 晶振, 当用利尔达的 USB JTAG 仿真器仿真时 LPM3 模式也能被定时器中断唤醒, 但感觉每次唤醒的时间不一致, 但是若不连仿真器, 转为电源供电就完全不能被唤醒, 不知为什么? 关于 ACLK 时钟是否一定要接一个 的外部晶振? 为了节省功耗必须用休眠模式, 如果没有外部的 KHZ 晶振是不是就唤不醒单片机? A1:ACLK 时钟的来源可以是 VLOCLK 或者是 LFXT1CLK 所以不一定要接外部晶振而在 LPM3 模式下 ACLK 是活动的,MCLK 和 SMCLK 被禁止所以不是没有外部的 KHZ 就唤不醒单片机 需要你正确设置 ACLK 的来源 Q2:1,MSP430 进入 LP 模式后,CPU 停止运行, 那么, 进入中断执行退出后, 由于 SR 的恢复, 导致还处于 LP 模式, 是否意味着,CPU 在退出中断后立即停止了呢? 2, 也就是说, 进入 LP 模式后, 要让非中断流程运行的话, 只能在中断退出前把保存在堆栈里面的 SR 修改了?3, 由于中断自动恢复保存的寄存器, 要想在中断程序里面修改堆栈里面的保存的 SR, 只能用汇编了? A2: 1 是的 2 是的 3 是的 _BIS_SR_IRQ() 以及 _BIC_SR_IRQ() 函数可用 Q3: 您好, 我现在有个程序进入 LPM3 后拿万用表测电流在 40uA 左右, 不是的 datasheet 里说的小于 2uA 万用表 2mA 档串接在电池和 VCC 之间 甚至于我写了最基本的初始化函数和 main 函数如下, 测试电流值仍然在 40 多 ua 我想知道如何才能准确测得 LPM3 下的电流, 或者说是否万用表本身有影响? 因为我们的程序要求有至少 5 年电池寿命, 用的 125mA 的 CR1632, 需要耗电在 2.8uA 下才行 A3: 我和你做的东西是差不多的, 也用的是 F201X 或 F21X1 的片子, 所以也测量过这个, 对这个经验我有这几方面 : 1 万用表的问题: 有些万用表最小是 2mA 档, 根据测量仪器的特性, 接近满量程时的测量数据较准确, 所以 2mA 档测量 2uA 的电流时, 相差 1000 倍, 极不精确 我测量时使用的是一块带有 200uA 档的 DT830 数字表, 实测 LPM3 下只有 0.7uA, 与 F201X 手册上标注一致 2 湿度与 PCB 防潮问题 : 如果是实验板, 因为上边没有阻焊膜, 很容易受潮造成板上漏电, 所以这种低功耗的东西一定要密封好, 建议成品直接用树脂或是胶封起来, 哪怕是热熔胶, 也比暴露在空气中强 我测试的时候, 就因为对着板子喘了口气, 就发现表上电流示数开始变大了 这个电流实在是太小了, 小到不能忽视任何干扰了 另外, 要是手摸了板上子特别是电源两端的话, 这个直接会造成几十到几百微安的电流, 所以用手拿着板子测是极不科学的, 要是不拿板子表笔不好扎的话, 建议去电子商场买一对勾夹子, 我买的 1.5 一个,3 块钱一对 勾好以后把板子悬空放着最好 3 电路内的损耗电流: 尤其是 RC 方式的 SLOPE, 要想省电就必须严格控制电容的容量, 越大越费电, 或是说, 如果你的电话容有余量的话, 就要严格控制充电时间, 否则充的时间长了, 也一样会发生耗电增加的情况 最注意的就是, 不要充上电之后去睡, 醒了再放电检测, 那样因为漏电的关系, 损耗最大, 哪怕你的电容容量很小也不行 4 初始化的选择: 初始化的时候, 一定要把不用的东西全关掉, 包括 IO 口全置为输出, 并输出为低电平, 而且不要选择 REN, 或是像楼主的程序那样,REN 置 0 建议的初始化就是所有的 SEL=0,REN=0,DIR=0FFH, OUT=0 像楼主现在的初始化把 P1SEL 置了三位, 那样就把那些模块一直选通了, 可能会增加耗电 最好是模 第 34 页共 68 页

35 块在使用前就不打开 当然如果为了利用模块的高阻性能而常开对应的比较器或 ADC 端口的话, 建议置一下 对应端口的 CAPD, 这样可以进一步的减少寄生电流的产生 Q4: 问 CC2500 系列和 nrf2401 比较, 功耗哪个更低? A4:CC2500 和 nrf2401 的 datasheet, 上很明显有 Power Down mode 模式下的一个功耗 :900nA 和 1uA. 而且功 耗这块的算法, 是看平均的功耗才为准.. 这就主要考虑到 WOR 模式... Q5:#include <intrinsics.h> #include <io430x14x.h> int main() // Stop watchdog timer to prevent time out reset WDTCTL =WDTPW +WDTHOLD; //initclock init_clk(); init_io(); LPM0; while(1); Error[Pe020]: identifier "_BIS_SR" is undefined 以上程序为什么会出错? 直接给 SR 赋值也不成, 并且到头文件中也没找到 SR 的定义, 这是出了什么问题呢? TA0 的时钟选用 0.5M 8 分频, 近似计数值 63 为 1ms, 使用连续计数方式 A5: 将头文件改成 #include<msp430x14x.h> #include<in430.h> #include <io430x14x.h> 即可正常运行 Q6: 芯片是 msp430f413, 外围部件什么都没有接, 只有一个 的晶振, 和芯片上电复位的几个电阻和电容, 四个给段式液晶模块分压的 1M 电阻, 再就是 JTAG 接口了, 再没有任何东西了, 没用的 IO 口都是悬空的, 软件上都配成输出状态了, 软件如下 : void Init(void) P6DIR=0x00; P6DIR =BIT7; // P6DIR =BIT6; // P6DIR =BIT4; // P6DIR =BIT5; // P6DIR =BIT3; // P6DIR =BIT0; // P6DIR =BIT1; // P6DIR =BIT2; // P3DIR =BIT0; // 空闲引脚, 置为输出状态 P3DIR =BIT1; // 空闲引脚, 置为输出状态 P2DIR =BIT2; // 空闲引脚, 置为输出状态 第 35 页共 68 页

36 P2DIR =BIT3; // 空闲引脚, 置为输出状态 P2DIR =BIT4; // 空闲引脚, 置为输出状态 P2DIR =BIT5; // 空闲引脚, 置为输出状态 P2DIR =BIT6; // 空闲引脚, 置为输出状态 P2DIR =BIT7; // 空闲引脚, 置为输出状态 P2DIR =BIT0; // 空闲引脚, 置为输出状态 P2DIR =BIT1; // 空闲引脚, 置为输出状态 P6SEL =0; P1DIR =BIT0; P1DIR =BIT1; P1DIR =BIT2; void main(void) WDTCTL=WDTPW+WDTHOLD;// 禁止看门狗 Init(); // 配置空闲管脚为输出状态 _EINT(); LPM4; // 模式 4 _NOP(); _EINT();// 允许中断 delay1ms(1000); while(1); 为啥低功耗电流怎么这么大, 应该是 1uA 左右才对? A6:1 CMOS 电路的电流消耗主要发生在 CMOS 管状态翻转的时刻 2 设置成输入后, 处于高阻状态的输入开关会发生未知的状态翻转, 从而消耗电流 3 设置成输出后, 无论是上拉还是下拉, 都会消耗电流 4 建议普通 I/O 口设置成输出, 并且悬空 ; 或者设置成输入, 并且上拉或下拉 Q7:_BIS_SR(LPM3_bits); bic_sr_register_on_exit(lpm3_bits), 我看一些资料这两个函数都能进入到低功耗, 但是第二个只能在中断程序中使用, 第一个使用后程序还是在运行, 说明一下两个的区别? A7: 前面是进入低功耗, 后面的是退出低功耗 Q8: 低功耗设计中 430 接 CMOS 器件要注意? A8: 在低功耗产品设计中, 当 430 的 i/o 口与 CMOS 器件接口时, 比如 LCD 之类的, 为了省电,LCD 间歇供电, 当 LCD 关断时, 与之相连的 430 的 i/o 口一定要设置为输入口或者设置为输出为 1. 否则 LCD 内部 cmos 器件的 I/O 口通过二极管导到其 VCC 上, 这样 MCU 的电流变大了, 功耗变的更大了. Q9: 程序总是不正确执行, 运行就出现下述错误 : CPU is OFF (Low Power Mode )and interrupts are disa ed! cannot excute Step/go 到底是怎么回事? 看了 cpu 寄存器中 cpuoff =1 的, 但没有设置低功耗模式呀? A9: 查下晶振是否正常 ; 程序不能正常运行是一步都不能走么? 如果只是某个位置, 看看程序对外围控制是否会让时钟或者电源受到影响 ; 再次确认是否真的没有设置低功耗, 注意看低功耗的宏定义 第 36 页共 68 页

37 Q10: 当 CPU 关闭后, 在中断函数里面的计算, 比如全局变量 i 的累加等计算是由谁来执行的呢? 为什么 CPU 关闭后还可以处理很多计算, 赋值, 判断等指令呢? A10: 在中断里 CPU 是处于 ACTIVE 模式的, 进入中断后,DCO 会自动起震,430 退出低功耗模式 Q11: 这个设计, 功耗如何才能降得很低? 用 F437 由于设计中有时钟功能, 用 ACLK 产生所要的秒信号, 所以系统不能断电, 因此只能进入 LPM3 低功耗状态. 而且有些数据要保存在 RAM 里面的, 又这个仪器是要测信号的, 因此要一个 8M 的晶振, 还有段码 LCD 想问如何设计才能达到最低功耗要求呢? 现在的思路是 : 一个专门的按键, 按下关 ( 进入睡眠 ), 再按一次开 ( 唤醒 ), 但测得睡眠时的功耗有 3MA 左右., 这个外围是两个 MCP6002 运放, 一个 232, 一个红外芯片 是不是进入 LP3M 的时候, 要把所有的外围模块都关了的? 进入低功耗前把外部晶振关闭, 是否会变成默认的内部晶振呢? 这样能降不少功耗吧? 定时器进入停止模式?LCD 关闭电压?AD 关闭? 还有什么可以降低功耗的? 还要问下 : 做手持产品, 外围的芯片是否都把它断电的呢? 用 MOSFT 管吗? 可否直接用单片机 IO 口来供芯片 VCC 呢? 不需要时就把 IO 口改变就行了? 这里工作时有 6MA,LP3M 时有 3MA, 这样电池也用不了多久了. A11: 进入低功耗前把所有能关的电源全关掉 IO 口供电只能提供很小的电流, 除非你供电很小, 否则你还是采用 MOS 管或者其它开关进行控制 Q12: 很简单的一个问题 430 在低功耗的时候, 闲置的口线应该是输入还是输出?? A12: 不用的 I/O 口设置为输入时接地, 或者设置为输出时悬空 第 37 页共 68 页

38 第五章 : 复位系统类 Q1: 用的 msp430f437, 用到了 12 路 ad 通道测量电压, 利用 flash 信息段存储 PT 变比,id 号, 电压计算系数等装置参数, 精度校准后参数写入 flash 信息段保存, 可以比较准的测量工频电压, 但是现在我在这个基础上加入了温度补偿程序, 即增加一个 ad 通道利用 430 的温度传感器测温, 结果平时运行正常, 但是在校准精度时 ( 利用 uart 通信校准,9600bps) 有时候就会出现复位情况, 不是每次都这样 我用两个程序作比较, 都含有 flash 写操作 ( 校准后肯定要写入 msp 的 flash 信息段保存参数 ), 区别在于 : 后面一个程序多了 1 个 AD 通道采集温度, 于是也多了几个变量 (static 变量, 全局变量 ), 这个两个程序就一个不复位, 一个复位, 我怀疑是我的堆栈什么的设小了, 不知道有没道理 我用的 IAR3.41, 编译后下面说 :xxxxcode,xxxxdata, (80absolute), 不明白什么意思? 然后我 jtag 调试时, 设置断点后在断点处暂停后下面指出 :the stack is filled to 100% (80 bytes used out of 80),the warning threshhold is set to 90%, 这个有什么影响吗? 另外, 用 flash 保存参数感觉会影响中断执行 ( 毕竟 flash 写操作要关闭中断的 ), 导致我的 led 不是等间隔定时轮询显示 ( 我的 led 显示靠 1ms 中断来进行段选 ), 所以会有明暗变化 请问有什么好方法改善吗? A1: 知道你问题所在了, 你用的是默认 80BITS 堆栈, 而你写 FLASH 时是不是有个大数组临时变量呀? 你在选项里把堆栈设大点就没事了!LED 你可用静态显示! Q2: 应用背景 : 仪表做老化试验, 需要周期性的上电工作 比如, 加电源 - 工作 10 秒钟 - 断电- 停止 10 秒钟 - 再上电, 周期重复 单片机使用看门狗, 看门狗周期 1000ms, 保证正确清除看门狗 现象 : 单片机上电后有时不能初始化, 根本不能运行程序? A2:1, 请使用外部看门狗!2, 检查你的电路电源, 是不是使用了大容量的电容, 造成复位有问题 这 2 种方法都不错, 有些电路掉电 10 秒钟后, 单片机仍然处在有效工作电压, Q3: 请问 msp430 怎么手动复位啊? 是不是连到 RST/NMI 上? 但是这个脚不是和 JTAG 连吗? 我看到一些资料上说复位的话还要上拉电阻或者复位电路 A3:JTAG 功能只在下载程序时候使用, 正常工作中 RST 可以连接一个按键, 按下按键实现 430 手动复位 上拉电阻是上电复位用的, 手工复位一个 BUTTON 就行了 MSP430 单片机低电平复位 Q4: 一个产品在做瞬时通断电试验时, 发现有部分样机有死机现象, 试验是这样的 : 对 40 台样机, 通电几秒钟, 再断电几秒钟, 反复的上下电, 断电的时间分别设为 1S--10S, 发现有 4 台样机, 在不同的断电时间, 再上电后, 不能启动, 复位的看门狗 (706), 不断的有复位信号, 但是样机不再工作了 除非断电将 149 的电源电压降为 0, 再上电才能工作 发现死机的 149 的电压降到为 0.X 伏时, 再上电, 就死机了, 可重复发生 本产品不带电池 该怎么办? A4: 由于外部电容的影响, 几秒钟的断电, 也许不可能让单片机完全停止工作 建议使用复位芯片 Q5: 上电复位和硬件看门狗复位有什么区别吗, 在程序里将两者分开, 请问有办法将两者分开吗? A5: 上电复位时, 内存被清零或为任意值, 看门狗清零时并没有断电, 内存里的原有信息被保留, 同时上电复位无法通过标志位来判别, 看门狗复位才可以通过 WDTIFG 来判别 同时注意 RESET 之后 : 1 判断有无复位标志, 若有, 则为 WDT 复位 ; 若无, 则为上电复位, 并且设置复位标志 手动按键复位也同此理 2 保证复位标志在复位程序中不被清除 汇编好办, 那是自己在控制 RAM 清除程序,C 呢, 就要注意了 3 要注意快速断电/ 上电的问题 处理不好的话, 不但 RAM 中原先的内容有可能还存在, 而且 MCU 复位很可能会失败 第 38 页共 68 页

39 Q6: 用 FG4618 做了一个工程, 本片子有 8K 的 RAM,, 定义的全局数组变量还不到 4K, 发现编译完成后下载程序, 调试界面不能复位 (IAR 编译器 ), 只要将全局数组变量减小定义, 这个问题就没有了, 这是为什么? A6:RAM 并不只是全局变量占用, 包括进入中断及局部变量都需要分配 ram 空间, 这会导致在某些时段 RAM 空间不够 Q7: 用 msp430f2012 需不需要复位电阻和复位电容? 因为我发现 TI 的 EZ430 开发工具上是没有复位电路的 A7: 查下晶振是否正常 ; 程序不能正常运行是一步都不能走么? 如果只是某个位置, 看看程序对外围控制是 否会让时钟或者电源受到影响 ; 再次确认是否真的没有设置低功耗, 注意看低功耗的宏定义 Q8: 当 CPU 关闭后, 在中断函数里面的计算, 比如全局变量 i 的累加等计算是由谁来执行的呢? 为什么 CPU 关闭后还可以处理很多计算, 赋值, 判断等指令呢? A8: 在中断里 CPU 是处于 ACTIVE 模式的, 进入中断后,DCO 会自动起震,430 退出低功耗模式 Q9: 软件可不可以自使 MCU POR(RST)? A9:PoR 是指 power on reset; 只能由 reset 脚或者 svs 硬件产生 PUC 是指 power up clear, 多种情况可以 生成 具体参考 user's guide. Q10: 用 MSP430F149 做项目, 但 ROM 写满后换成 2418 的 (116K) 的片子, 编译软件用的是 IAR 4.11B 版本的, 写进去后, 原来 IIC 通信的都不行了, 用示波器看 IIC 的时钟和数据波形都有, 从 24C512 里就是读不出数据 ( 在 149 里正常的 ); 还遇到另一个问题 : 因为我这产品有时间显示, 用的是外部 2S 的信号输入, 有时候 4 分钟自动复位一次 ( 很有规律 ), 有时候无规律的自动复位. 再者个人认为 2 系列的没有 1 系列的稳定抗干扰能力强 请发表看法? A10: 首先纠正一个观点,2 系列的稳定性要好与 1 系列 再者, 从 149 换到 2418, 时钟上要做出一些调整, 具体请参照用户指南和数据手册 很有规律的出现复位, 建议用最小系统检测程序是否有误, 或者外接电路的不正当操作 无规律的自动复位, 请检查供电是否稳定, 因 2 系列多了 BOR 模块, 多了复位的触发源 小提示 :430 的 I/O 口单个供电能力最高可达到 15mA, 但是整个芯片的总供电能力只有 100mA 左右 Q11: 用 IAR 进行 C 语言编程, 请问如果定义全局变量并赋给初始值, 在 main 函数中不再赋值, 在上电复位后是怎么被赋的值啊?430 在上电后进入 main 函数之前都做了些什么操作啊? A11: 应该是按全局变量那样定义, 你单步调试一下, 看看该变量的值有没有变 可以看 IAR 中编译后的汇编代码是从 CSTART_END 开始的, 可以在 CSTART 中设置断点, 观察到如果设置了全局变量并且赋了初值, 则 IAR 编译器会吧初值定义到 FLASH 空间中, 在 CSTART 中在把 FLASH 中的初值复制到全局变量的 RAM 中的, 所以对全局变量的赋值会占用 FLASH 空间, 对于小容量的 FLASH 芯片, 如 2011 等, 要尽量的少用这种定义方法 Q12: 用 msp430f149, 用的是 IAR, 程序在用仿真器仿真的时候能正常运行, 但是停止仿真, 去掉仿真器, 再重新上电的时候就不能正常运行了, 请问这是怎么回事啊? A12:1 你先确定, 重新上电后单片机有没有复位运行 可以加一个 LED 做为标志, 如果单片机跑起来, 让这个 LED 不停的闪 ; 如果没有, 就检查复位电路 2 停止仿真是会出现程序停止的现象, 手动将 RST 与地短接复位可以恢复 但只有部分型号的芯片会有这个问题, 比如 开始仿真也会出现程序烧不进的现象, 大部分时候也可以通过手动复位解决 ; 3 最终检查出是复位问题 Q13: 运行到断点, 程序就复位, 不能停在断点处, 跟程序量比较大有关系吗? 请问是什么原因? 第 39 页共 68 页

40 A13:1 因为 430 单片机看门狗复位时间默认为 32ms, 如果你的程序在断点前的执行时间大于 32ms, 当然不能运行到断点, 还有如果你的程序自身编写有问题, 比如通讯数据过多和 AD 采样时间太长, 以及还有可能有死循环, 都会导致程序断点不停 2 如果看门狗是关的, 那么你可以检查下, 在程序运行到断点前是不是把某个中断打开了, 在运行到这个断点前, 该中断产生要进入中断 ; 但是有可能你的中断向量是否写对, 写错程序会跑飞, 你可以看下 第 40 页共 68 页

41 第六章 : 看门狗及定时器类 Q1. 定时器两个中断 TAIE 和 CCIE, 有什么区别? 两个中断的中断向量一样吗? A1:TAIE 和 CCIE 指的是不同事件 TAIE 指 TAR 计数器溢出, 从 到 0 的变化, 由 TAIFG 引起的 CCIE 指捕获到相应信号 ( 捕获模式下 ); 定时时间到 ( 比较模式下 ) 由 CCIFG 引起的 两个中断的中断向量不一样, TAIFG 一般进 TIMERA1_VECTOR;CCIFG 的话要看用的是哪个定时器如果是 CCR0 的话就进 TIMERA0_VECTOR, 如果是 CCR1,CCR2 则进 TIMERA1_VECTOR ( 中断向量的写法因器件不同而有所不同 ) Q2: 用的 msp430f1481, 奇怪的是定时器 TA 能进中断, 但中断标志一直存在, 因此程序老在中断中跑, 我用的是 8M 晶振,XT2ON A2: 你最好说明是哪个标志位没有被清 0 没有设置相应的中断使能, 是不会引起中断发生的 ; 中断频率太快, 在调试状态中, 刚把中断标志清除, 又有一个新的中断产生了, 所以给人的错觉是清不掉 Q3. 芯片用的是 MSP430F447, 从 P1.2 口输入外部脉冲, 我用 TIMEB 定时,Port1 中断触发的, 程序干不了别的, 光中断了, 程序好像也进不到定时中断里去 A3: 如上所述分析, 可能是 : 1 MCLK 可能过低, 来不及处理指令 2 TB 的中断服务程序太长, 所以光中断了, 其实是中断服务程序运行时间太长了 3 定时时间内的脉冲个数, 如果脉冲频率很高, 本来就是在不停的进入中断, 如果频率高到一定程程度之后, 都不用如不用中断, 直接去判定标志位, 因为进出中断也耗时间的 Q4. 用 F149 的定时器 B 的捕捉功能, 遇到问题, 在等待捕捉时, 读取 TBR 的值总是随机数 A4:TBR 是一直再跑的, 看 TBCCRx 因为捕获事件发生时, 硬件会自动把 TBR 的值保存到 TBCCRx 中 Q5: 想输出 PWM, 在中断响应后能改变 PWM 的频率吗? A5: 调整相应的定时器配置,PWM 的频率和占空比都是可以改变的, 不过周期频率一般都是由 CCR0 据顶的 Q6: timea 定时器输出模块中 EQUx 和 EQU0 有什么区别? 它们有什么用? A6: 捕获 / 比较器在比较模式时设置 EQUX 信号有差别 : 当 TAR 的值大于或等于 CCR0 的中的数字时,EQUO=1 当 TAR 的值等于相应的 CCR1 或 CCR2 的值时,EQU1=1 或 EQU2=1 EQUx 和 EQU0 它们是用来控制输出单元的, 软件中可以不用设置, 由硬件自动触发 Q7. 关于 F2274 的 I/O 口中断的问题? 希望通过 set 或者 clear P1IES 可以设置 P1 口在上升沿时触发中断还 第 41 页共 68 页

42 是下降沿时中断, 能不能搞成一个电平触发的? 如高电平中断或低电平中断? A7::430 的 I/O 口中断都是沿触发的, 没有 51 的电平触发模式 不过你可以在 I/O 口中断服务程序里查询电平状态, 如果不是你期望的电平出现了, 才清 I/O 口中断标志, 让中断程序退出 Q8. 在中断能使用全局变量? 问题 : 在用全局变量时, 连接时提示错误 : Error[e46]: Undefined external "?cstart_init_copy" referred in main (C:\Documents and Settings\homex\ 桌面 \comsp430\debug\obj\main.r43 ) Error[e46]: Undefined external "?cstart_init_zero" referred in main (C:\Documents and Settings\homex\ 桌面 \comsp430\debug\obj\main.r43 ) Error[e46]: Undefined external "?ShiftRight32u_4" referred in main (C:\Documents and Settings\homex\ 桌面 \comsp430\debug\obj\main.r43 ) Error[e46]: Undefined external "?Mul32" referred in main (C:\Documents and Settings\homex\ 桌面 \comsp430\debug\obj\main.r43 ) Error[e46]: Undefined external "?DivMod32s" referred in main (C:\Documents and Settings\homex\ 桌面 \comsp430\debug\obj\main.r43 ) Error[e46]: Undefined external "?DivMod16s" referred in main (C:\Documents and Settings\homex\ 桌面 \comsp430\debug\obj\main.r43 ) A8: 这种情况一般是多个 C 文件都申明了同一变量名造成的, 把所用的变量在中断所在的文件中做外部变量说明即可 另外建议不要把项目文件夹放在桌面上 Q9:timerA 不能进入中断检查的一般思路? A9: 不能进入中断一般检查思路 : 1: 是否开所属模块中断和总中断 2: 所属模块所用时钟是否有效 3: 触发条件成立没? 标志位是否置位 Q10. MSP430F149 关于时钟的问题问题 : 时钟采用 8MHz, 那么执行 for(i=0;i<980;i++); 会花费多少 ms? 是不是 1ms? 另外, 若是采用 ADC12 自带的时钟, 在 RC 振荡器在 5MHz, 且不分频, 执行一次采集 ( 采样和转换 ) 会花费多长时间? Q10: 执行 for(i=0;i<980;i++); 这个得去看汇编看消耗了几个机器周期这样是看不出来的 当然一般的做法是把程序运行在仿真状态下, 在执行执行 for(i=0;i<980;i++) 之前记下此时的 CYCLECOUNTER(VIEW-- >register) 该语句执行完毕之后记下这时的 CYCLECOUNTER,2 者相减, 在乘以 MCLK 的周期 若是采用 ADC12 自带的时钟, 在 RC 振荡器在 5MHz, 且不分频 :ADC12 采样是 12 个 ADC12CLK 外加一个 ADC12CLK 用来把结果存到 ADC12MEM 所以时间 t=13*1/5m 秒 第 42 页共 68 页

43 Q11:430F149, 中 TACTL 中 SCCI 是什么功能? A11:Latched capture signal (read) 处于捕获模式时, 接入的信号状态 0/1 Q12: 怎么利用 F155 实现计数脉冲功能? 将一个矩形脉冲序列送入单片机计算其脉冲数并根据脉冲数调节其增益 怎么实现呢? 主要是计算脉冲数 用的高速晶振是 8M 的 我先设置 TA 的 CCR2=10000 但是脉冲来之后每个高电平都要触发中断, 还有有每次中断为什么都要 1ms 到 1s 啊 小于这个不行吗? A12:1) 用定时器做的话, 也可以将定时器设置在捕获状态下, 如上升沿捕获, 当定时器捕获到上升沿时会产生一次中断, 此时定时器会记录当前计数器的值到 CCRX, 您可以把这个值放到指定的变量里, 两次中断的记数差值就是你实际计数个数, 这样你可以根据你计数个数调整增益, 另外如果要计算时间的话只要将个数乘以定时器时钟就可以 2) 用捕获的方式就不用设置 1mS~1S 啦 你可以把 8MHZ 当 TIMERA 时钟, 最小可以到 1/8uS, 另外由于 1MHZ 捕获信号与 8MHZ 比较接近, 如果采用两次捕获计算一个脉冲宽度精度不高, 可以多采几次, 如 100 次求得平均, 这样精度会高很多 Q13:MSP430F2101 和 MSP430F1101A 同时用了定时器 A 中断, 它们的头文件以及各引脚使用有什么不同? 各项是可兼容? 问题 : 产品 ( 吸尘器控制器 ) 本来用的是芯片 MSP430F1101A, 在使用过程中发现因电压不稳定会导致其死机 于是打算换成具有 BOR 功能的 MSP430F2101 当更换了头文件后, 把用于 MSP430F1101A 的代码烧录到 MSP430F2101 中, 发现无法进入定时器 A 中断程序 我怀疑 MSP430F2101 和 MSP430F1101A 的定时器 A 有所不同, 但经过阅读手册, 发现并没有什么不同, 使用了相同的晶振,MSP430F2101 和 MSP A 的引脚是兼容的 那问题是什么呢? A13:MSP430F2101 和 MSP430F1101A 的 PIN5 和 PIN6 引脚虽然是兼容的, 但是不完全兼容 : 前者的引脚除了可外接晶振外, 还可作为一般的 I/O 口和比较器输入端, 而后者仅作为外接晶振 在 MSP430F1101A 的代码中使用了语句 P1SEL=P2SEL=0x0; 把 PIN5 和 PIN6 的外围模块功能给禁止了, 最终造成 MCU 的晶振无法正常工作 而 TIMER_A 又是依赖于晶振工作的 所以导致了无法进入 TIMER_A 的中断子程序 Q14:timer 用 vlo 做 aclk 源如何进入 lpm3, 定时 1 分钟, 再退出 lpm3?1 分钟可以实现? A14: 硬件定时器结合软件计数器即可 Q16: 程序执行完成后, 进入 LPM3 模式, 大约过 3 秒钟之后, 又再进入正常模式, 即从 LPM3 退出, 再一次从头开始执行程序, 执行完成后, 再一次进入 LPM3 模式 如此往复循环下去 请问这个能不能通过定时器 A 来实现? A16: 能 1 在主程序中完成初始化后进入 LPM3 模式 2 在 LPM3 模式下,ACLK 必须工作, 并且 TA 选择 ACLK 为时钟源 3 当 TA 中断时,CPU 在进入 TA 中断服务前, 会自动唤醒 4 在 TA 中断服务中调用要被周期性执行的程序 5 从 TA 中断服务返回后,CPU 又会自动恢复到中断发生前的 LPM3 模式 ( 即, 主程序会永远停留在进入 LPM3 模式的那条语句中程序 ) 第 43 页共 68 页

44 Q17: 中断向量和中断标志寄存器的区别? A18:IICIFG 是中断标志, 指示是否产生中断 IICIV 是中断向量, 是中断代码的入口地址 MCU 首先查询是 否有中断标志产生, 如果有, 再查询中断向量, 转去执行中断服务程序 Q18: 单片机是 8M 的, 脉冲是 1M 的 请问单片机不能及时响应吧? 有什么好方法使它能及时响应? A18: 用高速信号计数 : 从 TACLK 或者 INCLK 脚输入, 从 TAR 中取数据 读取 TAR, 如 : int A; A=TAR; When the TACLK is asynchronous to the CPU clock, any read from TAR should occur while the timer is not operating or the results may be unpredicta e. Alternatively, the timer may be read multiple times while operating, and amajority vote taken in software to determine the correct reading. Any write to TAR will take effect immediately. Q19:BTCTL=BTDIV+BTIP1+BTIP0; 为什么中断了 125 毫秒? A21:32768/256/16 =8hz=125ms Q20: 捕获时, 上升沿捕获, 第 1 次捕获的数据 TAR 放到 CCR0! BH0 =CCR0; 第 2 次捕获的数据 TAR 放到 CCR0! BH1 =CCR0; 一个脉冲周期 =BH1-BH0; 但是如果第一次捕获时 CCR0 很大, 大到快要接近 0xffff;TAR 继续计数 TAR 溢出后! 是什么个情况? 是从 0 开始吗? 如果是从 0 开始, 第 2 次捕获的数据如果小于第一次的数据! 那该怎么办!? A20: 需要开捕获中断, 记录溢出次数, 当溢出次数只有一次时任然可以用 T=BH1-BH0, 这时刚好是补码 当溢出次数超过一次, 那待测脉冲周期 T=65536*( 溢出次数 -1)+ BH1-BH0 Q21: 设定 CCR0 作为 PWM 波形的周期 设定 CCR1 作为 PWM 波形的占空比改变 CCR1 来改变占空比我的问题是在什么情况下可以改变 CCR1; 任意时刻都可以吗? 还是想 TAR 那样! 必须在停止模式下才可以改变其值!?? 第 44 页共 68 页

Microsoft Word - MSP430 Launchpad 指导书.docx

Microsoft Word - MSP430 Launchpad 指导书.docx Contents 3... 9... 14 MSP430 LAUNCHPAD 指导书 3 第一部分第一个工程 New Project File > New > CCS Project Project name: ButtonLED Device>Family: MSP430 Variant: MSP430G2553 Project templates and examples : Empty Project

More information

学习MSP430单片机推荐参考书

学习MSP430单片机推荐参考书 MSP430 16 MSP430 C MSP430 C MSP430 FLASH 16 1 CPU 16 ALU 16 PC SP SR R4~R15 2 3 00-FFH 100-1FFH 4 5 1 2 51 24 27 6 1 2 3 4 5 6 4 12 SR SP SR CPU SR CPU C Z N GIE CPUOff CPU OscOff SCG0 SCG1 CPU EXIT SP

More information

(3)ADC12Ó¦Ó÷¶Àý

(3)ADC12Ó¦Ó÷¶Àý MSP430 单片机入门应用系列例程 V1.0 (3)ADC12 应用范例策划 : 微控设计网 DC 例 3.1 ADC12- 使用外部参考电压 简述 : 使用单通进行 ADC 转换, 电压参考源来自外部 ADC12 的 Vr+=VeREF+,Vr-=Avss; Vr+ Vr- 是 ADC12 模块的最大值和最小值的参考电压源 当输入模拟电压信号等于或高于 Vr+ 时,ADC12 转换满幅输出, 此时输出值为

More information

MSP430单片机简介

MSP430单片机简介 . September 14, 2012 . 1 简介 MSP430 单片机特点超低功耗 2 MSP430 时钟系统 3 MSP430 的端口 4 定时器看门狗定时器定时器 A 5 示例 MSP430 单片机特点. 简介 MSP430 单片机是美国德州仪器 (TI) 公司 1996 年开始推向市场的一种 16 位超低功耗 具有精简指令集的混合信号处理器 它将多个不同功能的模拟电路 数字电路模块和微处理器集成在了一个芯片上

More information

MSP430 MSP430 F149 MSP430F149 P USART MSP430F PWM 63#

MSP430 MSP430 F149 MSP430F149 P USART MSP430F PWM 63# MSP430 MSP430 0002 63# 710061 2003 7 63# 710061 1 MSP430 MSP430 F149 MSP430F149 P USART MSP430F149 485 232 PWM 63# 710061 2 MSP430 MSP430 16 FLASH,, 16, 64K,, 16 14 12 6 P USART DCO, 8M FLASH,, JTAG FET(FLASH

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

MSP430x11x1 T A -40 ~ SOWB 20 TSSOP (DW) (PW) MSP430F110IDW MSP430F110IPW MSP430F112IDW MSP430F112IPW + F11x 30kΩ

MSP430x11x1 T A -40 ~ SOWB 20 TSSOP (DW) (PW) MSP430F110IDW MSP430F110IPW MSP430F112IDW MSP430F112IPW + F11x 30kΩ MSP430F11x 1.8-3.6V 1.6uA@4KHz 200uA@1MHz 2.2V 5 ( 0.8uA RAM 0.1uA) 6us 16 RISC 125nS 32KHz / 16 A/D MSP430F110 1KB+128B 128B RAM MSP430F112 4KB+256B 256B RAM 20 (SOWB) 20 (TSSOP) MSP430 16 RISC CPU 16

More information

untitled

untitled 0571-89908088 89908091 www.lierda.com MSP430X11X2,MSP430X12X2 :1.8V-3.6V -:1MHz 2.2V 200 ua -:0.7 ua -(RAM ):0.1uA 6us 16, 125us -DCO -DCO - 32kHz - 16MHz - - 3 / 16 Timer_A 200ksps 10 A/D,,,. (USART0)(MSP430X12X2),

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

MSP430F KB+256B flash 10KB RAM 64 Quad Flat Pack QFP MSP430x1xx SLAU049 MSP430 MSP RISC CPU 16 DCO 6 MSP430x15x/16x/161x A/D 12 D/A

MSP430F KB+256B flash 10KB RAM 64 Quad Flat Pack QFP MSP430x1xx SLAU049 MSP430 MSP RISC CPU 16 DCO 6 MSP430x15x/16x/161x A/D 12 D/A MSP430x15x, MSP430x16x MSP430x161x 1.8V 3.6V 1MHz 2.2V 280 A 1.6 A RAM 0.1 A 6 S 16 125 DMA 12 A/D 12 D/A / 16 A / 16 B USART1 UART SPI USART0 UART SPI I 2 C / Bootstrap Loader MSP430F155: 16KB+256B flash

More information

Microsoft Word - MSP_430学习笔记.doc

Microsoft Word - MSP_430学习笔记.doc MSP430 学习笔记 (1) 这只是我在学习 TI 公司生产的 16 位超的功耗单片机 MSP430 的随笔, 希望能对其他朋友有所借鉴, 不对之处还请多指教 下面, 开始 430 之旅 讲解 430 的书现在也有很多了, 不过大多数都是详细说明底层硬件结构的, 看了不免有些空洞和枯燥, 我认为了解一个 MCU 的操作首先要对其基础特性有所了解, 然后再仔细研究各模块的功能 1. 首先你要知道 msp430

More information

目录

目录 ALTERA_CPLD... 3 11SY_03091... 3 12SY_03091...4....5 21 5 22...8 23..10 24..12 25..13..17 3 1EPM7128SLC.......17 3 2EPM7032SLC.......18 33HT46R47......19..20 41..20 42. 43..26..27 5151DEMO I/O...27 52A/D89C51...28

More information

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0 SH79F6431 1. SH79F6431 1T 8051 FLASH SH79F JET51 Keil µ vision JTAG 1.1. SH79F6431 LQFP64 1.2. (Target Board) SH79F6431 1 V 1.0 1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F6431 1 2 1 B. 1(VCC/GND)

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

bingdian001.com

bingdian001.com TSM12M TSM12 STM8L152C6, STM8L152R8 MSP430F5325 whym1987@126.com! /******************************************************************************* * : TSM12.c * : * : 2013/10/21 * : TSM12, STM8L f(sysclk)

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

ICD ICD ICD ICD ICD

ICD ICD ICD ICD ICD MPLAB ICD2 MPLAB ICD2 PIC MPLAB-IDE V6.0 ICD2 usb PC RS232 MPLAB IDE PC PC 2.0 5.5V LED EEDATA MPLAB ICD2 Microchip MPLAB-IDE v6.0 Windows 95/98 Windows NT Windows 2000 www.elc-mcu.com 1 ICD2...4 1.1 ICD2...4

More information

第 1 章 MSP430 快速入门 因为最近转入 MPS430 的技术支持工作, 所以现在开始学习 430 的开发 由于之前用过 51, 也用过 TI 的 ARM CORTEX-M3, 但是就是没有用过 TI 的 430, 所以将 我学习 430 的过程写出来, 给像我一样之前没有 430 开发经验

第 1 章 MSP430 快速入门 因为最近转入 MPS430 的技术支持工作, 所以现在开始学习 430 的开发 由于之前用过 51, 也用过 TI 的 ARM CORTEX-M3, 但是就是没有用过 TI 的 430, 所以将 我学习 430 的过程写出来, 给像我一样之前没有 430 开发经验 目录 第 1 章 MSP430 快速入门...1 1.1 准备工作... 1 1.2 MSP430 的时钟系统... 3 1.3 DCO 时钟校准...3 1.4 硬件最小系统...4 1.5 在 IAR 下新建工程...4 i/11 第 1 章 MSP430 快速入门 因为最近转入 MPS430 的技术支持工作, 所以现在开始学习 430 的开发 由于之前用过 51, 也用过 TI 的 ARM CORTEX-M3,

More information

电子技术基础 ( 第 版 ) 3. 图解单相桥式整流电路 ( 图 4-1-3) 电路名称电路原理图波形图 整流电路的工作原理 1. 单相半波整流电路 u 1 u u sin t a t 1 u 0 A B VD I A VD R B

电子技术基础 ( 第 版 ) 3. 图解单相桥式整流电路 ( 图 4-1-3) 电路名称电路原理图波形图 整流电路的工作原理 1. 单相半波整流电路 u 1 u u sin t a t 1 u 0 A B VD I A VD R B 直流稳压电源 第 4 章 4.1 整流电路及其应用 学习目标 1. 熟悉单相整流电路的组成, 了解整流电路的工作原理. 掌握单相整流电路的输出电压和电流的计算方法, 并能通过示波器观察整流电路输出电压的波形 3. 能从实际电路中识读整流电路, 通过估算, 能合理选用整流元器件 4.1.1 认识整流电路 1. 图解单相半波整流电路 ( 图 4-1-1) 电路名称电路原理图波形图 4-1-1. 图解单相全波整流电路

More information

MSP430X1XX 系列微控制器具有以下特征 结构框图 超低功耗结构体系 A 额定工作电流在 1MHz V 工作电压 C11X P11X 和 E11X 为 V 从备用模式唤醒为 6 S 丰富的中断能力减少了查询的需要灵活强大的处理能力源操作数有七种寻址模

MSP430X1XX 系列微控制器具有以下特征 结构框图 超低功耗结构体系 A 额定工作电流在 1MHz V 工作电压 C11X P11X 和 E11X 为 V 从备用模式唤醒为 6 S 丰富的中断能力减少了查询的需要灵活强大的处理能力源操作数有七种寻址模 新一代超低功耗 16 位单片机 TI MSP430 系列 美国 TI 公司的 MSP430 系列单片机可以分为以下几个系列 X1XX X3XX X4XX 等等 而且 在不断发展 从存储器角度 又可分为 ROM C 型 OTP P 型 EPROM E 型 Flash Memory F 型 系列的全部成员均为软件兼容 可以方便地在系列各型号间移植 MSP430 系列单片机 的 MCU 设计成适合各种应用的

More information

EK-STM32F

EK-STM32F STMEVKIT-STM32F10xx8 软 件 开 发 入 门 指 南 目 录 1 EWARM 安 装... 1 1.1 第 一 步 : 在 线 注 册... 1 1.2 第 二 步 : 下 载 软 件... 2 1.3 第 三 步 : 安 装 EWARM... 3 2 基 于 STMEVKIT-STM32F10xx8 的 示 例 代 码 运 行... 6 2.1 GPIO Demo... 6 2.2

More information

untitled

untitled MSP430F22X4 :1.8V-3.6V -:1MHz 2.2V 250 ua -:0.7 ua -(RAM ):0.1uA 1us 16, 65ns -16MHz ±1% - - 32kHz - 16M - - - 3 / 16 Timer_A 3 / 16 Timer_B 10 A/D 200ksps (USCI) - UART LIN -IrDA - SPI -I2C Bootstrap

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

目 录

目 录 1 Quick51...1 1.1 SmartSOPC Quick51...1 1.2 Quick51...1 1.3 Quick51...2 2 Keil C51 Quick51...4 2.1 Keil C51...4 2.2 Keil C51...4 2.3 1 Keil C51...4 2.4 Flash Magic...9 2.5 ISP...9 2.6...10 2.7 Keil C51...12

More information

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc

More information

控制器 EtherCAT EtherCAT EtherCAT 接下一个电机驱动模块 (X4) 接下一个电机驱动模块 (X5) X11 IN X4 IN X3 OUT X5 IN X6 OUT X2 X1 X4 IN X3 OUT X5 IN X6 OUT X2 X1 SYS STA DC BUS D

控制器 EtherCAT EtherCAT EtherCAT 接下一个电机驱动模块 (X4) 接下一个电机驱动模块 (X5) X11 IN X4 IN X3 OUT X5 IN X6 OUT X2 X1 X4 IN X3 OUT X5 IN X6 OUT X2 X1 SYS STA DC BUS D 控制器 thert thert thert 接下一个电机驱动模块 () 接下一个电机驱动模块 () 电机驱动模块 电机驱动模块 电源模块 接下一个电机驱动模块 () 接下一个电机驱动模块 () 接下一个电机驱动模块 () 接下一个电机驱动模块 () X 0 X 0 4 /RK /RK 注 注 制动电阻阻值 Ω Φ 80: 适用电机驱动模块型号 8-M-XXXX--XX Φ : 适用电机驱动模块型号

More information

C语言的应用.PDF

C语言的应用.PDF AVR C 9 1 AVR C IAR C, *.HEX, C,,! C, > 9.1 AVR C MCU,, AVR?! IAR AVR / IAR 32 ALU 1KBytes - 8MBytes (SPM ) 16 MBytes C C *var1, *var2; *var1++ = *--var2; AVR C 9 2 LD R16,-X ST Z+,R16 Auto (local

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe   Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L 1 SH88F516 8051 64K FLASH 1024 EEPROM SH88F516 JET51 S-Lab Keil µ vision ISP51 Keil µ vision ISP51 ISP51 PC RS232 MCU SH88F516 SH88F516 1.1 SH88F516 1.1 SH88F516 SH88Fxx: QFP44, DIP40 RAM Flash E2 ADC

More information

JLX

JLX PRODUCT:LCD MODULE. Model No.: JLX177-006 Product Type: 1.77 inch QVGA TFT Modoule. 产品规格书 晶联讯研发研发部 : Written By Checked By Approved By 客户名称 : 结构电子核准 地址 : 深圳市宝安区西乡宝安大道东华工业区 A3 栋 6 楼电话 :0755-29784961 Http://www.jlxlcd.cn

More information

Application Note Transient Voltage Suppressors (TVS) for 表 1 VISHAY 的 SM6T 系列的电特性 25 C 型号 击穿电压 器件标识码 V BR AT I T I T 测试电流 (ma) 关态电压 V RM 漏电流 I RM AT V

Application Note Transient Voltage Suppressors (TVS) for 表 1 VISHAY 的 SM6T 系列的电特性 25 C 型号 击穿电压 器件标识码 V BR AT I T I T 测试电流 (ma) 关态电压 V RM 漏电流 I RM AT V VISHAY GE NERAL SEMICONDUCTOR 瞬态电压抑制器 应用笔记 用于汽车电子保护的瞬态电压抑制器 (TVS) Soo Man (Sweetman) Kim, Vishay I) TVS 的重要参数 TVS 功率等级 TVS Vishay TVS 10 μs/1000 μs (Bellcore 1089) 1 TVS ESD 8 μs/20 μs 2 1 10 µs 10 µs/1000

More information

FM1935X智能非接触读写器芯片

FM1935X智能非接触读写器芯片 FM33A0xx MCU 2017. 05 2.0 1 (http://www.fmsh.com/) 2.0 2 ... 3 1... 4 1.1... 4 1.2... 4 1.3... 5 1.3.1... 5 1.3.2... 5 1.4... 8 1.4.1 LQFP100... 8 1.4.2 LQFP80... 9 1.4.3... 9 2... 15 2.1 LQFP100... 15

More information

第 54 卷第 期 年 9 月 电力电容器与无功补偿,-)* %& & "* + )& ".),-)* % )!/&"! " :9::; 4:34 4 * 99 9: 高频电流法检测电容器局部放电的抗干扰研究!"#$%!"# $%&' ()

第 54 卷第 期 年 9 月 电力电容器与无功补偿,-)* %& & * + )& .),-)* % )!/&!  :9::; 4:34 4 * 99 9: 高频电流法检测电容器局部放电的抗干扰研究!#$%!# $%&' () 第 54 卷第 期 9943994 9 年 9 月 电力电容器与无功补偿,-)* %& & "* + )& ".),-)* % )!/&"! 54 9943994 7 " 9 67 89:9::; 4:34 4 * 99 9: 高频电流法检测电容器局部放电的抗干扰研究!"#$%!"# $%&' ()*+,-./01 2 +.3-4 56789:;. ?.?@ABCDE. 3 FG?.HI 0JKLM

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD

HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD Leica MC170 HD Leica MC190 HD 5 6 7 8 11 12 13 14 16 HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD 22 23 24 26 Leica MC170 HD Leica MC190 HD ( ) 28

More information

Microsoft Word - SoftICE用户指南.doc

Microsoft Word - SoftICE用户指南.doc SST89E/V5xRD2 SST89E/V554RC SST89E/V564RD SST89E516RD2 单片机 SoftICE 用户指南 1 介绍 SoftICE 的英文是 Software In Circuit Emulator, 翻译成中文是 在电路上的软件模拟, 它是 SST 公司为方便 SST 用户使用 SST89E/V5xRD2 SST89E516RD2 SST89V516RD2 SST89E/V554RC

More information

12232A LED LED LED EL EL CCFL EL CCF

12232A LED LED LED EL EL CCFL EL CCF 12232A 0 50-20 +70-30 +85 LED LED LED EL EL CCFL EL CCF 122 x 32 1/32Duty 1/5Bias 6:00 STN( ), EL LED EL/100VAC 400HZ LED/4.2VDC 1 / VDD-VSS 0 6.5 V Ta=25 LCD VDD-V0 0 12.0 V V1 0 VDD V VDD-VSS - 4.75

More information

第5章:汇编语言程序设计

第5章:汇编语言程序设计 第 5 章 : 汇编语言程序设计 程 汇编语言指令格式 系统伪指令 存储器选择方式 常用子程序 1 汇编语言程序设计 PIC 指令系统 语言系统 指 CPU 编 器语言 器语言 器语言 设计 用 语言 设计 语言 汇编语言 2 汇编语言指令格式 汇编语言指令格式 ( 指令 ) label opcode operand comment 指令 用 存 指令 指令语 3 汇编语言指令格式 1 指令 用 指令

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony

Ioncube Php Encoder 8 3 Crack 4. llamaba octobre traslado General Search colony Ioncube Php Encoder 8 3 Crack 4 ->>->>->> DOWNLOAD 1 / 5 2 / 5 Press..the..General..Tools..category4Encrypt..and..protect..files..with..PHP..encoding,..encryption,..ob fuscation..and..licensing... 2016

More information

Microsoft Word - MAN2011A_CH_RTT.doc

Microsoft Word - MAN2011A_CH_RTT.doc 基于 SAM7X EK 和 IAR EWARM 文档编号 文档版本 Rev. A 文档摘要 基于 AT91SAM7X EK 开发板的代码解读,RTT 代码解读 关键词 AT91SAM7X256 SAM7X EK IAR EWARM J LINK RTT 创建日期 2010 06 08 创建人员 Cust126 审核人员 Robin 文档类型 公开发布 / 开发板配套文件 版权信息 Mcuzone 原创文档,

More information

Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15 LM361 LM361 Zlg

Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15 LM361 LM361 Zlg 1 1 a. 0.5V 5V 1Hz 1MHz b. 0.1% 2 : a. 0.5V 5V 1Hz 1MHz b. 0.1% (3) a. 0.5V 5V 100 s b. 1% 4 1 10 5 1MHz 6 1 2 1 0.1Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15

More information

Microsoft Word - Codewarrior IDE快速入门.docx

Microsoft Word - Codewarrior IDE快速入门.docx Codewarrior IDE 快速入门 本章我们以 Codewarrior HC08 V3.1 为例, 创建一个工程, 编辑源文件, 编译后进行调试 1 创建新项目 打开 codewarrior IDE 后, 出现如图 2.1 的界面 在 File 菜单中选择 New 图 2.1 codewarrior 在弹出的新窗口中, 选择 HC(S)08 New Project Wizard, 在 Project

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

untitled

untitled www.mcudriver.cn 1.1 / 1) WinAVR20070525 2) Source Insight 3) ISP 4) PonyProg ISP 5) USB 6) 1.2. MCU ATMEGA16 1.3. AVR8 1.4 LED0~LED7 1 1.5 #include // Program 1.1 LED.C #define uchar unsigned

More information

untitled

untitled EDM12864-GR 1 24 1. ----------------------------------------------------3 2. ----------------------------------------------------3 3. ----------------------------------------------------3 4. -------------------------------------------------------6

More information

<4D6963726F736F667420576F7264202D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63>

<4D6963726F736F667420576F7264202D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63> 臺 北 市 立 松 山 高 級 工 農 職 業 學 校 資 訊 科 專 題 製 作 報 告 題 目 : 反 彈 空 間 指 導 老 師 : 余 耀 銘 學 生 : 廖 國 銓 趙 信 瑋 中 華 民 國 102 年 5 月 摘 要 在 這 高 速 科 技 的 起 飛 下, 科 技 都 建 立 起 於 基 礎, 有 些 人 把 這 基 礎 轉 為 理 論, 教 給 大 眾 學 習 ; 有 些 人 利

More information

Microsoft Word - ¹ØÓÚMSP430flash×ÔÉý¼¶µÄ³¢ÊÔ.doc

Microsoft Word - ¹ØÓÚMSP430flash×ÔÉý¼¶µÄ³¢ÊÔ.doc MSP430 程序自升级的实现原理及过程 更新 : 01 作者 : 乔海坤微控论坛特约 DC 微控论坛版主 在过去有很多公司或个人对于 MSP430 单片机串口自升级技术都当一个技术机密 而 TI 公布的是汇编语言编写的例子, 在理解上也不便 而在网络上也很难得到公开例程, 这样使得部分 MSP430 用户想实现这个功能时极为艰难 为此, 微控论坛和大家分享如何利用 MSP430 单片机串口自升级的实现实验

More information

MSP430 Launchpad 指导书

MSP430 Launchpad 指导书 MSP430 Launchpad 指导书 徐珺 2013.12 Contents 第一部分第一个工程... 3 第二部分中断和计时器... 10 第三部分 UART... 16 MSP430 LAUNCHPAD 指导书 3 第一部分第一个工程 在这一部分中, 我们将介绍 CCS 集成开发环境的一些基本 使用方法, 并试着编写一个简单的小程序, 实现按键打开 LED TI 的 Launchpad 板本身是完整的

More information

器之 间 向一致时为正 相反时则为负 ③大量电荷的定向移动形成电 流 单个电荷的定向移动同样形成电流 3 电势与电势差 1 陈述概念 电场中某点处 电荷的电势能 E p 与电荷量 q Ep 的比值叫做该点处的电势 表达式为 V 电场中两点之间的 q 电势之差叫做电势差 表达式为 UAB V A VB 2 理解概念 电势差是电场中任意两点之间的电势之差 与参考点的选择无关 电势是反映电场能的性质的物理量

More information

DVK530/531扩展板

DVK530/531扩展板 DVK720 扩展板 驱动移植手册 2014.04.03 V1.0 版权声明 本手册所有权由深圳市微雪电子有限公司独家持有 未经本公司的书 面许可, 不得以任何方式或形式进行修改 分发或复制本文档的任何 部分, 否则一切后果由违者自负 版本更新记录 版本日期说明 V1.0 2014.04.03 初始发布 深圳市微雪电子有限公司 www.waveshare.net I 目录 版权声明... I 版本更新记录...

More information

Bus Hound 5

Bus Hound 5 Bus Hound 5.0 ( 1.0) 21IC 2007 7 BusHound perisoft PC hound Bus Hound 6.0 5.0 5.0 Bus Hound, IDE SCSI USB 1394 DVD Windows9X,WindowsMe,NT4.0,2000,2003,XP XP IRP Html ZIP SCSI sense USB Bus Hound 1 Bus

More information

1 TPIS TPIS 2 2

1 TPIS TPIS 2 2 1 1 TPIS TPIS 2 2 1. 2. 3. 4. 3 3 4 5 4 TPIS TPIS 6 5 350 Mark Coil F3/F6 350 M 150 M 25 M 7.12M 8 M F3 F6 F4 F7 F8 8M AA 7 350 28V 5V IC HCPL2731 0.5mA 6 8 (TPIS) TPIS 9 7 IC AT89C2051 AT89C2051 CMOS8

More information

Microsoft Word - ~ doc

Microsoft Word - ~ doc EEPROM 功能使用方法 1 适用产品 : 1.1 SM39R16A2/ SM39R12A2/ SM39R08A2 1.2 SM39R4051/ SM39R2051 1.3 SM39R04G1/ SM39R02G1 2 EEPROM 功能概述 : 2.1 使用 code flash 仿真为 Internal EEPROM, 在程序执行时, 可将 code flash 作为 data flash 储存数据使用

More information

ARM JTAG实时仿真器安装使用指南

ARM JTAG实时仿真器安装使用指南 ARM JTAG Version 1.31 2003. 11. 12 ARM JTAG ARM JTAG.3 ARM 2.1.4 2.2.4 ARM JTAG 3.1 18 3.2 18 3.2.1 Multi-ICE Server.18 3.2.2 ADS..21 ARM JTAG 4.1 Multi-ICE Server 33 4.1.1 Multi-ICE Server..... 33 4.1.2

More information

Microsoft Word - ha0013s.doc

Microsoft Word - ha0013s.doc 文件编码 :HA0013s 简介 : 本文介绍利用 8 位微控制器控制 DV16100NRB 液晶显示驱动器的方法 该 LCM 由内置的 Hitachi HD44780 进行驱动及控制 本文应用中, 着重考虑如何使微控制器产生正确的信号以符合 LCM 所需的时序 若要获得详细的时序及指令信息, 请查阅 LCM 厂商的资料 LCM 能以 4 位或 8 位模式工作 在 4 位模式下, 传送一个字符或一条指令需两个传输周期完成

More information

IDEO_HCD_0716

IDEO_HCD_0716 IDEO HCD Toolkit Tencent CDC ...? Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 1 2 1 2 3 4 5 6 7 8 9 10 3 1 150 2 150 1 1 1.1 1.1.1 1.2 1.2.1 1.2.2 1.2.3 1.3 1.3.1 1.3.2 1.4 1.4.1 CPU 1.4.2 I/O 1.4.3 I/O 1.5 1.5.1 CISC RISC 1.5.2 1.5.3 1.6 1.6.1 1.6.2 N 1.6.3 2 2.1 2.1.1 2.1.2 2.1.3

More information

USB解决方案.ppt

USB解决方案.ppt USB USB? RS232 USB USB HID U modem ADSL cable modem IrDA Silabs USB CP210x USB UART USB RS-232 USB MCU 15 USB 12 FLASH MCU 3 USB MCU USB MCU C8051F32x 10 ADC 1.5%, Vref CPU 25MIPS 8051 16KB Flash -AMUX

More information

MSP430µ¥Æ¬»úCÓïÑԺͻã±àÓïÑÔ»ìºÏ±à³Ì.doc

MSP430µ¥Æ¬»úCÓïÑԺͻã±àÓïÑÔ»ìºÏ±à³Ì.doc MSP430 单片机 C 语言和汇编语言混合编程 Mixing C and Assembler With the MSP430 刘玉宏 Liu,Yuhong 摘要 : 为了发挥 C 语言和汇编语言各自的优点, 二者需要相互调用函数 本文首先介绍了 MSP430 单片机的 C 语言函数的参数传递规则, 然后对 C 语言和汇编语言的混合编程进行了详细描述, 最后给出应用实例 关键字 :MSP430 单片机

More information

static unsigned int n250ms=o; n250ms++; if(n250ms==2){ // 延时 250ms 2=500ms n250ms=0; // 清零计数器 DelayTime&=~Delay500ms;// 复位标志位 WDTCTL=WDTHOLD+WDTPW; 1E

static unsigned int n250ms=o; n250ms++; if(n250ms==2){ // 延时 250ms 2=500ms n250ms=0; // 清零计数器 DelayTime&=~Delay500ms;// 复位标志位 WDTCTL=WDTHOLD+WDTPW; 1E MSP430C 延时程序设计 ( 为了阅读方便, 贴在下面 ) MSP430 是超低功耗 16 位单片机, 越来越受到电子工程师亲睐并得到广泛应用 C 程序直观, 可读性好, 易于移植和维护, 已被很多单片机编程人员所采用 MSP430 集成开发环境 ( 如 IAR Embedded Workbench 和 AQ430) 都集成了 C 编译器和 C 语言级调试器 C SPY 但是 C 语言难以实现精确延时,

More information

MSP430

MSP430 微控设计网 http://www.microcontrol.cn 微控技术论坛 http://bbs.microcontrol.cn 主题 : 基于模拟前端信号处理与控制技术的专业论坛, 网站. 基于模拟前端信号处理与控制技术的专业论坛 网站. MSP430F20xx 小巧 快速 灵活 Vincent Chan 德州仪器亚洲 MSP430 市场经理 vince-chan@ti.com 2005 Texas

More information

RO 电容检测 : 其原理就是测震荡电路频率, 关键参数在电容 ----C1 的充放电,R5 和 C1 构成一阶 RC 震荡电路 比较器的输入电压时随着输出电压变化而变化的, 而比较器负输入端电压是由 C1 充放电决定 通过计算可以发现, 电容电压在 1/3VCC-2/3VCC 之间反复变化 其震荡

RO 电容检测 : 其原理就是测震荡电路频率, 关键参数在电容 ----C1 的充放电,R5 和 C1 构成一阶 RC 震荡电路 比较器的输入电压时随着输出电压变化而变化的, 而比较器负输入端电压是由 C1 充放电决定 通过计算可以发现, 电容电压在 1/3VCC-2/3VCC 之间反复变化 其震荡 硬件检测电路原理 : Capitiactive Touch Pad 3 种常见电容检测电路介绍 :1.RC 检测, 基本趋于淘汰, 灵敏度低,2.RO 外部震荡, 外围需要一些电阻电容, 加大 PCB 体积,3.PinOsc with internal RO, 外部只需挂一个电容 RO 电容检测 : 其原理就是测震荡电路频率, 关键参数在电容 ----C1 的充放电,R5 和 C1 构成一阶 RC

More information

untitled

untitled EDM12832-08 : 25-1 : 116600 : (0411)7612956 7632020 7631122 : (0411)7612958 Model No.: Editor: LCD 1. ----------------------------------------------------3 2. ----------------------------------------------------3

More information

JTAG ICE PC JTAG ICE JTAG ISP... 5 IDE AVR STUDIO JTAGICE JTAGICE... 12

JTAG ICE PC JTAG ICE JTAG ISP... 5 IDE AVR STUDIO JTAGICE JTAGICE... 12 ... 3... 3... 3... 3... 4 1JTAG ICE PC... 4 2JTAG ICE... 4 3... 4 4... 4 5JTAG... 5 6ISP... 5 IDE... 6 1 AVR STUDIO... 6 2 JTAGICE... 6 3JTAGICE... 12 4.... 16 5.... 17 6. JTAG ICE... 19 ISP... 20 1PonyProg2000...

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

PCM-3386用户手册.doc

PCM-3386用户手册.doc PCM-3386 BBPC-4x86 10/100M PC/104 (Lanry technology Co. Ltd. Zhuhai) 38 1012836 (Address: Room 1012,Linhai Building,No. 38,west of Shihua Road,Zhuhai City,Guangdong Province,China) (post code)519015 (phone)0756-3366659

More information

DPJJX1.DOC

DPJJX1.DOC 8051 111 2K 1 2 3 ' ' 1 CPU RAM ROM / A/D D/A PC CPU 40 68 10 20 8 51 PIII 8051 2 MCS51 8051 8031 89C51 8051 8031 89C51? MCS51 INTEL INTEL 8031 8051 8751 8032 8052 8752 8051 8051 8051 MCS51 8031 8031

More information

TH2512/TH2512A Tonghui Electronics reserves the right to make changes at any time without notice in order to improve design and supply the best possib

TH2512/TH2512A Tonghui Electronics reserves the right to make changes at any time without notice in order to improve design and supply the best possib TH2512/TH2512A 2 3 SPECFICATIONS 5 6 6 8 Handler 9 10 11 12 14 17 17-1 - TH2512/TH2512A Tonghui Electronics reserves the right to make changes at any time without notice in order to improve design and

More information

Chapter #

Chapter # 第三章 TCP/IP 协议栈 本章目标 通过本章的学习, 您应该掌握以下内容 : 掌握 TCP/IP 分层模型 掌握 IP 协议原理 理解 OSI 和 TCP/IP 模型的区别和联系 TCP/IP 介绍 主机 主机 Internet TCP/IP 早期的协议族 全球范围 TCP/IP 协议栈 7 6 5 4 3 应用层表示层会话层传输层网络层 应用层 主机到主机层 Internet 层 2 1 数据链路层

More information

CHCN_8-14_K.indd

CHCN_8-14_K.indd 是德科技 三个理由让您选择深存储快响应示波器 应用指南 介绍 1. 更长的波形捕获时间 = / 1 1 Mpts 10 GSa/s 1 2 100 Mpts 10 1. = / 1 Mpts 10 GSa/s 1 ms 2. = / 100 Mpts 10 GSa/s 10 ms 3 12.5 Mpts 3 300 Kpts 3 3. 3 12.5 Mpts 3 300 Kpts? Agilent

More information

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD2 1...2 1.1...2 1.2...2 1.3 /...2 2 SoftICE...2 3 SoftICE MCU...2 4 SoftICE...3 4.1 SST BootLoader SOFTICE...3 4.2 SoftICE SST MCU...6 5 SoftICE...7

More information

2005.book

2005.book ...4... 4... 7...10... 10... 10... 10... 10... 11... 11 PCC... 11 TB170... 12 /... 12...13... 13 BP150 / BP151 / BP152 / BP155... 14...15... 15... 15... 15... 15... 15... 15... 16 PS465 / PS477... 17 PS692

More information

User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2

User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2 Terminal Mode No User User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2 Mon1 Cam-- Mon- Cam-- Prohibited M04 Mon1 Cam03 Mon1 Cam03

More information

练习 5: 冒泡程序目的 : 了解 C 语言的基础知识, 学会比较数据和排序要求 : 1 将 9,17,5,38,26 这五个数按从小到大的顺序排序 ; 2 将排序函数放在起始地址为 0XC000 的 FLASH 中 ; 3 将排好序的数组放到起始地址为 0x300 开始的 RAM 中 ; 4 程序

练习 5: 冒泡程序目的 : 了解 C 语言的基础知识, 学会比较数据和排序要求 : 1 将 9,17,5,38,26 这五个数按从小到大的顺序排序 ; 2 将排序函数放在起始地址为 0XC000 的 FLASH 中 ; 3 将排好序的数组放到起始地址为 0x300 开始的 RAM 中 ; 4 程序 第一周汇编指令系统培训作业 练习 1: 一个 16 进制的字与 BCD 码相互转换目的 : 了解不同进制之间的关系, 学习加 减等指令 要求 : 绘制流程图 参数使用通用寄存器 R11-R15 练习 2:1.2s 延时程序目的 : 了解寻址方式和指令执行周期, 学习跳转等指令 要求 : 绘制流程图 时钟采用 MCLK( 默认 1M), 延时 1.2s, 双层循环结构 练习 3:16 16 软件乘法程序目的

More information

TD

TD *TD-000212-05* 20- 应用实例 4 本例显示的是使用两个亚低 音扬声器和多个顶箱的双声 道 立体声 设置 除了各声道都增加了一个顶 箱外 也可以增加更多的顶 箱 本例和例 3 的情况一 致 声道 2 或 右声道 声道 1 或 左声道 要接到更多的顶箱 将最后 一个顶箱的全幅线路输出接 头处的线缆接到下一个顶箱 的全幅线路输入接头 在不 降低信号质量的情况下 最

More information

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1 21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414

More information

作业四:

作业四: 考试试题姓名 : 班级 : 分数 : 一 : 简述题 (1)MSP430F5xx 单片机的时钟系统中有哪几个时钟, 并分别讲述下它们的作用 (7) MSP430F5xx 单片机的时钟系统有 MCLK ACLK SMCLK MCLK 为主系统时钟, 主 要为 CPU 提供时钟 ACLK 为辅助系统时钟, 主要为低速的外围模块提供时钟 SMCLK 为子系统时钟, 主要为高速外围模块时钟 各种模块时钟的选择取决于系统对处理速度

More information

安全防范

安全防范 8989 Be Right TM Sigma 900 5/03 2003 ...1...4...8 1.1...8 1.2...9 1.2.1...9 1.2.2...12 1.3...12 1.4...12 1.4.1...12 1.4.2...13 1.4.3...14 1.5...15 1.6...16 1.7...16 1.7.1...17 1.7.2...17 1.7.3...18 1.7.4

More information

Andes Technology PPT Temp

Andes Technology PPT Temp 晶心科技線上技術研討會 AndesCore 便捷的全 C 嵌入式编程 晶心科技市場及技術服務部毛礼杰軟件經理 WWW.ANDESTECH.COM 大纲 系统初始化介绍 异常和中断说明 全 C 语法例子说明 总结 2 CPU 相关特性 1: 中断向量表 系统初始化 (1) 2: 系统寄存器 通常需要用 assembly( 汇编 / 组合 ) 语言来操作 AndesCore 全 C 嵌入式编程 C 扩展语法

More information

Microsoft PowerPoint - BECKHOFF技术_ADS通讯 [Compatibility Mode]

Microsoft PowerPoint - BECKHOFF技术_ADS通讯 [Compatibility Mode] 的架构 ADS 的通讯机制 ADS-Client Request -> Confirmation Indication

More information

SPHE8202R Design Guide Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provi

SPHE8202R Design Guide Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provi SPHE8202R Design Guide V2.0 JUN, 2007 19, Innovation First Road Science Park Hsin-Chu Taiwan 300 R.O.C. Tel: 886-3-578-6005 Fax: 886-3-578-4418 Web: www.sunplus.com SPHE8202R Design Guide Important Notice

More information

PIC16F F MPLAB 08 16F LED 15 LED

PIC16F F MPLAB 08 16F LED 15 LED PIC16F877 PIC16F877 03 16F877 05 06 MPLAB 08 16F877 13 LED 15 LED 17 20 24 2 PIC16F877 PIC16F877 DIP VDD VSS CLOCK CPU :,AND,OR,XOR ROM: CPU ROM RAM: CPU,CPU I/O:CPU, CPU,, 16F877 RAM 512 128 Bank Bank

More information

MSP430 串行异步通讯原理与实现 南京航空航天大学 魏小龙 本讲讲述串口功能与连接的实现 大多数 MSP430 芯片都有硬件异步通讯功能, 有一些器件有两个通讯端口, 也有少数没有 没有硬件串口的芯片可以实现软件 ( 模拟 ) 串口 下面表格为 430 系列芯片串口的情况 系列芯片 F11 系列

MSP430 串行异步通讯原理与实现 南京航空航天大学 魏小龙 本讲讲述串口功能与连接的实现 大多数 MSP430 芯片都有硬件异步通讯功能, 有一些器件有两个通讯端口, 也有少数没有 没有硬件串口的芯片可以实现软件 ( 模拟 ) 串口 下面表格为 430 系列芯片串口的情况 系列芯片 F11 系列 MSP430 串行异步通讯原理与实现 南京航空航天大学 魏小龙 本讲讲述串口功能与连接的实现 大多数 MSP430 芯片都有硬件异步通讯功能, 有一些器件有两个通讯端口, 也有少数没有 没有硬件串口的芯片可以实现软件 ( 模拟 ) 串口 下面表格为 430 系列芯片串口的情况 系列芯片 F11 系列 F12 系列 F13 系列 F14 系列 F15 系列 F16 系列 串口数量 0 1 1 2 1

More information

B1B1z_ch_print.pdf

B1B1z_ch_print.pdf Since 1992 PLC B1/B1z www.fatek.com SoC PLC CPU (HLS) / FLASHSRAM BGA PLC SoC CPU I/O PCB SoC B1/ B1z PLC 01 SoC B1/B1z PLC PLC B1/B1z PLC B1/B1z PLC FBs PLC FBs PLC 02 03 04 AC 5 C 40 C 5 C 55 C -25 C

More information

Tel: , Fax: STR-15 STR bps 2400bps 4800bps 9600bps STR : 500mW 2.ISM 433

Tel: , Fax: STR-15 STR bps 2400bps 4800bps 9600bps STR : 500mW 2.ISM 433 Tel:086-21-50807785, 50273226 Fax:086-21-50807785-807 http://www.sendbow.com TEL +86-021-50273226 50807785 13816690692 FAX:+86-021-50807785-807 167 E-mail:mailto:technology@sendbow.com web:http://www.sendbow.com

More information

2 12

2 12 SHENZHEN BRILLIANT CRYSTAL TECHNOLOGIC CO.,LTD. The specification for the following models Graphic LCM serial communication control board CB001 PROPOSED BY APPROVED Design Approved TEL:+86-755-29995238

More information

<4D6963726F736F667420576F7264202D2031303130315FB971BEF7BB50B971A46CB8735FB773A55FA5ABA5DFB7E7AADAB0AAAFC5A475B77EC2BEB77EBEC7AED55FA97EAE61C0F4B9D2B4BCBC7AB1B1A8EEA874B2CE2E646F63>

<4D6963726F736F667420576F7264202D2031303130315FB971BEF7BB50B971A46CB8735FB773A55FA5ABA5DFB7E7AADAB0AAAFC5A475B77EC2BEB77EBEC7AED55FA97EAE61C0F4B9D2B4BCBC7AB1B1A8EEA874B2CE2E646F63> 全 國 高 職 學 生 102 年 度 專 題 製 作 競 賽 報 告 書 居 家 環 境 智 慧 控 制 系 統 群 別 : 電 機 與 電 子 群 參 賽 作 品 名 稱 : 居 家 環 境 智 慧 控 制 系 統 關 鍵 詞 : 環 境 監 控 ZigBee 感 測 元 件 目 錄 壹 摘 要... 2 貳 研 究 動 機...2 參 研 究 方 法...3 一 研 究 器 材...3 二 研

More information

HP and Canon 单色通用芯片表 SCC 芯片 图片 HP 700 M712, 700 M725 CF214X (14X) 17.5 HP 5200 Q7516A U16-2CHIP SSS 846 芯片记号 (U16-2) Canon LBP-3500, LBP-3900, LBP-392

HP and Canon 单色通用芯片表 SCC 芯片 图片 HP 700 M712, 700 M725 CF214X (14X) 17.5 HP 5200 Q7516A U16-2CHIP SSS 846 芯片记号 (U16-2) Canon LBP-3500, LBP-3900, LBP-392 HP and Canon 单色通用芯片表在线访问我们的网站, 可以得到更多的信息 : www.scc-inc.com/chipcenter 全部开始都是专利通用芯片一个芯片, 多个不同型号的硒鼓 注意 : 当在这个文档上要寻找一个特殊的 或打印机的型号时, 在你的键盘上同时按 CTRL 键和 F 键就能搜索到 HP and Canon 单色通用芯片表 SCC 芯片 图片 HP 700 M712, 700

More information

PROTEUS VSM

PROTEUS  VSM Proteus VSM-- 1/1 PROTEUS VSM Proteus VSM ISIS Prospice VSM Proteus PROSPICE ARM7 PIC AVR HC11 8051 CPU LCD RS232 LED IAR Keil Hitech C make 6000 SPICE SPICE DLL SPICE3F5 14 FM PROTEUS PCB LED/LCD / 300

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

BackCover

BackCover CA-310 AC AC SIP/SOP IEC IEC 60950 IEC 61010-1 IEC 61010-1 CA AC 100 120V 200 240V AC CA AC AC AC AC AC AC AC AC AC AC AC AC CA AC AC CA AC AC AC 1 CA-310LED LED AC 100-120V 200-240V AC ±10% 2 2000 10

More information

SMART 7P 0 HR7P OTPMCU A/D I/O OTP ROM RAM HR7P HR7P HR7PPMB MSOP0 7+input HR7PPSC HR7PPSD SOP SOP6 +input input HR7PERB SSOP0 7

SMART 7P 0 HR7P OTPMCU A/D I/O OTP ROM RAM HR7P HR7P HR7PPMB MSOP0 7+input HR7PPSC HR7PPSD SOP SOP6 +input input HR7PERB SSOP0 7 上海东软载波微电子有限公司 SMART www.essemi.com SMART 7P 0 HR7P OTPMCU A/D I/O OTP ROM RAM HR7P HR7P HR7PPMB MSOP0 7+input 06 6 6 HR7PPSC HR7PPSD SOP SOP6 +input 06 6 +input 06 6 6 6 HR7PERB SSOP0 7+input 06 6 6 HR7PESC

More information

SDP 1 2 3 4 8 9 10 12 19

SDP 1 2 3 4 8 9 10 12 19 SDP SDP 1 2 3 4 8 9 10 12 19 SDP 2 SDP CANBUS 3m/s 48 1 2 N 3 4 5 6 7 8 9 EMC EMC ENS008212 EN618003 10 IP21 SDP 3 1 1 4 2 5 3 P24 103 104 N24 G24 P24 101 102 N24 G24 J2 J3 n P2 P1 P3 J2 J1 J3 1 P2 P1

More information

DR2010.doc

DR2010.doc DR/2010 HACH 11-8-96-2 HACH. DR/2010, / UL E79852 CSA C22.223 LR 58275 VDE GS 1015-92 FCC"A" 15 : AMADOR CORP, HACH. EN50 011/CISPR 11 "B" (EMI)/89/336/EEC/EMC: AMADOR CORP, HACH.. EN50 082-1( )/89/226/EEC

More information

<4D6963726F736F667420576F7264202D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6BFBCCAD4B4F3B8D92E646F63>

<4D6963726F736F667420576F7264202D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6BFBCCAD4B4F3B8D92E646F63> 嵌 入 式 系 统 设 计 师 考 试 大 纲 一 考 试 说 明 1 考 试 要 求 : (1) 掌 握 科 学 基 础 知 识 ; (2) 掌 握 嵌 入 式 系 统 的 硬 件 软 件 知 识 ; (3) 掌 握 嵌 入 式 系 统 分 析 的 方 法 ; (4) 掌 握 嵌 入 式 系 统 设 计 与 开 发 的 方 法 及 步 骤 ; (5) 掌 握 嵌 入 式 系 统 实 施 的 方 法

More information