用汇编讲中断,反而更简单!中断到底是什么?来深入理解中断吧!

Ғылым және технология

想要更加深入的了解单片机的中断,可以稍微了解一下汇编语言,因为仅靠C语言或者书本的讲述,对中断的了解程度只是表象。
而汇编语言是直接跟硬件打交道的,它的每一行代码都直接对应单片机内部的存储器,或寄存器这些。
通过汇编语言,你会对计算机的底层原理有一个更加透彻的理解,比方说中断的原理!
后面会把本视频的图文版发布到微信公众号:爱上半导体,大家可以先关注一下。

Пікірлер: 39

  • @m00iwi00m
    @m00iwi00m8 ай бұрын

    其實很簡單,中斷是一塊硬體電路,它的動作就是把PC(program counter)的值塞入堆疊器,堆疊器指針加一,PC被置入中斷的指向的地方,去了新的地址跑另外的一小段程式直到碰上中斷返回的指令,如8051的RETI,又觸發起動另外一塊硬體電路,它的動作是和上面的相反,從堆疊器取出最上面的值,就是剛進中斷時塞進去的哪個,堆疊器指針減一,用那個值把現有的PC值擠走,回去繼續跑原來中斷發生時被迫離開的那段程式.

  • @Johnson-Young
    @Johnson-Young4 ай бұрын

    谢谢终于明白pc和dptr指针的区别了

  • @Zanzara0403
    @Zanzara04038 ай бұрын

    講解得非常好 感謝分享

  • @USA52228
    @USA522288 ай бұрын

    你就是一位天才

  • @renandre7658
    @renandre76588 ай бұрын

    頻道講解的不會太複雜,又容易理解,對學習很有幫助

  • @imsailorjames
    @imsailorjames8 ай бұрын

    6:45 发生中断后存入堆栈的不止有PC的值,通用寄存器的值也会被存到堆栈中。而且存储这些值的动作,准确的说,也不是由ALU完成的。因为ALU只负责算术和逻辑运算呐。

  • @yjbooky6256
    @yjbooky62568 ай бұрын

    俺以前就是搞51单片机的,那时候还没有stc,用的是atmel的,后来今年才有的stc,说实话宏晶的处理器真的给力。已经十多年没干这行业了,也不知道发展的什么样子了。

  • @sharksonata203

    @sharksonata203

    8 ай бұрын

    我15年就能买到STC的51单片机了😅

  • @dlfang
    @dlfang8 ай бұрын

    做的不错,虽然没都看懂但理解个7788,要是加个实验视频就更好了

  • @xzdemo1707
    @xzdemo17078 ай бұрын

    终于听懂了什么是中断

  • @imsailorjames
    @imsailorjames8 ай бұрын

    3:31 第二根红线的划线划错了位置,应该是划到EX1这一行

  • @user-mq4ki1fr2c
    @user-mq4ki1fr2c8 ай бұрын

    Good~

  • @ooo6451
    @ooo64518 ай бұрын

    这解说是电脑合成音吗?声音好温柔噢。❤

  • @hitsilent
    @hitsilent8 ай бұрын

    想听你说车的继电器RELAY , 30,85,86,87的意思。能安排上嘛

  • @SHULIN-rf6tr
    @SHULIN-rf6tr8 ай бұрын

    頭香 ❤姐姐的解說

  • @saitama3753

    @saitama3753

    8 ай бұрын

    你给谁叫姐姐?给TTS程序吗?

  • @user-ei3yu9dn2u
    @user-ei3yu9dn2u7 ай бұрын

    总觉得“地址译码器”的65535个连接不太现实,印刷电路不可能同时印刷65535根tracers。实际上应该是程序计数器里的数字作为获得内存RAM里下一句机器语言指令的内存地址直接去访问对应的内存地址。这是冯诺伊曼架构的精髓。

  • @gz6x

    @gz6x

    12 күн бұрын

    视频讲的原则上正确,但是实际上是通过多级地址译码器来避免排线太多的问题

  • @ericwang3213
    @ericwang32133 ай бұрын

    ORG 00H 指令把PC设置成00H?ORG只是伪指令,和PC没有关系,只是指示编译程序下面的指令从什么地址开始存放。

  • @lanruosi999
    @lanruosi9998 ай бұрын

    請問在3:01的“程序計數器最多也就能控制64字節的存儲單元“,是最多能控制65536個字節吧!還是是控制64K個字節是這個意思嗎?謝謝。

  • @imsailorjames

    @imsailorjames

    8 ай бұрын

    65536B = 64KB的呀😂

  • @ericwang3213
    @ericwang32133 ай бұрын

    指令段中还有ORG 13H也是伪指令,没有指出。

  • @IMmilktea
    @IMmilktea8 ай бұрын

    如果我的前面不設迴圈的話 會一直依序讀到13H發生中斷嗎? 還是硬體不觸發低準位的話 會直接跳過呢?跳過的機制原理又是怎樣呢? 有點小疑惑

  • @LiuQixuan

    @LiuQixuan

    8 ай бұрын

    不会,中断是现象也是一种资源,中断程序预留的那一部分存储空间不会被一般程序调用(hack不算)。当然程序的执行也不是简单的12345按顺序执行。实际上是一段一段执行,然后由jump指令在不同段间调转,除了中断指令外,一般指令不能跳转到中断入口。

  • @user-bg8sc1jx2d
    @user-bg8sc1jx2d8 ай бұрын

    3:34 第二根红线画错了吧?

  • @eir457882
    @eir4578828 ай бұрын

    所謂地址譯碼器是真的有實體線路65536根嗎?

  • @arrive_at

    @arrive_at

    2 ай бұрын

    16根就可以了,每根有2种状态,2^16次方即可实现65536个地址的选择。

  • @kienhoecheam
    @kienhoecheam8 ай бұрын

    4096下一个是8192,不是8182.

  • @user-gn8lz7yl2x
    @user-gn8lz7yl2x8 ай бұрын

    現在開始好奇單片機如何執行命令這件事了?

  • @user-ev2tj1ti3r

    @user-ev2tj1ti3r

    5 ай бұрын

    可以学习下计算机组成原理

  • @tommymairo8964
    @tommymairo89648 ай бұрын

    如果中斷處理程序需要訪問 RAM,但是在處理中斷的時候又接收到了一個新中斷,中斷處理程序怎麼識別自己在第幾層中斷,從而不會吧上一層中斷的臨時數據當作自己的臨時數據😂

  • @xzdemo1707

    @xzdemo1707

    8 ай бұрын

    一般一个 PC 有很多可以接收中断的IRQ线,是由操作系统调度的,此外中断也分不可被打断与可以被打断的。此外你说临时数据,这里我理解是上下文,切换线程时上下文会由操作系统保存/还原现场,所以中断本身,就跟普通程序一样,并不用关心

  • @tommymairo8964

    @tommymairo8964

    8 ай бұрын

    @@xzdemo1707 但是這不是 PC 呀😅

  • @tommymairo8964

    @tommymairo8964

    8 ай бұрын

    @@xzdemo1707 也沒有 OS 😅

  • @junelu3360

    @junelu3360

    8 ай бұрын

    堆栈嘛,比如主程序A执行到a1位置,中断B触发,把a1放到堆栈里,执行到b1的时候中断C又触发了,把b1放到堆栈里。C结束以后,先把b1拿出来继续执行,如果B也结束了就把a1拿出来继续执行。堆栈是后进先出的。

  • @tommymairo8964

    @tommymairo8964

    8 ай бұрын

    @@junelu3360 所以單片機也帶 sp 嗎🌝

  • @gaojianting
    @gaojianting8 ай бұрын

    可以學怎麼做電子雞嗎 XD 哈哈

  • @user-tw4pf6wm1k
    @user-tw4pf6wm1k8 ай бұрын

    你谈谈电机改发电机吗?谢谢

Келесі