📄 chengxu.lst
字号:
C51 COMPILER V7.06 CHENGXU 01/01/2002 07:00:41 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CHENGXU
OBJECT MODULE PLACED IN chengxu.OBJ
COMPILER INVOKED BY: D:\keil2\C51\BIN\C51.EXE chengxu.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 /********************************************************************
3 汇诚科技
4
5 实现功能:此版配套测试程序
6 使用芯片:STC12C2052AD
7 晶振:11.0592MHZ
8 波特率:9600
9 编译环境:Keil
10 作者:zhangxinchunleo
11 网站:www.ourhc.cn
12 淘宝店:汇诚科技 http://shop36330473.taobao.com
13 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
14 /********************************************************************
15 采样AD的电压值作为继电器的延时吸合时间 最大调节数为255秒最小调节单位是秒
16 或者最大调节时间为分,最大调节数为255,最小调节单位为分
17
18 ********************************************************************/
19
20 #include<STC12C5A60S2.H> //库文件
21 #include <intrins.h>
22 #include"SMG.H"
23 #define uchar unsigned char//宏定义无符号字符型
24 #define uint unsigned int //宏定义无符号整型
25 #define FOSC 11059200L
26 #define BAUD 9600
27
28 #define ADC_POWER 0x80 //ADC 电源控制位
29 #define ADC_FLAG 0x10 //ADC 转换结束标志位
30 #define ADC_START 0x08 //ADC 开始转换控制位
31 #define ADC_SPEEDLL 0x00 //420个时钟周期转换一次
32 #define ADC_SPEEDL 0x20 //280 个时钟周期转换一次
33 #define ADC_SPEEDH 0x40 //140个时钟周期转换一次
34 #define ADC_SPEEDHH 0x60 //70个时钟周期转换一次
35 extern void t_to_dis(void);
36 extern void display(void); //显示函数
37 sbit key1=P3^2;
38 sbit key2=P3^3;
39 sbit key3=P3^4;
40 sbit IN0=P1^6;
41 sbit IN1=P1^7;
42 /********************************************************************
43 延时函数
44 *********************************************************************/
45 void delay(uchar x)//延时程序 0.1秒
46 {
47 1 uchar m,n,s;
48 1 for(m=x;m>0;m--)
49 1 for(n=20;n>0;n--)
50 1 for(s=248;s>0;s--);
51 1 }
52
53 /********************************************************************
54 AD转换初始化程序
55 *********************************************************************/
C51 COMPILER V7.06 CHENGXU 01/01/2002 07:00:41 PAGE 2
56
57 void InitADC()
58 {
59 1 P1ASF|=0x10; //设置P1口为开漏模式,使用AD功能
60 1 ADC_RES=0; //AD数据寄存器清空
61 1 ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START;//打开AD电源,转换周期XX
62 1 delay(10); //延时
63 1 }
64
65 /********************************************************************
66 AD转换控制程序
67 *********************************************************************/
68 uchar GetADCResult(uchar px) //转换输出的数据 (PX为通道口)
69 {
70 1 ADC_CONTR = ADC_POWER | ADC_SPEEDLL |px| ADC_START;//开始转换
71 1 _nop_(); //延时一个机器周期
72 1 _nop_(); //延时一个机器周期
73 1 _nop_(); //延时一个机器周期
74 1 _nop_(); //延时一个机器周期
75 1 while (!(ADC_CONTR & ADC_FLAG));//等待转换结束
76 1 ADC_CONTR &= ~ADC_FLAG; //关闭AD转换
77 1 return ADC_RES; //返回数据
78 1 }
79 void ex0_init(void)
80 {
81 1 IT0=1; // Falling触发
82 1 EX0=1; //开外部中断
83 1 EA=1;
84 1 }void init_all(void)
85 {
86 1 jdq=0;
87 1 P2M1=0;
88 1 P2M0=0xff;
89 1 P1M1=0;
90 1 P1M0=0x0f;
91 1 P3M1&=0x7f;
92 1 P3M0|=0x80;
93 1 key1=1;
94 1 key1=IN1;
95 1
96 1 }
97 /********************************************************************
98 主函数
99 *********************************************************************/
100 void main()
101 {
102 1 init_all(); //初始化IO
103 1 timer0init(); //初始化T0/T1定时器
104 1 InitADC(); //AD转换初始化
105 1 ex0_init(); //初始化外部中断
106 1 keynum=1;
107 1 while(1)
108 1 { GetADCResult(4); //扫描adc转换结果
109 2 t_to_dis(); //数值变换
110 2 display(); //显示函数
111 2 key1=IN1; //把key1和IN1放在一起作为输入控制端
112 2 if(key2==0) //按键扫描,key2按下模式变化一次
113 2 {
114 3 delay(5);
115 3 if(key2==0)
116 3 {
117 4 while(!key2);
C51 COMPILER V7.06 CHENGXU 01/01/2002 07:00:41 PAGE 3
118 4 keynum++; //keynum=0为模式0,继电器吸合300ms ,keynum=1继电器吸合12s
119 4 if(keynum==2)
120 4 keynum=0;
121 4 }
122 3 }
123 2 }
124 1 }
125 void ex0_sevice(void) interrupt 0 using 1 //外部中断服务函数
126 {
127 1 TR0=1; //有信号时触发中断,定时器启动延时开始
128 1 }
129 /********************************************************************
130 结束
131 *********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 412 ----
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 + -