日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

51单片机——中断

發布時間:2023/12/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51单片机——中断 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單片機——中斷


宗旨:技術的學習是有限的,分享的精神是無限的。

?

1、中斷:放下手中的事情去處理另一種事情。

?

2、定時器中斷

?????? 定時器是單片機模塊的一個資源,確確實實存在的一個模塊,中斷是單片機的一種運行機制。不是一回事,不只是定時器才能觸發中斷。

? ? ? ?對單片機的操作主要是操作IO口和操作寄存器的。

x * 8 + 3 = 向量地址?—— x為中斷函數編號

?

3、數碼管動態掃描

余暉效應:(10ms) ? ??

P0 = 0xff; // 消隱

EA = 0;

ET0 = 0; // 開總中斷,開定時器0中斷

#include <reg52.h>typedef unsigned int uint; typedef unsigned char uchar;uchar code display[] = {//數碼管顯示字符轉換表0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E }; uchar buffer[6] = {//數碼管顯示緩沖區,初值0xFF確保啟動時都不亮0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; uint cnt = 0; //記錄T0中斷次數int main(void) {unsigned long sec = 0; //記錄經過的秒數EA = 1; //使能總中斷TMOD = 0x01; //設置T0為模式1TH0 = 0xFC; //為T0賦初值0xFC67,定時1msTL0 = 0x67;ET0 = 1; //使能T0中斷TR0 = 1; //啟動T0while(1);return 0; } /* 定時器0中斷服務函數 */ void InterruptTimer0() interrupt 1 {static uchar i = 0; //動態掃描的索引TH0 = 0xFC; //重新加載初值TL0 = 0x67;cnt++; //中斷次數計數值加1//以下代碼完成數碼管動態掃描刷新P0 = 0xFF; //顯示消隱switch (i){case 0:P1 = 0xfe;i++;P0 = buffer[0];break;case 1:P1 = 0xfd;i++;P0 = buffer[1];break;case 2:P1 = 0xfb;i++;P0 = buffer[2];break;case 3:P1 = 0xf7;i++;P0 = buffer[3];break;case 4:P1 = 0xef;i++;P0 = buffer[4];break;case 5:P1 = 0xdf;i = 0;P0 = buffer[5];break;default:break;}if(cnt >= 1000) //判斷T0溢出是否達到1000次{cnt = 0; //達到1000次后計數值清零sec++; //秒計數自加1//以下代碼將sec按十進制位從低到高依次提取并轉為數碼管顯示字符buffer[0] = display [sec % 10];buffer[1] = display [sec / 10 % 10];buffer[2] = display [sec / 100 % 10];buffer[3] = display [sec / 1000 % 10];buffer[4] = display [sec / 10000 % 10];buffer[5] = display [sec / 100000 % 10];} }


總結

以上是生活随笔為你收集整理的51单片机——中断的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。