📄 定时时钟.lst
字号:
C51 COMPILER V8.02 定时时钟 08/06/2007 12:18:44 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 定时时钟
OBJECT MODULE PLACED IN 定时时钟.OBJ
COMPILER INVOKED BY: G:\Program Files\Keil\C51\BIN\C51.EXE 定时时钟.c DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3 //===================== 加载头文件和函数
4 sbit sda=P0^2;//定义数据线
5 sbit scl=P0^3;//定义时钟线
6 //===========================
7 int counter,bulf;//定义变量
8 int second,minute,hour;//定义变量
9 //-------------字型码----------------------------
10 code char led[16]={0x11,0xD7,0x32,0x92, /* 0 1 2 3 4 */
11 0xD4,0x98,0x18,0xD3,0x10,0x90, /* 5 6 7 8 9 */
12 0x50,0x1C,0x39,0x16,0x38,0x78};/* A B C D E F*/
13 //-----------------------------------------------
14 void send(unsigned char a) //串行输出,74LS164
15 {
16 1 unsigned char i;
17 1 scl=0;
18 1 for(i=0;i<8;i++)
19 1 {
20 2 if(_crol_(a,i)&0x80) //向左移i位 _cror_(a,i)则向相反方向(向右)移i位
21 2 sda=1;
22 2 else
23 2 sda=0;
24 2 scl=0;_nop_();scl=1;
25 2 }
26 1 }
27 //---------显示子程序--------------
28 void display()
29 {
30 1 send(led[second%10]); //查表得到代码后,串行输出
31 1 send(led[second/10]);
32 1 send(0xff);
33 1 send(led[minute%10]);
34 1 send(led[minute/10]);
35 1 send(0xff);
36 1 send(led[hour%10]);
37 1 send(led[hour/10]);
38 1 }
39 //==================================
40 //主程序
41 main()
42 {
43 1 second=30;minute=00;hour=00;
44 1 TMOD=0x01; //定时器0工作于方式1
45 1 TH0=0x3b;
46 1 TL0=0xc0; //定时50ms
47 1 counter=16;
48 1 bulf=50000;
49 1
50 1 EA=1; //开总中断
51 1 ET0=1; //开定时中断
52 1 TR0=1; //起动定时器
53 1
54 1 while(1)P2=0x00;
55 1 }
C51 COMPILER V8.02 定时时钟 08/06/2007 12:18:44 PAGE 2
56 //==============================
57
58 //定时中断0服务子程序
59 void timer0_int(void) interrupt 1 //定时器0中断工作方式为1
60 {
61 1 TR0=0; //关定时中断
62 1 TH0=0x3b;
63 1 TL0=0xc0; //重新付值定时50ms
64 1 if(!(counter--)) //定时器是否到1S
65 1 {
66 2 counter=16;
67 2 P2=0xff;
68 2 while(bulf--);
69 2 //---------------------
70 2
71 2 if(second>=59)
72 2 {
73 3 second=0;
74 3 if(minute>=59)
75 3 {
76 4 minute=0;
77 4 if(hour>=23)hour=0;
78 4 else hour=hour+1;
79 4 }
80 3 else minute=minute+1;
81 3 }
82 2 else second=second+1;
83 2 display();
84 2 //---------------------
85 2 }
86 1 bulf=50000;
87 1 TR0=1;
88 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 386 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 ----
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 + -