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

  Рет қаралды 14,670

爱上半导体

爱上半导体

9 ай бұрын

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

Пікірлер: 39
@m00iwi00m
@m00iwi00m 8 ай бұрын
其實很簡單,中斷是一塊硬體電路,它的動作就是把PC(program counter)的值塞入堆疊器,堆疊器指針加一,PC被置入中斷的指向的地方,去了新的地址跑另外的一小段程式直到碰上中斷返回的指令,如8051的RETI,又觸發起動另外一塊硬體電路,它的動作是和上面的相反,從堆疊器取出最上面的值,就是剛進中斷時塞進去的哪個,堆疊器指針減一,用那個值把現有的PC值擠走,回去繼續跑原來中斷發生時被迫離開的那段程式.
@Johnson-Young
@Johnson-Young 4 ай бұрын
谢谢终于明白pc和dptr指针的区别了
@Zanzara0403
@Zanzara0403 8 ай бұрын
講解得非常好 感謝分享
@USA52228
@USA52228 8 ай бұрын
你就是一位天才
@renandre7658
@renandre7658 8 ай бұрын
頻道講解的不會太複雜,又容易理解,對學習很有幫助
@imsailorjames
@imsailorjames 8 ай бұрын
6:45 发生中断后存入堆栈的不止有PC的值,通用寄存器的值也会被存到堆栈中。而且存储这些值的动作,准确的说,也不是由ALU完成的。因为ALU只负责算术和逻辑运算呐。
@yjbooky6256
@yjbooky6256 8 ай бұрын
俺以前就是搞51单片机的,那时候还没有stc,用的是atmel的,后来今年才有的stc,说实话宏晶的处理器真的给力。已经十多年没干这行业了,也不知道发展的什么样子了。
@sharksonata203
@sharksonata203 8 ай бұрын
我15年就能买到STC的51单片机了😅
@dlfang
@dlfang 8 ай бұрын
做的不错,虽然没都看懂但理解个7788,要是加个实验视频就更好了
@xzdemo1707
@xzdemo1707 8 ай бұрын
终于听懂了什么是中断
@imsailorjames
@imsailorjames 8 ай бұрын
3:31 第二根红线的划线划错了位置,应该是划到EX1这一行
@user-mq4ki1fr2c
@user-mq4ki1fr2c 8 ай бұрын
Good~
@ooo6451
@ooo6451 8 ай бұрын
这解说是电脑合成音吗?声音好温柔噢。❤
@hitsilent
@hitsilent 8 ай бұрын
想听你说车的继电器RELAY , 30,85,86,87的意思。能安排上嘛
@SHULIN-rf6tr
@SHULIN-rf6tr 8 ай бұрын
頭香 ❤姐姐的解說
@saitama3753
@saitama3753 8 ай бұрын
你给谁叫姐姐?给TTS程序吗?
@user-ei3yu9dn2u
@user-ei3yu9dn2u 7 ай бұрын
总觉得“地址译码器”的65535个连接不太现实,印刷电路不可能同时印刷65535根tracers。实际上应该是程序计数器里的数字作为获得内存RAM里下一句机器语言指令的内存地址直接去访问对应的内存地址。这是冯诺伊曼架构的精髓。
@gz6x
@gz6x 12 күн бұрын
视频讲的原则上正确,但是实际上是通过多级地址译码器来避免排线太多的问题
@ericwang3213
@ericwang3213 3 ай бұрын
ORG 00H 指令把PC设置成00H?ORG只是伪指令,和PC没有关系,只是指示编译程序下面的指令从什么地址开始存放。
@lanruosi999
@lanruosi999 8 ай бұрын
請問在3:01的“程序計數器最多也就能控制64字節的存儲單元“,是最多能控制65536個字節吧!還是是控制64K個字節是這個意思嗎?謝謝。
@imsailorjames
@imsailorjames 8 ай бұрын
65536B = 64KB的呀😂
@ericwang3213
@ericwang3213 3 ай бұрын
指令段中还有ORG 13H也是伪指令,没有指出。
@IMmilktea
@IMmilktea 8 ай бұрын
如果我的前面不設迴圈的話 會一直依序讀到13H發生中斷嗎? 還是硬體不觸發低準位的話 會直接跳過呢?跳過的機制原理又是怎樣呢? 有點小疑惑
@LiuQixuan
@LiuQixuan 8 ай бұрын
不会,中断是现象也是一种资源,中断程序预留的那一部分存储空间不会被一般程序调用(hack不算)。当然程序的执行也不是简单的12345按顺序执行。实际上是一段一段执行,然后由jump指令在不同段间调转,除了中断指令外,一般指令不能跳转到中断入口。
@user-bg8sc1jx2d
@user-bg8sc1jx2d 8 ай бұрын
3:34 第二根红线画错了吧?
@eir457882
@eir457882 8 ай бұрын
所謂地址譯碼器是真的有實體線路65536根嗎?
@arrive_at
@arrive_at 2 ай бұрын
16根就可以了,每根有2种状态,2^16次方即可实现65536个地址的选择。
@kienhoecheam
@kienhoecheam 8 ай бұрын
4096下一个是8192,不是8182.
@user-gn8lz7yl2x
@user-gn8lz7yl2x 8 ай бұрын
現在開始好奇單片機如何執行命令這件事了?
@user-ev2tj1ti3r
@user-ev2tj1ti3r 5 ай бұрын
可以学习下计算机组成原理
@tommymairo8964
@tommymairo8964 8 ай бұрын
如果中斷處理程序需要訪問 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
@gaojianting 8 ай бұрын
可以學怎麼做電子雞嗎 XD 哈哈
@user-tw4pf6wm1k
@user-tw4pf6wm1k 8 ай бұрын
你谈谈电机改发电机吗?谢谢
无刷电机!电机中的高端货,原理反而更简单!
8:01
爱上半导体
Рет қаралды 66 М.
The joker's house has been invaded by a pseudo-human#joker #shorts
00:39
Untitled Joker
Рет қаралды 15 МЛН
Василиса наняла личного массажиста 😂 #shorts
00:22
Денис Кукояка
Рет қаралды 9 МЛН
8位和32位单片机最本质区别,2分钟看懂!
4:43
爱上半导体
Рет қаралды 15 М.
Lecture 9: Interrupts
20:43
Embedded Systems and Deep Learning
Рет қаралды 260 М.
Что не так с яблоком Apple? #apple #macbook
0:38
Не шарю!
Рет қаралды 211 М.
iPhone 12 socket cleaning #fixit
0:30
Tamar DB (mt)
Рет қаралды 56 МЛН
Gizli Apple Watch Özelliği😱
0:14
Safak Novruz
Рет қаралды 4,9 МЛН