📄 lesson3_c.lst
字号:
C51 COMPILER V7.50 LESSON3_C 07/01/2006 21:55:01 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LESSON3_C
OBJECT MODULE PLACED IN lesson3_C.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lesson3_C.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 /************************************************/
3 /*单位名称:华南理工大学电信学院*/
4 /*模块:1位共阴数码管*/
5 /*创建人:景永年 日期:2006年4月25日*/
6 /*修改人:*/
7
8 /*功能描述:6个LED数码管显示的数字时钟*/
9 /*其他说明:*/
10 /*版本号:*/
11 /*************************************************/
12 #include "reg52.h"
13 #include "stdio.h"
14 #define uchar unsigned char
15
16 unsigned char volatile xdata g_sec_disp _at_ 0xFFFF;
17 unsigned char volatile xdata g_min_disp _at_ 0xEFFF;
18 unsigned char volatile xdata g_hr_disp _at_ 0xDFFF;
19
20 void time0_init(void);
21
22 unsigned char uc_sec_cnt,uc_min_cnt,uc_hr_cnt,uc_ms_cnt;
23
24
25
26 main()
27 {
28 1
29 1
30 1 time0_init();
31 1
32 1 uc_sec_cnt = 0;
33 1 uc_min_cnt = 0;
34 1 uc_hr_cnt = 0;
35 1 uc_ms_cnt = 0;
36 1
37 1 SP = 0x60 ;//Initiate stack
38 1 ET0 = 1;
39 1 TR0 = 1;
40 1
41 1 while(1)
42 1 {
43 2
44 2 }
45 1
46 1 }
47
48
49 /*************************************************/
50 /*time0_init*/
51 /*************************************************/
52 void time0_init(void)
53 {
54 1 TMOD = 0x01 ;//定时中断的初始化,定时器0工作在定时器模式
55 1 IE = 0x80 ;//开总中断;由TR0启停,16bit(模式1)
C51 COMPILER V7.50 LESSON3_C 07/01/2006 21:55:01 PAGE 2
56 1 TH0 =0x3C ;//初值15536
57 1 TL0 =0xB0 ;//100ms=0.1s
58 1
59 1 }
60
61
62 /*************************************************/
63 /*time0_interrupt*/
64 /*************************************************/
65 void time0_interrupt(void) interrupt 1 using 3
66 {
67 1 TH0 =0x3C ;//重新装入初值15536
68 1 TL0 =0xB0 ;//100ms=0.1s
69 1
70 1 uc_ms_cnt++;
71 1 if(uc_ms_cnt==10)
72 1 {
73 2 uc_ms_cnt = 0;
74 2 uc_sec_cnt++;
75 2 if((uc_sec_cnt&0x0F)>9) /*变量uc_sec_cnt为16进制数,显示应该为10进制*/
76 2 {
77 3 uc_sec_cnt += 6; /*(uc_sec_cnt&0x0F)按位与运算*/
78 3 } /*若没有if语句,则只能是到9以后,继续数到F才进位*/
79 2 g_sec_disp = uc_sec_cnt;
80 2 g_min_disp = uc_min_cnt;
81 2 g_hr_disp = uc_hr_cnt;
82 2
83 2 if((uc_sec_cnt)>=0x60)/*注意使用0x60*/
84 2 {
85 3 uc_sec_cnt = 0;
86 3 uc_min_cnt++;
87 3 if((uc_min_cnt&0x0F)>9) /*变量uc_min_cnt为16进制数,显示应该为10进制*/
88 3 {
89 4 uc_min_cnt += 6; /*(uc_min_cnt&0x0F)按位与运算*/
90 4 } /*若没有if语句,则只能是到9以后,继续数到F才进位*/
91 3 g_sec_disp = uc_sec_cnt;
92 3 g_min_disp = uc_min_cnt;
93 3 g_hr_disp = uc_hr_cnt;
94 3
95 3 if((uc_sec_cnt)>=0x60)/*注意使用0x60*/
96 3 {
97 4 uc_min_cnt = 0;
98 4 uc_hr_cnt++;
99 4
100 4 if((uc_hr_cnt&0x0F)>9) /*变量uc_hr_cnt为16进制数,显示应该为10进制*/
101 4 {
102 5 uc_hr_cnt += 6; /*(uc_hr_cnt&0x0F)按位与运算*/
103 5 } /*若没有if语句,则只能是到9以后,继续数到F才进位*/
104 4
105 4 g_sec_disp = uc_sec_cnt;
106 4 g_min_disp = uc_min_cnt;
107 4 g_hr_disp = uc_hr_cnt;
108 4
109 4 if((uc_hr_cnt)>=0x24)/*注意使用0x24*/
110 4 {
111 5 uc_hr_cnt = 0;
112 5 }
113 4 }
114 3 }
115 2 }
116 1 }
117
C51 COMPILER V7.50 LESSON3_C 07/01/2006 21:55:01 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 203 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
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 + -