📄 1602调试.lst
字号:
C51 COMPILER V7.10 1602礯试 05/15/2008 22:45:51 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 F:\c语言练习\1602调试.c BROWSE DEBUG OBJECTEXTEND PRINT(.\160
-2调试.lst) OBJECT(.\1602调试.obj)
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 //因为是 顺序执行的 只能顺序的运行 这个是 一大 缺陷
38 2 command(0xcd); //还得 加以 改进
39 2 timer[0]=sec%10;
40 2 timer[0]+='0';
41 2 wtdata(timer[0]);
42 2 timer[1]=sec/10;
43 2 timer[1]+='0';
44 2 wtdata(timer[1]);
45 2 putchar(':');
46 2 sec++;
47 2 if(sec>=60)
48 2 {
49 3 sec=0;
50 3 min++;
51 3 timer[2]=min%10;
52 3 timer[2]+='0';
53 3 wtdata(timer[2]);
54 3 timer[3]=min/10;
C51 COMPILER V7.10 1602礯试 05/15/2008 22:45:51 PAGE 2
55 3 timer[3]+='0';
56 3 wtdata(timer[3]);
57 3 putchar(':');
58 3 if(min>=60)
59 3 {
60 4 min=0;
61 4 hour++;
62 4 timer[4]=hour%10;
63 4 timer[4]+='0';
64 4 wtdata(timer[4]);
65 4 timer[5]=hour/10;
66 4 timer[5]+='0';
67 4 wtdata(timer[5]);
68 4 if(hour>=24)
69 4 hour=0;
70 4 }
71 3 }
72 2 }
73 1 }
74
75
76 //*************子函数************
77 //*************1602初始设置************
78 void lcdinit()
79 { //01(清0) 38(8位数据线 字符5*7)
80 1 command(0x01);//清0
81 1 command(0x38);//8位总线 5*7 双行显示
82 1 command(0x0c);//0c(开显示 无光标) 0e(开显示 有光标 光标不闪烁) 0f(开显示 有光标 光标闪烁)
83 1 command(0x06);//06光标右移 04光标左移
84 1 }
85 //*************判断忙************
86 void busy()
87 {
88 1 E=0;
89 1 RS=0;
90 1 RW=1;
91 1 E=1;
92 1 while(P1&0x80);
93 1 E=0;
94 1 delay(5);
95 1 }
96 //*************写指令************
97 void command(uchar c)
98 {
99 1 busy();
100 1 E=0;
101 1 RS=0;
102 1 RW=0;
103 1 E=1;
104 1 P1=c;
105 1 E=0;
106 1 delay(5);
107 1 }
108 //*************写数据************
109 void wtdata(uchar d)
110 {
111 1 busy();
112 1 E=0;
113 1 RS=1;
114 1 RW=0;
115 1 E=1;
116 1 P1=d;
C51 COMPILER V7.10 1602礯试 05/15/2008 22:45:51 PAGE 3
117 1 E=0;
118 1 delay(5);
119 1 }
120 //*************延时************
121 void delay(uint timer)
122 {
123 1 uchar i;
124 1 for(;timer>0;timer--)
125 1 for(i=0;i<120;i++)
126 1 {;}
127 1 }
128 //*************字符串输入************
129 void putstr(uchar *str)
130 {
131 1 while(*str!='\0')
132 1 {
133 2 wtdata(*str);
134 2 str++;
135 2 }
136 1 }
137 void putchar(uchar ch)
138 {
139 1 wtdata(ch);
140 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 + -