📄 starled.lst
字号:
C51 COMPILER V8.02 STARLED 03/03/2009 18:51:24 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE STARLED
OBJECT MODULE PLACED IN starled.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE starled.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2
3 #define uchar unsigned char
4 #define uint unsigned int
5 sbit rs=P3^5;
6 sbit lcden=P3^4;
7 sbit s1=P3^0;
8 sbit s2=P3^1;
9 sbit s3=P3^2;
10
11 sbit beep=P2^3;
12 sbit dscs=P1^4;
13 sbit dsas=P1^5;
14 sbit dsrw=P1^6;
15 sbit dsds=P1^7;
16 sbit dsirq=P3^3;
17 uchar count,s1num,flag,flag1;
18 char miao,shi,fen;
19 uchar code table[]=" 2007-7-30 MON";
20 uchar code table1[]=" : : ";
21 void write_ds(uchar,uchar); //声明函数
22 void set_alarm(uchar,uchar,uchar);
23 uchar read_ds(uchar);
24 //void set_time();
25
26 void delay(uint z)
27 {
28 1 uint x,y;
29 1 for(x=z;x>0;x--)
30 1 for(y=110;y>0;y--);
31 1 }
32
33 void didi() //蜂鸣器报警声
34 {
35 1 beep=0;
36 1 delay(50);
37 1 beep=1;
38 1 delay(100);
39 1 beep=0;
40 1 delay(50);
41 1 beep=1;
42 1 }
43 void write_com(uchar com)
44 {
45 1 rs=0;
46 1 lcden=0;
47 1 P0=com;
48 1 delay(5);
49 1 lcden=1;
50 1 delay(5);
51 1 lcden=0;
52 1 }
53
54 void write_date(uchar date)
55 {
C51 COMPILER V8.02 STARLED 03/03/2009 18:51:24 PAGE 2
56 1 rs=1;
57 1 lcden=0;
58 1 P0=date;
59 1 delay(5);
60 1 lcden=1;
61 1 delay(5);
62 1 lcden=0;
63 1 }
64
65 void init()
66 {
67 1 uchar num;
68 1 EA=1;
69 1 EX0=1;
70 1 IT0=1;
71 1
72 1 lcden=0;
73 1 // set_time();
74 1 set_alarm(14,13,10); //闹钟定时时间(14:13:10)
75 1 write_ds(0x0B,0x26);//B寄存器写入0X26(0010 0110)开启闹钟,二进制格式,12小时模式
76 1 read_ds(0x0c); //读取一次C寄存器才能消除中断标志响应下一次中断
77 1 write_com(0x38);
78 1 write_com(0x0c);
79 1 write_com(0x06);
80 1 write_com(0x01);
81 1 write_com(0x80);
82 1 for(num=0;num<15;num++)
83 1 {
84 2 write_date(table[num]);
85 2 delay(5);
86 2 }
87 1 write_com(0x80+0x40);
88 1 for(num=0;num<12;num++)
89 1 {
90 2 write_date(table1[num]);
91 2 delay(5);
92 2 }
93 1
94 1 }
95
96 void write_sfm(uchar add,uchar date)
97 {
98 1 uchar shi,ge;
99 1 shi=date/10;
100 1 ge=date%10;
101 1 write_com(0x80+0x40+add);
102 1 write_date(0x30+shi);
103 1 write_date(0x30+ge);
104 1 }
105
106 void keyscan()
107 {
108 1
109 1 if(flag1==1) //响应中断后flag1=1说明正在报警
110 1 {
111 2 if(s2==0) //报警时按任意键消除报警
112 2 {
113 3 delay(5);
114 3 if(s2==0)
115 3 {
116 4 while(!s2);
117 4 flag1=0; //消除报警后flag1=0,以备下次消除
C51 COMPILER V8.02 STARLED 03/03/2009 18:51:24 PAGE 3
118 4 }
119 3
120 3 }
121 2 if(s3==0)
122 2 {
123 3 delay(5);
124 3 if(s3==0)
125 3 {
126 4 while(!s3);
127 4 flag1=0; //消除报警后flag1=0,以备下次消除
128 4 }
129 3
130 3 }
131 2 }
132 1
133 1 if(s1==0)
134 1 {
135 2 delay(5);
136 2 if(s1==0)
137 2 { s1num++;
138 3 flag=1; //flag=1时调表调好后写入887,然后flag置0重新读取887内数据
139 3 flag1=0;//调表时不让蜂鸣器响
140 3 while(!s1);
141 3 if(s1num==1)
142 3 {
143 4 TR0=0; //调表时停止走表
144 4 write_com(0x80+0x40+10); //1602miao地址
145 4 write_com(0x0f); //闪烁
146 4 }
147 3 }
148 2 if(s1num==2)
149 2 {
150 3 write_com(0x80+0x40+7);
151 3 }
152 2 if(s1num==3)
153 2 {
154 3 write_com(0x80+0x40+4);
155 3 }
156 2 if(s1num==4)
157 2 { //调好表后把时分秒数据写入12887
158 3 s1num=0;
159 3 write_com(0x0c); //停止闪烁
160 3 // flag=0;
161 3 write_ds(0,miao); //把调好的数据写入miao寄存器
162 3 write_ds(2,fen);
163 3 write_ds(4,shi);
164 3 flag=0; //flag清0使调好的数据重新写入887
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -