1. 程式人生 > >51微控制器T1

51微控制器T1

 1 /**************************************************************************************                                                                                
 2 *                      定時器1實驗                                                  *                        
 3 實現現象:下載程式後數碼管最後一位間隔一秒迴圈顯示0-F。使用微控制器內部定時器可以實現準確延時。                                                                                
4 注意事項:如果不想讓點陣模組顯示,可以將74HC595模組上的JP595短接片拔掉。 5 ***************************************************************************************/ 6
7 #include "reg52.h" //此檔案中定義了微控制器的一些特殊功能暫存器 8 #include "time1.h" 9
10 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