51微控制器T1
阿新 • • 發佈:2018-12-06
1 /************************************************************************************** 2 * 定時器1實驗 * 3 實現現象:下載程式後數碼管最後一位間隔一秒迴圈顯示0-F。使用微控制器內部定時器可以實現準確延時。4 注意事項:如果不想讓點陣模組顯示,可以將74HC595模組上的JP595短接片拔掉。 5 ***************************************************************************************/ 67 #include "reg52.h" //此檔案中定義了微控制器的一些特殊功能暫存器 8 #include "time1.h" 910 11 12 13 14 /******************************************************************************* 15 * 函 數 名 : main 16 * 函式功能 : 主函式 17 * 輸 入 : 無 18 * 輸 出 : 無 19 *******************************************************************************/ 20 void main() 21 { 22 LSA=0; 23 LSB=0; 24 LSC=0; 25 Timer1Init(); //定時器1初始化 26 while(1); 27 } 28 29
1 #include "time1.h" 2 #include "reg52.h" 3 4 u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 5 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值 6 u8 n=0; 7 /******************************************************************************* 8 * 函 數 名 : Timer1Init 9 * 函式功能 : 定時器1初始化 10 * 輸 入 : 無 11 * 輸 出 : 無 12 *******************************************************************************/ 13 void Timer1Init() 14 { 15 TMOD|=0X10;//選擇為定時器1模式,工作方式1,僅用TR1開啟啟動。 16 17 TH1=0XFC; //給定時器賦初值,定時1ms 18 TL1=0X18; 19 ET1=1;//開啟定時器1中斷允許 20 EA=1;//開啟總中斷 21 TR1=1;//開啟定時器 22 } 23 24 /******************************************************************************* 25 * 函 數 名 : void Timer1() interrupt 3 26 * 函式功能 : 定時器0中斷函式 27 * 輸 入 : 無 28 * 輸 出 : 無 29 *******************************************************************************/ 30 void Timer1() interrupt 3 31 { 32 static u16 i; 33 TH1=0XFC; //給定時器賦初值,定時1ms 34 TL1=0X18; 35 i++; 36 if(i==1000) 37 { 38 i=0; 39 P0=smgduan[n++]; 40 if(n==16)n=0; 41 } 42 }
1 #ifndef __TIME1_H__ 2 #define __TIME1_H__ 3 #include "reg52.h" 4 5 typedef unsigned int u16; //對資料型別進行宣告定義 6 typedef unsigned char u8; 7 8 sbit LSA=P2^2; 9 sbit LSB=P2^3; 10 sbit LSC=P2^4; 11 12 void Timer1Init(); 13 14 #endif
1.定時器1