TA的每日心情 | 难过 2024-1-4 12:29 |
---|
签到天数: 2 天 [LV.1]初来乍到
新手上路
- 积分
- 43
|
#include <STC8G.H>//#include "STC8G.H"//#include "reg51.h"
#include "intrins.h"
#include<math.h> //包函abs绝对值函数
unsigned char i=0; m1=0; X1=0; L1=0;m4=0; max=0; min=0xff; channel=0;//XIN_SU=0; LAO_SU=0; mX=0;
unsigned int up_sum=0;/*上升数和*/ down_sum=0; /*下降数和*/
// 函数: u8 Get_ADC8bitResult(u8 channel) // 描述: 查询法读一次ADC结果. // 参数: channel: 选择要转换的ADC. // 返回: 8位ADC结果.
unsigned char Get_ADC8bitResult(unsigned char channel) //channel = 0~7 ADC初始化
{ ADC_CONTR=0xe0; //7=1电源开,6=1启动AD转换,5=1转换完成标志软件清0,
//ADC_RES = 0; ADC_RESL = 0;
ADC_CONTR=(ADC_CONTR & 0xe0)|channel;//1110 0010 7=1电源开,6=1启动AD转换,5=1转换完成标志软件清0,4与PWM相关,3:0(8G1K08A)ADC通道选择:0000=P3.0/ADC0;0001=P3.1/ADC1;0010=P3.2/ADC2;0011=P3.3/ADC3;0100=P5.4/ADC4;0101=P5.5/ADC5
_nop_(); _nop_(); _nop_(); _nop_();
while((ADC_CONTR & 0x20) == 0) //等AD转换完成
ADC_CONTR &= ~0x20; //清完成标志
return ADC_RES ;
}
void main()
{ WDT_CONTR = 0x23; //7溢出标志,软件清零 5=1软/硬,启动看门狗定时器。4=1清零看门狗定时器,3=1IDLE 模式时看门狗继续计数,2-0分频系数 使能看门狗,溢出时间约为0.5s
P3M1 = 0x0C;//0000 1100 改P32/33高阻输入 P30/31推挽输出
P3M0 = 0x03;//0000 0011 01推挽输出;10高阻输入;00准双向口
P5M1 = 0x00;//0000 0000 0000 0000
P5M0 = 0x30;//1100 0000 P55 P54推挽输出 0000 0000准双向口
P5=0; //P5输出=0;
while (1)
{ /******* m1=Get_ADC8bitResult(2); //P32脚
if( m1>30){ P54=1 ;} else{P54=0;}
*********/
X1=Get_ADC8bitResult(3); //P33脚
if(X1>120){ P55=1 ;} else{P55=0;}
WDT_CONTR |= 0x10;// WDT_CONTR = 0x34; //5=1软/硬,启动看门狗定时器。 4=1清零看门狗定时器 清看门狗,否则系统复位IDLE WDT_CONTR |= 0x10
} }
//为何不想取不同通道 P32 P33值,变成了都是P32脚的值了???如下单通道都正常
/*********单独用P33输入 P55输出正常
{ // m1=Get_ADC8bitResult(2); //P32脚
//if( m1>30){ P54=1 ;} else{P54=0;}
X1=Get_ADC8bitResult(3); //P33脚
if(X1>120){ P55=1 ;} else{P55=0;}
WDT_CONTR |= 0x10;// WDT_CONTR = 0x34; //5=1软/硬,启动看门狗定时器。 4=1清零看门狗定时器 清看门狗,否则系统复位IDLE WDT_CONTR |= 0x10
}
******/
/*********单独用P32输入 P54输出正常
{ // m1=Get_ADC8bitResult(2); //P32脚
//if( m1>30){ P54=1 ;} else{P54=0;}
X1=Get_ADC8bitResult(3); //P33脚
if(X1>120){ P55=1 ;} else{P55=0;}
WDT_CONTR |= 0x10;// WDT_CONTR = 0x34; //5=1软/硬,启动看门狗定时器。 4=1清零看门狗定时器 清看门狗,否则系统复位IDLE WDT_CONTR |= 0x10
}
******/
|
|