📄 shizhong.lst
字号:
C51 COMPILER V7.05 SHIZHONG 05/17/2006 09:51:43 PAGE 1
C51 COMPILER V7.05, COMPILATION OF MODULE SHIZHONG
OBJECT MODULE PLACED IN shizhong.OBJ
COMPILER INVOKED BY: D:\keilc an\C51\BIN\C51.EXE shizhong.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /******************************************************************************************
2 *文件: ZONGHE.C
3 *功能: 综合演示实验。
4 ******************************************************************************************/
5 #include "reg931.h"
6 #include "intrins.h"
7 #define uchar unsigned char
8 sbit clk = P1^6;
9 sbit dat = P1^7;
10 sbit beep = P0^7;
11 uchar code led[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0~9 共阳段码表
12 uchar sec,min;
13 //******************************************************************************************
14 //delay: 延时子程序
15 //******************************************************************************************
16 void delay(void) //延时子程序
17 {
18 1 uchar x,y;
19 1 for(x=0;x<10;x++)
20 1 for(y=0;y<200;y++) ;
21 1 }
22 //******************************************************************************************
23 // senddat:串行发送一个字节数据
24 //******************************************************************************************
25 void senddat(uchar d) //串行发送一个字节数据
26 {
27 1 uchar j;
28 1 for(j=0;j<8;j++)
29 1 {
30 2 if(_crol_(d,j)&0x80) dat=1;
31 2 else dat=0;
32 2 clk=1;
33 2 clk=0;
34 2 }
35 1 }
36 //******************************************************************************************
37 // displaysecl:显示“秒”值个位
38 //******************************************************************************************
39 void displaysecl(void) //显示“秒”值个位
40 {
41 1 uchar secl;
42 1 P2=0xf7;
43 1 secl=led[sec%10];
44 1 senddat(secl);
45 1 delay();
46 1 }
47 //******************************************************************************************
48 // displaysech:显示“秒”值十位
49 //******************************************************************************************
50 void displaysech(void) //显示“秒”值十位
51 {
52 1 uchar sech;
53 1 P2=0xfb;
54 1 sech=led[sec/10];
55 1 senddat(sech);
C51 COMPILER V7.05 SHIZHONG 05/17/2006 09:51:43 PAGE 2
56 1 delay();
57 1 }
58 //******************************************************************************************
59 // displayminl:显示“分”值个位
60 //******************************************************************************************
61 void displayminl(void) //显示“分”值个位
62 {
63 1 uchar minl;
64 1 P2=0xfd;
65 1 minl=led[min%10];
66 1 senddat(minl);
67 1 delay();
68 1 }
69 //******************************************************************************************
70 // displayminh:显示“分”值十位
71 //******************************************************************************************
72
73 void displayminh(void) //显示“分”值十位
74 {
75 1 uchar minh;
76 1 P2=0xfe;
77 1 minh=led[min/10];
78 1 senddat(minh);
79 1 delay();
80 1 }
81 //******************************************************************************************
82 // displayclose:关闭显示
83 //******************************************************************************************
84 void displayclose(void) //关闭显示
85 {
86 1 P2=0xff;
87 1 }
88 //******************************************************************************************
89 // display:时钟值显示
90 //******************************************************************************************
91 void display(void) //时钟值显示
92 {
93 1 uchar i;
94 1 for(i=0;i<140;i++) //在1s 内适当延时,保证显示的可视性
95 1 {
96 2 displaysecl(); //“秒”值个位显示
97 2 displaysech(); //“秒”值十位显示
98 2 displayminl(); //“分”值个位显示
99 2 displayminh(); //“分”值十位显示
100 2 displayclose(); //显示关闭
101 2 }
102 1 }
103 //******************************************************************************************
104 // int_rtc: 实时时钟中断入口
105 //******************************************************************************************
106 void int_rtc(void) interrupt 10 //实时时钟中断入口
107 {
108 1 uchar temp;
109 1 temp=RTCCON;
110 1 temp=temp&0x63; //清除RTC 中断标志
111 1 RTCCON=temp;
112 1 beep=1;
113 1 sec+=1;
114 1
115 1 if(sec==60)
116 1 {
117 2 sec=0;
C51 COMPILER V7.05 SHIZHONG 05/17/2006 09:51:43 PAGE 3
118 2 min+=1;
119 2 if(min==60)
120 2 {
121 3 min=0;
122 3 beep=0;
123 3 }
124 2 }
125 1 display();
126 1 }
127 void main(void)
128 {
129 1 P0M1=0x00; //端口设置
130 1 P0M2=0x00;
131 1 P1M1=0x00;
132 1 P1M2=0x00;
133 1 P2M1=0x00;
134 1 P2M2=0x00;
135 1 sec=0; //设置初值
136 1 min=59;
137 1 RTCH=0x00; //设置RTC 定时值
138 1 RTCL=0xff;
139 1 WDCON=0xe0; //关闭WDT 定时器
140 1 IEN0=0xc0; //打开RTC 中断
141 1 RTCCON=0x43; //启动RTC
142 1 display();
143 1 while(1); //等待中断
144 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 250 ----
CONSTANT SIZE = 10 ----
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 + -