📄 1602时钟.lst
字号:
C51 COMPILER V7.10 1602时钟 05/15/2008 22:49:15 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE 1602时钟
OBJECT MODULE PLACED IN 1602时钟.OBJ
COMPILER INVOKED BY: F:\KeilC安装软件\安装\C51\BIN\C51.EXE 1602时钟.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"reg51.h" //函数名 不能超多8个字母
2 #define uchar unsigned char
3 #define uint unsigned int
4 //*************定义位************
5 sbit RS=P2^0;
6 sbit RW=P2^1;
7 sbit E=P2^2;
8 //*************函数声明************
9 void delay(uint timer);
10 void lcdinit(void);
11 void command(uchar c);
12 void wtdata(uchar d);
13 void busy(void);
14 void putstr(uchar *str);
15 void putchar(uchar ch);
16 //*************主函数************
17 void main()
18 { uchar timer[6];
19 1 uchar sec=0,min=0,hour=0;
20 1 lcdinit();
21 1 command(0x80);
22 1 putstr("DATA:2008/04/13");
23 1 command(0xc0);
24 1 putstr("TIMER: ");
25 1 command(0x04); //左移
26 1 command(0xcd);
27 1 putchar('0');
28 1 putchar('0');
29 1 putchar(':');
30 1 putchar('0');
31 1 putchar('0');
32 1 putchar(':');
33 1 putchar('0');
34 1 putchar('0'); //用此方法编写的时钟 能实现时钟的基本 运行 但是
35 1 while(1) //在 转接(59不会直接到0的显示 而是显示60 再显示0)
36 1 { //因为是 顺序执行的 只能顺序的运行 这个是 一大 缺陷
37 2 command(0xcd); //还得 加以 改进
38 2 timer[0]=sec%10;
39 2 timer[0]+='0';
40 2 wtdata(timer[0]);
41 2 timer[1]=sec/10;
42 2 timer[1]+='0';
43 2 wtdata(timer[1]);
44 2 putchar(':');
45 2 sec++;
46 2 if(sec>=60)
47 2 {
48 3 sec=0;
49 3 min++;
50 3 timer[2]=min%10;
51 3 timer[2]+='0';
52 3 wtdata(timer[2]);
53 3 timer[3]=min/10;
54 3 timer[3]+='0';
55 3 wtdata(timer[3]);
C51 COMPILER V7.10 1602时钟 05/15/2008 22:49:15 PAGE 2
56 3 putchar(':');
57 3 if(min>=60)
58 3 {
59 4 min=0;
60 4 hour++;
61 4 timer[4]=hour%10;
62 4 timer[4]+='0';
63 4 wtdata(timer[4]);
64 4 timer[5]=hour/10;
65 4 timer[5]+='0';
66 4 wtdata(timer[5]);
67 4 if(hour>=24)
68 4 hour=0;
69 4 }
70 3 }
71 2 }
72 1 }
73
74
75 //*************子函数************
76 //*************1602初始设置************
77 void lcdinit()
78 { //01(清0) 38(8位数据线 字符5*7)
79 1 command(0x01);//清0
80 1 command(0x38);//8位总线 5*7 双行显示
81 1 command(0x0c);//0c(开显示 无光标) 0e(开显示 有光标 光标不闪烁) 0f(开显示 有光标 光标闪烁)
82 1 command(0x06);//06光标右移 04光标左移
83 1 }
84 //*************判断忙************
85 void busy()
86 {
87 1 E=0;
88 1 RS=0;
89 1 RW=1;
90 1 E=1;
91 1 while(P1&0x80);
92 1 E=0;
93 1 delay(5);
94 1 }
95 //*************写指令************
96 void command(uchar c)
97 {
98 1 busy();
99 1 E=0;
100 1 RS=0;
101 1 RW=0;
102 1 E=1;
103 1 P1=c;
104 1 E=0;
105 1 delay(5);
106 1 }
107 //*************写数据************
108 void wtdata(uchar d)
109 {
110 1 busy();
111 1 E=0;
112 1 RS=1;
113 1 RW=0;
114 1 E=1;
115 1 P1=d;
116 1 E=0;
117 1 delay(5);
C51 COMPILER V7.10 1602时钟 05/15/2008 22:49:15 PAGE 3
118 1 }
119 //*************延时************
120 void delay(uint timer)
121 {
122 1 uchar i;
123 1 for(;timer>0;timer--)
124 1 for(i=0;i<120;i++)
125 1 {;}
126 1 }
127 //*************字符串输入************
128 void putstr(uchar *str)
129 {
130 1 while(*str!='\0')
131 1 {
132 2 wtdata(*str);
133 2 str++;
134 2 }
135 1 }
136 void putchar(uchar ch)
137 {
138 1 wtdata(ch);
139 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 403 ----
CONSTANT SIZE = 31 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 14
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 + -