打印
[51单片机]

这些中断51是否能忙的过来?

[复制链接]
1586|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
彪哥|  楼主 | 2013-9-27 20:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 彪哥 于 2013-9-28 07:57 编辑

各位前辈帮我看看,这么多的中断,是否可行?
系统采用89S52芯片,时钟22.1184MHz,波特率38400Kbps。
1、定时器1用于串口波特率发生器;
2、定时器0工作于可编程计数器,16位自动装载模式,溢出周期由串口接收的数据确定;控制口线输出不同频率脉冲;
3、定时器2用于10分钟~60分钟内定时,定时时间由串口接收的数据确定;
4、外部中断0用于响应一个外部设备,中断程序内做简单判断后,需要将数据送到数据总线。
5 、串口中断

相关帖子

沙发
taoest| | 2013-9-27 21:09 | 只看该作者
第2点有危险,主要看频率范围。其他几个没有压力。

使用特权

评论回复
板凳
林志财| | 2013-9-28 01:06 | 只看该作者
果真全部用上,LZ直接实验证明下,

使用特权

评论回复
地板
彪哥|  楼主 | 2013-9-28 07:56 | 只看该作者
写了个测试程序,直接测试1、2两点,响应不过来,第2点的定时器初值从0x0000~到0xfff都试过,要么串口收到数据后不能回发,要么定时器不工作,咋整?

使用特权

评论回复
5
ayb_ice| | 2013-9-28 08:19 | 只看该作者
定时器0根本就不支持16位自动重装载方式,将T1与T2交换

其它没有难点,主要是通信速率有点高(当然发送是没有问题的,接收可能有点问题,这要取决于协议了,以及通信是否频繁)

建议T2做波特率,然后用T0即可

使用特权

评论回复
6
ningling_21| | 2013-9-28 08:51 | 只看该作者
定时器0不能工作于16位自动重装模式...

使用特权

评论回复
7
slotg| | 2013-9-28 17:28 | 只看该作者
波特率很高, 因此串口中断的优先权要放在最高, 否则会有资料没有收到的情况.
时钟22.1184Mhz, 建议使用1T的51, 减少中断服务程序执行的时间.

使用特权

评论回复
8
彪哥|  楼主 | 2013-9-28 20:26 | 只看该作者
抱歉,是笔误,T0工作于16位计数方式,中断程序中判断中断次数并重赋初值。写程序测试的时候,发现一旦T0启动,串口中断似乎就不响应了,难道是因为T0不停的进入中断程序,其他中断响应不过来了吗?

使用特权

评论回复
9
彪哥|  楼主 | 2013-9-28 20:29 | 只看该作者
刚才看S52的手册发现P1.0还可用于可编程定时器输出,类似于8253的功能,能否用这个代替T0的工作呀?

使用特权

评论回复
10
NE5532| | 2013-9-29 08:54 | 只看该作者
频率发生尽量用自装载定时器来做,不需要占用中断资源。串口波特率比较高,建议看看能不能降低。另外你的串口接收中断是1个字节进一次中断,还是进一次中断查询收一个包?时钟频率不低,但是51的分频太大,建议考虑STC和SILICON之类的低分频51

使用特权

评论回复
11
slotg| | 2013-9-29 19:09 | 只看该作者
51的串口基本上都没有FIFO, 因此每接收到一个字节就会中断一次, CPU会很忙.

使用特权

评论回复
12
gx_huang| | 2013-9-30 12:33 | 只看该作者
这么点任务,普通的52芯片绰绰有余。

使用特权

评论回复
13
teddeng| | 2013-9-30 15:35 | 只看该作者
缺少t0的具体数据,要不系统速度够不够随便就可以算出来的。

使用特权

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

本版积分规则

44

主题

171

帖子

1

粉丝