📄 main.lst
字号:
C51 COMPILER V7.20 MAIN 04/13/2006 13:39:22 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil_C51\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 * Copyright (C) 2006, 华中科技大学电气与电子科技创新中心
3 * All Rights Reserved.
4 *
5 * 文件名: main.c
6 * 文件描述: 计时器测试主程序文件
7 *
8 * 当前版本: 1.0
9 * 作者: SangWei(swkyer@gmail.com)
10 * 完成日期: 2005年12月12日
11 *
12 */
13 #include <reg51.h>
14 #include <INTRINS.H>
15 #include "..\seg7\seg7.h"
16
17
18 /* 定时时间高低字节数据, 12MHZ时定时时间5mS */
19 #define TIMERH 0xEC
20 #define TIMERL 0x78
21
22 unsigned char cs;
23 unsigned char dispram[4];
24 bit flag;
25 unsigned char count;
26 unsigned int time;
27
28 void InitTimer(void);
29
30
31 void main(void)
32 {
33 1 /* 初始化IO口 */
34 1 P0 = 0xFF;
35 1 P2 = 0xFF;
36 1
37 1 /* 初始化变量 */
38 1 flag = 0;
39 1 count = 0;
40 1 time = 0;
41 1
42 1 /* 初始化定时器 */
43 1 InitTimer();
44 1
45 1 /* 启动定时器1 */
46 1 TR1 = 1;
47 1
48 1 while(1)
49 1 {
50 2 /* 如果置位,说明1秒已过 */
51 2 if(flag == 1)
52 2 {
53 3 /* 清标志位 */
54 3 flag = 0;
55 3 /* 计数值最大为9999 */
C51 COMPILER V7.20 MAIN 04/13/2006 13:39:22 PAGE 2
56 3 if(time == 9999)
57 3 time = 0;
58 3 else
59 3 time++;
60 3 /* 改写显示缓冲区 */
61 3 dispram[0] = time/1000;
62 3 dispram[1] = (time%1000)/100;
63 3 dispram[2] = (time%100)/10;
64 3 dispram[3] = time%10;
65 3 }
66 2 }
67 1 }
68
69 /**************************************
70 说明: 定时器初始化
71 定时时间10mS
72 **************************************/
73 void InitTimer(void)
74 {
75 1 /* 变量初始化 */
76 1 cs = 0;
77 1 dispram[0] = dispram[1] = dispram[2] = dispram[3] = 0;
78 1 /* 初始化定时器,定时时间10mS,允许定时器中断 */
79 1 TMOD = 0x90;
80 1 TH1 = TIMERH;
81 1 TL1 = TIMERL;
82 1 /* 开定时器中断 */
83 1 EA = 1;
84 1 ET1 = 1;
85 1 }
86
87 /**************************************
88 说明: 定时器中断处理函数
89 **************************************/
90 void Timer1ISR(void) interrupt 3 using 2
91 {
92 1 /* 定时器重装 */
93 1 TH1 = TIMERH;
94 1 TL1 = TIMERL;
95 1 /* 清中断标志 */
96 1 TF1 = 0;
97 1 /* 循环显示 */
98 1 if(cs >= 3)
99 1 cs = 0;
100 1 else
101 1 cs++;
102 1 WriteSegData(dispram[cs]);
103 1 WriteCsData(1<<cs);
104 1 /* 计数器,200次为1秒,置标志位 */
105 1 if(count == 200)
106 1 {
107 2 flag = 1;
108 2 count = 0;
109 2 }
110 1 else
111 1 count++;
112 1 }
113
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 242 ----
C51 COMPILER V7.20 MAIN 04/13/2006 13:39:22 PAGE 3
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -