tag 标签: 海东青电子

相关博文
  • 热度 20
    2012-5-3 12:46
    1495 次阅读|
    0 个评论
    本文最初由【海东青电子】张平发表于ENDCHINA.COM,转载请保留出处和版权信息,谢谢。 前面谈了单片机的硬件,下面重点说说软件。初学者经常提起的一个问题是:汇编、C,应该选哪一个?首先,先明确一个概念:针对单片机编程使用的C语言有个正式的名字,叫C51。跟C有区别吗?有。C51是在C语言基础上针对51单片机的特点做了特殊扩展,主要体现了51单片机的硬件特性。比如,C51中的bit、sbit关键字,标准C里是没有的。可以想象,标准C一般用在桌面电脑上,不需要针对一个“位”来操作,最小操作单位是字节。而单片机中大量的操作就是操作位(管脚),所以位变量是必须的。   本人建议先从C学起。道理很简单:你用过VB在Windows上编程吧?很容易做出个按钮、界面什么的吧?那时候你会用X86的汇编来写程序吗?你可能根本就不知道X86上还有汇编,对吧?Windows上面也能用汇编?当然,其实所有C语言(以及其他所谓高级语言,VB、DELPHI等)编译之后都相当于汇编代码,你直接用汇编写Windows程序也没有问题,问题是你得有很高的编程水平。   所以,从最开始就用C51来编写单片机程序是可行的,但要结合单片机的硬件结构,可能不可避免地要联系到汇编的知识。这句话难懂了,到底要不要学汇编呢?汇编语言的语法本身并不重要,但它直接牵扯到单片机的知识很重要,就是关于单片机的硬件结构和寻址方式。举个例子:定义一个RAM变量,是用data关键字、还是idata关键字?data、idata都是存储器类型修饰符,data、idata定义的变量都是“内部”变量(相对的,xdata定义的就是外部变量了),区别是:data变量是直接寻址的,寻址范围00h~7fh;idata变量是间接寻址的,寻址范围00h~ffh。51单片机不是只有片内128个ram变量地址吗?对;对于51单片机,片内RAM一共128个,用data定义足够了;但我们现在用的都是52单片机呀(不骗你,你学了半天“51”单片机,其实你根本就没有用到51,都是52!),8952是8951的增强型,片内扩展了128个RAM,总共256个RAM,需要用idata来定义RAM变量。准确地说,RAM地址00h~7fh,可以用data或idata来定义(区别是,data变量执行速度更快,为什么?你得去查查51教科书了);RAM地址80h~ffh,只能用idata定义。有个技巧:你先把所有变量定义成data的,如果RAM不够用了,编译器会报错,这时你就得把一些变量定义成idata的就行了。   最后,你也许问了:根本没你说的那么复杂,我看过所有人的C51代码定义变量都很简单,比如   char c;   根本没用data、也没用idata!   是的,C51编译器默认存储类型是data型的,没有写data或idata之类,就相当于data型的!   最后,简单说一下编程代码风格问题。希望大家从一开始就建立一个概念:编程风格比代码技巧重要!或者说,编程风格最重要!什么是编程风格?简单说,就是程序的可读性、规范性。你写的程序要让别人看得懂、容易懂;3个月后也要让自己还能看懂!这不是笑话,随便地定义变量:   int aa,bb;   3个月后,你可能真的不知道这个aa到底代表的是什么意思了!   定义变量要取有代表性的单词或缩写,关键行要有注释,这就是基本的代码风格。遗憾的是,学校里老师几乎没人强调这一点。     即使本人已尽力用最通俗的语言来描述单片机的入门开发,但相信很多读者仍不能完全理解这些内容。没关系,这很正常,--单片机、C51本来就不是那么简单的!但只要你保持研究单片机的兴趣和热情,一步一步、坚持不懈,最终一定能掌握他!需要你的耐心和恒心!     本文版权归【海东青电子】张平所有;欢迎转载,但请保留出处和版权信息,谢谢。   有任何建议,请联系作者email:2208117047 A qq.com(A换成@)   欢迎加入单片机技术讨论QQ群:231033072,互相帮助、共同提高。     【完】
  • 热度 20
    2012-5-3 12:45
    1244 次阅读|
    0 个评论
    本文最初由【海东青电子】张平发表于ENDCHINA.COM,转载请保留出处和版权信息,谢谢。 51的身世问题说完了,该进入正题了。 传统的51单片机教程,都是千篇一律地从单片机的硬件结构、指令系统、寻址方式、编程方法等开始讲解,理论性过强,对于零基础的初学者来说,处处是术语,往往是一头雾水,难以真正掌握单片机的知识要点,为了应付考试,常常只能死记硬背答案,考试过后,对单片机的掌握又回到了零起点。   我们学习单片机的目的是什么?是为了应用。所以,“用”就是最重要的。动手实践,别无他法。可是,理论就不重要吗?那些经典的51教科书没有用吗?否!理论当然重要、而且最重要,一切实践最终是要靠理论来指导的。教科书是要不断翻阅、当作资料来查找的。但是,当你对单片机的整体还不是很了解的时候,应该从做单片机实验下手;有一定经验后,还需要结合单片机理论知识,这样对单片机就能有真正的理解和认识了,也就能灵活运用了。   对于初学者,完全可以先把单片机看做一个普通IC。IC知道吧?Integrated Chip,集成电路。IC可多了,不计其数,一般是DIP(双列直插)模样的,给它的管脚通上电,它就能完成一定功能。单片机也是这样,以国内常用的单片机STC89C52RC(宏晶生产,用宏晶老总的说法,用国产单片机,支持国货!)来说,这是个大块头的芯片,40个管脚,PIN(管脚)20接地、PIN40接电源,这个芯片就处于工作状态了。但要让它真正能运行起来,还需要做些工作。第一,PIN18、PIN19要接一个晶振,晶振相当于单片机的心脏,给单片机提供“脉搏”(脉冲),是单片机执行指令的时间依据(显然,单片机执行速度就跟这个晶振的频率有关了,频率高、执行速度快,但频率有上限约定,过高的频率单片机是吃不消的)。第二,PIN9要有一个“复位”信号,这是单片机开始执行程序的信号,像百米赛跑的发令*。没这个信号不行吗?上电就让单片机跑程序代码不行吗?要知道,你给单片机加上电源,比如+5V,单片机内部电源可不是立刻能上升到5V的,这需要一个过程,可能要几个ms(毫秒),毫秒对于人类而言是很短暂的时间,但对于单片机是巨大的时间长度!单片机是以微秒、甚至纳秒为时间单位的!在这个电源上升过程中,电压处于不稳定状态,如果这时单片机就开始执行程序,就不定出什么乱子!你问我到底能出什么乱子?我不知道具体出什么乱子,但我可以告诉你,每次出的乱子都可能不相同!因为这是一种不稳定状态。所以,单片机需要一个外部复位电路,给单片机提供复位信号,这个信号肯定是在电源稳定后才发出的,单片机检测到这个复位信号后,就从一个固定的代码地址取出第一条指令、并开始执行。   说了第一、第二,还有最重要的第三:单片机需要写入控制程序,即指令代码,才能完成你想要的功能。没有代码的单片机是一个“空白”的芯片,当然什么也不会做。怎么写入程序?用钢笔还是铅笔?呵呵,写入,也叫烧程序,也叫编程、下载,write、burn、 program,都是这个意思,术语上比较乱,国内流行的叫法是“烧程序”--把控制代码“放”到单片机内部的过程。(这里,我们默认单片机都是内部带FLASH,可擦写、可编程的。)大部分单片机需要专用的“编程器”来烧写程序,STC宏晶的比较特殊,通过串口就可以烧写,廉价、简便。 (待续)
  • 热度 20
    2012-5-3 12:40
    1589 次阅读|
    2 个评论
    本文最初由【海东青电子】张平发表于ENDCHINA.COM,转载请保留出处和版权信息,谢谢。   漫谈单片机  单片机,英文Single Chip Microcomputer,是中国人在上世纪八十年代发明的名词,但单片机只是小名,它真正的大名叫MCU,翻译过来是“微控制器”,Micro Control Unit,这是国际流行的术语。   单片机并不特指51单片机,流行的还有PIC、AVR、STM8等单片机,但国内使用最多、历史最悠久、普及程度最高的是51单片机,“51”成了单片机的代名词。51单片机确实适合初学者入门,这在后续文章中会做解释。   单片机容易学吗?也容易、也不容易。--这不等于废话?!容易,是说入门容易;难,是说深刻理解单片机、做出稳定的应用系统是不容易的--成为一个单片机应用高手的路是漫长的。但只要对单片机有浓厚的兴趣,能坚持不懈地学习并动手实践,每个人最终都能成为高手!   学习单片机需要有什么样的基础吗?必须是电子专业吗?答案是:不!这正是单片机的魅力所在:你需要的只是兴趣,还有掌握它的决心!学习单片机,需要有基本的电路知识和电脑编程知识。连这些基本知识也没有?没关系,“零基础”也可以开始,先补一下这些基础知识,并不很难,但最终有人成功掌握了,有人半途而废了,是他们在智商上的区别吗?不是,是做事情态度上的区别!   既然我们堂而皇之地对别人说:我在学51了、我在学单片机了,那就得知道:为什么叫51单片机?怎么就不叫61呢?   选择题:51单片机名称的由来? 1)51单片机是大名鼎鼎的Intel在5月1日发明的。 2)51单片机有51个腿儿(管脚)。 3)是中国人随便给这个单片机起的名。 4)是Intel的MCS-51系列。   你的答案是什么?或者,你猜是什么?   国内称呼51单片机来源于当时常用的是MCS-51系列单片机,“51”是一种习惯叫法,国际上是没有51这个说法的,如果你的英文论文里写“51 single chip”,老外是不懂的! 要说单片机的起源,要从伟大的Intel公司在1971年生产的4位机:4004说起。什么是4位机、8位机、16位机?这是根据数据线的“宽度”来定义的。最早的4004估计是用4根数据线来传送数据的,51单片机是8位数据线。PS:1971年还发生了另一件事(绝不是轰动世界的大事):俺呱呱落地、来到这个世界上。我跟单片机同岁,呵呵。 (待续)