📄 chengxu.lst
字号:
C51 COMPILER V9.00 CHENGXU 05/13/2013 13:15:24 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE CHENGXU
OBJECT MODULE PLACED IN chengxu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE chengxu.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 汇诚科技
3
4 实现功能: 接通电源继电器吸合30分钟断开
5 使用芯片:STC12C5204AD
6 晶振:11.0592MHZ
7 编译环境:Keil
8 硬件环境:四位数显两路输入三按键 (kzs1211-75150k (双路输入,继电器单路输出,三个按键,四位数码管模块))
9 作者:yang
10 QQ:790244909
11 网站:www.ourhc.cn
12 物联网测试网站:http://hualongelectron.eicp.net/
13 日期:2013-04-02
14 淘宝店:
15 华龙电子直销:http://hlelectrony.taobao.com
16 电子开发直销:http://shop63233873.taobao.com
17 汇诚科技网路购物:http://shop36330473.taobao.com
18 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
19 ********************************************************************/
20 /********************************************************************
21 接通电源继电器吸合30分钟断开,数码管前两位显示分钟,后两位显示秒
22 采用倒计时方式计时
23 ********************************************************************/
24
25 #include<STC12C52.h> //库文件
26 #include <intrins.h>
27 #define uchar unsigned char//宏定义无符号字符型
28 #define uint unsigned int //宏定义无符号整型
29 #define FOSC 11059200L
30 #define BAUD 9600
31
32 #define ADC_POWER 0x80 //ADC 电源控制位
33 #define ADC_FLAG 0x10 //ADC 转换结束标志位
34 #define ADC_START 0x08 //ADC 开始转换控制位
35 #define ADC_SPEEDLL 0x00 //420个时钟周期转换一次
36 #define ADC_SPEEDL 0x20 //280 个时钟周期转换一次
37 #define ADC_SPEEDH 0x40 //140个时钟周期转换一次
38 #define ADC_SPEEDHH 0x60 //70个时钟周期转换一次
39 void display(void); //显示函数
40 void t_to_dis(uchar num);
41
42 #define DUAN P2 //P0口控制段
43 #define WEI P1 //P2口控制位
44 /********************************************************************
45 初始定义
46 *********************************************************************/
47 //数码管显示段码
48 code uchar seg7code[11]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0XBF};
49 //数码管位控制端
50 sbit wei1=P1^0;
51 sbit wei2=P1^1;
52 sbit wei3=P1^2;
53 sbit wei4=P1^3;
54 //继电器输出控制端
55 sbit OUT=P3^7;
C51 COMPILER V9.00 CHENGXU 05/13/2013 13:15:24 PAGE 2
56 //按键输入控制端
57 sbit key1=P3^2;
58 sbit key2=P3^3;
59 sbit key3=P3^4;
60 //两路输入控制端可做ad采样
61 sbit IN0=P1^6;
62 sbit IN1=P1^7;
63 uchar numb[4]; //定义字符串用于数值转换
64 uint tcnt;
65 uchar miao=0;
66 uchar fen=0;
67
68 /********************************************************************
69 延时函数
70 *********************************************************************/
71 void delay(uint x)//延时程序 0.1秒
72 {
73 1 uint m,n,s;
74 1 for(m=x;m>0;m--)
75 1 for(n=20;n>0;n--)
76 1 for(s=248;s>0;s--);
77 1 }
78
79 /********************************************************************
80 IO口初始化函数
81 *********************************************************************/
82 void init_all(void)
83 {
84 1 P2M1=0;
85 1 P2M0=0xff;
86 1 P1M1=0x80;
87 1 P1M0=0x0f;
88 1 P3M1&=0x7f;
89 1 P3M0|=0x80;
90 1 }
91 /********************************************************************
92 定时器T1初始化
93 *********************************************************************/
94 void timer0init(void)
95 {
96 1 TMOD=0X10; //设定定时器工作方式
97 1 TH1 =0x4c;
98 1 TL1 =0x00;
99 1 ET1=1;
100 1 TR1=1;
101 1 EA=1;
102 1 }
103 /********************************************************************
104 主函数
105 *********************************************************************/
106 void main()
107 {
108 1 init_all(); //初始化IO
109 1 timer0init();//定时器初始化
110 1 OUT=1;
111 1 while(1)
112 1 {
113 2 t_to_dis(miao); //数值变换
114 2 display(); //显示
115 2 if(tcnt>=20) //秒减去1
116 2 {
117 3 tcnt=0;
C51 COMPILER V9.00 CHENGXU 05/13/2013 13:15:24 PAGE 3
118 3 miao++;
119 3 if(miao>=60) //60秒,分钟变量加1
120 3 {
121 4 miao=0;
122 4 fen++;
123 4 if(fen>=30)
124 4 {
125 5 fen=0;
126 5 TR1=0;
127 5 OUT=0;
128 5 }
129 4 }
130 3 }
131 2 }
132 1 }
133 /********************************************************************
134 定时器T1中断函数
135 *********************************************************************/
136 void timer1(void)interrupt 3 using 2
137 {
138 1 TH1 =0x4c;
139 1 TL1 =0x00;
140 1 tcnt++;
141 1
142 1
143 1 }
144 /********************************************************************
145 求值函数
146 *********************************************************************/
147 void t_to_dis(uchar num)
148 {
149 1 numb[0]=fen/10; //显示千位
150 1 numb[1]=fen%10; //显示百位
151 1 numb[2]=num/10; //显示十位
152 1 numb[3]=num%10; //显示个位
153 1 }
154 /********************************************************************
155 显示函数
156 *********************************************************************/
157 void display() //显示函数
158 {
159 1 WEI&=0XF0;
160 1 DUAN=seg7code[numb[0]];
161 1 wei1=1;
162 1 delay(1);
163 1
164 1 WEI&=0XF0;
165 1 DUAN=seg7code[numb[1]]&0x7f;
166 1 wei2=1;
167 1 delay(1);
168 1
169 1 WEI&=0XF0;
170 1 DUAN=seg7code[numb[2]];
171 1 wei3=1;
172 1 delay(1);
173 1
174 1 WEI&=0XF0;
175 1 DUAN=seg7code[numb[3]];
176 1 wei4=1;
177 1 delay(1);
178 1 WEI&=0XF0;
179 1 }
C51 COMPILER V9.00 CHENGXU 05/13/2013 13:15:24 PAGE 4
180 /********************************************************************
181 结束
182 *********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 255 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 ----
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 + -