中斷大概是這樣的。。。如果有點錯誤不要怪我。。。我以前作過鼠標中斷的東西。。現在有些想不起來了。。。所以。。。呵呵呵。。。
紅安網站建設公司成都創新互聯,紅安網站設計制作,有大型網站制作公司豐富經驗。已為紅安1000+提供企業網站建設服務。企業網站搭建\外貿網站建設要多少錢,請找那個售后服務好的紅安做網站的公司定做!
當程序運行到中斷條件的時候,會向CPU發信號改變優先級(原先運行的東西會放進哪個特定的地方的,作保存),以發出中斷的那段程序作為最高優先,執行完成后再由執行另外的。。。建議你去看看匯編。。。哈哈哈。。。我沒學過的。。。
C中實現中斷是用了一個函數:geninterrupt(...)
這個“...”是個16進制的數字,是中斷號,像鼠標中斷號就是0x33
還要用到類似匯編里寄存器模樣的變量:如_AX,_BX,_CX,_DX...不同的值功能不同。。。哎呀,我都忘完了。。。建議去查下geninterrupt()的用法就OK了。。。
中斷函數是不需要額外通過代碼調用的
當中斷條件滿足,單片機會打斷當前執行的語句,跳轉到中斷函數,然后執行完中斷函數后,再次返回之前被打斷的語句繼續執行
中斷函數中,每次都會對定時器重新初始化,即頭兩句對TH1和TL1的賦值,這樣每50ms會再次進入一次中斷函數.每20次進入中斷,即經過了1秒,然后對全局變量miao自增1
而main函數則是不斷對變量miao進行輸出
首先你要寫中斷函數
然后在主程序中像調用子函數一樣調用就可以了
舉個例子吧
#define uchar unsigned char
#define uchar unsigned char
sbit D1=P1^0;
uchar aa;
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
while(1)
{
if(aa==20)
{
D1=~D1;
aa=0;
}
}
}
void T0time()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
本文名稱:C語言中斷函數是從哪開始 c語言 中斷函數
標題路徑:http://vcdvsql.cn/article42/dopgjhc.html
成都網站建設公司_創新互聯,為您提供響應式網站、企業網站制作、網站收錄、全網營銷推廣、關鍵詞優化、網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯