打印

串口中断种添这两句话有什么用?

[复制链接]
楼主: xlsbz
手机看帖
扫描二维码
随时随地手机跟帖
21
lelee007| | 2009-12-12 18:45 | 只看该作者 回帖奖励 |倒序浏览
19L好像没弄清楚51的串口发送和接受哦,看书不仔细啦

发送和接受用的两个SBUF,发送和接受不会互相影响,但是读写都是通过SBUF操作,只是通过读写命令来区分操作哪个寄存器

第二条确实不敢苟同哇,谁要把程序写成那样了,得考虑转行了

使用特权

评论回复
22
lelee007| | 2009-12-12 18:50 | 只看该作者
而且照那样说,就只能单工通信了

很明显51可以双工

使用特权

评论回复
23
鲜为人知| | 2009-12-13 10:46 | 只看该作者
我看错了问题,第二点确实没必要说。我不知道Ls的还有20L做没做过串口通讯,不要来了就扣顶错了的大帽子,如果错了就指出来。如果你只是天天看着书来说,我想说那你还没有真正了解这个东西。我这几天就在搞串口通讯网络,如果你说的是对的,那我不知道是STM32错了还是51错了,因为现在他们之间就在通讯。

使用特权

评论回复
24
desert_hawk| | 2009-12-13 10:56 | 只看该作者
我看错了问题,第二点确实没必要说。我不知道Ls的还有20L做没做过串口通讯,不要来了就扣顶错了的大帽子,如果错了就指出来。如果你只是天天看着书来说,我想说那你还没有真正了解这个东西。我这几天就在搞串口通讯 ...
鲜为人知 发表于 2009-12-13 10:46

不管是51还是STM32,不管是书上说的还是实际的实验,你在19楼的第一条都是错的。另外,如果你在实际应用的时候发现所使用的芯片跟教科书上或者官方数据手册上所写的完全不一样的时候,你宁愿相信教科书和手册是错的而你的应用和理论是对的,是吗?反正我不会这样认为。

使用特权

评论回复
25
鲜为人知| | 2009-12-13 11:01 | 只看该作者
我们都是来讨论某个我们或许熟悉的问题的,是为了说清楚某个问题,你一再说错了,怎么错了,那里错了,我想知道的是哪里错了,请你帮我指出来好么,也免得误导大家,我也学习学习。

使用特权

评论回复
26
desert_hawk| | 2009-12-13 11:07 | 只看该作者
看9楼的第一条。

使用特权

评论回复
27
鲜为人知| | 2009-12-13 11:10 | 只看该作者
我觉得这再容易理解不过了,ES=0,ES=1,这就好比你正在做手头某个重要的事情,你先把你的手机调静音(就==ES=0)让他不要来打断你,当你做完了这个事关闭静音(==ES=1),因为或许你有重要的电话听不见,我觉得这没什么好说的,你却一直说错了,我的第一点就是这个意思

使用特权

评论回复
28
desert_hawk| | 2009-12-13 11:12 | 只看该作者
ES = 1; 的功能是什么? 在串口中断里还有可能再进入串口中断吗?

使用特权

评论回复
29
鲜为人知| | 2009-12-13 11:15 | 只看该作者
其实当我看了第一句话后就不愿再往下看了,关闭串口中断没什么用??,你去试试。你试试当你把串口收到的数据再发到电脑上来,你在发的程序里不要写ES=0,ES=1。我劝你去试试再说

使用特权

评论回复
30
desert_hawk| | 2009-12-13 11:19 | 只看该作者
你怎么知道我没试过? 是不是回帖的人只有你一个人试验过?本来是你自己程序有问题,还非要关闭串口中断,你这样表面上是解决问题了,但在你关闭串口中断的时间内,就接收不到数据了,好好一个全双工串口被你给搞成半双工的了。

使用特权

评论回复
31
鲜为人知| | 2009-12-13 11:25 | 只看该作者
你错就错这里,关了串口中断就收不到数据了。

使用特权

评论回复
32
desert_hawk| | 2009-12-13 11:29 | 只看该作者
你看清楚了,楼主贴的程序,ES=1;是在串口中断里,在串口中断里写这句一点用都没有。据你的描述,你所谓的“把串口收到的数据再发到电脑上来”发送是在主程序里,而不是中断里。我跟你讲不明白,因为你满脑子都是错误观点。你慢慢悟吧,如果一周之内你还觉得自己是对的,那只能说明你不适合做这行。

使用特权

评论回复
33
hotpower| | 2009-12-13 11:36 | 只看该作者

大有讲头

本帖最后由 hotpower 于 2009-12-13 11:42 编辑

首先要理解51只有2级中断,同级别再分优先位。
1.高优先级:
  因为中断程序不执行RETI指令,即不放弃对高优先级的控制,即使优先级
排位较高的中断也无法嵌套中断。ES=0也无任何意义。
2.低优先级:
  高优先级中断不会理会ES=X而会强行嵌套。
对于同级别中断,同时发生中断请求时才有“中断优先响应”问题。
当某中断响应进入中断后,它就是同级的“王道”~~~“王道就是霸道”
只有在它执行了RETI指令后其他高级或被挂起的同级中断才能按级别或优先位
再次争夺中断控制权~~~

参见:“中断隐身

使用特权

评论回复
34
desert_hawk| | 2009-12-13 11:42 | 只看该作者
你错就错这里,关了串口中断就收不到数据了。
鲜为人知 发表于 2009-12-13 11:25

请问在你用查询方式发送数据的过程中,关闭串口中断还怎么接收数据?

使用特权

评论回复
35
xlsbz|  楼主 | 2009-12-13 13:20 | 只看该作者
我看错了问题,第二点确实没必要说。我不知道Ls的还有20L做没做过串口通讯,不要来了就扣顶错了的大帽子,如果错了就指出来。如果你只是天天看着书来说,我想说那你还没有真正了解这个东西。我这几天就在搞串口通讯 ...
鲜为人知 发表于 2009-12-13 10:46



51和STM32接收都一样的。对于发送,STM32比51多一种方式.

使用特权

评论回复
36
李冬发| | 2009-12-13 13:54 | 只看该作者
这个程序又不是教科书上的,难免有不成熟的地方。
按作者的意思,大概是担心在处理串口中断的过程中被其它中断所抢占。但关闭串口中断允许(ES=0)根本起不到保护这个中断不被抢占的作用。
其实如果怕串口中断被其 ...
desert_hawk 发表于 2009-12-11 22:12

你对51的中断体系不了解!

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xlsbz + 1
37
desert_hawk| | 2009-12-13 14:07 | 只看该作者
你对51的中断体系不了解!
李冬发 发表于 2009-12-13 13:54

没下文了? 请赐教一下?

使用特权

评论回复
38
xlsbz|  楼主 | 2009-12-13 14:43 | 只看该作者
你对51的中断体系不了解!
李冬发 发表于 2009-12-13 13:54


大侠咋理解的?say两句!?:lol

使用特权

评论回复
39
desert_hawk| | 2009-12-13 15:41 | 只看该作者
你对51的中断体系不了解!
李冬发 发表于 2009-12-13 13:54
大侠咋理解的?say两句!?:lol
xlsbz 发表于 2009-12-13 14:43

这位大侠除了说我不了解,别的什么也说不出来了。我只能说,我对这位大侠“心中”的51不太了解。

使用特权

评论回复
40
鲜为人知| | 2009-12-13 16:00 | 只看该作者
你看清楚了,楼主贴的程序,ES=1;是在串口中断里,在串口中断里写这句一点用都没有。据你的描述,你所谓的“把串口收到的数据再发到电脑上来”发送是在主程序里,而不是中断里。我跟你讲不明白,因为你满脑子都是错 ...
desert_hawk 发表于 2009-12-13 11:29
我觉得你不适合讨论技术,或许适合上街卖大白菜,当菜贩子。另外你在另一层问“如果用......发送,怎样接收,你可以查询接收”。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则