找回密码
 注册
关于网站域名变更的通知
查看: 286|回复: 3
打印 上一主题 下一主题

51单片机如何调用两个不同的中断子程序?

[复制链接]
  • TA的每日心情
    开心
    2022-1-29 15:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2022-5-16 09:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    我的目的是这样:在while(1)里,检测开关条件后运行中断1,运行完后,再调用中断2,两个中断设置的参数不一样。比如: . d# p7 y! {/ M9 z

    ; p  [% B; y* c" m" hvoid main();
    7 M$ `: s$ |; k5 E: y/ f' X{
    9 d, _/ o5 j2 x. o0 a1 I   InitTimer0();
    # Z4 D6 B5 A$ t; j3 l9 _4 F. C' i9 }8 x- ?% w
    led==~led;
    % ^1 g0 J1 A4 i# T/ ^- {$ [  InitTimer1();  |* T; g5 x3 A- I, v) f
    5 H4 x: N  _7 U- u( d
    led1==~led1
    # n5 Q( |4 V0 r}
    . `+ w9 n/ S0 t( D: C& ?7 H  Q5 r) c, f) |7 @$ ^
    void time0() interrupt 1" G/ l0 s; u. I# |! m/ ?
    {TH0=0XDD; . n" e& m0 L% P7 Z8 n5 N
    TL0=0Xa4;0 |4 v6 e& {+ C3 b' N  y6 s6 n
    pp++;
    9 x+ J2 e+ D9 u, M; }6 C, f}+ v. J% o0 r5 H' Y
    / Q# H4 }& C5 Q5 }; R1 \* z
    void time1() interrupt 1
    ' t4 [% y: P: e' L3 H2 D  h{TH0=0Xff;( I$ Z6 [) q8 c5 G6 j' `3 D
    TL0=0Xa4;
    0 O& x5 A0 U$ Y; L6 vpp++;
    ; B+ [4 X* f4 x) e3 b+ y2 a}6 Y6 U; x" O& {# t
    + \7 S* Y+ \% o+ O  t
    请问以上程序可行吗?
    8 Q7 x3 W( a, m  L没有表达清楚,补充一下:我的程序目的是+ f/ D6 i$ w, O$ S- p
    在程序运行开始,检测控制开关闭合时,定时器1模式为计时开始,
    ! S* O' p/ u: i7 J$ o0 b当扫描到开关再次闭合,计时停止(得到两次开关闭合时间间隔为假设1000周期,再以定时模式,以前面的计时时间的一半即500周期为定时器2时长开始倒计时。1 P8 `1 P+ i' R/ Q) E* U
    当倒计时结束,输出取反;3 A" y: x6 R! p! ?- u
    定时器2再以250周期倒计时,倒计时结束时,再次输出取反。
    , p) j  s6 v) h; _* q) ]这里,定时器2需要两次中断,两次写入不同的时间参数。请问如何实现?9 E1 Q" C8 `. E4 k/ r

    该用户从未签到

    2#
    发表于 2022-5-16 10:12 | 只看该作者
    当然不可行了,中断服务程序是不能调用的,只能靠硬件触发。
    $ ]8 h' D9 {7 f9 ]/ I  h- Q7 l你可以初始化时只开启第一个中断,在第一个中断服务程序里,开启第二个中断,这样还是可以的。
  • TA的每日心情
    奋斗
    2022-1-21 15:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2022-5-16 10:30 | 只看该作者
    在单片机里区别是不大。不过在其它处理器上就大了。比如arm,中断会直接改变运行模式,使用不同的寄存器集。单片机区别不大的原因是他只有一个工作模式。 不过,中断最主要的特点是有中断线触发的,而子程序是程序触发的。你不可能知道什么地方转到中断处理。在编程思录上完全是两回事,尽管代码上差不多。
  • TA的每日心情
    开心
    2022-1-29 15:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    4#
    发表于 2022-5-16 10:43 | 只看该作者
    中断程序 不是 调用的,是在满足中断条件时 产生中断 后 才执行 中断服务程序的,
    " L  t# E. c, S4 h& F这样的 结构 是 不可行的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-5 06:48 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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