3673|5

7815

帖子

57

TA的资源

裸片初长成(中级)

楼主
 

不一样的51教程之四 之下 外部中断 和 串口 [复制链接]

上一篇我们终于说到了真正可以真枪实弹的 IO口和定时器。
基本上有了他们两个,融合前面的指令系统。我们已经可以做不少东西了,最基本的一个就是 流水灯。

这一篇,我接着讲另两个最常见的内部资源

外部中断

外部中断,跟前边说的 计数器 有点儿像,不同的是,计数器可以计数多个,而外部中断一个外部跳变就触发。

前边忘了说,,计数器和 外部中断 都是可以设置不一样的触发方式的,有低电平触发,也有 上升沿或者下降沿触发。

外部中断的设置,大致如下:
它涉及的寄存器只有两个,中断允许,还是那个IE,以及与定时器共享一个TCON的四个位。

它的设置,基本上就是,,设置好 触发模式, ITx位,允许其中断,完了.......

另外补充一点,如果使用了中断方式,标志位IEx位是无须软件清除的,啥叫软件清除?就是你写程序代码清除。而如果不是,采用查询方式则需要?
咦?
不用中断,那我怎么知道有外部中断啊?查询IEx么?
记住了,定时器,计数器,外部中断,串口这些,虽然总是跟中断一起,但是,没有人说过它们非得用中断的方式完成。

而且,就51而言,它们都有一个共同特征,标志位,如果用中断方式,都可以硬件清除,无须人为软件清除,查询方式则必须软件清除。


接下来,说串口。
一般的书上这部分内容也是啰啰嗦嗦,云里雾里,其实到最后我们知道的可能就是,它就是把一位一位的数据按照特定的速率传送出去。

俺对此简单总结一下:
数字系统通信,就数据位的多寡而言,有两种方式:串行和并行。
所谓串行,就是无论数据多少位长,我们都把它们按顺序一个一个位传输出去,并行就是有多少位就设置多少条口线,一次多个位同时传输出去。

说到这里,也许你会觉得,那并行比串行好啊,快啊,当然,表面上看起来是很快——在特定场合下它也的确快。
但事实上,串行的使用要比并行频繁的多得多。包括USB,也是串行总线。
这里面的原因我简单解释一下:
尽管并行一次传输多个位,但是这也带来了硬件上的复杂,因为,串行只要一到两条线,而并行呢,8个位就至少需要8条口线,加上一些控制线,仪表上常用的并行总线,GPIB,就有25条线。
这个还是其次,最严重的是,当数据线多的时候,彼此之间的干扰就会变成一个重要问题,特别是速度一旦提高,这就成了一个很严峻的考验。

所以,并行总线,比如GPIB,它大多用在短距离要求高速度的场合使用,而串口则比它适用性宽泛得多。
常见的RS232,通信距离最大可以去到15米到50米。与此相比,并口一般只有几十厘米。

此外,对于通信,还有 同步 和 异步之说。这个我不了解,也没做过同步的。
我们一般的传输数据,都属于异步。
因此,下面只简单说一下 异步通信。

串口的通信,其实做起来很简单,它只涉及五个寄存器的设置(数量上挺多,其实很简单)。
IE,如果不中断,没他什么事。
TCON TMOD 这个其实是把T1做成一个自动重装的8位计数器,用来产生波特率——其实,你只需设置好定时器工作就好,产生波特率什么的,不用你操心。
SCON 这个是串口唯一一个直接相关的控制寄存器。
PCON,有时候用到它的一个位把波特率倍频。

此前我从没具体讲个一个寄存器,而今,讲串口,我必须讲一下SCON这个寄存器,不然我就没啥好讲了。

前边说了,串口,说白了,就是把一个字节或者几个字节的内容按照顺序一个位一个位传出去,串口的硬件结构比较简单,为了稳定传输,它对波特率的要求比较高,很多人做串口实验室,失败的最常见原因之一就是,实际波特率不准。

波特率的具体计算公式,这里不重复,百度一下即可。
PCON的最高位,叫SMOD,设置为1时,波特率可在T1的溢出率基础上再翻一倍。

串口一收一发,但是它使用的是一个共同的缓冲寄存器,叫SBUF,我们如何启动串口收发呢?
其实太简单了,只要设置好前面几个寄存器,然后给SBUF赋值,就可以启动串口发送了,接收完成后,读出SBUF的值就可以完成接收。

嗯,今晚的内容貌似比较少,说的也比较简单。

在结束前,想简单说一句:
很多51教程上一大章一大章的内容,才说完了 定时器计数器 外部中断 和 串口,而我却如此“草草了事”。
其实我想说的是,当我在写的时候,我就希望我不是在重复别人的工作,那个没意思。

我希望有一些我认为需要补充的内容,我会用自己的方式表达出来,有一些我认为需要简洁的内容,比如这四部分,我则采用提炼的形式。
至于具体的寄存器相关位如何定义,如何设置,这些我认为你百度上搜索都是一大把一大把,所以,我不会重复。而且,其实我的记性很糟糕,我只是理解了它们是什么,正如我所说出来的那样,具体你让我写,不好意思,我还得看相关资料,当然排除一些太经常用的,我已经记得寄存器的所有定义了。

边写边和一个单片机群里的几个人扯。我想用我在里面说的一个小故事来结束这个话题:
我初中时有个老师,姓唐,一个当时30来岁的男老师。此老师很牛,他不随便给人做家教,再牛逼的家长也拿他没辙,他坚持按照自己得方式教,而且,他不是谁都辅导。
有一些学生,他只给他上了几节课然后就说你不用来了,因为他缺的可能只是方法和 点睛的一些话语和点破。

我很希望我就像这位老师,我不想重复教科书上的内容,我只希望我这个不太一样的讲述,会让你从另一个角度或者从一个最根本的角度去理解和学习51单片机——
它到底是什么?
它到底能做什么?
我们怎么做?

还有一句话,看 华清远见 的LINUX教程时看到的:
重要的是知道要多什么,而不是怎么做。
















此帖出自51单片机论坛

最新回复

这样比有些书好理解的说  详情 回复 发表于 2011-10-19 21:43
点赞 关注
个人签名

强者为尊,弱者,死无葬身之地

 

回复
举报

7815

帖子

57

TA的资源

裸片初长成(中级)

沙发
 
51硬件本身相关的内容,基本说完了。接下来还打算写两篇。
主要是具体使用汇编和C51在KEIL上编写程序,调试程序等方面的内容。

然后 for newbie的初级篇就写玩了。打算里还想写几个高级篇,不过那个我自己也不是太懂,所以,是 求讨论和求赐教篇。

不过最近忙,事情多,可能高级篇会先放下一阵子。
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

56

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
版主大大的文章浅显易懂,感觉就像面对面跟我们唠嗑一样。。恩。是的。。。唠嗑
此帖出自51单片机论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

4
 

回复 板凳 abo6016 的帖子

额,话说,我最初的想法就是,,让你们像看小说一样看过去

因为我一开始看这些东西就像看小说~~
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

96

帖子

0

TA的资源

一粒金砂(中级)

5
 
这样比有些书好理解的说
此帖出自51单片机论坛
 
 
 

回复

7815

帖子

57

TA的资源

裸片初长成(中级)

6
 

回复 5楼 海绵seny丶 的帖子

关键是能看懂,有用,不然就都是废话
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表