📄 1602.lst
字号:
C51 COMPILER V8.02 1602 05/27/2009 09:54:39 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN 1602.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE 1602.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <C8051f310.h>
2 #define SYSCLK 24500000
3 #define std 65536-1*(SYSCLK/12000) //初值1ms
4 #define uchar unsigned char
5 #define uint unsigned int
6 sbit LCM_RS = P2^0;
7 sbit LCM_RW = P2^1;
8 sbit LCM_E = P2^2;
9 uchar sec,minu; //定义分钟和秒
10 uint count;
11 uchar xdata table[]="Used time: ";
12 //=============================子程序声明
13 void delay(uint z);
14 void init(void);
15 void write_data(uchar date);
16 void write_com(uchar com);
17 void disp(void);
18 void lcd_init();
19 void timer0_init(void) ;
20 void init()
21 {
22 1 OSCICN=0x83;
23 1 CLKSEL=0x00;
24 1 PCA0MD &= ~0x40;
25 1 PCA0MD= 0x00;
26 1 XBR0=0x00;
27 1 XBR1=0x40;
28 1 //P2MDIN |=0xee;
29 1 P2MDOUT |=0x07;
30 1 //P0MDIN |=0x0f;
31 1 P0MDOUT |=0x00;
32 1
33 1 }
34 void delay(uint z) //延时
35 {
36 1 uint x,y;
37 1 for(x=z;x>0;x--)
38 1 for(y=300;y>0;y--);
39 1 }
40
41
42 void write_com(uchar com) //写命令
43 {
44 1 delay(10);
45 1 LCM_RS=0;
46 1 LCM_RW=0 ;
47 1 LCM_E=0;
48 1 P0=com;
49 1 delay(5);
50 1 LCM_E=1;
51 1 delay(5);
52 1 LCM_E=0;
53 1 }
54
55 void write_data(uchar date) //写数据
C51 COMPILER V8.02 1602 05/27/2009 09:54:39 PAGE 2
56 {
57 1 delay(10);
58 1 LCM_RS=1;
59 1 LCM_RW=0;
60 1 LCM_E=0;
61 1 P0=date;
62 1 delay(5);
63 1 LCM_E=1;
64 1 delay(5);
65 1 LCM_E=0;
66 1 }
67
68 void lcd_init() //lcd初始化
69 {
70 1 delay(10);
71 1 write_com(0x38); //4bit 2line frot
72 1 write_com(0x06); //Mode set 显示右移
73 1 write_com(0x0c); //开屏幕,开光标,不闪烁
74 1 write_com(0x01); //清屏
75 1 delay(5);
76 1 }
77 void disp(void)
78 { unsigned char i,a,b,c,d;
79 1 a=minu/10;
80 1 b=minu%10;
81 1 c=sec/10;
82 1 d=sec%10;
83 1 write_com(0x80);
84 1 while(table[i] != '\0')
85 1 {
86 2 write_data(table[i]);//显示字符
87 2 i++;
88 2 }
89 1 write_com(0x8b);
90 1 write_data(0x30+a);
91 1 write_data(0x30+b);
92 1 write_data(':');
93 1 write_data(0x30+c);
94 1 write_data(0x30+d);
95 1 }
96 void timer0_init(void)
97 {
98 1 CKCON=0x00; //使用系统时钟不分频
99 1 //TMOD&=~0x0f;
100 1 TMOD=0x01; //16位定时方式
101 1 TL0= std;
102 1 TH0=std>>8; //定时1ms
103 1 ET0=1;
104 1 TR0=0;
105 1 }
106
107 //=============================//主程序
108 void main(void)
109 {
110 1
111 1 init();
112 1 lcd_init();
113 1 timer0_init();
114 1 TR0=1;
115 1 EA=1;
116 1 while(1)
117 1 {
C51 COMPILER V8.02 1602 05/27/2009 09:54:39 PAGE 3
118 2 disp( );
119 2 }
120 1
121 1 }
122
123 void timer0_isr(void) interrupt 1 using 0
124 {
125 1 TF0=0;
126 1 TL0+=std;
127 1 TH0=std>>8; //重装初值
128 1 count++;
129 1 if(count==1000)
130 1 {count=0;
131 2 sec++;
132 2 if(sec==60)
133 2 {sec=0;
134 3 minu++;
135 3 if(minu==60)
136 3 minu=0;
137 3 }
138 2 }
139 1 }
140
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 330 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 12 ----
PDATA SIZE = ---- ----
DATA SIZE = 4 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 + -