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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    我的目的是这样:在while(1)里,检测开关条件后运行中断1,运行完后,再调用中断2,两个中断设置的参数不一样。比如:
    & M/ Z# C7 q( `0 H4 W6 q9 H3 @' N5 T
    void main();% H8 K* g, R+ [( b3 i' |
    {
    , X5 ~8 l0 g! e- C7 [9 P   InitTimer0();
    * ]) D, `7 t- B7 Q; C, I, g+ d/ u* @; k, j$ F& z7 h
    led==~led;7 f' a, Q4 a8 i8 i/ G
      InitTimer1();
    . G: @+ x+ M% d" |
    ' q$ V7 d7 E: f( Z9 N! Gled1==~led1
      y2 ^$ E5 x8 @1 ^6 |+ S+ U: e}& Y0 C+ ]7 f4 q, s4 A/ ^+ D
    9 c- j5 X( x1 Z
    void time0() interrupt 1/ O6 ?5 C# Z% m  C: y% @- z; R
    {TH0=0XDD;
    ) z$ S5 f, A* JTL0=0Xa4;  Z$ f8 o: o0 E: I) L8 _, Z2 _
    pp++;( D( Z& Q3 J! c1 }* Y1 M  d
    }8 y: q9 q% Q$ }  Z3 X( q

    # D! l, ^) w  q6 tvoid time1() interrupt 1
    ' ~5 y) w; U- v5 _! G# q. \' J{TH0=0Xff;
    ( T/ n, [. X2 z- {2 F( aTL0=0Xa4;
    9 W- q0 S/ P0 g3 E1 Q2 fpp++;
    2 A/ E$ D$ v1 B  V* n6 l}
    ; F% Q6 R# i2 y. B! H  c/ C
    / H2 B& A+ t6 a& F- B! T请问以上程序可行吗?; E7 e* Q, p" N7 \3 d
    没有表达清楚,补充一下:我的程序目的是3 C' ?; r% M: {: x7 j1 l
    在程序运行开始,检测控制开关闭合时,定时器1模式为计时开始,6 j( [' g% k1 i( P/ C0 x
    当扫描到开关再次闭合,计时停止(得到两次开关闭合时间间隔为假设1000周期,再以定时模式,以前面的计时时间的一半即500周期为定时器2时长开始倒计时。" d, n. y' X6 E% \; Q: G0 t
    当倒计时结束,输出取反;
    + J+ D1 d2 P% V" L; M9 s定时器2再以250周期倒计时,倒计时结束时,再次输出取反。# S: B9 X' ]( b4 N& k8 b' Y! q
    这里,定时器2需要两次中断,两次写入不同的时间参数。请问如何实现?
    . Y4 T* b8 H, f

    该用户从未签到

    2#
    发表于 2022-5-16 10:12 | 只看该作者
    当然不可行了,中断服务程序是不能调用的,只能靠硬件触发。& r/ O# Y7 l% g- l  i1 q
    你可以初始化时只开启第一个中断,在第一个中断服务程序里,开启第二个中断,这样还是可以的。
  • 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 | 只看该作者
    中断程序 不是 调用的,是在满足中断条件时 产生中断 后 才执行 中断服务程序的,5 f3 f8 X( H0 Y; g
    这样的 结构 是 不可行的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-17 21:10 , Processed in 0.062500 second(s), 23 queries , Gzip On.

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

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

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