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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    我的目的是这样:在while(1)里,检测开关条件后运行中断1,运行完后,再调用中断2,两个中断设置的参数不一样。比如:
    + ]2 Y. Z( w* F
    2 M8 q3 U0 d/ ^void main();* l) @4 X9 @, p& d5 {* g9 L, J) x3 I1 n
    {
    , G6 u) O7 X5 r7 ^* w   InitTimer0();2 L0 o4 A4 E' a9 h

    , I; p% _& \( W: i& aled==~led;
    , V3 H% z0 j7 j! f8 {. ~6 f  InitTimer1();
    2 I; Q6 k% I& B& K. R) [
    : d7 q; b/ \9 m% _. eled1==~led1
    ; x- }, K7 [% Y8 F5 b: {2 r}
      e* ]" f8 d( e4 j) N9 w! j; J  X; {9 Y
    void time0() interrupt 1
    2 L+ H3 A% Z* l7 a{TH0=0XDD;
    7 K" ?! Z% [! s- M# b8 Y& z  tTL0=0Xa4;! g" L: i: H5 J! v& i7 i' {' `
    pp++;
    2 K  B! K0 d1 P}
    + w1 U5 a, u9 A1 u' i. y2 Z# a! h# S; B5 O) w9 V' D  S
    void time1() interrupt 1. X* A0 e; z4 ~' E/ H/ M+ t
    {TH0=0Xff;& _* i0 v; B# Z, g
    TL0=0Xa4;5 v- T3 p( W" Y# O4 ~- |5 L
    pp++;% ~! }% Z+ e: ]/ ]9 Y
    }1 e: S  z4 ]: C6 ^; m

    . p, o, S4 w' X: M请问以上程序可行吗?
    5 T% N; i4 Q/ G- \' f* M0 ?" O没有表达清楚,补充一下:我的程序目的是
      ?3 `0 R  b3 l; Y  _在程序运行开始,检测控制开关闭合时,定时器1模式为计时开始,4 ?3 e" x$ W& z& n$ }
    当扫描到开关再次闭合,计时停止(得到两次开关闭合时间间隔为假设1000周期,再以定时模式,以前面的计时时间的一半即500周期为定时器2时长开始倒计时。
    + Z: y  U) i7 `: Z当倒计时结束,输出取反;& b; [! S+ t5 K( X; n4 ^
    定时器2再以250周期倒计时,倒计时结束时,再次输出取反。
    ; p5 H5 N9 e6 y" b( ]这里,定时器2需要两次中断,两次写入不同的时间参数。请问如何实现?" w% d, m' D/ y) B3 @8 {

    该用户从未签到

    2#
    发表于 2022-5-16 10:12 | 只看该作者
    当然不可行了,中断服务程序是不能调用的,只能靠硬件触发。* p6 \7 L! w" F3 }& W2 c! I
    你可以初始化时只开启第一个中断,在第一个中断服务程序里,开启第二个中断,这样还是可以的。
  • 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 | 只看该作者
    中断程序 不是 调用的,是在满足中断条件时 产生中断 后 才执行 中断服务程序的," f  I" Y' [. v# m' m1 {- P
    这样的 结构 是 不可行的。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-9 07:18 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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