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

猜你喜欢

转载自www.cnblogs.com/clam-hao/p/10075809.html