找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2242|回復(fù): 10
收起左側(cè)

請(qǐng)教一下關(guān)于51單片機(jī)的外部中斷

[復(fù)制鏈接]
ID:378990 發(fā)表于 2019-6-13 21:11 來自手機(jī) | 顯示全部樓層 |閱讀模式
第一個(gè)問題:圖一中的“INT0”是什么干用的,還有它是哪來的,這個(gè)程序并沒有“sbit INT0=xxx”。
第二個(gè)問題:圖二為什么在中斷函數(shù)中要加上“EX=0  …… EX=1”?如果不加會(huì)怎么樣?

我想diy個(gè)手電,用stc15w408as,不論在什么情況,只要某個(gè)開關(guān)按下去,即當(dāng)p3.2(INT0)為低電平時(shí),進(jìn)入中斷程序,使MOS管導(dǎo)通,led點(diǎn)亮。(一鍵極亮功能)。然后別的檔位用switch case。這個(gè)思路如何?剛剛開工,程序在圖三。
初學(xué),請(qǐng)多指教。
mmexport1560430719497.jpg
Screenshot_2019-06-13-20-52-39-072_com.android.browser.png
mmexport1560431306269.jpg
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2019-6-13 22:53 | 顯示全部樓層
1、INT0  在頭文件中定義了

2、就是初始化外部中斷。默認(rèn)并不觸發(fā)外部中斷。

3、實(shí)現(xiàn)變檔,最好是使用PWM驅(qū)動(dòng)。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2019-6-14 08:39 | 顯示全部樓層
第一個(gè)問題:圖一中的“INT0”是什么干用的,還有它是哪來的,這個(gè)程序并沒有“sbit INT0=xxx”。
答:INT0的問題需要看硬件的設(shè)計(jì)目的。sbit INT0=xxx 是有的,只是你不知道,樓上的朋友告訴你了。

第二個(gè)問題:圖二為什么在中斷函數(shù)中要加上“EX=0  …… EX=1”?如果不加會(huì)怎么樣?
答:都可以,需要根據(jù)整個(gè)系統(tǒng)的設(shè)計(jì)來決定,就目前你的水平,還不能理解這句話。慢慢來,功夫到了,你會(huì)應(yīng)用自如的。這里提兩個(gè)問題供你思考一下:
1、當(dāng)你進(jìn)入中斷服務(wù)程序后,會(huì)發(fā)生其它中斷?
2、你在執(zhí)行中斷服務(wù)程序時(shí),怕不怕被其它中斷打擾?
如果怕打擾,可以將可能打擾你的那個(gè)中斷禁止,待你處理完成后,再開放它,是不是一個(gè)方法呢?
“EX=0  …… EX=1” :常用來禁止某個(gè)中斷,發(fā)生于某段程序運(yùn)行的地方。
回復(fù)

使用道具 舉報(bào)

ID:339320 發(fā)表于 2019-6-14 08:39 | 顯示全部樓層
①、INT0是在<reg51.h>中定義了的,INT0上面的一杠代表:為低電平觸發(fā)。
②、看此鏈接:http://www.torrancerestoration.com/bbs/dpj-140317-1.html
回復(fù)

使用道具 舉報(bào)

ID:562525 發(fā)表于 2019-6-14 16:10 | 顯示全部樓層
典型的外部中斷0按鍵處理程序:
EX0=0  
<>延時(shí)30毫秒
<>等待按鍵松開
EX0=1

就是說先關(guān)了外部中斷0,等按鍵穩(wěn)定后,再等按鍵松開
以防止按鍵按下時(shí)震動(dòng)余波引起的誤觸發(fā)
你的程序沒有考慮到按鍵震動(dòng)的余波,所以會(huì)多次觸發(fā)外部中斷0。
但是這個(gè)半成品程序的外部中斷0內(nèi)容僅僅是不斷將LED設(shè)置為點(diǎn)亮的狀態(tài),即使多次觸發(fā)也不會(huì)影響,所以目前看不出來什么;如果想要在中斷函數(shù)里面準(zhǔn)確記錄按鍵按下次數(shù)的話就會(huì)出問題的。
回復(fù)

使用道具 舉報(bào)

ID:207421 發(fā)表于 2019-6-14 17:54 | 顯示全部樓層
可以在中斷里面執(zhí)行PWM調(diào)光等功能

如圖

如圖
回復(fù)

使用道具 舉報(bào)

ID:517466 發(fā)表于 2019-6-14 21:15 | 顯示全部樓層
樓主對(duì)C語言和51單片機(jī)的理解還不夠啊。INT0的概念純粹是C語言的知識(shí),是為了在程序中操縱P3.2管腳時(shí),使用的別稱。除了能控制管腳輸出信號(hào),還可以配合控制寄存器和控制位,做單片機(jī)的設(shè)置工作,就像樓上給的資料那樣。比如控制這個(gè)管腳是在收到下降沿信號(hào)的時(shí)候產(chǎn)生中斷,還是遇到低電平的時(shí)候產(chǎn)生中斷。
EX0是替代51單片機(jī)中的中斷控制器(寄存器地址:0xA8)中的控制外部中斷0使能的一個(gè)控制位(位地址:0xA8),用來控制當(dāng)外部中斷信號(hào)產(chǎn)生的時(shí)候,系統(tǒng)是否還響應(yīng)這個(gè)中斷。EX=0,意味著即使外部已經(jīng)產(chǎn)生了中斷信號(hào),但系統(tǒng)不響應(yīng),不會(huì)進(jìn)到中斷處理程序中去處理。
建議樓主有時(shí)間的話,多看看單片機(jī)原理的書。
回復(fù)

使用道具 舉報(bào)

ID:378990 發(fā)表于 2019-6-14 22:53 來自手機(jī) | 顯示全部樓層
aiwenxue999 發(fā)表于 2019-6-14 08:39
①、INT0是在中定義了的,INT0上面的一杠代表:為低電平觸發(fā)。
②、看此鏈接:http://www.torrancerestoration.com/bbs/d ...

求教一下,我發(fā)現(xiàn)reg51.h里面,寫的是sbit INT0=0xB2,reg52.h里面,寫的是sbit INT0=P3^2,這是什么意思?
回復(fù)

使用道具 舉報(bào)

ID:328668 發(fā)表于 2019-6-15 20:29 | 顯示全部樓層
1 INT0頭文件里定義了,也就是庫里有了;
回復(fù)

使用道具 舉報(bào)

ID:328668 發(fā)表于 2019-6-15 20:34 | 顯示全部樓層
1 INT0頭文件里有了,也就是庫里已經(jīng)給你寫好了;
2 中斷的開關(guān),開的時(shí)候進(jìn)中斷(滿足條件),關(guān)的時(shí)候不進(jìn)中斷(滿足條件);中斷里寫了是因?yàn)椴蛔尦绦蛟谥袛嗬锏臅r(shí)候就再一次進(jìn)中斷;


用占空比會(huì)比較好一點(diǎn);控制亮度比較得心應(yīng)手。
回復(fù)

使用道具 舉報(bào)

ID:480680 發(fā)表于 2019-7-24 16:56 | 顯示全部樓層
溝里郭嘉 發(fā)表于 2019-6-14 22:53
求教一下,我發(fā)現(xiàn)reg51.h里面,寫的是sbit INT0=0xB2,reg52.h里面,寫的是sbit INT0=P3^2,這是什么意思 ...

第一個(gè)是INT0的地址,很多里面用的是sfr,第二個(gè)是INT0所作用的引腳
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表