国产单片机品牌问题

大家都在搜:
扫描二维码安装房天下APP
手机浏览器访问房天下
> > 问题详情
【单片机问题】
单片机C语言和汇编语言的区别AT89S52单片机和凌阳单片机的区别
浏览次数:0
c语言开发简单,可读性和可移植性强。汇编执行效率高 。
51单片机主要是用来做控制的,数据处理能力很弱。凌阳单片机的语音做到比较强,有DSP功能,内部资源也相对丰富。
手机动态登录
请输入用户名/邮箱/手机号码!
请输入密码!
没有房天下通行证,
ask:2,asku:1,askr:13,askz:3,askd:9,RedisW:0askR:0,askD:32 mz:nohit,askU:0,askT:0askA:33
Copyright &
北京拓世宏业科技发展有限公司
Beijing Tuo Shi Hong Ye Science&Technology Development Co.,Ltd 版权所有
违法信息举报邮箱:您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
 单片机常见故障.doc 9页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
?? 嵌入式系统 -& MCU和嵌入式微处理器
??问题:51单片机学习板是贴片的好还是直插的好 ??悬赏15分
51单片机学习板是贴片的好还是直插的好
关键词:51单片机,贴片??  提问人:寰宇空间??时间: 17:18??  
现在51学习板从制板工艺上讲可分为两大类:采用贴片元件和采用直插元件。虽然贴片的可以节约板子的面积,降低成本,适合大批量生产,但本人认为做为学习板是直插的更为合适,原因如下: 1、但凡采用贴片的板子往往面积较小,因此元件排列密集,而且贴片的芯片本身管脚也是密集的,不适合出学者了解走线。 2、贴片的部分元器件外观相似,比如电容和电阻,不适合初学者分辨。 3、贴片元件焊接技术要求要高于直插元件,不适合初学者更换。 4、做为初学者缺乏经验很可能由于误操作对学习板造成损坏,一旦损坏部分元件,直插的元件容易搞到,而且容易焊接,特别是如果遇到芯片的损坏,直插的往往配有IC插座,方便芯片的拆卸,初学者自己就可以完成维修。 5、直插的更容易方便初学者进行对学习板的改造。 6、单片机的学习应该和嵌入式有区别的,最主要的就是单片机软件硬件是不分家的。学习板因该提供不只是运行几个例程,更应该方便初学者掌握硬件知识,很显然直插更容易让初学者掌握全面的单片机设计知识。 因此,贴片学习板看着精巧但不实用,对于没有基础的初学者建议大家购买直插的,因为初学者的主要目的是学习,也希望学习板的生产厂商多为初学者考虑。
单片机常见问题回答
问:内部时钟振荡器是否稳定?是否可以用于产生波特率的时基?
答:不同器件的内部时钟振荡器的精度是不同的(±20%)。随电源电压变化,它也将发生变化(6.5%/V)。但基本不随温度变化(&1%温度变化范围-40℃~+85℃)。由于不同器件内部振荡器的离散性较大,所以不能用于产生波特率,应该外接标准晶体 。而有些器件,如C8051F3xx/f12x/f04x/f06x内部振荡器精度为±2%,可用于产生波特率 。
问:片内/外振荡器如何配置?
答:正确步骤:
1、允许外部振荡器;
2、等待1ms;
3、查询XTLVLD '0'-&'1'
4、切换到外部振荡器。
注意:振荡器频率的选择,即OSCXCN寄存器的配置(外部振荡器频率控制位的设置)。关于更多的信息以及源代码可以参看应用笔记AN002《配置内部和外部振荡器》。应用笔记可以从我公司网站下载:www.xhl.com.cn
问:C8051F MCU的指令执行速度为多少?
答:C8051F MCU的CIP-51内核采用流水线结构,与标准的8051结构相比,指令执行速度有很大的提高。标准的8051单片机执行一个单周期指令需要12个系统时钟周期,而C8051F MCU执行一个单周期指令只需要一个系统时钟周期。如果系统时钟频率为25MHz,执行一个单周期指令所需时间为40ns。
问:切换外部晶振时应注意哪些问题?
答:首先要允许外部振荡器,但此时的系统时钟源仍应是内部时钟,直到外部振荡器稳定后,才可将系统时钟源切换到外部振荡器上,否则会出现切换不过去,系统死机的情况。
问:使用外部晶振应注意哪些问题?
答:1、所有的模拟和数字电源引脚都应接电源(2.7~3.6V);
2、C8051F3xx系列器件的晶振引脚间应跨接一个10M电阻(在新华龙网站的“主页”—“原理图/PCB库”中有C8051F系列单片机的典型接线图);
3、晶振、电容等相关器件尽量靠近单片机的晶振引脚。
问:系统时钟切换到外部时钟后,内部的时钟是否应关闭?
答:可以选择关闭或不关闭,但是从降低功耗的角度来说,应该关闭。
问:系统时钟可不可以在程序中随时切换?
答:可以,但是由内部再一次切换到外部时应按照技术问答2所介绍的步骤进行切换。
问:使用外部晶振时如何配置芯片的引脚?
答答:对于芯片上有固定晶振引脚的设备(例如C8051F02X);相应时钟输入引脚按选择的晶振模式自动分配引脚;
对于晶振引脚与GPIO共用的芯片(例如C8051F30X);晶振引脚要按下述方式进行设置:
(1).外接晶体体时;XTAL1与XTAL2都要配置为模拟输入
(2).外接振荡电路为“RC”或“C”方式时,XTAL2引脚要配置为模拟输入
(3).外接CMOS时钟电路时,XTAL2引脚要配置为数字输入
(4).以上几种方式在引脚的配置中都要使用跳过功能将此引脚跳过
问:外接晶振的最高频率是多少?
答:外接晶振的最高频率是30MHz;
正在加载中,请稍后...
135页11页39页14页43页39页11页39页114页83页51单片机应用中5个常见问题总结
本文就51单片机应用中一些常见问题作个总结,这都是我实际碰到过的,因为文章篇幅所限,这些问题远远不足以表达单片机的常见问题。希望对初学者有所帮助,文中不完善的地方务请指点。谢谢!
1:C51编译器如何区分位地址和字节地址
是靠预定义实现的,比如:sfr P0 = 0x80; sbit P0_0 = 0x80;前者声明了P0端口地址位于0x80,后者说明了P0端口的bit0,即P0.0位于位地址空间0x80处。这2个0x80具有完全不同的含义,靠关键字sfr和sbit来区别。这样当程序被编译时,编译器会依此编译成相应的汇编语言。例如:
C51语句: P0 = 1;
P0声明为sfr,因此编译成:mov 80h,01h,将把0x01数据送入0x80单元,由于0x80单元物理上对应P0端口,因此,P0.0脚将输出高电平(其实是呈现高阻态,P0口独有的),其他.1-.7脚输出低电平。
C51语句: P0_0 = 1;
P0_0声明为sbit,因此编译成:setb 80h,这将把位地址空间的0x80地址的bit的值置1。这个位正是P0口的bit0,执行后,P0.0将输出高阻态。而P0.1-.7不会变化。
2:C51为什么要嵌套汇编
51单片机一个显著优点就是指令执行时间固定,因此可以适应时序要求严格的场合。例如符合ISO7816协议的cpu卡的读写,对时序要求比较严格。其实就是用io脚做出来的同步半双工串口。支持cpu卡的程序一般比较庞大,需要用c51来组织,但是由于c编译的不确定性,必须把底层程序封装成汇编语言模块嵌入到工程中。这就带来几个问题:如何声明函数、参数如何传递等。限于篇幅,不能说得很细。下面举例:
汇编程序单独保存一个文件,加入到工程中,函数如下:
用c语言在.h文件中声明: extern unsigned char proc_a(unsigned char val);
调用时形如: retvalue = proc_a(0x11);
a:汇编程序如果带参数,则需要在汇编程序前多加一个下划线。而声明它的地方不用加(伟福编译器这么要求的)。
b:函数的形参中第一参数用R7传递,函数返回值用R7返回,这是C51的通用规范。其他参数都有相应规定。函数可以返回一个位,用psw的c位返回。c:上面的语句,执行顺序是把0x11给R7,然后跳转子程序,子程序将它加1后送回。
d:函数跳转到汇编程序时,本区的R0-R7,A,B,PSW,DPTR等寄存器可以供子程序使用,不必考虑调用后是否要恢复这些常规资源。上例中,A的值被函数使用了,编程者不必恢复调用前的值。
3:51单片机的P0口特殊之处
许多新手都碰到这个问题,其实很简单,这涉及到芯片的io脚是怎么做出来的。这对硬件工程师来说十分重要。TTL的io脚模型:
P1,P2,P3口都可以理解成左图,注意vcc下面有个电阻,因此可以理解成:引脚输出1的能力弱。地那边没有电阻,可以理解成引脚吸入电流能力强。而P0口,可以理解成右图。这就是集电极开路输出,也叫OC输出。可以看出,当CTR=1时,三极管导通,引脚被接地;当ctr=0时,三极管截止,引脚浮空,也叫三态。这个端口这么做的目的是考虑P0口肩负读写数据和地址复用,这个关系要仔细看懂cpu时序图。因此,P0口要加合适的上拉电阻,绝不要加下拉电阻。上拉电阻的选择要看外部负载情况。
4:P1-3口如何输入输出
从上节的左图可以看出。做输出时,ctr=1则输出强信号0,ctr=0则输出弱信号1。当io脚做输入时,应使ctr=0,这样三极管截止。外部信号如果是1,则上拉电阻加强了这个1,单片机就会读到1。当外部信号为0时,注意,必须将上拉电阻的上拉作用全部抵消,才能在引脚上得到0。
因此,对于程序来说,把io脚置1就处于接收状态,当然也是输出1状态。程序置io口为1,读取的信号是不是1就依靠外部电路了,如果外部电路没有&吃掉&上拉电阻的电流,则读取得到1,反之,虽然程序置io脚为1,但是读取得到的就是0。
因此,如果用io脚的高电平驱动外部电路时,要小心外部电路把这个1&吃掉&从而输出不了1。而作为输入时,为0电平的外设必须足够有能力将io脚拉低。所以,用io脚直接点亮led的时候,最好用反逻辑,就是输出0,让led亮。这样能保证驱动能力。就是io脚接led的负端,led的正端过电阻接vcc。
因此,io脚输出1时,外部电路将它强行接地是没有关系的,而io脚输出0的时候,外部电路强行接电源就会把io脚损坏。所以,程序加电之后,一般把所有io口都写成1:MOV P0,0FFH。
P3口引脚复用,必须引脚都处于输出1状态。例如,把RXD脚输出0,则它什么数据都读不进来了,笔者早期曾调试一整天才发现串口收不到数据是没有把RXD置1的原因,把时间都浪费在外围了,当时很是汗颜。
5:有关晶振
单片机的晶振在内部可以简化成一个反向器。当晶振输入脚XI刚过坎压、被认为是1的一瞬间,输出脚XO就输出0,这个0会带动晶振使XI电压下降,当降低到坎压被认为是0的一瞬间,输出脚XO就输出1。这样周而复始。
因此,用示波器观察正常工作的晶振输入脚XI时,得到的是一个不高不低的近似水平线。而XO则是幅值很大的正弦波。测量晶振输入脚XI时,示波器表笔要打在X10档上,否则,表笔就能把晶振弄停。
因此布线时,晶振输入脚XI要尽量靠近晶振,而XO脚可稍远。同时XO具有一定的驱动能力,某些芯片可以用它驱动其它时序电路(不推荐这么做,因为系统可靠性下降)。
写到这里,才发觉51单片机的问题太多了,这篇文字简直就是沧海一粟。
原文标题:电子设计之C51单片机常见问题
文章出处:【微信号:mcu168,微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。
关注电子发烧友微信
有趣有料的资讯及技术干货
下载发烧友APP
打造属于您的人脉电子圈
关注发烧友课堂
锁定最新课程活动及技术直播
发布评论请先
stc的程序分引导区和程序区。引导区的代码主要负责ISP在线烧录。而stc的冷启动顺序就是先从引导区....
单片机冷启动很简单,关电,再上电,正常复位后,就冷启动成功。单片机冷启动其实是一个技术术语,是指单片....
PWM这个功能在飞思卡尔、STM32等高档的单片机内部有专用的模块,用此类芯片实现PWM功能时只需要....
52xxAD系列单片机的内部集成了两路可编程计数阵列模块(PCA),可用于软件定时器、外部脉冲的捕捉....
PWM控制方式广泛应用于各种控制系统中,但对脉冲宽度的调节一般采用硬件来实现。如使用PWM控制器或在....
C8051F系列单片机已有6种产品选型,高度集成的小封装C8051F系列单片机经过优化,专门应用于消....
一般来说,AD有积分型的和逐次逼近型的,后都更多的被使用,所以我们一般也都是使用的这一种。说的简单点....
A/D转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、....
标准的 51 单片机内部有 T0 和 T1 这两个定时器,T 就是 Timer 的缩写,现在很多 5....
STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程....
本文主要介绍了单片机数字电压表设计方案汇总(九款模拟电路设计原理图详解)。利用单片机系统与模数转换芯....
RS-485收发器采用平衡发送和差分接收,因此具有抑制共模干扰的能力,加上收发器具有高的灵敏度,能检....
各种逻辑芯片的晶振引脚可以等效为电容三点式振荡器。晶振引脚的内部通常是一个反相器, 或者是奇数个反相....
针对某型航行器自沉系统中,需要掌握某合金材料在海水中因不同温度条件下的受腐蚀时间长短。采用模块化硬件....
本人最近一直想用51单片机来设计制作一个“大功率直流有刷电机PWM调速控制器”。由于平时工作忙,没时....
在初学51单片机的时候,总是伴随很多有关于晶振的问题,其实晶振就是如同人的心脏,是血液的脉搏,把单片....
什么是AVR单片机?AVR单片机有什么优点?为什么要选择AVR单片机? AVR单片机是ATMEL公司....
众所周知,在电子行业有这样一个形象的比喻:如果把MCU比作电路的大脑,那么晶振毫无疑问就是心脏了。同....
先给大家附上一套完整的模板源代码,后面章节练习C语言的模板程序就直接复制此完整的源代码,此源代码适合....
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-单片机程序问题总结
> 单片机程序问题总结
单片机程序问题总结
BL51: WARNING 16 (UNCALLED SEGMENT, IGNORED FOR OVERLAY ...)原因是声明的函数没有调用。才产生这个警告。详细说明见下面网址内部。http://www.keil.com/support/docs/875.htm解决办法:1将没调用的函数部分注释掉。等用到的时候在取消注释。2调用一下,这个函数。(废话)3使用条件编译。#if 0void uncalled_function (void){ }#endif碰到的问题目标器件:C编译环境:Keil uV4.项目需要,定义了一个数组U8 xdata recv_para[PARA_LENGTH]={0}; //PARA_LENGTH=64该数组如果不加xdata修饰,会报错,提示ram空间不够。*** ERROR L107: ADDRESS SPACE OVERFLOW加上xdata修饰后,经过测试发现程序不对。debug调试也不执行。莫名其妙。然后将xdata修饰符改为idata后。程序可以正常运行。但是这样的话定义的数组还是会占用单片机内部ram空间。内部只有256字节ram如果后续还要添加功能,可能内部ram还是不够用。所以想利用单片机的外部ram。也就是datasheet里面说的XRAM来存放这个数组。datasheet里面说c这个单片机有个4k大小的XRAM可以用。经过查网上资料发现用修饰符xdata,是没有错误的。网上有很多关于data,idata,xdata的用法文档,这里就不引述了。最终发现有个网友碰到的问题和我一样。链接:http://www.amobbs.com/thread--1.html链接:http://www.amobbs.com/thread--1.html根据网友的解释:1.初始化时间太长 ,看门狗默认开,没关。2.根本原因是初始化的时间过长,超过了看门狗的时间,初始化完成以后才能进入main函数,这时关狗已经来不及了,这时要修改startup.a51(记得把它加入复制到工程而不是修改系统的),在第一条指令前加入关狗的指令,在main函数里再开(如果需要的话)。所以,我在STARTUP.A51文件里面第131行添加了一条关闭看门狗的语句。MOV
0D9H,#00 关开门狗关闭看门狗之后,再用xdata修饰符 修饰数组,然后初始化,就没有问题了。还有一个解决方法就是定义的全局变量或者数组之类的。不要对其进行初始化。等到main程序里面,通过主动赋值的方式主动初始化。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一您好,欢迎来到捷配电子市场网
您所在的位置:&&&&&&&&单片机系统不工作故障该怎么处理
版权与免责声明
凡本网注明“出处:捷配电子市场网”的所有作品,版权均属于捷配电子市场网,转载请必须注明捷配电子市场网,http://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
相关技术资料
热门技术资料
最新技术资料

我要回帖

更多关于 单片机常见问题 的文章

 

随机推荐