51微控制器,用外部中斷0和外部中斷1實現 七段LED數碼管顯示值加1和減1。程式怎麼編

2021-04-21 21:00:28 字數 5021 閱讀 9805

1樓:匿名使用者

給你講思路吧,先設定外部中段,開啟中斷開關。主程式可以利用一個for迴圈,每有一次中斷就操作一次陣列(陣列元素加一或減一(其中陣列對應的是數碼管1~9的顯示))

2樓:匿名使用者

簡單。。。。。。。。。。

51微控制器通過計數器中斷實現數字的加1、減1和外部中斷清0功能,在3位數碼管上顯示

3樓:匿名使用者

看看這個**例項,彙編51微控制器接四個數碼管從0000顯示到9999,採用外部int0中斷一次加1,int1中斷清零,用組合語言。

at89s51微控制器的p1口接有1個7段led數碼管,初始顯示0。外部中斷輸入引腳into接有一

4樓:匿名使用者

p3.2的按鍵作為外部中斷了,實現計數功能,所以,那個延時子程式沒有用了。

關鍵問題是,凡是中斷程式中所用的變數,要定義為全域性變數。修改的程式如下。

#include

#define uint unsigned int#define uchar unsigned charuchar code seg=;//你0的段碼錯誤了uchar i=0; //凡是中斷程式用到的變數,一律定義為全域性變數,而且不用定義成 unsigned int 型的變數。

/*void delay()//延時子程式沒有用,註釋掉*/void main(void)

}void int0() interrupt 0 using 1**結果如下

5樓:匿名使用者

把變數i作為全域性變數

利用51微控制器,4個數碼管設計一個計時器,要求在數碼管上顯示的資料從0開始每1秒鐘加1。 10

6樓:anyway丶

共陽數碼管中斷程式:

#include

#define uint unsigned int

#define uchar unsigned char

uchar code table=

;uint num,a;

uchar bai,shi,ge;

void init();

void delay(uint);

void display(ucharbai,ucharshi,ucharge);

uint fb();

uint fs();

uint fg();

void main()

}void init()

void display(ucharbai,ucharshi,ucharge)

void timeoff() interrupt 1}}

void delay(uint z)

uint fb()

uint fs()

uint fg()

擴充套件資料

2個可程式設計定時/計數器·5箇中斷源,2個優先順序(52有6個)

一個全雙工序列通訊口

外部資料儲存器定址空間為64kb

外部程式儲存器定址空間為64kb

邏輯操作位定址功能·雙列直插40pindip封裝

單一+5v電源供電

cpu:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能暫存器;

ram:用以存放可以讀寫的資料,如運算的中間結果、最終結果以及欲顯示的資料;

rom:用以存放程式、一些原始資料和**;

i/o口:四個8位並行i/o口,既可用作輸入,也可用作輸出

t/c:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;

五個中斷源的中斷控制系統;

一個全雙工uart(通用非同步接收傳送器)的序列i/o口,用於實現微控制器之間或微控制器與微機之間的序列通訊;

片內振盪器和時鐘產生電路,石英晶體和微調電容需要外接。最佳振盪頻率為6m—12m。

7樓:匿名使用者

我剛剛寫好的 我的數碼管是共陽的 用中斷函式來寫#include

#define uint unsigned int#define uchar unsigned charuchar code table=

;uint num,a;

uchar bai,shi,ge;

void init();

void delay(uint);

void display(ucharbai,ucharshi,ucharge);

uint fb();

uint fs();

uint fg();

void main()

}void init()

void display(ucharbai,ucharshi,ucharge)

void timeoff() interrupt 1}}void delay(uint z)

uint fb()

uint fs()

uint fg()

8樓:匿名使用者

#include

#define uint unsigned int

uint qian,bai,shi,ge;

int a;

unsigned char code table=;

void chushihua(); //初始化函式

void delay(unsigned int i); //延時函式

void xianshi(uint qian,uint bai,uint shi,uint ge); //顯示函式

void main()

xianshi(qian,bai,shi,ge); } }

void exter1() interrupt 1

void chushihua()

void delay(unsigned int i)

void xianshi(uint qian,uint bai,uint shi,uint ge)

9樓:匿名使用者

這個不難的 你自己動手練習一下就會了的

設計一個微控制器輸入顯示系統,要求每按一下按鍵數碼管顯示資料加1(數碼管初始值為0,9加1 後顯示0)。

10樓:沈偉棟

程式清單如下:

#include < reg51.h >// 51微控制器標頭檔案

#define uchar unsigned char // 巨集定義

,用uchar替代無符號字元型

#define uint  unsigned int // 巨集定義,用uint 替代無符號整數型

sbit key = p2 ^ 7;

uchar count = 0;

uchar code datachar[10] = // 定義數碼管的段碼 '0'~'9'、'-'、' ' 'p'

;//延時n毫秒

void delaynms( uint n ) // 利用x、y作簡單的自減運算,消耗微控制器指令週期,達到延時的目的

//數碼管顯示   // 顯示方式為動態掃描,視覺暫留原理

void display( uchar num ) // *p指向main函式中的陣列shownum的首地址

void main( void )

while( !key );

}display( count );}}

擴充套件資料

8051微控制器具有如下功能:

8位cpu·4kbytes程式儲存器(rom) (52為8k)

128bytes的資料儲存器(ram) (52有256bytes的ram)

32條i/o口線·111條指令,大部分為單位元組指令

21個專用暫存器

2個可程式設計定時/計數器·5箇中斷源,2個優先順序(52有6個)

一個全雙工序列通訊口

外部資料儲存器定址空間為64kb

外部程式儲存器定址空間為64kb

邏輯操作位定址功能·雙列直插40pindip封裝

單一+5v電源供電

cpu:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能暫存器;

ram:用以存放可以讀寫的資料,如運算的中間結果、最終結果以及欲顯示的資料;

rom:用以存放程式、一些原始資料和**;

i/o口:四個8位並行i/o口,既可用作輸入,也可用作輸出

t/c:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;

五個中斷源的中斷控制系統;

一個全雙工uart(通用非同步接收傳送器)的序列i/o口,用於實現微控制器之間或微控制器與微機之間的序列通訊;

片內振盪器和時鐘產生電路,石英晶體和微調電容需要外接。最佳振盪頻率為6m—12m。

11樓:匿名使用者

#include < reg52.h >   // 嵌入51微控制器標頭檔案

#define uchar unsigned char // 巨集定義,用uchar替代無符號字元型

#define uint  unsigned int // 巨集定義,用uint 替代無符號整數型

sbit key = p2 ^ 7;

uchar count = 0;

uchar code datachar[10] = // 定義數碼管的段碼 '0'~'9'、'-'、' ' 'p'

;//延時n毫秒

void delaynms( uint n ) // 利用x、y作簡單的自減運算,消耗微控制器指令週期,達到延時的目的

//數碼管顯示   // 顯示方式為動態掃描,視覺暫留原理

void display( uchar num ) // *p指向main函式中的陣列shownum的首地址

void main( void )

while( !key );

}display( count ); }}

微控制器89c51外部摁鍵中斷程式

ex0 1 開外部中斷0 ea 0 開總中斷 lt0 1 下降沿觸發 然後寫中斷函式即可 void extern0 interrupt 0 按鍵一端接地,另一端接p3 2 就是外部中斷0 sbit key p3 2 void main void int0 interrupt 0 else 這個程式包...

51微控制器執行完外部中斷0後,想讓他返回主函式的開頭從新執行,繼續檢測中斷執行中斷在返回主函式開頭

你主函式中除了初始化的語句外,其它的處理部分都放在while 1 的迴圈中啊,然後 外部中 專斷中設定一 屬個標誌位,舉例說明,比如。下面例子,是外中斷一次,p0取反一次,你如果還想有其它資料處理,可以把語句寫在while 1 中。中斷執行後,判斷flag,然後會自動回到主函式中。void main...

關於51微控制器的中斷,關於51微控制器的中斷。

中斷的概念 cpu在處理某一事件a時,發生了另一事件b請求cpu迅速去處理 中斷髮生 cpu暫時中斷當前的工作,轉去處理事件b 中斷響應和中斷服務 待cpu將事件b處理完畢後,再回到原來事件a被中斷的地方繼續處理事件a 中斷返回 這一過程稱為中斷 二 中斷源 在51微控制器中有5箇中斷源 中斷號 優...