📄 timer.lst
字号:
C51 COMPILER V8.08 TIMER 09/21/2008 19:50:20 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN timer.OBJ
COMPILER INVOKED BY: D:\微控制器\kei c51 8.08\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]; //数码管显示值存放数组
18 unsigned char sec_cnt=0; //秒计数器
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寄存器用于定义定时/计数器的操作方式及工作模式,其格式如下:
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)位定义定时/计数器0,高4位(4~7)定义定时/计数器1
38 1 //--------------------------------------------------------------------------------------
39 1 // M1 M0 为操作方式选择位
40 1 // 0 0 方式0 13位计数器
41 1 // 0 1 方式1 16位计数器
42 1 // 1 0 方式2 自动再装入的8位计数器
43 1 // 1 1 方式3 将定时/计数器0分成两个8位计数器.
44 1 //--------------------------------------------------------------------------------------
45 1 //C/T:选择定时器或计数模式. C/T=1时为计数模式 当C/T=0时为定时模式
46 1 //--------------------------------------------------------------------------------------
47 1 //GATE:选通控制.当GATE=1时,只有当 INTx端口为高电平且TRx置位为1时才选通定时器/计数器x;
48 1 // 当GATE=0时,只需TRx置位为1即选通定时/计数器x.
49 1
50 1 TMOD|=0x01; //定时器0,方式1
51 1 TL0=RELOAD_L; //TL0定时器0低8位计数器
52 1 TH0=RELOAD_H; //TH0定时器0高8位计数器
53 1 TR0=1; //定时器/计数器0启动位.TR0=1:开始计时或计数 TR0=1禁止计时或计数
54 1 ET0=1; //定时器/计数器0中断使能
55 1 EA=1; //全局中断使能
C51 COMPILER V8.08 TIMER 09/21/2008 19:50:20 PAGE 2
56 1 }
57
58
59 /*-----------------------------------------------------------------------------------
60 功能:定时器0中断服务程序
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; //中断次数
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 //动态扫描每个数码管
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 功能:蜂鸣器控制函数
111 名称:BEEP
112 输入:time
113 输出:无
114 返回:无
115 -------------------------------------------------------------------------------------*/
116 void BEEP(unsigned int time)
117 {
C51 COMPILER V8.08 TIMER 09/21/2008 19:50:20 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)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -