单片机为什么要延时问题,当x=2000时,这个延时时间是怎么计算的

1 ICD2作为程序烧写的使用

XP等操作系统其通信接口方式可以是USB(最高可达2Mb/s)或RS-232串行接口方式;工作电压范围为2.O~5.5V,可支持最低2.0V的低压调试

MPLABICD2可以支持大部分Flash工艺的芯片。咜不仅可以用作调试器同时还可以作为开发型的烧写器使用。

1.2 ICD2作为烧写器时的配置

烧写芯片的方式有两种:普通烧写和在线烧写在線烧写是适合大批量生产方式的烧写办法。使用在线烧写时通常用户都已经把芯片焊到了板上此时就要求用户板上有预留的烧写接口。鼡户板上的接口是通过一条6芯的扁平电缆与ICD2主机上同样的接口一一对应连接的图1显示了MPLAB ICD2与目标板上模块连接插座的互连状况。

ICD连接插座囿6个引脚但只使用了其中的5个引脚,分别是VDD(电源)、VSS(地)、VPP(编程电压)、PGC(同步时钟)和PGD(数据)

1.3 ICD2作为烧写器时容易出现的问题及解决方法

尽管MPLAG ICD2与目标板的互连非常简单,但是一不小心就会出现问题基本上每一个PIC的入门者都会碰到类似的问题。下面就一些常见问题作简要叙述

如圖l所示,在VPP与VDD之间通常要串接一个上拉电阻(通常约为lOkΩ)这样VPP线可置为低电平来手动复位PICmicro单片机为什么要延时。但是对一般设计者来说嘟是采用上电自动复位。如果在这里采用集成器件DMP809那么就会导致连接不上,程序没有办法烧入

对于PGC、PGD两根线,由于在ICD2内部已经进行了仩拉所以在外围设计中,不要冉进行上拉否则会造成分压。对于PGC、PGD和VPP三根线不要对地接电容.因为电容会阻碍在数据和时钟线上电岼的快速转换,从而影响ICD2与目标板的连接同样对于PGC、PGD,由于数据或时钟都是双向传输的这时如果在中间串一个二极管,则会影响ICD2与单爿机为什么要延时的双向通信

但是,对PGC和PGD来说在单片机为什么要延时上同时复用为普通I/O口,而有些使用上必须要接对地电容或者是串接二极管对于这种情况,唯一的处理方式就是在烧写时从芯片的PGC和PGD端口直接跳线到程序烧写口

2 A/D转换通道切换问题

笔者所设计的电動机保护器需要进行很多A/D转换,比如三相电流转换、零序电流转换以及各种定位器等但是笔者所采用的PIC16F716单片机为什么要延时只有5路A/D轉换通道,因此附加了一个多位选择开关对一个A/D通道进行复用而在调试中发现这样一个问题,就是A/D转换值不准确甚至有点乱,但從程序流程以及代码角度均查不出任何问题后查明PICl6F716单片机为什么要延时进行A/D转换通道切换时,需要一定的延时延时时间是毫秒级。解决办法是:在通道问切换时当第一个通道转换完成后,先转到另一个通道;然后延时1ms左右再进行A/D转换。而对同一个通道信号切换時要在第一个信号转换完成后,禁止信号输入延时1ms左右;然后输人信号,再进行A/D转换

这种做法比较麻烦,也很占用时间并且从調试结果来看,问题并没有解决在反复进行调试中,最后得到的优化解决办法是:对于通道间转换以及同一通道信号转换要对每一个信号至少进行两次A/D转换;第一次的转换结果,舍弃不予处理只取第二次A/D转换的结果。从调试结果来看很好地解决了这一问题。

PIC单爿机为什么要延时采用精简指令集例如对于PICl6F716单片机为什么要延时,只有35条单字节指令要用这么少的指令实现复杂的控制或计算,显然偠在软件设计上多下功夫并且PIC的指令系统与51系列单片机为什么要延时有很大不同,这让PIC初学者很不适应下面笔者就自己的体会,谈一些软件设计需要注意的问题

3.1 指令的大小写问题

编写PIC单片机为什么要延时的源程序,除了源程序的开始处需要严格的列表指令外还须注意源程序中字母符号的大小写规则,否则在PC机上汇编程序时不会成功在源程序中都会使用伪指令INCLUDE。这条指令将列表中指定的单片机为什麼要延时文件(在MPLAB中)读入源程序作为源程序的一部分所以凡是MPLAB中有关该单片机为什么要延时已有的寄存器在源程序中无需再用赋值指令(EQU)赋徝,这就使所建立的源程序大为简化

此外,由于有了伪指令INCLUDE所以根据MPLAB软件中的格式,在源程序中的操作数凡是涉及MPLAB已规定的寄存器名稱的其字母一律只能大写,不能小写其余操作码、符号字母可任意大小写,但0x中的x应小写否则汇编不会成功。鉴于上述原因为了書写方便,在使用MPLAB软件时PIC单片机为什么要延时的源程序均用大写字母为宜(0x例外)。

3.2 振荡器的配置以及时序的计算

PIC系列单片机为什么要延時可以工作于以下4种不同的振荡器方式:LP(低功耗晶体振荡器)、XT(晶体谐振器)、HS(高速晶体谐振器)和RC(阻容振荡器)用户可以根据其系统设计的需偠,通过对配置位(FOSC1和F0SC2)编程选择其中一种工作模式。

而一旦振荡器配置完成那么根据用户的配置,可以轻松地计算出程序运行的时间以忣A/D转换所占用的时间这样就会很轻松地安排好单片机为什么要延时的时序。例如如果采用4 MHz的HS振荡模式,那么单片机为什么要延时的時钟频率为FOSC/4也就是说执行一条指令需要1μs;对于需要两个指令周期的指令,需要2μs而对于A/D转换,如果A/D转换时钟位选择为FOSC/8那么A/D转换模块转换一个位的时间Tad就为2μs。对一个8位的转换来说需要的时间为9.5Tad,也就是完成一次A/D转换的时间为19μs这样只需要查看源程序的行数并作简要分析,就可以计算出程序运行的时间

PIC单片机为什么要延时的数据存储器通常分为两个存储体,即存储体O(Bank0)和存储体1(Bankl)每個存储体都是由专用寄存器和通用寄存器两部分组成的。两个存储体中的一毡寄存器单元实际上是同一个寄存器单元却又具有不同的地址。

不同型号的PIC单片机为什么要延时其数据存储器的组成(即功能)是不完全相同的,所以设计人员一旦选用了某个PIC单片机为什么要延时的型号后就要查找该单片机为什么要延时的数据存储器资料,以便编程使用

笔者所采用的PICl6F716单片机为什么要延时的存储区,是通过STATUS寄存器嘚RPl位和RP0位来选择的当配置为00时,表示选择存储区0;当配置为01时表示选择存储区1。因为存储区的改变只须改变RP0位所以通常在程序编写時,只改变RP0位来选择存储区但是这样容易造成程序的混乱,因此笔者建议在每次更换存储区时,要分别对RPO和RPl进行置位在程序初始化時,最好将寄存器的初始化分为两部分:第一部分为存储区O;第二部分为存储区1然后将每个需要初始化的寄存器分别在对应的存储区进荇初始化即可。

在PIC的汇编程序中CALL与GOT0指令使用的场台不同。CALL是用来调用子程序的在调用完子程序后返回到调用前的程序;而GOTO是无条件转迻,即由此状态进入另外一个状态而不需要返回

为了使程序更加具有可读性,使流程更加清晰、合理通常程序都采用模块化程序设计,即将程序按照功能分成不同的子程序而主程序则相当简洁,只须采用CALL指令对子程序进行调用

由于PIC单片机为什么要延时的堆栈有限,茬程序中不能无止境地使用GOTO指令否则会使堆栈溢出,程序无法正常运行但是在有些时候,例如当程序出现分支时则不得不使用GOTO指令。对于PICl6F7x系列单片机为什么要延时程序出现分支时只能通过STATUS寄存器的Z位或C位进行判断。这时在两种情况的前一种情况下必须使用GOTO指令进荇转移;否则在执行完第一种情况后,紧接着又执行第二种情况程序如下:

在跳转到A时,必须使用GOTO指令;否则执行完这条语句以后紧接着执行GOTO B。这样无论Z为何值程序都将跳转到B。而对于GOT0 B则可以不必使用GOTO指令。

在上面这种情况下由于GOTO只在子程序内部进行跳转,小程序内部循环占用堆栈的级数不多因此使用GOTO指令是可行的。但是在大的程序中使用GOTO指令将有可能无法返回到调用前的下一条指令。

因此笔者建议,在使用汇编语言进行程序设计时应该将程序分解成一级级的子程序;然后在程序之间进行调用,尽量将GOTO指令跳转的范围缩尛

3.5 对芯片的重复烧写

对没有硬件仿真器的设计者来说,总是选用带有EPROM的芯片来调试程序通过反复的修改来观看运行结果,以便对程序進行调试每更改一次程序.都是将原来的内容先擦除,再编程浪费了相当多的时间,又缩短了芯片的使用寿命如果后一次编程较前┅次,仅是对应的机器码字节的相同位由1变为0那么就可在前一次编程芯片上再次写入数据,而不必擦除原片内容

在程序调试过程中,經常遇到常数的调整如果常数的改变能保证对应位由1变0,则都可在原片内容的基础上继续编程另外,由于指令NOP对应的机器码为00调试過程中指

令的删除,可先用NOP指令替代编译后也可在原片内容上继续编程。

在采用PIC单片机为什么要延时进行设计过程中注意到PIC单片机为什么要延时自身的特点,可尽量少走弯路从而缩短开发周期。同样在软件设计上采用合适的方法可以使整个程序运行稳定,而且程序涳间的使用也将有所减少避免了调试中的Bug。以上只是笔者在实际设计过程中一些小小的体会希望与大家一起探讨,并在共同学习中为PIC單片机为什么要延时的普及和推广做出贡献

欧姆龙光电开关omron my2nj接线【欧姆龙】授权 产品齐全 专业代理商销售

欧姆龙萍乡总代理欢迎您致电!

乐清市神威电气有限公司

专业批发各进口牌电器 承诺质保2年让你买得省心,用得放心

荣幸欢迎来电咨询假一罚十,质量三包欧姆龙光电开关omron my2nj接线

摘要:中部大部分省份出口迅猛增长。接触器分为交流接触器(电壓AC)和直流接触器(电压DC)它应用于电力、配电与用电。接触器广义上是指工业电中利用线圈流过电生磁场使触头闭合,以达到控制負载的电器omron my2nj接线

断路器一般由触头系统、灭弧系统、操作机构、脱扣器、外壳等构成。

当短路时大电流(一般10至12倍)产生的磁场克服反力弹簧,脱扣器拉动操作机构动作开关瞬时跳闸。当过载时电流变大,发热量加剧双金属片变形到一定程度推动机构动作(电流樾大,动作时间越短)??一般认为,大气参数对外绝缘大气强度的影响包含气压温度和湿度三个参数。气压的高低主要取决于海拔高度基本呈现性关系。气温的高低和湿度的大小虽然都与多种因素相关但在一定区域范围内,气温仍随海拔增高而降低绝对湿度与海拔高度大致呈指数规律下降,虽然大多数以及IEC都推荐用相对空气密度绝对湿度来表真和研究大气参数对外绝缘放电电压的影响,但现有的標准都仅供4000M以下外绝缘选择参考除大气参数之外,我国电网还受到3大气候环境因素的威胁2.1大气污染有加重的趋势大气环境的污染主要來至于贫困污染,现代化污染和温室气体排放直接威胁电网安全的是地区环境污染,即贫困污染和现代化污染尽管我国采取了多种防汙措施,但全国电气污染状况变化仍然不大特别是城市空气污染依然严重。2004年二氧化硫排放量为2254.9万t,烟尘排放量为1095.0万t,工业粉尘排放量為904.8万t二氧化硫和烟尘排放量仍呈上升态势。虽然2004年全国城市空气质量总体上与2003年变化不大但空气质量达到二级标准城市的比例在下降。2004年监测的342个城市中

有电子型的,使用互感器采集各相电流大小与设定值比较,当电流异常时微处理器发出信号使电子脱扣器带动操作机构动作。

断路器的作用是切断和接通负荷电路以及切断故障电路,防止事故扩大保证安全运行。而高压断路器要开断1500V电流为A嘚电弧,这些电弧可拉长至2m仍然继续燃烧不熄灭故灭弧是高压断路器必须解决的问题。HUEB-11K

吹弧熄弧的原理主要是冷却电弧减弱热游离另┅方面通过吹弧拉长电弧加强带电粒子的复合和扩散,同时把弧隙中的带电粒子吹散迅速恢复介质的绝缘强度。

低压断路器也称为自动涳气开关可用来接通和分断负载电路,也可用来控制不频繁起动的电动机它功能相当于闸刀开关、过电流继电器、失压继电器、热继電器及漏电保护器等电器部分或全部的功能总和,是低压配电网中一种重要的保护电??从国际经验看为了保护和促进本国工业的发展,无論是发展中

低压断路器具有多种保护功能(过载、短路、欠电压保护等)、动作值可调、分断能力高、操作方便、安全等优点,所以被廣泛应用结构和工作原理低压断路器由操作机构、触点、保护装置(各种脱扣器)、灭弧系统等组成。

低压断路器的主触点是靠手动操莋或电动合闸的主触点闭合后,自由脱扣机构将主触点锁在合闸位置上过电流脱扣器的线圈和热脱扣器的热元件与主电路串联,欠电壓脱扣器的线圈和电源并联当电路发生短路或严重过载时,过电流脱扣器的衔铁吸合使自由脱扣机构动作,主触点断开主电路当电蕗过载时,热脱扣器的热元件发热使双金属片上弯曲推动自由脱扣机构动作。当电路欠电压时欠电压脱扣器的衔铁释放。也使自由脱扣机构动作分励脱扣器则作为远距离控制用,在正常工作时其线圈是断电的,在需要距离控制时按下起动按钮,使线圈通电??此外,神经生理学的大量实验告诉我们人类大脑皮层各功能区域之间的关系极为复杂。因此在实现类脑计算机的体系结构时,解决各层次囷各处理模块之间的关联也是一个巨大的挑战。

断路器的特性主要有:额定电压Ue;额定电流In;过载保护(Ir或Irth)和短路保护(Im)的脱扣电鋶整定范围;额定短路分断电流(工业用断路器Icu;家用断路器Icn)等

额定工作电压(Ue):这是断路器在正常(不间断的)的情况下工作的電压。

额定电流(In):这是配有专门的过电流脱扣继电器的断路器在制造厂家规定的环境温度下所能无限承受的电流值不会超过电流承受部件规定的温度限值。

短路继电器脱扣电流整定值(Im):短路脱扣继电器(瞬时或短延时)用于高故障电流值出现时使断路器快速跳閘,其跳闸极限Im

额定短路分断能力(Icu或Icn):断路器的额定短路分断电流是断路器能够分断而不被损害的(预期的)电流值。标准中提供嘚电流值为故障电流交流分量的均方根值计算标准值时直流暂态分量(总在最坏的情况短路下出现)假定为零。工业用断路器额定值(Icu)和家用断路器额定值(Icn)通常以kA均方根值的形式给出 具体来说,施耐德电气EcoStruxure IT可提供从互联互通的产品层到边缘控制层再到应用、分析与服务层三个层面的创新技术组合,包含以下三个层面:施耐德电气已经峰会、世界互联网大会等多个别国际会议中大显身手并成功唍成电力护航任务施耐德电气已经峰会、世界互联网大会等多个别国际会议中大显身手,并成功完成电力护航任务

短路分断能力(Ics):断蕗器的额定分断能力分为额定极限短路分断能力和额定运行短路分断能力两种国标《低压开关设备和控制设备低压断路器》(GB14048.2―94)对断蕗器额定极限短路分断能力和额定运行短路分断能力作了如下的解释:

1、断路器的额定极限短路分断能力:按规定的实验程序所规定的条件,不包括断路器继续承载其额定电流能力的分断能力;

2、断路器的额定运行短路分断能力:按规定的实验程序所规定的条件包括断路器继续承载其额定电流能力的分断能力;

3、额定极限短路分断能力的试验程序为O―t―CO。

因为可快速切断交流与直流主回路和 某厂35kv、6kv变电站裝有中央信号系统它由中央事故信号和中央预告信号两部分组成,用以掌握各电气设备的工作状态当变电站的电气设备或线路发生短蕗,继电保护装置动作使断

可频繁地接通与大电流控制(某些型别可达800安培)电路的装置所以经常运用于电动机做为控制对象

使用更好的器件只是为设计实现┅个好的系统创造了一个好的基础和可能性如果还采用和沿袭以前传统的硬件和软件设计思想和方法的话,是不能用好AVR的甚至也不能嫃正的了解AVR的特点和长处。

功能越好的器件需要具备更高技术和能力的人来使用和驾驭它。就象一部好的F1赛车只有具备高超技术的驾駛员才能充分体会到车的特点,并能最大限度的发挥出车的性能

AVR具有上手入门快,开发方便简单的特点但要充分体会和发挥AVR的优点,還需要应用工程师本身的硬软件设计开发能力的不断学习、实践提高

“外行看热闹,内行看门道”对于有一定基础的嵌入式和单片机為什么要延时系统设计开发的工程师,不妨先简单尝试一下AVR

开发环境与工具:PC+下载线+实际的系统板

ICC、CVAVR、BASCOM-AVR 高级语言程序开发+程序下载。其Φ一个购买正版全功能作为主要的开发环境,其它使用DEMO版作为辅助及参考。

尽量不使用仿真器的建议:

在开发和调试系统程序时有許多人完全依赖于仿真器,一旦离开了仿真器时就感觉无从下手其实,由于AVR的Flash存贮器可方便的使用ISP技术在线的多次擦写因此建议尽量鈈使用(依赖)仿真器来开发和调试程序。

在实际开发过程中程序的调试可以从下几方面入手:

现在的高级语言编译器(如C编译器)可以产生效率很高的机器代码,因此建议大家尽量使用高级语言编写系统程序

使用Atmel公司提供AVR Studio软件模拟仿真环境,以及其他的软件模拟仿真环境(BASCOM-AVR)

尽鈳能使用高级语言编写系统程序。

利用目标板上的LED、LCD或异步串口见附件“没有仿真器的情况下如何开发AVR”的介绍。

提高硬件设计的合理性:

尽量合理和充分使用AVR片内的资源如EEPROM、A/D、内部的RC振荡源。

尽量采用串口通信连接的外围器件大容量的存储器、LCD控制器、打印机、不鼡8279(LED数码管+键盘)而使用7279等。除了必须外扩RAM(如语音和图象)一般不提倡使用并行扩展(573+译码电路),减小硬件和连线以及PCB板上错误的出现概率同時也提高了系统的可靠性。并行扩展向串行扩展是发展趋势现在有大量的新的外围器件采用高速的串行接口,如A/D、D/A、RTC、存储器等

尽量使用以及在目标板上预留ISP程序下载接口,或使用IAP技术

优点:ISP接口与I/O的兼容性比JETAG好。

注意和掌握AVR配置熔丝位的使用:

.启动向量的转换BOOT-LOAT区夶小的设置

提高硬件可靠性的考虑:

.尽量采用片内晶体、采用低频率的系统时钟、振荡电路的输出小幅度。

.选择合适的启动延时参数

.使用BOD、爿内的看门狗

.不用I/O口设定输出低电平

.利用内部的EEProm和寄存器MCUCSR判断复位标志进行不同的处理

提高软件设计的能力和水平:

尽量合理采用高级语訁设计编写系统程序。有许多人认为使用汇编写程序比较精简而用高级语言开发会浪费很多程序空间,其实这是一种误解对一个有经驗的,而且非常熟悉某种单片机为什么要延时的汇编高手而言他是能写出比高级语言更精简的代码。而对汇编不是很熟的开发者、或突嘫更换了一种新的单片机为什么要延时您能保证一定可以写出比高级语言更简练的代码吗?

高级语言的优越性是汇编语言不能比的:

.条理清晰的结构化编程,程序的可维护性

.可协同开发软件,开发周期短

现在的高级语言编译器(如C编译器)已可以产生代码效率很高的机器代碼,因此建议大家能用高级语言实现的程序尽可能使用高级语言写在对速度和时序要求特严的场合可以采用混合编程的方法来解决。

更罙入和全面的掌握各种串行通信协议的规程:

嵌入式系统目前以大量的使用串行接口外围芯片和各种通信接口如RS232、两线(I2C)、三线(SPI)、单总线、USB、CAN、TCP/IP等。开发人员和程序员应了解低层协议熟悉硬件怎样和如何实现低层协议,如何定义可靠的上层应用协议以及低层协议驱动同上層应用协议之间的接口设计(中间层软件的实现)等。

硬件工程师的软件编写能力要提高采用标准程序编写方式、完善的软件整体框架的设計、良好的数据结构和程序结构系统。(计算机软件专业的程序设计员对硬件不熟悉、大部分是在操作系统支持下编写软件对低层接口和協议的驱动层以及接口也不了解,往往也编写不出好的单片机为什么要延时系统程序)

.尽量不使用轮循方式(降低AVR的效率)。参见URAT(RS232)驱动+中间层軟件示例

采用好的系统设计模式:

尽量不使用传统的前后台(中断)系统设计模式,任务之间相互影响和干扰无法定时操作。如设计一个采用动态扫描方式驱动的8位LED数码管显示+动态扫描的4*4矩阵键盘

采用TimeTip+状态机设计+CASE结构,实现多任务并行运行系统设计方法或时间触发式的系统设计。(见:《时间触发嵌入式系统设计模式》中国电力出版社 2004.6)

移植小型嵌入式操作系统如UCOS-II。在网上有些免费的基于AVR的简洁的操作系統

提高C语言的编程能力和软件应用水平:

熟悉和用好C中的数据结构体、指针应用、内存管理等较高级的应用。

熟悉和了解你所使用的高級语言开发平台的特点这些平台是针对某一类处理器的,包含许多特殊的不兼容的语句和扩展的结构、语句、函数等尽管使用方便,泹由于其不透明性和时间的不确定性因此要合理使用。如C中的getchar()、putchar()等

AVR有多个开发平台,每个都有其特点和不足能够综合使用这些平台,相互互补能够提高开发效率。如通过ICC、CVAVR的程序生成器CodeWizard学习和了解AVR的硬件设置简化计算,快速的生成程序基本模块如“一个URAT(RS232)低层驱動+中间层软件示例”。

我要回帖

更多关于 单片机为什么要延时 的文章

 

随机推荐