?? timer.lst
字號:
C51 COMPILER V8.02 TIMER 07/27/2007 22:23:38 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN timer.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE timer.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include"keyboard.h"
3 #include"timer.h"
4
5
6 /*-----------------------------------------------------------------------------------*/
7 /*定義定時器0重裝值(只適用于晶振為11.0592M時),50ms溢出 46080 */
8 #define RELOAD_H ( 65536-1843)/256;
9 #define RELOAD_L ( 65536-1843 )%256;
10 //----------------------------------------------------------------------------------
11 //蜂鳴器引腳定義
12 sbit Beep = P2^0;
13
14 //extern bit FLAG0;
15 //extern unsigned char ptr;
16
17 unsigned char dispcode[6]; //數(shù)碼管顯示值存放數(shù)組
18 unsigned char sec_cnt=0; //秒計數(shù)器
19
20
21
22 /*-----------------------------------------------------------------------------------
23 功能:定時器0初始化(晶振11.0592M,溢出周期為50ms)
24 名稱:Timer0_Init()
25 輸入:無
26 輸出:無
27 返回:無
28 -------------------------------------------------------------------------------------*/
29 void Timer0_Init(void)
30 {
31 1 //工作方式控制寄存器TMOD
32 1 //--------------------------------------------------------------------------------------
33 1 //TMOD寄存器用于定義定時/計數(shù)器的操作方式及工作模式,其格式如下:
34 1 // 7 6 5 4 3 2 1 0
35 1 // GATE C/T M1 M0 GATE C/T M1 M0
36 1 //--------------------------------------------------------------------------------------
37 1 //其中低4位(0~3)位定義定時/計數(shù)器0,高4位(4~7)定義定時/計數(shù)器1
38 1 //--------------------------------------------------------------------------------------
39 1 // M1 M0 為操作方式選擇位
40 1 // 0 0 方式0 13位計數(shù)器
41 1 // 0 1 方式1 16位計數(shù)器
42 1 // 1 0 方式2 自動再裝入的8位計數(shù)器
43 1 // 1 1 方式3 將定時/計數(shù)器0分成兩個8位計數(shù)器.
44 1 //--------------------------------------------------------------------------------------
45 1 //C/T:選擇定時器或計數(shù)模式. C/T=1時為計數(shù)模式 當(dāng)C/T=0時為定時模式
46 1 //--------------------------------------------------------------------------------------
47 1 //GATE:選通控制.當(dāng)GATE=1時,只有當(dāng) INTx端口為高電平且TRx置位為1時才選通定時器/計數(shù)器x;
48 1 // 當(dāng)GATE=0時,只需TRx置位為1即選通定時/計數(shù)器x.
50 1 TMOD|=0x01; //定時器0,方式1
51 1 TL0=RELOAD_L; //TL0定時器0低8位計數(shù)器
52 1 TH0=RELOAD_H; //TH0定時器0高8位計數(shù)器
53 1 TR0=1; //定時器/計數(shù)器0啟動位.TR0=1:開始計時或計數(shù) TR0=1禁止計時或計數(shù)
54 1 ET0=1; //定時器/計數(shù)器0中斷使能
55 1 EA=1; //全局中斷使能
C51 COMPILER V8.02 TIMER 07/27/2007 22:23:38 PAGE 2
56 1 }
57
58
59 /*-----------------------------------------------------------------------------------
60 功能:定時器0中斷服務(wù)程序
61 名稱:Timer0_ISR(void) interrupt 1
62 輸入:無
63 輸出:無
64 返回:無
65 備注:2ms中斷一次
66 -------------------------------------------------------------------------------------*/
67 void Timer0_ISR(void) interrupt 1
68 {
69 1 static unsigned int int_cnt=0; //中斷次數(shù)
70 1 // static unsigned int i=0;
71 1 static unsigned char j=0;
72 1
73 1 int_cnt++;
74 1
75 1 if( (int_cnt%500)==0 ) //每2ms中斷一次,500次就是1000ms即為1s "%"為求余
76 1 {
77 2 int_cnt=0;
78 2 }
79 1
80 1 //----------------------------------------------------------------------------------
81 1 //動態(tài)掃描每個數(shù)碼管
82 1 P0=(j<<4) |dispcode[j];
83 1 if((++j)>1) {j=0;}
84 1
85 1 //----------------------------------------------------------------------------------
86 1 //定時器0初值重裝
87 1 TL0=RELOAD_L;
88 1 TH0=RELOAD_H;
89 1 }
90
91 /*-----------------------------------------------------------------------------------
92 功能:軟件延時
93 名稱:delay
94 輸入:n
95 輸出:無
96 返回:無
97 -------------------------------------------------------------------------------------*/
98 void Delay(unsigned int n)
99 {
100 1 unsigned int i,j;
101 1
102 1 for(i=0;i<n;i++)
103 1 {
104 2 for(j=0;j<100;j++);
105 2 }
106 1
107 1 }
108
109 /*-----------------------------------------------------------------------------------
110 功能:蜂鳴器控制函數(shù)
111 名稱:BEEP
112 輸入:time
113 輸出:無
114 返回:無
115 -------------------------------------------------------------------------------------*/
116 void BEEP(unsigned int time)
117 {
C51 COMPILER V8.02 TIMER 07/27/2007 22:23:38 PAGE 3
118 1 Beep=0;
119 1 Delay(time);
120 1 Beep=1;
121 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 151 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -