|
一、實驗名稱 定時、計數器實驗 二、實驗目的及要求 1.掌握 51 單片機的定時/計數器工作原理。 2.編程實現定時和計數功能的控制。 三、實驗主要儀器設備 PC機 單片機有 2 個 16 位的定時器/計數器,分別是 T0 和 T1。它們有兩種工作狀態,可以工作在定時方式和計數方式;定時是對內部的機器周期進行加法計數,計數是對外部輸入的計數脈沖進行加法計數,T0 的外部計數脈沖從 P3.4 引腳輸入,T1 的外部計數脈沖從 P3.5 引腳輸入;計數滿產生溢出,硬件使定時器/計數器 T0、T1 的中斷請求標志 TF0、TF1 置位;如果定時器、計數器允許中斷,則可以采用中斷方式進行溢出處理,而如果定時器/計數器不允許中斷,則可以采用查詢方式進行溢出處理。 1.定時中斷方式 2.計數器的應用 3.方波 4.蜂鳴器 六、實驗步驟 - 在Keil uVision3中編譯鏈接生成點陣.hex文件
源代碼如下: #include<reg51.h> char i=100; void main(){ TMOD=0x01; TH0=0xee; TL0=0x00; P1=0x00; EA=1; ET0=1; TR0=1; while(1); { ;} } void time0() interrupt 1{ TH0=0xee; TL0=0x00; i--; if(i<=0){ P1=~P1; i=100; } } 
- 在Keil uVision3中編譯鏈接生成點陣.hex文件
源代碼如下: #include<reg51.h> #define uchar unsigned char #define uint unsigned int void delay(uint i){ uint j; for(;i>0;i--) ; } void main(){ TMOD=0X50; TH1=0XFF; TL1=0XFC; EA=1; ET1=1; TR1=1; while(1) ; } void T1_int(void) interrupt 3{ for(;;){ P1=0XFF; delay(500); P1=0; delay(500); } } 
|