📄 x102_12887.lst
字号:
C51 COMPILER V8.08 X102_12887 12/26/2008 21:41:46 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE X102_12887
OBJECT MODULE PLACED IN X102_12887.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE X102_12887.C BROWSE DEBUG OBJECTEXTEND
line level source
*** WARNING C500 IN LINE 1 OF X102_12887.C: LICENSE ERROR (R208: RENEW LICENSE ID CODE (LIC))
1 #include <reg52.h>
2 #include <ctype.h>
3 #include <string.h>
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <math.h>
7 #include <absacc.h>
8
9 #define uchar unsigned char
10 #define uint unsigned int
11 #define ulong unsigned long
12
13 sbit sm1623_dout=P1^0;
14 sbit sm1623_din=P1^1;
15 sbit sm1623_clk=P1^2;
16 sbit sm1623_stb=P1^3;
17 sbit sound=P1^5;
18
19 #define clock_second XBYTE[0xd000]//秒
20 #define clock_second_a XBYTE[0xd001]//秒闹
21 #define clock_minute XBYTE[0xd002]//分
22 #define clock_minute_a XBYTE[0xd003]//分闹
23 #define clock_hour XBYTE[0xd004]//时
24 #define clock_hour_a XBYTE[0xd005]//时闹
25 #define clock_week XBYTE[0xd006]//星期
26 #define clock_day XBYTE[0xd007]//日
27 #define clock_month XBYTE[0xd008]//月
28 #define clock_year XBYTE[0xd009]//年
29 #define clock_a XBYTE[0xd00a]//寄存器A
30 #define clock_b XBYTE[0xd00b]//寄存器B
31 #define clock_c XBYTE[0xd00c]//寄存器C
32
33 uchar xdata *cs_12887=0xd00e;//12887RAM地址
34
35 void delay(uchar delay_temp);//长延时
36 void delaym(uchar delaym_temp);//短延时
37 void disp(uchar dis);
38 void display();
39
40 uchar i,j,k;
41 uchar code_dis[6];
42
43 main(void)
44 {
45 1 start: //---------------------------------------12887RAM测试
46 1 code_dis[0]=1;
47 1 code_dis[1]=2;
48 1 code_dis[2]=8;
49 1 code_dis[3]=8;
50 1 code_dis[4]=7;
51 1
52 1 code_dis[5]=1;
53 1 display();//显示128871
54 1 delay(0x7f);
C51 COMPILER V8.08 X102_12887 12/26/2008 21:41:46 PAGE 2
55 1 for(i=0;i<114;i++)
56 1 {
57 2 *(cs_12887+i)=0x55;
58 2 }
59 1
60 1 code_dis[5]=2;
61 1 display();//显示128872
62 1 delay(0x7f);
63 1 for(i=0;i<114;i++)
64 1 {
65 2 if(*(cs_12887+i)!=0x55)sound=0;
66 2 }
67 1 delay(0xff);
68 1 delay(0xff);
69 1 sound=1;
70 1
71 1 //---------------------------------------12887测试
72 1
73 1 if((clock_b&0x80)==0x80)//时钟没有运行时初始化时钟
74 1 {
75 2 clock_a=0x70;//分频器复位
76 2 clock_b=0x82;//bcd,24小时制
77 2 clock_second=0x00;
78 2 clock_minute=0x00;
79 2 clock_hour=0x18;//18
80 2 clock_second_a=0x00;
81 2 clock_minute_a=0x00;
82 2 clock_hour_a=0x00;
83 2 clock_week=0x03;
84 2 clock_day=0x021;
85 2 clock_month=0x09;
86 2 clock_year=0x05;
87 2 clock_a=0x20;//选时基32.768k
88 2 clock_b=0x22;//开始运行
89 2 }
90 1 while(1)
91 1 {
92 2 i=clock_second;
93 2 j=clock_minute;
94 2 k=clock_hour;
95 2 code_dis[0]=(k&0xf0)>>4;
96 2 code_dis[1]=k&0x0f;
97 2 code_dis[2]=(j&0xf0)>>4;
98 2 code_dis[3]=j&0x0f;
99 2 code_dis[4]=(i&0xf0)>>4;
100 2 code_dis[5]=i&0x0f;
101 2 display();
102 2 delay(0x3f);
103 2 }
104 1 goto start;
105 1 }
106
107 void delay(uchar delay_temp)//延时子程序
108 {
109 1 uchar i,j;
110 1 for(i=0;i<delay_temp;i++)
111 1 {
112 2 for(j=0;j<255;j++);
113 2 }
114 1 }
115
116 void delaym(uchar delaym_temp)//延时子程序
C51 COMPILER V8.08 X102_12887 12/26/2008 21:41:46 PAGE 3
117 {
118 1 uchar data i;
119 1 for(i=0;i<delaym_temp;i++);
120 1 }
121
122 void disp(uchar dis)//送显示命令子程序
123 {
124 1 uchar dis_i,dis_temp;
125 1 dis_temp=0x01;
126 1 for(dis_i=0;dis_i<8;dis_i++)
127 1 {
128 2 sm1623_clk=0;
129 2 delaym(1);
130 2 if((dis&dis_temp)==0){sm1623_din=0;}
131 2 else{sm1623_din=1;}
132 2 sm1623_clk=1;//上升沿输入数据
133 2 delaym(1);
134 2 dis_temp=dis_temp<<1;
135 2 }
136 1 }
137
138 void display()//显示子程序
139 {
140 1 uchar code_dis_d[6];
141 1 uchar i;
142 1 for(i=0;i<6;i++)//计算显示码
143 1 {
144 2 switch(code_dis[i])
145 2 {
146 3 case 1:
147 3 code_dis_d[i]=0x06;
148 3 break;
149 3 case 2:
150 3 code_dis_d[i]=0x5b;
151 3 break;
152 3 case 3:
153 3 code_dis_d[i]=0x4f;
154 3 break;
155 3 case 4:
156 3 code_dis_d[i]=0x66;
157 3 break;
158 3 case 5:
159 3 code_dis_d[i]=0x6d;
160 3 break;
161 3 case 6:
162 3 code_dis_d[i]=0x7d;
163 3 break;
164 3 case 7:
165 3 code_dis_d[i]=0x07;
166 3 break;
167 3 case 8:
168 3 code_dis_d[i]=0x7f;
169 3 break;
170 3 case 9:
171 3 code_dis_d[i]=0x6f;
172 3 break;
173 3 case 10://显示黑
174 3 code_dis_d[i]=0x00;
175 3 break;
176 3 case 11://显示A
177 3 code_dis_d[i]=0x77;
178 3 break;
C51 COMPILER V8.08 X102_12887 12/26/2008 21:41:46 PAGE 4
179 3 case 12://显示d
180 3 code_dis_d[i]=0x5e;
181 3 break;
182 3 case 13://显示-
183 3 code_dis_d[i]=0x40;
184 3 break;
185 3 case 14://显示8.
186 3 code_dis_d[i]=0xff;
187 3 break;
188 3 default://显示0
189 3 code_dis_d[i]=0x3f;
190 3 break;
191 3 }
192 2 }
193 1 sm1623_stb=0;
194 1 disp(0x02);//显示模式6位12段
195 1 sm1623_stb=1;
196 1 delaym(1);
197 1 sm1623_stb=0;
198 1 disp(0x40);//设置数据
199 1 sm1623_stb=1;
200 1 delaym(1);
201 1 sm1623_stb=0;
202 1 disp(0xc0);//设置地址
203 1 disp(code_dis_d[0]);//1
204 1 disp(0x00);
205 1 disp(code_dis_d[1]);//2
206 1 disp(0x00);
207 1 disp(code_dis_d[2]);//3
208 1 disp(0x00);
209 1 disp(code_dis_d[3]);//4
210 1 disp(0x00);
211 1 disp(code_dis_d[4]);//5
212 1 disp(0x00);
213 1 disp(code_dis_d[5]);//6
214 1 disp(0x00);
215 1 sm1623_stb=1;
216 1 delaym(1);
217 1 sm1623_stb=0;
218 1 disp(0x8a);//控制显示
219 1 sm1623_stb=1;
220 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 584 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 6
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -