📄 51
字号:
C51 COMPILER V8.18 EX65 01/04/2010 13:07:12 PAGE 1
C51 COMPILER V8.18, COMPILATION OF MODULE EX65
OBJECT MODULE PLACED IN ex65.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ex65.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include<reg52.h> // 包含51单片机寄存器定义的头文件
3 unsigned char code Tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
4 //数码管显示0~9的段码表
5 unsigned char int_time; //记录中断次数
6 unsigned char second; //储存秒
7 /***********************************************************************
8 函数功能:快速动态扫描延时,延时约0.6毫秒
9 ************************************************************************/
10 void delay(void)
11 {
12 1 unsigned char i;
13 1 for(i=0;i<200;i++)
14 1 ;
15 1 }
16 /***********************************************************************
17 函数功能:显示秒
18 入口参数:k
19 出口参数:无
20 ************************************************************************/
21 void DisplaySecond(unsigned char k)
22 {
23 1
24 1 P2=0xbf; //P2.6引脚输出低电平, DS6点亮
25 1 P0=Tab[k/10]; //显示十位
26 1 delay();
27 1 delay();
28 1 delay();
29 1 delay();
30 1 delay();
31 1 delay();
32 1 delay();
33 1 delay();
34 1 P2=0x7f; //P2.7引脚输出低电平, DS7点亮
35 1 P0=Tab[k%10]; //显示个位
36 1 delay();
37 1 delay();
38 1 delay();
39 1 delay();
40 1 delay();
41 1 delay();
42 1 delay();
43 1 delay();
44 1 P2=0xff; //关闭所有数码管
45 1
46 1 P0=0xff; //显示个位
47 1 delay();
48 1 delay();
49 1 delay();
50 1 delay();
51 1 delay();
52 1 delay();
53 1 delay();
54 1 delay();
55 1 }
C51 COMPILER V8.18 EX65 01/04/2010 13:07:12 PAGE 2
56 void main(void) //主函数
57 {
58 1 TMOD=0x01; //使用定时器T0
59 1 TH0=(65536-46083)/256; //将定时器计时时间设定为46083×1.085微秒
60 1 //=50000微秒=50毫秒
61 1 TL0=(65536-46083)%256;
62 1 EA=1; //开启总中断
63 1 ET0=1; //定时器T0中断允许
64 1 TR0=1; //启动定时器T0开始运行
65 1 int_time=0; //中断次数初始化
66 1 second=0; //秒初始化
67 1 while(1)
68 1 {
69 2 DisplaySecond(second); //调用秒的显示子程序
70 2 }
71 1 }
72 //********************************************************
73 //函数功能:定时器T0的中断服务程序
74 //*******************************************************
75 void interserve(void ) interrupt 1 using 1
76 {
77 1 TR0=0; //关闭定时器T0
78 1 int_time ++; //每来一次中断,中断次数int_time自加1
79 1 if(int_time==20) //够20次中断,即1秒钟进行一次检测结果采样
80 1 {
81 2 int_time=0; //中断次数清0
82 2 second++; //秒加1
83 2 if(second==60)
84 2 second =0; //秒等于60就返回0
85 2 }
86 1 TH0=(65536-46083)/256; //重新给计数器T0赋初值
87 1 TL0=(65536-46083)%256;
88 1 TR0=1; //启动定时器T0
89 1 }
90
91
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 144 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
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 + -