社区
单片机/工控
帖子详情
为什么同一个程序单片机能运行出不同的效果
weixin_42025038
2018-04-23 01:30:05
用一个if(i小于5)语句使小车在A,B两点之间来回移动五次,五次循环小车为什么会跑到不同的方向,比如C点,D点等.
小白请大神赐教!!!
...全文
845
2
打赏
收藏
为什么同一个程序单片机能运行出不同的效果
用一个if(i小于5)语句使小车在A,B两点之间来回移动五次,五次循环小车为什么会跑到不同的方向,比如C点,D点等. 小白请大神赐教!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fly 100%
2018-04-23
打赏
举报
回复
电机控制的不准确吧
until_xx
2018-04-23
打赏
举报
回复
能看下具体代码
较为全面的基于PROTEUS仿真51
单片机
动态数码管课程设计(WORD版).doc
"学 号: "201200558 "
单片机
课程设计 "题 目 "动态数码管显示 " "学 院 "机电工程学院 " "专业班级 "电子信息工程12-1班 " "姓 名 " " "组 员 " " "指导教师 "张、王老师 " "2015 "年"5 "月"30 "日 " 课程设计量化评分标准 "指标 "最高分"评分要素 "评分 " "方案设计 "35 "方案选择合理,分析、设计正确,原理清 " " " " "楚,电路、
程序
流程图清晰,结构合理, " " " " "
程序
简洁、正确。 " " "调试 "15 "过程清晰,调试方案设计合理,测试点选 " " " " "择适当,
程序
编写正确,调试步骤清楚。 " " "结果 "20 "电路及
程序
运行
结果正确,达到预期
效果
" " " " "。 " " "设计报告 "20 "报告结构严谨,逻辑严密,论述层次清晰 " " " " ",语言流畅,表达准确,重点突
出
,报告 " " " " "完全符合规范化要求,用计算机打印成文 " " " " "。 " " "工作态度 "10 "工作态度认真,按时完成设计任务。 " " "总 评 成 绩 " " 目 录 一、概述 1 1.
单片机
简介 1 2. Proteus简介 2 3. 设计任务与要求 3 二、硬件设计 3 1.
单片机
最小系统设计 1 2. 数码管显示部分 4 3. 数码管驱动部分 5 三、软件设计 6 1. 仿真原理图 6 2. 仿真参数设置 6 3. 仿真结果 7 4.
程序
流程图 8 5.
程序
代码 .9 四、心得体会 ......11 五、参考文献 12 一、概述 1.
单片机
简介 如图1.1和图1.2分别为PDIP封装的AT89C52引脚图和实物图 图1.1 引脚图 图1.2 实物图 AT89C52是一个低电压,高性能CMOS 8位
单片机
,片内含8k bytes的可反复擦写的Flash只读
程序
存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术 生产,兼容标准MCS- 51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52
单片机
在电子行业中 有着广泛的应用。 AT89C52有40个引脚,32个外部双向输入/输
出
(I/O)端口,同时内含2个外中断口,3 个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理 器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。 AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应
不同
产品的需求。本课程 设计中使用的是PDIP封装的AT89C52
单片机
。 2.Proteus简介 如图1.3为Proteus7.0的工作界面图 图1.3 Proteus软件是英国Lab Center Electronics公司
出
版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司 )。它不仅具有其它EDA工具软件的仿真功能,还能仿真
单片机
及外围器件。它是目前比 较好的仿真
单片机
及外围器件的工具。虽然目前国内推广刚起步,但已受到
单片机
爱好 者、从事
单片机
教学的教师、致力于
单片机
开发应用的科技工作者的青睐。 Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到
单片机
与外 围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世 界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理 器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等 ,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方 面,它也支持IAR、Keil和MATLAB等多种编译器。 在学习
单片机
的过程中Proteus软件可以很好地代替开发板进行仿真实验,可以使学生比 较灵活多样化的学习
单片机
。 3.动态数码管设计任务与要求 课程设计功能:
单片机
采用定时器中断方法,制作一个简易时钟,要求用定时器实现精确定时,使用 数码管动态显示,完成时钟的秒走时显示。本课程设计是利用两位共阴极数码管显示数 字59,然后每隔1s顺序-1,减到00时,再循环从59-00. 课程设计内容: 1.掌握数码管的接口方法; 2.掌握数码管动态显示的原理; 3.掌握数码管动态显示的方法; 4.掌握
单片机
内部定时器的使用方法; 5.数码管动态显示的原理可参阅课本。 二、硬件设计 1.
单片机
最小系统设计 如图2.1所示 图2.1
单片机
的最小系统是指使
单片机
能
运行
程序
、正常工作的最简单电路系统
c语言编写
单片机
技巧
1. C语言和汇编语言在开发
单片机
时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、
程序
执行效率高。但是
不同
的CPU,其汇编语言可能有所差异,所以不易移植。 C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。 对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易
出
现ROM空间不够、堆栈溢
出
等问题。而且一些
单片机
厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什幺动作都很清楚,并且
程序
大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在
单片机
开发中,我们还是建议采用汇编语言比较好。 如果对
单片机
C语言有兴趣,HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK的
单片机
就有提供C编译器,可以到HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK的网站(www.holtek.com.cn )免费下载使用。 2. C或汇编语言可以用于
单片机
,C++能吗? 答:在
单片机
开发中,主要是汇编和C,没有用C++的。 3. 搞
单片机
开发,一定要会C吗? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、
程序
执行效率高。但是
不同
的CPU,其汇编语言可能有所差异,所以不易移植。 对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易
出
现ROM空间不够、堆栈溢
出
等问题。而且一些
单片机
厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什么动作都很清楚,并且
程序
大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在资源较少
单片机
开发中,我们还是建议采用汇编语言比较好。 而C语言是一种编译型
程序
设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制。C语言是一种结构化
程序
设计语言,它支持当前
程序
设计中广泛采用的由顶向下结构化
程序
设计技术。此外,C语言
程序
具有完善的模块
程序
结构,从而为软件开发中采用模块化
程序
设计方法提供了有力的保障。因此,使用C语言进行
程序
设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制
出
规模更大、性能更完备的系统。 综上所述,用C语言进行
单片机
程序
设计是
单片机
开发与应用的必然趋势。所以作为一个技术全面并涉足较大规模的软件系统开发的
单片机
开发人员最好能够掌握基本的C语言编程。 4. 当开发一个较复杂而又开发时间短的项目时,用C还是用汇编开发好? 答:对于复杂而开发时间紧的项目时,可以采用C语言,但前提是要求对该MCU系统的C语言和C编译器非常熟悉,特别要注意该C编译系统所能支持的数据类型和算法。虽然C语言是最普遍的一种高级语言,但
不同
的MCU厂家其C语言编译系统是有所差别的,特别是在一些特殊功能模块的操作上。如果对这些特性不了解,那调试起来就有的烦了,到头来可能还不如用汇编来的快。 5. 在教学中要用到8088和196芯片
单片机
教材,请问那里可以找到关于这方面的书或资料? 答:有关这方面的教材,大学里常用的一本是《IBM-PC汇编语言
程序
设计》清华大学
出
版社
出
版的,在网上以及书店都是可以找到的,另外网上还可以搜索到很多其他的教材如:《微机原理及汇编语言教程》(杨延双 张晓冬 等编著 )和《16/32 位微机原理、汇编语言及接口技术》(作者: 钟晓捷 陈涛 ,机械工业
出
版社
出
版)等,可以在较大型的科技书店里查找或者直接从网上订购。 6. 初学者到底是应该先学C还是汇编? 答:对于
单片机
的初学者来说,应该从汇编学起。因为汇编语言是最接近机器码的一种语言,可以加深初学者对
单片机
各个功能模块的了解,从而打好扎实的基础。 7. 我是一名武汉大学电子科技大3的学生,学了电子线路、数字逻辑、汇编和接口、C语言,但是总是感觉很迷茫,觉好象什么都不会。怎么办? 答:大学过程是一个理论过程,实践的机会比较少,往往会造成理论与实践相脱节,这是国内大学教育系统的通病,不过对于学生来说切不可好高骛远。一般从大三会开始接触到一些专业课程,电子相关专业会开设相关的
单片机
应用课程并且会有简单的实验项目,那么要充分把握实验课的机会,多多地实际上机操作练习。平时可以多看看相关的电子技术杂志网站,看看别人的开发经验,硬件设计方案以及他人的软件设计经验。有可能的话,还可以参加一些电子设计大赛,借此机会2--3个人合作做一个完整系统,会更有帮助。到了大四毕业设计阶段,也可以选择相关的课题作些实际案例增长经验。做什么事情都有个经验的积累过程,循序渐进。 8. 请问作为学生,如何学好
单片机
? 答:学习好
单片机
,最主要的是实践,在实践中增长经验。在校学生的话,实践机会的确会比较少,但是有机会的话,可以毕业实习选择相关的课题,这样就可以接触到实际的项目。而且如果
单片机
微机原理是一门主课的话,相信学校会安排比较多的实践上机机会。有能力的话,可以找一些相关兼职工作做做,会更有帮助。而且
单片机
开发应用需要软硬件结合,所以不能只满足于编程技巧如何完美,平时也要注意硬件知识的积累,多上上电子论坛网站,买一些相关杂志。可能的话,可以到ic37去买一些小零件,自己搭一个小系统让它工作起来。 HOTLEK的
单片机
是RISC结构的8位
单片机
,它可以广泛应用在家用电器、安全系统、掌上游戏等方面。大概来说可以分成I/O型
单片机
、LCD型
单片机
、A/D型
单片机
、A/D with LCD型
单片机
等等。这些
单片机
的中文资料我们都公开在HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK网站www.holtek.com.cn 。 HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK各类
单片机
的使用手册下载地址: http://www.holtek.com.cn/referanc/htk_book.htm HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK
单片机
软件/硬件应用范例下载地址: http://www.holtek.com.cn/tech/appnote/appnote.htm HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK
单片机
支持工具下载地址: http://www.holtek.com.cn/tech/tool/tool.htm 9. 如何才能才为
单片机
的高手啊? 答:要成为
单片机
高手,应该多实践,时常关注
单片机
的发展趋势;经常上一些相关网站,从那里可以找到许多有用的资料。 10. 女性是否适合
单片机
软件编程这个行业? 答:要根据自己的兴趣,配合自己对软件编程的耐性,男女皆适合这个行业。 11. Holtek的数据手册在哪里下载? 答:如果对Holtek的IC感兴趣的话,相应的数据手册可以到网站上http://www.holtek.com.cn/products/index.htm去选IC资料下载。 12. 8位机还能延续多久! 答:以现在MCU产品主力还是在8位领域,主要应用于汽车应用、消费性电子、电脑及PC周边、电信与通讯、办公室自动化、工业控制等六大市场,其中车用市场多在欧、美地区,而亚太地区则以消费性电子为主, 并以量大低单价为产品主流,目前16位MCU与8位产品,还有相当幅度的价差,新的应用领域也仍在开发,业界预计,至少在2005年前8位的MCU仍是MCU产品的主流。 13. 学习ARM及嵌入式系统是否比学习其它一般
单片机
更有使用前景?对于一个初学者应当具备哪些相关知识? 答:一般在8位
单片机
与ARM方面的嵌入式系统是有层次上的差别,ARM适用于系统复杂度较大的高级产品,如PDA、手机等应用。而8位
单片机
因架构简单,硬件资源相对较少,适用于一般的工业控制、消费性家电等等。对于一个
单片机
方面的软件编程初学者,应以HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK系列或8051等8位
单片机
来做入门练习。而初学者应当具备软件编程相关知识,
单片机
一般软件编程是以汇编语言为主,各家有各家的语法,但大都以RISC的MCU架构为主,其中 RISC (Reduced Instruction Set Computer) 代表MCU的所有指令。都是利用一些简单的指令组成的,简单的指令代表 MCU 的线路可以尽量做到最佳化,而提高执行速率。另外初学者要具备
单片机
I/O接口的应用知识,这在于周边应用电路及各种元器件的使用,须配合自己所学的电子学及电路学等。 14. 符合44PIN的80系列8位
单片机
的MCU有哪些? 答:符合44PIN的80系列8位
单片机
有Z8674312FSC、Z86E2112FSC、Z86E2116FSC。 15. 请介绍一下MCU的测试方法。 答: MCU从生产
出
来到封装
出
货的每个
不同
的阶段会有
不同
的测试方法,其中主要会有两种:中测和成测。 所谓中测即是WAFER的测试,它会包含产品的功能验证及AC、DC的测试。项目相当繁多,以HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK产品为例最主要的几项如下: 接续性测试:检测每一根I/OPIN内接的保护用二极管是否功能无误。 功能测试:以产品设计者所提供测试资料(TEST PATTERN)灌入IC,检查其结果是否与当时SIMULATION时状态一样。 STANDBY电流测试:测量IC处于HALT模式时即每一个接点(PAD)在1态0态或Z态保持不变时的漏电流是否符合最低之规格。 耗电测试:整颗IC的静态耗电与动态耗电。 输入电压测试:测量每个输入接脚的输入电压反应特性。 输
出
电压测试:测量每个输
出
接脚的输
出
电压位准。 相关频率特性(AC)测试,也是通过外灌一定频率,从I/O口来看输
出
是否与之匹配。 为了保证IC生产的长期且稳定品质,还会做产品的可靠性测试,这些测试包括ESD测试,LATCH UP测试,温度循环测试,高温贮存测试,湿度贮存测试等。 成测则是产品封装好后的测试,即PACKAGE测试。即是所有通过中测的产品封装后的测试,方法主要是机台自动测试,但测试项目仍与WAFER TEST相同。PACKAGE TEST的目的是在确定IC在封装过程中是否有任何损坏。 16. 能否利用单片来检测手机电池的充放电时间及充放电时的电压电流变化,并利用一个I/O端口使检测结果在电脑上显示
出
来? 答:目前市场上的各类智能充电器,大部分都采用MCU进行充电电流和电压的控制。至于要在电脑上显示,好象并不实用,可能只有在一些专门的电池检测仪器中才会用到;对于一般的手机用户来说,谁会在充电时还需要用一台电脑来做显示呢?要实现
单片机
与电脑的连接,最简单的方式就是采用串口通讯,但需要加一颗RS-232芯片。 17. 在ARM编程中又应当如何? 答:就以嵌入式系统观念为例,一般嵌入式处理器可以分为三类:嵌入式微处理器、嵌入式微控制器、嵌入式DSP(Digital Signal Processor)。 嵌入式微处理器就是和通用计算机的微处理器对应的CPU。在应用中,一般是将微处理器装配在专门设计的电路板上,在母板上只保留和嵌入式相关的功能即可,这样可以满足嵌入式系统体积小和功耗低的要求。目前的嵌入式处理器主要包括:PowerPC、Motorola 68000、ARM系列等等。 嵌入式微控制器又称为
单片机
,它将CPU、存储器(少量的RAM、ROM或两者都有)和其它接口I/O封装在同一片集成电路里。常见的有HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK MCU系列、Microchip MCU系列及8051等。 嵌入式DSP专门用来处理对离散时间信号进行极快的处理计算,提高编译效率和执行速度。在数字滤波、FFT(Fast Fourier Transform)、频谱分析、图像处理的分析等领域,DSP正在大量进入嵌入式市场。 18. MCU在射频控制时,MCU的时钟(晶振)、数据线会辐射基频或基频的倍频,被低噪放LNA放大后进入混频,
出
现带内的Spur,无法滤除。除了用layout、选择低辐射MCU的方法可以减少一些以外,还有什么别的方法? 答:在设计高频电路用电路板有许多注意事项,尤其是GHz等级的高频电路,更需要注意各电子组件pad与印刷pattern的长度对电路特性所造成的影响。最近几年高频电路与数位电路共享相同电路板,构成所谓的混载电路系统似乎有增加的趋势,类似如此的设计经常会造成数位电路动作时,高频电路却发生动作不稳定等现象,其中原因之一是数位电路产生的噪讯,影响高频电路正常动作所致。为了避免上述问题除了设法分割两电路block之外,设计电路板之前充分检讨设计构想,才是根本应有的手法,基本上设计高频电路用电路板必需掌握下列三大原则: 高质感。 不可取巧。 不可仓促抢时间。 以下是设计高频电路板的一些建议: (1)印刷pattern的长度会影响电路特性。尤其是传输速度为GHz高速数位电路的传输线路,通常会使用strip line,同时藉由调整配线长度补正传输延迟时间,其实这也意味着电子组件的设置位置对电路特性具有绝对性的影响。 (2)Ground作大better。铜箔面整体设置ground层,而连接via的better ground则是高频电路板与高速数位电路板共同的特征,此外高频电路板最忌讳使用幅宽细窄的印刷pattern描绘ground。 (2)电子组件的ground端子,以最短的长度与电路板的ground连接。具体方法是在电子组件的ground端子pad附近设置via,使电子组件能以最短的长度与电路板的ground连接。 (3)信号线作短配线设计。不可任意加大配线长度,尽量缩短配线长度。 (4)减少电路之间的结合。尤其是filter与amplifier输
出
入之间作电路分割非常重要,它相当于audio电路的cross talk对策。 (5)MCU回路Layout考量:震荡电路仅可能接近IC震荡脚位;震荡电路与VDD & VSS保持足够的距离;震荡频率大于1MHz时不需加 osc1 & osc2 电容;电源与地间要最短位置并尽量拉等宽与等距的线,于节点位置加上104/103/102等陶瓷电容。 19. Intel系列的96
单片机
80c196KB开发系统时,都有那些注意事项? 答:一个即时系统的软体由即时操作系统加上应用
程序
构成。应用
程序
与作业系统的接口通过系统调用来实现。用80C196KB-p.htm" target="_blank" title="80C196KB货源和PDF资料">80C196KB作业系统的MCU,只能用内部RAM作为TCB和所有系统记忆体(含各种控制表)以及各个任务的工作和资料单元。因此一定要注意以下几点: (1)对各个任务分配各自的堆迭区,该堆迭区既作为任务的工作单元,也作为任务控制块的保护单元。 (2)系统的任务控制块只存放各任务的堆迭指标,而任务的状态均存放于任务椎栈中。在一个任务退
出
运行
时,通过中断把它的状态进栈,然后把它的堆迭指标保存于系统的TCB中;再根据优先取
出
优先顺序最高的已就绪任务的堆迭指标SP映象值送入SP中;最后执行中断返回指令转去执行新任务。 (3)各任务的资料和工作单元尽量用堆迭实现,这样可以允许各任务使用
同一个
子
程序
。使用堆迭实现参数传递并作为工作单元,而不使用绝对地址的RAM,可实现可重入子
程序
。该子
程序
既可为各个任务所调用,也可实现递回调用。 20. 在demo板上采样电压时,不稳定,采样结果有波动,如何消除? 答:一般来说,仿真器都是工作在一个稳压的环境(通常为5V)。如果用仿真器的A/D时,要注意其A/D参考电压是由仿真器内部给
出
,还是需要外部提供。A/D转换需要一个连续的时钟周期,所以在仿真时不能用单步调试的方法,否则会造成A/D采样值不准。至于A/D采样不稳定,可以在A/D输入口加一电容,起到滤波作用;在软件处理时采用中值滤波的方法。 21. 在车载DVD系统中,如何设计电子防震系统? 答:在车载DVD系统,最好选择高档DVD机,因为高档DVD机都采用电子防震系统(ADVANCEDESP),当记忆缓冲区内的读数降低,先进的电子防震设计会以双速读数系统,做
出
比正常速度快两倍的读数速率,以减低噪声,即使连续震荡仍可避免跳线情况
出
现,现在就说说什幺叫电子防震。简单地说:电子防震就是一个信号的储存--释放过程,首先CD要先把信号进行提前读取,也就是我们见到机子的加速,再把信号储存在RAM中,而我们在开防震的时候所听到的就是经过RAM的声音,这样就是它的过程。当没有防震时是由于信号是1比1读取的,所以当受到冲击后,就会
出
现跳音。而当开了防震时,机子受到冲击后,由RAM释放
出
来的声音使音乐不停地播放,而与此同时,光头迅速进行复位检索,当检索到信号后立即补充,所以不会
出
现跳音。大概的情况就是这样。但是这样还没有满足用家的要求,由于这种的方法带来的时间短,通常只有3秒,所以跳音的机会还是蛮高,如果增大RAM又带来造价的增高因为RAM这东西价格较贵,尤其是质量好的。 22. 在电子防震技术中,有那些IC或器件可供选择? 答:在电子防震技术中,最重要的技术之一要数是RAM技术,而一直以来都是因为它的成本问题,所以防震时间都一直不能增加,也就是说RAM本身就有限制,RAM的容量越大,造价就越高。而许多厂家就如何在RAM的限制里得到最大限度的记忆时间展开了开发研究。 23. 如何进行编程可以减少
程序
的bug? 答:在此提供一些建议,因系统中实际
运行
的参数都是有范围的。系统
运行
中要考虑的超范围管理参数有: 物理参数。这些参数主要是系统的输入参数,它包括激励参数、采集处理中的
运行
参数和处理结束的结果参数。合理设定这些边界,将超
出
边界的参数都视为非正常激励或非正常回应进行
出
错处理。 资源参数。这些参数主要是系统中的电路、器件、功能单元的资源,如记忆体容量、存储单元长度、堆迭深度。在
程序
设计中,对资源参数不允许超范围使用。 应用参数。这些应用参数常表现为一些
单片机
、功能单元的应用条件。如E2PROM的擦写次数与资料存储时间等应用参数界限。 过程参数。指系统
运行
中的有序变化的参数。 在上述参数群对一
程序
编写者而言,须养成良好习惯,在
程序
的开头,有顺序的用自己喜欢文字参数对应列表来替代,然后用自己定义的文字参数来编写
程序
,这样在做
程序
的修改及维护时只在
程序
的开头做变动即可,不用修改到
程序
段,才比较容易且不会
出
错。 24. 有人认为
单片机
将被ARM等系列结构的嵌入式系统所取代。
单片机
的生命期还有多长? 答:因为8位
单片机
与嵌入式系统的ARM在功能结构和单价的差异,故应用层次上就有很大的
不同
。 ARM适用于系统复杂度较大的高级产品,如PDA、手机等应用。 而8位
单片机
因架构简单,硬件资源相对较少,适用于一般的工业控制,消费性家电……等等。评估
单片机
近期是否会给ARM取代,要观察两个因素: 芯片成本 因ARM的工作频率较高,电路较庞大,所需的芯片制造工艺要求在0。25U以上,成本较高。8位
单片机
工作频率相对较低,电路较小,所需的芯片制造工艺在0。5U 即可,成本较低。 功能定位 ARM的功能较
单片机
强,但两者定位
不同
。就如现阶段不会有人用ARM去作一个简单的工业定时开关。当然,如果两者单价相同也无不可,但现实是有很大的单价差距。 至于将来,因芯片制造成本会不断下降,上述的成本差异影响愈来愈少!但我估计在往后5年
单片机
仍有价格优势,仍能存活!但ARM是否会精简架构,降低成本,抢夺低阶市场?我想可能性不大,ARM应该会向上发展。同样,
单片机
也只能向上发展,如16位,高功能……等。 原因就是因为芯片制造工艺进步太快。压迫芯片设计往高集成发展。 25. 在
单片机
C编成时,如何才能使生成的代码具有和汇编一样的效率? 答:如果是使用C语言编程时,不太可能生成的代码具有1:1和汇编一样的效率。 C语言命令要被硬件识别并执行,必须通过编译器编译。编译器分为前端、中端、后端。前端与各种计算机语言写的
程序
打交道,后端与处理器的基本指令集接轨。所以如果使用C编程时,要达到最高的效率,最好能够很了解所使用的C编译器。先试验一下每条C语言编译以后对应的汇编语言的语句行数,这样就可以很明确的知道效率。在今后编程的时候,使用编译效率最高的语句,这样就能确保
单片机
C编程的时候同样的功能
不同
的C
程序
,编译效率最高。但是各家的C编译器都会有一定的差异,优秀的嵌入式系统C编译器代码长度和执行时间仅比以汇编语言编写的同样功能程度长5-20%,所以
不同
厂家的C编译器的编译效率也会有所
不同
。 26. ARM
单片机
和哪种内核的
单片机
比较接近? 答:严格的说,ARM不是
单片机
,是一个嵌入式的实时操作系统。ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。所以市场上像Intel、IBM、LG半导体、NEC、SONY、菲利浦和国半这样的大公司都有ARM系列,现在不存在什幺ARM
单片机
和哪种内核的
单片机
比较接近的问题。而且由于厂家购买内核后会根据自己芯片应用方向的
不同
,自行添加
不同
的外挂功能模块,所以,同样内核的芯片其提供的功能是
不同
的。 27. 从51转到ARM会有困难吗? 答:从51转到ARM,其实编程之类的原理都是一样的,但是要注意的是ARM是一个RISC的架构,在ARM的应用开放源代码的
程序
很多,要想提高自己,就要多看别人的
程序
,linux,uc/os-II等等这些都是很好的源码。 28. 我学过MCS51
单片机
教材,很有兴趣,但缺乏实践经验,手头没有任何道具可供演练,资金又有限,请问该怎么办? 答:在没有任何条件进行实践时,如果真的有兴趣,可以下载一些具有软件仿真功能仿真软件进行一些编程,像一些做得比较好的51仿真软件应该具有这种功能。HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK的仿真软件HT-IDE3000也具有相应的功能,同时它还具有LCD软件仿真,周边电路的软件仿真。有兴趣的话,也可以去免费下载使用:http://www.holtek.com.cn/tech/tool/ide.htm。同时可以到一些ic37去购买一些简单器件自己练习搭一下电路以加强硬件方面的知识。 29. 如果已经有了针对某MCU的C实现的某个算法,保持框架不变,对核心的部分用汇编优化,有没有一些比较通用的原则? 答:每个人的编程都有自己的风格与习惯,如果要利用别人的
程序
,在其中修修改改,如果他的
程序
并没有很好的模块化的话,建议最好不要这幺做,否则本来预期达到事倍功半,说不定反而事半功倍了。要参考他人的
程序
当然可以,但是首要是要看懂并理解他人
程序
的算法精髓,而不是在他的基础上打补丁。而关于算法方面的优化,可以购买一些数据结构的书籍,上面有比较详细的说明。 30. 如果准备估计一个算法的MIPS,有什么好的途径? 答:算法的
运行
时间是指一个算法在计算机上运算所花费的时间。它大致等于计算机执行简单操作(如赋值操作,比较操作等)所需要的时间与算法中进行简单操作次数的乘积。通常把算法中包含简单操作次数的多少叫做算法的时间复杂性。它是一个算法
运行
时间的相对量度,一般用数量级的形式给
出
。度量一个
程序
的执行时间通常有两种方法: 一种是事后统计的方法。因为很多计算机内部都有计时功能,
不同
算法的
程序
可通过一组或若干组相同的统计数据以分辨优劣。但这种方法有两个缺陷:一是必须先
运行
依据算法编制的
程序
;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素,有时容易掩盖算法本身的优劣。因此人们常常采用另一种事前分析估算的方法。 一种是事前分析估算的方法。一个
程序
在计算机上
运行
时所消耗的时间取决于下列因素: (1)依据的算法选用何种策略; (2)问题的规模。例如求100以内还是1000以内的素数; (3)书写
程序
的语言。对于
同一个
算法,实现语言的级别越高,执行效率就越低; (4)编译
程序
所产生的机器代码的质量。这个跟编译器有关; (5)机器执行指令的速度。 显然,
同一个
算法用
不同
的语言实现,或者用
不同
的编译
程序
进行编译,或者在
不同
的计算机上
运行
时,效率均不相同。这表明使用绝对的时间单位衡量算法的效率是不合适的。撇开这些与计算机硬件、软件有关的因素,可以认为一个特定算法"
运行
工作量"的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。 一个算法是由控制结构(顺序、分支和循环三种)和原操作(指固有数据类型的操作)构成的,则算法时间取决于两者的综合
效果
。为了便于比较同一问题的
不同
算法,通常的做法是,从算法中选取一种对于所研究的问题(或算法类型)来说是基本运算的原操作,以该基本操作重复执行的次数作为算法的时间度量。 算法的MIPS有专门的一门学问,可以去好好参考相关的数据结构书籍。 31. 遥控的编解码思路和设计流程是怎样的? 答:一般来说完整的遥控码分为头码、地址码、数据码和校验码四个组成部分。头码根据
不同
的厂家各不相同,地址码和数据码都由逻辑“1”和逻辑“0”组成。编码的设计目的,就是按照编码规则发送
不同
的码值。我们最常见的码型有SONY、松下、NEC等厂家型号。遥控编码芯片最常用的是在空调、DVD、车库门等遥控器上。 设计编码
程序
可以分为三个部分。 第一部分是了解码型的特性。遥控码的头码和地址码(也称为客户码)是固定不变的,数据码和校验码根据
不同
的键值而改变。 第二部分是计算发码时间。遥控码大部分都是由逻辑“1”和逻辑“0”组成,也就是由一串固定占空比、固定周期的方波所组成。通常这些方波的周期是毫秒甚至微秒等级,需要在时间上计算的比较精确。所以选择发码
单片机
型号的时候,就要考虑到
单片机
的
运行
速度是不是够快,以及
程序
运行
时间够不够。 第三部分就是
程序
的编写。选定
单片机
型号之后,开始设计
程序
流程。一般来说我们使用I/O口就可以做发码的输
出
端口。发码
程序
一般由几个子
程序
组成,头码子
程序
、逻辑1子
程序
,逻辑0子
程序
以及校验码的算法子
程序
。一旦我们得到要发送码的命令后,首先调用头码子
程序
,然后根据客户码和键值调用逻辑1子
程序
或者逻辑0子
程序
,最后调用校验码算法子
程序
输
出
校验码。 HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK公司的HT48CA0/HT48RA0、HT48CA3/HT48RA3和HT48CA6是专为遥控器设计的
单片机
,它们具有专门红外输
出
口,可以实现绝大部分发码的要求。 设计解码
程序
也可以分为三部分。 第一部分了解编码波形特性。从分析编码的高、低脉冲宽度入手,了解逻辑“1”和逻辑“0”的波形占空比、周期。了解头码的特性。 第二部分确定接收方式。一般我们可以用I/O口查询方法或者INT口中断响应方法来接收编码。这两者的区别是I/O口查询方式比较耗费
单片机
的
运行
时间资源,需要不断的去侦测I/O的电平变化,以免漏掉有效的码值;而INT口中断接收方式则比较节省资源,当外部有电平变化时,
单片机
才需要去处理,不需要时刻进行侦测。但是INT口中断接收方式不能辨别相同周期
不同
占空比的波形特性,当编码所携带的逻辑“1”和逻辑“0”具有这种特性时,就无法通过INT口中断接收方式来辨别了,因为INT中断只是在上升沿或者下降沿的时候才触发。 第三部分将接收的码值存储并分析执行。根据判断高低电平的宽度(定时器或者延时),可以得到码值,也就是我们所说的解码。一般我们连续收到3个相同的完整码值,就确认此码的确被发
出
,并接收成功。当解码结束,根据码值我们可以判断
出
是哪个按键被按下,由此去执行相对的按键功能。 HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK公司的HT48以及HT49(带LCD)系列
单片机
,都可以符合大多数解码的任务。 32. 在学习
单片机
的过程中,如何理解预分频,12时钟模式(6时钟模型)等概念? 答:预分频器的英文是prescaler。它就是将输入的频率信号分频,然后再输
出
。HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK公司有一款最基本的8位I/O型
单片机
HT48R05A-1,我们就以这款
单片机
为例说明。HT48R05A-1有一个8位向上计数的定时器Counter。系统时钟Fsys(4MHz)进入八阶预分频器(8-stage Prescaler)进行分频,再进入定时计数器Counter计数。根据软件设置,预分频器可以将Fsys进行2的n次方分频(n=1~8)。举例来说,如果软件设置为预分频器2分频,那幺预分频器输
出
的频率就是Fsys/2=2MHz,这个2MHz信号再进入定时计数器Counter。 如果需要HT48R05A-1或者其它各类HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK
单片机
的详细资料,可以在如下地址下载:http://www.holtek.com.cn/referanc/htk_book.htm 。 12时钟模式(6时钟模型)应该就是在MCS51系列中,12个系统时钟为一个机器周期,2个系统时钟为一个状态,即一个机器周期有6个状态。 33. A/D、D/A的采样速率与其它
单片机
相比有什么优势? 答:HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK A/D Tyep MCU内嵌逐位逼近的A/D转换电路,精度有8bit/9bit/10bit,A/D转换时间最快为76us。 至于D/A,一般是指PWM输
出
,HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK A/D Type MCU都带有8bit的PWM输
出
,但HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK PWM的特点是其输
出
频率由系统频率决定(既系统频率选定后,PWM频率也就定了),其占空比通过对[PWM]寄存器赋值进行控制,不需要占用定时/计数器资源。 34. 采用AT89S51时,
出
现了按了复位按钮,RAM中的数据被修改了。这是怎么回事?注:数据放在特殊寄存器之外。 答:如果是RESET脚的复位按钮:一般MCU的RESET复位,其特殊寄存器会被重新初始化,而通用寄存器的值保持不变。 如果复位按钮是电源复位:那就是MCU的上电复位,其特殊寄存器会被初始化,而通用寄存器的值是随机数。 35. 将P2.7用来驱动一个NPN三极管,中间串接了一个1K的电阻。问题是:当我尝试向P2.7写’1’时,发现管脚只能输
出
大约0.5V的一个电平。这个电路的使用得妥当么?如何正确的使用IO功能? 答:是在仿真时遇到的问题,还是烧录芯片后遇到的问题? 可以先将P2.7的外部电路断开,测量输
出
电压是否正常。如果断开后输
出
电压正常,那就说明P2.7的驱动能力不够,不能驱动NPN三极管,应该改用PNP三极管(一般在MCU应用中,都采用PNP方式驱动)。如果断开后输
出
电压还不正常,那有可能是仿真器(或芯片)已经损坏。 36. 在做充电管理的时候,提高pwm的频率往往以牺牲精度为代价,如果用的AT90S4433(avr)、78P458(elan)频率分别做到16kHz(8bit)和32kHz(8bit),而希望做到的是100kHz(8bit以上),诸如atiny15那样。怎么办? 答:你所说的PWM是通过定时/计数器来控制其频率和占空比的,所以要提高频率,必然会降低精度。如果要提高PWM的频率,只能通过提高系统振荡频率来解决。 37. 汽车电子用的
单片机
是8位多,还是32位?如何看待
单片机
在汽车ic37中的前景? 答:现今汽车制造也是一个进步很快的工业,特别是电子应用于汽车上,令多种新功能得以实现。 总的来说,汽车电子应用分三部份。 汽车发动机控制:限速控制,涡轮增压,燃料喷注控制等。 汽车舒适装置:遥控防盗系统,自动空调系统,影音播放系统,卫星导航系统等。 汽车操控和制动:刹车防抱死系统(ABS),循迹系统(TCS),防滑系统(ASR),电子稳定系统(ESP)等。 汽车上的各系统繁多,且日新月异,故利用何种
单片机
是依各系统规格,要求不一,但有一样可肯定是该
单片机
要符工业规格,才能忍受汽车应用的恶劣环境,高温,电源干扰,可靠度要求。
不同
档次的汽车其功能配置相对亦有差别,故8位
单片机
在较低阶的系统如机械控制,遥控防盗等应该还有空间,但高阶的系统如影音、导航及将来的无人驾驶,就非一般
单片机
能实现。 因汽车工业现阶段由欧美日数个大集团所把持,相关的汽车电子配件各集团会挑选
单片机
大厂合作, 故汽车内置的电子系统亦由
单片机
大厂把持,市场只剩外置系统如遥控防盗,影音导航供小厂开发。 38. 在使用三星的s3c72n4时,觉得它的time/counter不够用。现在要同时用到3个counter,该怎么办? 答:您是需要三个外部counter还是需要三个定时器?如果是三个定时器标志的话,可以取这三个定时最基本的时基作为timer的基础计数,然后以这个时基来计算这三个需要的计数标志的flag,在
程序
中只需要查询flag是否到,再采取动作。 如果要3个外部脉冲计数的话,这个有一定的难度,如果外部脉冲不是很频繁,可以考虑通过外部中断进行,但是这个方法必须是外部脉冲的频率与MCU执行速度有一定的数量级差,否则mcu可能无法处理其它
程序
,一直在处理外部中断。 39. 在芯片集成技术日益进步的今天,
单片机
的集成技术发展也很迅速,在传统的40引脚的基础上,飞利浦公司推
出
20引脚的
单片机
系列,使很多的引脚可以复用,这种复用技术的使用在实际应用中会不会影响其功能的执行? 答:现在有很多品牌的
单片机
都有引脚复用功能,不止飞利浦一家,应该说这个方式前几年就已经有了。在实际应用中不会影响其功能的执行,但是要注意的是,有的MCU如果采用复用引脚的话,该引脚会有一些应用上的限制,这在相应的datasheet里面都会有描述,所以在系统规划的时候都要予以注意。 40. Delta-Sigma软件测量方式,是什么概念? 答:Delta-Sigma原理一般应用在ADC应用中。具体来说,Delta-Sigma ADC的工作原理是由差动器、积分器和比较器构成调制器,它们一起构成一个反馈环路。调制器以大大高于模拟输入信号带宽的速率
运行
,以便提供过采样。模拟输入与反馈信号(误差信号)进行差动 (delta)比较。该比较产生的差动输
出
馈送到积分器(sigma)中。然后将积分器的输
出
馈送到比较器中。比较器的输
出
同时将反馈信号(误差信号)传送到差动器,而自身被馈送到数字滤波器中。这种反馈环路的目的是使反馈信号(误差信号)趋于零。比较器输
出
的结果就是1/0 流。该流如果1密度较高,则意味着模拟输入电压较高;反之,0密度较高,则意味着模拟输入电压较低。接着将1/0流馈送到数字滤波器中,该滤波器通过过采样与抽样,将1/0流从高速率、低精度位流转换成低速率、高精度数字输
出
。 简而言之,Delta就是差动,Sigma就是积分的意思。Delta-Sigma软件测试,我的理解应该是通过软件模拟差动积分的过程。具体来说,就是侦测外部输入的电压(或者电流)信号变化,然后通过软件积分运算,得
出
外部信号随时间变化的基本状况。 41. 通常采用什么方法来测试
单片机
系统的可靠性? 答:
单片机
系统可以分为软件和硬件两个方面,我们要保证
单片机
系统可靠性就必须从这两方面入手。 首先在设计
单片机
系统时,就应该充分考虑到外部的各种各样可能干扰,尽量利用
单片机
提供的一切手段去割断或者解决不良外部干扰造成的影响。我们以HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK最基本的I/O
单片机
HT48R05A-1为例,它内部提供了看门狗定时器WDT防止
单片机
内部
程序
乱跑
出
错;提供了低电压复位系统LVR,当电压低于某个允许值时,
单片机
会自动RESET防止芯片被锁死;HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK也提供了最佳的外围电路连接方案,最大可能的避免外部干扰对芯片的影响。 当一个
单片机
系统设计完成,对于
不同
的
单片机
系统产品会有
不同
的测试项目和方法,但是有一些是必须测试的: 测试
单片机
软件功能的完善性。 这是针对所有
单片机
系统功能的测试,测试软件是否写的正确完整。 上电掉电测试。在使用中用户必然会遇到上电和掉电的情况,可以进行多次开关电源,测试
单片机
系统的可靠性。 老化测试。测试长时间工作情况下,
单片机
系统的可靠性。必要的话可以放置在高温,高压以及强电磁干扰的环境下测试。 ESD和EFT等测试。可以使用各种干扰模拟器来测试
单片机
系统的可靠性。例如使用静电模拟器测试
单片机
系统的抗静电ESD能力;使用突波杂讯模拟器进行快速脉冲抗干扰EFT测试等等。 当然如果没有此类条件,可以模拟人为使用中,可能发生的破坏情况。例如用人体或者衣服织物故意摩擦
单片机
系统的接触端口,由此测试抗静电的能力。用大功率电钻靠近
单片机
系统工作,由此测试抗电磁干扰能力等。 42. 在开发
单片机
的系统时,具体有那些是衡量系统的稳定性的标准? 答:从工业的角度来看,衡量系统稳定性的标准有很多,也针对
不同
的产品标准
不同
。下面我们大概介绍
单片机
系统最常用的标准。 电试验(ESD) 参考标准: IEC 61000-4-2 本试验目的为测试试件承受直接来自操作者及相对对象所产生之静电放电效应的程度。 空间辐射耐受试验(RS) 参考标准:IEC 61000-4-3 本试验为验证试件对射频产生器透过空间散射之噪声耐受程度。 测试频率:80 MHz~1000 MHz 快速脉冲抗扰测试(EFT/B) 参考标准:IEC 61000-4-4 本试验目的为验证试件之电源线,信号线(控制线)遭受重复
出
现之快速瞬时丛讯时之耐受程度。 雷击试验(Surge) 参考标准 : IEC 61000-4-5 本试验为针对试件在操作状态下,承受对于开关或雷击瞬时之过电压/电流产生突波之耐受程度。 传导抗扰耐受性(CS) 参考标准:IEC 61000-4-6 本试验为验证试件对射频产生器透过电源线传导之噪声耐受程度。 测试频率范围:150 kHz~80 MHz Impulse 脉冲经由耦合注入电源线或控制线所作的杂抗扰性试验。 43. 在设计软体时,大多
单片机
都设有看门狗,需要在软体适当的位置去喂狗,以防止软体复位和软体进入死循环,如何适当的喂狗,即如何精确判定软体的
运行
时间? 答:大多数
单片机
都有看门狗定时器功能(WDT,Watch Dog Timer)以避免
程序
跑错。HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK有一款基本I/O型
单片机
--HT48R05A-1,我们就以它为例做个说明吧。 首先了解一下WDT的基本结构,它其实是一个定时器,所谓的喂狗是指将此定时器清零。喂狗分为软件和硬件两种方法。软件喂狗就是用指令来清除WDT,即CLR WDT;硬件喂狗就是硬件复位RESET。当定时器溢
出
时,会造成WDT复位,也就是我们常说的看门狗起作用了。在
程序
正常执行时,我们并不希望WDT复位,所以要在看门狗溢
出
之前使用软件指令喂狗,也就是要计算WDT相隔多久时间会溢
出
一次。HT48R05A-1的WDT溢
出
时间计算公式是:256*Div*Tclock。其中Div是指wdt预分频数1~128,Tclock是指时钟来源周期。如果使用内部RC振荡作为WDT的时钟来源(RC时钟周期为65us/5V),最大的WDT溢
出
时间为2.1秒。 当我们得到了WDT溢
出
时间Twdt后,一般选择在Twdt/2左右的时间进行喂狗,以保证看门狗不会溢
出
,同时喂狗次数不会过多。 软件
运行
时间是根据
不同
的
运行
路线来决定的,如果可以预见软件
运行
的路线,那么可以根据T=n*T1来计算软件的
运行
时间。n是指
运行
的机器周期数,T1是指机器周期。HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK
单片机
是RISC结构,大部分指令由一个机器周期组成,只需要知道软件
运行
了多少条指令,就可以算
出
运行
时间了。HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK的编译软件HT-IDE3000中,就有计算
运行
时间的工具。但是对于CISC结构的
单片机
,一条指令可以由若干个机器周期组成,那么就需要根据具体执行的指令来计算了。 44. 我们是一家开发数控系统的专业厂,利用各种
单片机
和CPU开发了很多产品,在软件开发上也采用了很多通用的抗干扰技术,如:软件陷阱、指令允余、看门狗和数字滤波等等,但实际运用中还是很不可靠,如:经常莫名其妙地死机、
程序
跳段、I/O数据错误等,并且故障的重复性很不确定,也不是周期性地重复。往往用户使用中
出
现故障,但又无法重现,很让人头痛。反复检查硬件也设查
出
原因,所以对软件的可靠性很是怀疑。怎么办? 答:防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到,所以只能看
单片机
抗干扰能力够不够强了。
单片机
干扰最常见的现象就是复位;至于
程序
跑飞,其实也可以用软件陷阱和看门狗将
程序
拉回到复位状态;所以
单片机
软件抗干扰最重要的是处理好复位状态。 一般
单片机
都会有一些标志寄存器,可以用来判断复位原因;另外也可以自己在RAM中埋一些标志。在每次
程序
复位时,通过判断这些标志,可以判断
出
不同
的复位原因;还可以根据
不同
的标志直接跳到相应的
程序
。这样可以使
程序
运行
有连续性,用户在使用时也不会察觉到
程序
被重新复位过。 可以在定时中断里面设置一些暂存器累加,然后加到预先设定的值(一个比较长的时间),SET标志位,这些动作都在中断
程序
里面。而主
程序
只需要查询标志位就好了,但是注意标志位使用后,记得清除,还有中断里面的时基累加器使用以后也要记得清除。
单片机
到底有什么作用PDF文件讲解
1.uC/OS是个什么鬼?在一些朋友的留言和大神的文章中多次提到了uC/OS,相信很多朋友看到之后都是蒙B的“这是个什么鬼?”。uC/OS(MicroControlOperaTIonSystem)翻译过来就是微控制器操作系统,最初版本是在1992年发布,现在已经发展到uC/OSIII了。嗯,那它有什么用呢?接触过
单片机
或编程的朋友一定知道main()函数,mian()又叫主函数或者入口函数,顾名思义就是
程序
开始执行的地方(其实这是不严谨的,但是为了照顾小白可以这样简单的理解),而一般的裸机
程序
只有一个main(),从
程序
的开头到结尾跑一次就完了,而为了让
程序
能不停的跑往往会在main()中加一个while(true)让其不断的循环。uC/OS因为其处理方式理论上可以模拟无数个“main()函数”(任务),让这些任务并发
运行
,就像在一个
单片机
中有多个main()函数一样,让原本单线程的
单片机
能有多线程的
效果
。那uC/OS是变
出
无限个main函数呢,答案就是时钟节拍,时钟节拍就是系统以固定的频率产生中断(时基中断),并在中断中处理与时间相关的事件,推动所有任务向前
运行
。简单的来说就是高频率的切换任务来实现类似多线程的
效果
,这个时钟节拍是可调的,频率越快越浪费cpu,相应的在多个任务间切换的速度也就越快。那么什么是中断呢?从本质上来讲,中断是一种电信号的变化,当设备有某种事件发生时(产生电平变化),它就会产生中断,通过总线把电信号发送给中断控制器。如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事,跳到中断处理
程序
的入口点,进行中断处理。(就好比小明现在正在看我写的这篇文章,突然有快递来敲门他就会先放下手机去取快递然后回来接着看,既拿了快递又读了文章)如上图所示电信号从低电平跳转高电平的中断称之为上升沿中断,反之称之为下降沿中断。因为篇幅的限制以上只是简单的介绍了一下uC/OS,当然它还有很多其它的优点,例如内存分配,任务消息队列,等等。这些都是这个系统多年迭代累积下来的“车轮”,如果感兴趣的朋友可以深入的了解一下。uC/OS固然是好,但是真的有必要什么都用uC/OS么?我看未必,杀鸡何用宰牛刀。以下引用一位知友的留言:“2以前没学过操作系统,用
单片机
裸机写
程序
。有一次做一个功能特别复杂的东西,发现中断都快用完了,并且用中断有些地方实现的特别勉强,冗余,复杂。当时根本就不知道有多任务,也以那时的知识根本想不到如何优化。如果当时学过操作系统,用过ucos,这个问题就很好解决了。不信,你看能不能用裸机实现一个简单的平板电脑。6以后想去大公司,做平板,做手机,不会嵌入式linux估计不行吧,这个依旧包括了上述所有知识。”(这位朋友表达的意思我懂,在此只是引用这一段话,只是引用!)(此段纯吐槽)可能是现在中国手机行业很赚钱。是个大一点的公司就要做平板,做手机,大公司都需要这样的人才,一窝蜂的往里钻。虽然arm理论上也算是
单片机
的一种,但是我更喜欢将其归入微处理器的行列,做手机做平板要是我肯定不会选stm32上uC/OS来做。如果是为了好找工作,为了做手机那还是学嵌入式linux比较靠谱。我是学自动化的,在我的感觉里
单片机
(stm32,avr,飞思卡尔,51等等)这类是属于微控器,最适合的就是用来做控制的,不是为了做手机而生的。和做人一样首先要清楚自己的定位,清楚自己能干什么,不能干什么。汽车芯片,3d打印机,数控机床,手环,液晶显示器,四轴,录像机,洗衣机,玩具,飞机仪表板等等等等,都有
单片机
的用武之地,我给它的定位就是简单重复高效的控制器。有朋友留言说“一句话想赚钱不要学这个。”我只能引用这样一句话“中国不是实体经济不行了,而是你的实体经济不行了。
单片机
c语言
程序
调用多个
程序
,
单片机
可以同时
运行
多个任务吗
单片机
可以按分时、顺序、中断的方法处理多个任务
程序
是非常抽象的,
程序
质量的好与差直接影响到
运行
的
效果
。我们用
单片机
设计电子产品时,同时
运行
多个任务是很正常的。
单片机
是按顺序执行指令的,所以,主
程序
也是按着顺序从头到底的
运行
的。以C语言写的
单片机
程序
为例,一般以main()作为主函数,利用while(1)不断循环要执行的任务
程序
。在实时性要求
不同
的应用场合,顺序
运行
就可以了,实时性要求很高的任务一般...
可用内存超过物理内存的原因及
单片机
的应用
通过将内存划分为固定大小的页面,并使用页表来映射虚拟地址到物理地址,
单片机
可以实现对较大内存空间的访问和管理。在
单片机
中,同样存在类似的机制,可以实现可用内存超过物理内存的
效果
。它通过将内存分为固定大小的页面(或称为页框),并将其映射到物理内存或磁盘上的页面文件中。当应用
程序
需要访问一个页面时,操作系统会将该页面加载到物理内存中,从而实现了虚拟内存的扩展。需要注意的是,虚拟内存和分页机制的实现需要涉及到硬件和操作系统的支持。通过使用类似的分页机制,
单片机
可以实现可用内存超过物理内存的
效果
。
单片机/工控
27,375
社区成员
28,769
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章