矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 61745|回复: 108

抛砖:学单片机必须掌握的最简单概念

  [复制链接]
发表于 2007-7-11 12:01:37 | 显示全部楼层 |阅读模式
单片机就是一个具有很多功能的电脑控制芯片,也叫微控制器(mcu),它内部集成了运算器,寄存器,程序存储器,数据存储器,定时/计数器,比较器。。。等等微电路,通过循环执行存放在程序存储器中的程序,让单片机的引脚接受输入或发送输出信号来控制外部电路。显然对于完全相同的硬件线路,只要存放在芯片里面的程序不同,其所实现的控制功能也就会大不相同。因此鼓捣单片机除了硬件电路以外,如何设计它的软件:程序就是要关注的重点。
    单片机的“位“和“指令”:
    尽管电脑CPU已经从32位进化到64位,可是现在最常用的仍然是8位单片机,也就是在其中存储,来回传递,加工的数据都是8位二进制数据如:01110100  00001000  。。。这样的形式,每个数据都是8位的。这个8位二进数并不是任意的,就以上述2个8位二进制数,在51单片机中表示的就是“把00001000(等于10进数“8”)放到累加器A中,太不直观了也!为了避免写那么多0和1可能产生的错误,我们常用16进数,同样上面两个数用16进数写出来就是 E4H  08H 或 0XE4  0X08,简单是简单些,还是不直观。。。,那么 MOV A, #08H  怎么样?直观多了吧?这个就是51单片机的一条指令,。。。,当然,单片机可不认识英语,它只认二进数,把英文指令翻译成二进数,需要专门的编程软件,“汇编器“,我们在电脑上运行编程软件,正确无误后翻译成相应的机器码文件,再通过专门装置“编程器“把他从电脑中取出灌入单片机不就妥了?。。。这些指令和数据都是8位的,单片机可以识别?可以,它会根据先后排列顺序和当前状态自动判断眼下的是指令还是数据,。。。那如果判断错了呢?这样的情况并非永远不存在,如果一旦发生(例如强电干扰)并且没有采取预防措施,就会引起乱套,。。。那是后话。还要注意咯,不同系列的单片机,同样的二进数表示的指令完全不同,51,AVR,430,等等都各是各,而且都是说自己最好。。。,管他那么多,能用就好。
    单片机的引脚:要实现输入输出控制,当然要通过它的引脚进行啦,除了电源端,晶振端,复位端几个必须占用的引脚以外(大部分单片机如此,也有可以只要电源+-线的),其他很多引脚都是用来做输入/输出的,即所谓输入输出口或 I/O口。例如51机就有 P0 ,P1, P2, P3口;AVR则是PORTA, PORTB, PORTC, PORTD口。一般,和“8'位机对应,每个口也是8位(或更少)的,对于51机,如P1口,就有P1.0, P1.1, P1.2, P1.3, P1.4, P1.5, P1.6, P1.7 一共8个引脚。现在看下面2条指令:
      MOV A, #08H
       MOV P1,A
表示:给累加器A,一个数:08相当于二进数00001000;
      把A的内容现在就是00001000传送到P1口;
结果:P1口的各个引脚上的电压除了P1.3是高(1)以外,其余各脚都是低(0),如果把8个发光管负极经过限流电阻接到P1口的8个脚正极接电源正,那么就有7个管子发光,哪个不亮呢?答案你一定知道了吧。。。这不是用软件控制了硬件吗?
    或许你又说了,干吗转弯抹角用2条指令?直接
    MOVP1, #08H 不是更直截了当?好是好,不过51机没有这样直接把一个数送到口上的指令,没法子,我们只能照规矩:“指令表”行事。

    当然我们做单片机绝不是仅仅跑1、2条指令,怎样让他实现更复杂的功能呢?人们采取的高招就是用专门装置--编程器把许多指令按执行顺序一条条存放在程序存储器中,这个程序存储器在掉电时也保存其中的内容,那么给单片机一通电,他就按照程序存储器中的指令一条条执行下去,到最后再循环,不就实现了单片机吗?

[ 本帖最后由 wey05 于 2007-7-11 13:23 编辑 ]

评分

3

查看全部评分

     
发表于 2018-11-15 14:15:34 | 显示全部楼层
Z80是八位CPU,不是单片机。以前有用Z80CPU加上外围设备做在一块线路板上作工业应用的,当时叫做单板机。可以近似地理解(不严密),将单板机的大部分功能集成在一块芯片后就形成了单片机。

回复 支持 2 反对 0

使用道具 举报

     
发表于 2016-7-14 16:52:48 | 显示全部楼层
很有意思的技术设备,被很糟糕的教材糟蹋了几十年!再看看这些年来普通商品的《说明书》,“绕脖子”的地方还少吗?有文凭的多了,把汉语表达通顺、简练的却少了---------这就是几十年来的教育。误人子弟呀!
回复 支持 1 反对 0

使用道具 举报

发表于 2008-4-19 19:59:56 | 显示全部楼层
我二十多年前也学过Z80. 和B***语言.当时是自学考试的2门课程,当时也都考及格了.还有证书为证.
但我觉得一点用也没有.什么事也干不了.几年后都忘光了.
这就象我们中学同学聚会时回顾的.我们都在中学学了6年的外语.但我们95%的同学.现在一句外国话都说不出口.更听不懂.

后来我想借助单片机做点事,先是请人帮助编程.后来就买现成的编程器,二次编程,再后来学着改程序,查找汇编语言的语句用法.不经意中倒是悟出许多道理来了.还做成了一些应用项目.
关于那机算机语言.我也早想学了.但这都是一大本,一大本的.我没有耐心读完其中任何一本书.就发现又有新的语言版本出现了...
后来.我为了搞网络营销.要做自己的网站网页.先请别人先做了个主页.以后就学着修改网页,再添加新网页,为了增新功能,就寻找有用的控件程序段.再后来.就开始学着辩认各种语句的结构.现在好象也悟出点道理来了.

LZ 上面所说的一些编程的基础,我都能懂,我认为这是学会了单片机编程语言的一些总结.但对于没实践过程的,接受还是有一定难度的.
学单片机编程.关键还是要有实际目标, 边做边学.
只要你做好了,做成了,就一定能悟出很多道理来.  但如过你只是向谁学了什么. 只是看过几本什么书, 还不一定能做成什么项目呢!

这里我推荐一个入门学习的方法.可以找个现成的编程控制器,先做成一个完整的应用项目. 如用PROG-110可编程控制器

****************************************************************

1.PROG-110可编程控制器 尽管很小,也很简单,
但它却提供了学用编程的全部设备(硬件)和系统软件,

学用者只要输入简单的数字代码,就可以编制自己的程序,
输入简单的数字代码后,马上就能调试和运行自己编制的程序了.
2.PROG-110可编程控制器,  上面有按键和数码管,可以让你能输入自编的代码程序.
  上面有输入/输出口.可以让你能加装程序控制开关,或用来输出驱动外部设备,
  还可以输出各种频率信号,发报警声,或唱一首歌.

3.学编程.最重要的是,要学会理清自己的编程思想,不管你是在用那种计算机语言在编程.
  其使用的编程思路往往是相似的.只要你学会了用一种语言编程,再学其它的计算机语言去编程,也会觉的很轻松.

4.学用PROG-110可编程控制器,实际上已学到了程序编程的许多技能,  
  程序的结构:  程序从开始...,然后进入到程序过程....一直到程序结束.
  编程的一些概念: 程序地址, 程序指令代码, 指令参数代码,程序的转向,程序计数器......
  编程的一些技巧:  运行演示程序,检测软硬件的好坏, 插入停止指令,调试程序,编制和运行子程序.

5. 我想,学用PROG-110可编程控制器,还能学到许多我没有说到的内容.


[ 本帖最后由 PLC388 于 2008-4-19 21:31 编辑 ]
回复 支持 1 反对 0

使用道具 举报

     
发表于 2007-7-11 12:11:09 | 显示全部楼层
好,很容易理解
发表于 2007-7-11 21:32:22 | 显示全部楼层
感觉比书上讲的好哟
希望楼主辛苦些
再多讲一些
辛苦了!!!
发表于 2007-7-12 07:36:12 | 显示全部楼层
咱也学习学习...
 楼主| 发表于 2007-7-14 18:01:54 | 显示全部楼层
注意!上面有个地方说错了:
就是51机可以直接执行
MOV P1,#08H这样的指令,对不起大家,检讨!但是这样的指令,因为#08H是固定在程序中的数据,不能灵活改变,所以用得较少。
MOV P1, A 而A可以灵活地赋值,所以用的较多。
     
发表于 2007-7-15 11:37:02 | 显示全部楼层
原帖由 wey05 于 2007-7-14 18:01 发表
注意!上面有个地方说错了:
就是51机可以直接执行
MOV P1,#08H这样的指令,对不起大家,检讨!但是这样的指令,因为#08H是固定在程序中的数据,不能灵活改变,所以用得较少。
MOV P1, A 而A可以灵活地赋值, ...



表扬这种治学的态度!
     
发表于 2007-7-15 17:39:47 | 显示全部楼层
赞!!!!!!
     
发表于 2007-7-15 22:52:54 | 显示全部楼层
现在很多单片机书籍,让人看后会觉得知其然,不知其所以然。我买过很多51单片机的书籍,不得不比较来看。也买了不少的所谓学习机,但用过后就觉得想用它开发些什么就很困难了。我曾经想自己做个单片机学习机,而不需要编程器,也就是将自己编写的程序直接写入存储器内,然后让单片机去执行验证,这样单片机芯片的所有功能就不象学习机那样被占用一些,图纸也设计好了,但苦于本地没有PCB生产厂,时间长了也就做罢了。学习单片机,我觉得如果不是因工作需要,学学只能是玩玩罢了,想自己开发些东西,一个是条件限制,还有就是资金问题,单枪匹马的做,即使做成了,也没谁会用。其实单片机的用武之地还是蛮多的,我也修过大量采用单片机的设备,但是在目前的中国,有些东西不能搞得很先进,主要就是会维修的人和使用的人太少了,设备一坏,不能及时修上,或者说使用不当而发生事故,会觉得设备不好,所以拧可把设备报废而采用人去做。这是我的切身体会。

[ 本帖最后由 清风碧雪 于 2007-7-15 23:08 编辑 ]
 楼主| 发表于 2007-7-16 09:49:11 | 显示全部楼层
清风碧雪君言之有理,你所说的单片学习机,其实就是和过去8-90年代流行一时的TP801--Z80单板机一样,不过单片机已经带有I/O.TIMER,就可以不要Z80PIO\Z80CTC这些外围芯片,更简单些,但是里面也要像TP801那样装上监控程序,以便程序可以执行从小键盘输入的机器码,过去我用8031做过,也基本成功,那时条件差,用6116加小电池代替ROM,正如君所言,关键是用来干什么?作为爱好不妨搞点自用的小装置,小仪表等等,还是可行的。
设备自动化水平过高,使用人员的水平跟不上,最后自动变手动,手动变不动,以前经常有的,不会用反而怪设备不行,现在是否好些?作为爱好者来说,先入门试一下,看看有兴趣就搞,没兴趣就拉倒,不比靠这个吃饭,非搞清楚搞熟练不行。无线电论坛上好多人都在“跪求”什么单片机程序应付考试,也不知道既然没学这个,考它干吗?

[ 本帖最后由 wey05 于 2007-7-16 09:50 编辑 ]
     
发表于 2008-4-16 15:30:12 | 显示全部楼层
清风兄,我这里可以做电路板
也刚开始学习51,有事多交流
     
发表于 2008-4-17 19:26:12 | 显示全部楼层
我学习单片机是从Z80 6800开始,走了不少弯路.现在想起来,学习单片机不用
将单片机的每一个细节都学完,甚至将一本所有的章节都看完在去实践.
  你只要学习10几条语句,就可以编制一些实用的程序.这时你发现编程并不神秘.
如果你在编程的过程中遇到了困难,那么我恭喜你,你会有很大的进步.
如果现在的大学在学习单片机时,不是一开始就将一些理论知识,而是出一个课题让
同学门去找答案,那么他们才会对单片机感兴趣,才会学到真东西.
     
发表于 2008-4-18 11:05:05 | 显示全部楼层
说来惭愧,我二十多年前就学过Z80,十来年前又参与过单片机产品的开发和生产,但始终停留在硬件层面上,后来单位业务转型,也就没再深入下去。最近翻了下仓库,发现还有不少当年剩下的东西。准备利用这个有利条件,再把单片机技术捡起来,没准儿退休后还有用,起码也能丰富退休生活,哈哈。
     
发表于 2008-4-24 19:51:50 | 显示全部楼层
已经有兴趣了
发表于 2008-5-29 17:10:01 | 显示全部楼层
自学了十多年.一次也没用过,永远停留在纸上谈兵,现在好像更不用了.
您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-4-25 03:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表