📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 12/24/2007 12:35:57 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*
2 程序功能: Bank3 PCF8563时钟程序,k1修改小时,k2修改分钟
3 完成时间: 2007-12-24
4 */
5 #include<at89x52.h>
6 /*************************************************
7 引用外部函数
8 **************************************************/
9 extern WRBYTES(unsigned masteraddr,unsigned char Ramaddr,unsigned char buf[],unsigned char num,bit wr);
10 unsigned char code DisCode[] = {0x0C0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xbf};
11 //共阳极数码管码表,定位在ROM中
12 unsigned char Disbuf[] = {1,2,0x0b,4,5,0x0b,7,8}; //显示初始化
13 unsigned char Time[3] ; //时间信息
14 sbit LED_DIG = P1^3;
15 sbit LED_COM = P1^2;
16 sbit k1 = P3^2;
17 sbit k2 = P3^3;
18 /************************************************
19 显示延时
20 *************************************************/
21 void Delay(unsigned char j)
22 {
23 1 unsigned char i;
24 1 for (i=0;i<j;i++ );
25 1 }
26 /************************************************
27 带参数传递的显示程序
28 *************************************************/
29 void Display(unsigned char Dat[8])
30 {
31 1 static unsigned char i = 0;
32 1 unsigned LED_Posit = 0x01;
33 1 for(i = 0;i<8;i++)
34 1 {
35 2 P0 = DisCode[Dat[i]]; //送段选
36 2 P0 = DisCode[Dat[i]]; //送段选
37 2 LED_DIG = 1;
38 2 LED_DIG = 0;
39 2 P0 = LED_Posit; //选通一个数码管
40 2 LED_COM = 1;
41 2 LED_COM = 0;
42 2 Delay(200);
43 2 P0 = 0; //消隐
44 2 LED_COM = 1;
45 2 LED_COM = 0;
46 2 LED_Posit<<=1;
47 2 }
48 1 }
49 /*************************************
50 读入8583计时时间
51 **************************************/
52 void Read8583Time()
53 {
54 1 WRBYTES(0xa2,0x02,Time,3,1);
55 1 Disbuf[1] = (Time[0]>>4)&0x07;
C51 COMPILER V7.06 MAIN 12/24/2007 12:35:57 PAGE 2
56 1 Disbuf[0] = Time[0]&0x0f; //秒
57 1 Disbuf[4] = (Time[1]>>4)&0x07;
58 1 Disbuf[3] = Time[1]&0x0f; //分
59 1 Disbuf[7] = (Time[2]>>4)&0x03;
60 1 Disbuf[6] = Time[2]&0x0f; //时
61 1 }
62 /*************************************************
63 修改时间
64 **************************************************/
65 void KeyInt()
66 {
67 1 unsigned char HourGw,HourSw,MinGw,MinSw;
68 1 /////////////加小时/////////////////////
69 1 if(k1 == 0)
70 1 {
71 2 Delay(50);
72 2 if(k1 == 0)
73 2 {
74 3 while(!k1) Display(Disbuf);
75 3 HourGw = Time[2] & 0x0f ;
76 3 HourSw = (Time[2] >> 4) & 0x03 ;
77 3 HourGw++;
78 3 if (HourSw < 2)
79 3 {
80 4 if (HourGw == 10)
81 4 {
82 5 HourSw ++;
83 5 HourGw = 0;
84 5 }
85 4 }
86 3 else
87 3 {
88 4 if (HourGw == 4)
89 4 {
90 5 HourSw = 0;
91 5 HourGw = 0;
92 5 }
93 4 }
94 3 Time[2] = ((HourSw<<4) & 0xf0) | (HourGw & 0x0f); //修改小时
95 3 WRBYTES(0xa2,0x02,Time,3,0);
96 3 }
97 2 }
98 1 //////////////加分钟///////////////////
99 1 if(k2 == 0)
100 1 {
101 2 Delay(50);
102 2 if(k2 == 0)
103 2 {
104 3 while(!k2) Display(Disbuf);
105 3 MinGw = Time[1] & 0x0f ;
106 3 MinSw = (Time[1] >> 4) & 0x07 ;
107 3 MinGw++;
108 3 if(MinGw == 10)
109 3 {
110 4 if(MinSw < 5)
111 4 {
112 5 MinGw = 0;
113 5 MinSw++;
114 5 }
115 4 else
116 4 {
117 5 MinGw = 0;
C51 COMPILER V7.06 MAIN 12/24/2007 12:35:57 PAGE 3
118 5 MinSw = 0;
119 5 }
120 4 }
121 3 Time[1] = ((MinSw<<4) & 0xf0) | (MinGw & 0x0f); //修改分钟
122 3 WRBYTES(0xa2,0x02,Time,3,0);
123 3 }
124 2 }
125 1 }
126
127 /**********************************************************************************
128 主函数
129 ***********************************************************************************/
130 main()
131 { // ↑----------------------------------------↓
132 1 WRBYTES(0xa2,0x02,Time,3,1); //读入8583初始时间,//I2C函数中已进行读写判断
133 1 while(1)
134 1 {
135 2 Read8583Time();
136 2 Display(Disbuf);
137 2 KeyInt();
138 2 }
139 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 341 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 3
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 + -