ขนาดวิดีโอ: 1280 X 720853 X 480640 X 360
แสดงแผงควบคุมโปรแกรมเล่น
เล่นอัตโนมัติ
เล่นใหม่
其實很簡單,中斷是一塊硬體電路,它的動作就是把PC(program counter)的值塞入堆疊器,堆疊器指針加一,PC被置入中斷的指向的地方,去了新的地址跑另外的一小段程式直到碰上中斷返回的指令,如8051的RETI,又觸發起動另外一塊硬體電路,它的動作是和上面的相反,從堆疊器取出最上面的值,就是剛進中斷時塞進去的哪個,堆疊器指針減一,用那個值把現有的PC值擠走,回去繼續跑原來中斷發生時被迫離開的那段程式.
俺以前就是搞51单片机的,那时候还没有stc,用的是atmel的,后来今年才有的stc,说实话宏晶的处理器真的给力。已经十多年没干这行业了,也不知道发展的什么样子了。
我15年就能买到STC的51单片机了😅
谢谢终于明白pc和dptr指针的区别了
6:45 发生中断后存入堆栈的不止有PC的值,通用寄存器的值也会被存到堆栈中。而且存储这些值的动作,准确的说,也不是由ALU完成的。因为ALU只负责算术和逻辑运算呐。
你就是一位天才
頻道講解的不會太複雜,又容易理解,對學習很有幫助
講解得非常好 感謝分享
3:31 第二根红线的划线划错了位置,应该是划到EX1这一行
想听你说车的继电器RELAY , 30,85,86,87的意思。能安排上嘛
做的不错,虽然没都看懂但理解个7788,要是加个实验视频就更好了
这解说是电脑合成音吗?声音好温柔噢。❤
终于听懂了什么是中断
請問在3:01的“程序計數器最多也就能控制64字節的存儲單元“,是最多能控制65536個字節吧!還是是控制64K個字節是這個意思嗎?謝謝。
65536B = 64KB的呀😂
@@imsailorjames 影片中只打 "64" 字節,少打 " k "
3:34 第二根红线画错了吧?
頭香 ❤姐姐的解說
你给谁叫姐姐?给TTS程序吗?
ORG 00H 指令把PC设置成00H?ORG只是伪指令,和PC没有关系,只是指示编译程序下面的指令从什么地址开始存放。
总觉得“地址译码器”的65535个连接不太现实,印刷电路不可能同时印刷65535根tracers。实际上应该是程序计数器里的数字作为获得内存RAM里下一句机器语言指令的内存地址直接去访问对应的内存地址。这是冯诺伊曼架构的精髓。
视频讲的原则上正确,但是实际上是通过多级地址译码器来避免排线太多的问题
所謂地址譯碼器是真的有實體線路65536根嗎?
16根就可以了,每根有2种状态,2^16次方即可实现65536个地址的选择。
指令段中还有ORG 13H也是伪指令,没有指出。
如果我的前面不設迴圈的話會一直依序讀到13H發生中斷嗎?還是硬體不觸發低準位的話會直接跳過呢?跳過的機制原理又是怎樣呢?有點小疑惑
不会,中断是现象也是一种资源,中断程序预留的那一部分存储空间不会被一般程序调用(hack不算)。当然程序的执行也不是简单的12345按顺序执行。实际上是一段一段执行,然后由jump指令在不同段间调转,除了中断指令外,一般指令不能跳转到中断入口。
現在開始好奇單片機如何執行命令這件事了?
可以学习下计算机组成原理
你谈谈电机改发电机吗?谢谢
Good~
4096下一个是8192,不是8182.
如果中斷處理程序需要訪問 RAM,但是在處理中斷的時候又接收到了一個新中斷,中斷處理程序怎麼識別自己在第幾層中斷,從而不會吧上一層中斷的臨時數據當作自己的臨時數據😂
一般一个 PC 有很多可以接收中断的IRQ线,是由操作系统调度的,此外中断也分不可被打断与可以被打断的。此外你说临时数据,这里我理解是上下文,切换线程时上下文会由操作系统保存/还原现场,所以中断本身,就跟普通程序一样,并不用关心
@@xzdemo1707 但是這不是 PC 呀😅
@@xzdemo1707 也沒有 OS 😅
堆栈嘛,比如主程序A执行到a1位置,中断B触发,把a1放到堆栈里,执行到b1的时候中断C又触发了,把b1放到堆栈里。C结束以后,先把b1拿出来继续执行,如果B也结束了就把a1拿出来继续执行。堆栈是后进先出的。
@@junelu3360 所以單片機也帶 sp 嗎🌝
可以學怎麼做電子雞嗎 XD 哈哈
其實很簡單,中斷是一塊硬體電路,它的動作就是把PC(program counter)的值塞入堆疊器,堆疊器指針加一,PC被置入中斷的指向的地方,去了新的地址跑另外的一小段程式直到碰上中斷返回的指令,如8051的RETI,又觸發起動另外一塊硬體電路,它的動作是和上面的相反,從堆疊器取出最上面的值,就是剛進中斷時塞進去的哪個,堆疊器指針減一,用那個值把現有的PC值擠走,回去繼續跑原來中斷發生時被迫離開的那段程式.
俺以前就是搞51单片机的,那时候还没有stc,用的是atmel的,后来今年才有的stc,说实话宏晶的处理器真的给力。已经十多年没干这行业了,也不知道发展的什么样子了。
我15年就能买到STC的51单片机了😅
谢谢终于明白pc和dptr指针的区别了
6:45 发生中断后存入堆栈的不止有PC的值,通用寄存器的值也会被存到堆栈中。而且存储这些值的动作,准确的说,也不是由ALU完成的。因为ALU只负责算术和逻辑运算呐。
你就是一位天才
頻道講解的不會太複雜,又容易理解,對學習很有幫助
講解得非常好 感謝分享
3:31 第二根红线的划线划错了位置,应该是划到EX1这一行
想听你说车的继电器RELAY , 30,85,86,87的意思。能安排上嘛
做的不错,虽然没都看懂但理解个7788,要是加个实验视频就更好了
这解说是电脑合成音吗?声音好温柔噢。❤
终于听懂了什么是中断
請問在3:01的“程序計數器最多也就能控制64字節的存儲單元“,是最多能控制65536個字節吧!還是是控制64K個字節是這個意思嗎?謝謝。
65536B = 64KB的呀😂
@@imsailorjames 影片中只打 "64" 字節,少打 " k "
3:34 第二根红线画错了吧?
頭香 ❤姐姐的解說
你给谁叫姐姐?给TTS程序吗?
ORG 00H 指令把PC设置成00H?ORG只是伪指令,和PC没有关系,只是指示编译程序下面的指令从什么地址开始存放。
总觉得“地址译码器”的65535个连接不太现实,印刷电路不可能同时印刷65535根tracers。实际上应该是程序计数器里的数字作为获得内存RAM里下一句机器语言指令的内存地址直接去访问对应的内存地址。这是冯诺伊曼架构的精髓。
视频讲的原则上正确,但是实际上是通过多级地址译码器来避免排线太多的问题
所謂地址譯碼器是真的有實體線路65536根嗎?
16根就可以了,每根有2种状态,2^16次方即可实现65536个地址的选择。
指令段中还有ORG 13H也是伪指令,没有指出。
如果我的前面不設迴圈的話
會一直依序讀到13H發生中斷嗎?
還是硬體不觸發低準位的話
會直接跳過呢?跳過的機制原理又是怎樣呢?
有點小疑惑
不会,中断是现象也是一种资源,中断程序预留的那一部分存储空间不会被一般程序调用(hack不算)。当然程序的执行也不是简单的12345按顺序执行。实际上是一段一段执行,然后由jump指令在不同段间调转,除了中断指令外,一般指令不能跳转到中断入口。
現在開始好奇單片機如何執行命令這件事了?
可以学习下计算机组成原理
你谈谈电机改发电机吗?谢谢
Good~
4096下一个是8192,不是8182.
如果中斷處理程序需要訪問 RAM,但是在處理中斷的時候又接收到了一個新中斷,中斷處理程序怎麼識別自己在第幾層中斷,從而不會吧上一層中斷的臨時數據當作自己的臨時數據😂
一般一个 PC 有很多可以接收中断的IRQ线,是由操作系统调度的,此外中断也分不可被打断与可以被打断的。此外你说临时数据,这里我理解是上下文,切换线程时上下文会由操作系统保存/还原现场,所以中断本身,就跟普通程序一样,并不用关心
@@xzdemo1707 但是這不是 PC 呀😅
@@xzdemo1707 也沒有 OS 😅
堆栈嘛,比如主程序A执行到a1位置,中断B触发,把a1放到堆栈里,执行到b1的时候中断C又触发了,把b1放到堆栈里。C结束以后,先把b1拿出来继续执行,如果B也结束了就把a1拿出来继续执行。堆栈是后进先出的。
@@junelu3360 所以單片機也帶 sp 嗎🌝
可以學怎麼做電子雞嗎 XD 哈哈