单独测试led灯能够按照设想亮,灭,但是到了这个综合程序就发现led灯一直是亮的,按照设想应该是灭的啊,不满足亮的条件,已经测试过了P^2.4口单独置1,灯亮,单独置0,灯灭,也试过交替亮,灭,都是可以的额
单片机源程序如下:
- #include"stc12c5a.h"
- #include"intrins.h"
- #include"math.h"
- //sfr P1ASF = 0x9D; //12C5A60AD/S2系列模拟输入(AD或LVD)选择 ,P1口模拟转换功能控制寄存器
- //sfr ADC_CONTR = 0xBC; //带AD系列 ,AD转换控制寄存器
- //sfr ADC_RES = 0xBD; //带AD系列,转换结果寄存器高8位
- //sfr ADC_RESL = 0xBE; //带AD系列,转换结果寄存器低8位 //stc12c5a60s2寄存器说明
- #define ADC_POWER 0x80
- #define ADC_FLAG 0x10
- #define ADC_START 0x08
- #define ADC_SPEEDLL 0x00
- #define ADC_SPEEDL 0x20
- #define ADC_SPEEDH 0x40
- #define ADC_SPEEDHH 0x60
- sbit J1=P2^4;
- float c,d,f;//保存采集到的电压的结果
- void AD_init(void);
- void delay(unsigned int a);
- unsigned int AD_get(unsigned char n);
- float AD_work(unsigned char n);
- void Timer0Init(void);
- void main()
- {
- int j;
- int t=0;
- P2M0=0xff;
- P2M1=0x00;
- J1=0;
- AD_init();
- while(1)
- { for(j=0;j<300;j++) //15s
- {
- Timer0Init();
- if(1<f<4)
- {
- t++;
- while(t==299)
- {
- while(1)
- {
- J1=1;
- delay(200); //延时2s
- J1=0;
- delay(200);
- Timer0Init();
- if(f>4||f<1)
- {
- break;
- }
- }
- t=0;
- }
- }
- else
- {
- J1=0;
- }
- }
- }
- }
复制代码
|