STC12C5A08S2单片机AD转换问题,请求大家帮助
#include "STC51.H"#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define speed 0x40
uchar ch =7;
uint value=0;
uint value2;
uint temp2;
//uchar buffer;
void display(unsigned char *lp,unsigned char lc);
bit flag;
sbit led1=P3^6;
sbit led2=P3^7;
//unsigned char get_AD_result(unsigned char channel);
unsigned char SMG_WEI={0xf8,0xf4,0xf2,0xf1};
void delayad(unsigned char delayad_time); //延时函数
unsigned charvalue_qydl={0,0,0,0};//取样电流
unsigned char SMG={ 0x3F,/*0*/
0x06,/*1*/
0x5B,/*2*/
0x4F,/*3*/
0x66,/*4*/
0x6D,/*5*/
0x7D,/*6*/
0x07,/*7*/
0x7F,/*8*/
0x6F,/*9*/
0xBF,/*0.*/
0x86,/*1.*/
0x77,/*A*/
0x7C,/*b*/
0x39,/*C*/
0x5E,/*d*/
0x79,/*E*/
0x71,/*F*/
0x38,/*L*/
0x73,/*P*/
0x3E,/*U*/
};
//---------------------------------------------------------------------
void delay5ms() //用于显示函数的延时
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void display(unsigned char *lp,unsigned char lc)
{
unsigned char i; //用于显示字符串
P0=0x00;
//P1=P1&0xF8;
for(i=0;i<lc;i++)
{ P1=P1&0XF0;
P0=lp;
P1=SMG_WEI;
delay5ms();
if(i==4)
break;
P0=0;
// P1++;
}
}
sfr ADC_CONTER=0XBC;
//sfr ADC_RES=0XBD;
//sfr ADC_RESL=0XBE;
//sfr P1ASF=0X9D;
//sfr EADC=IE^5;
//sfr AUXR1=0xa2;
#define ADC_POWER 0X80
#define ADC_FLAG 0X10
#define ADC_START 0X08
#define ADC_SPEEDHH 0X60
#define ADC_SPEEDHL 0X40
#define ADC_SPEEDLH 0X20
#define ADC_SPEEDLL 0X00
void ADC_int();
void process();
//void display();
//void delayad(uint count);
void main()
{
ADC_int();
while(1)
{
if(flag)
{
flag=0;
process();
value_qydl=SMG;
value_qydl=SMG;
value_qydl=SMG;
value_qydl=SMG;
display(value_qydl,4);
led1=0;
}
}
}
void ADC_int()
{
P1ASF=0XFF;
EA=1;
EADC=1;
AUXR1|=0X04;
ADC_RES=0;
ADC_RESL=0;
ADC_CONTR=ADC_POWER|ADC_SPEEDHL|ADC_START|ch;
_nop_();_nop_();_nop_(); _nop_();
}
void ADC_isr() interrupt 5 using 1
{
ADC_CONTR&=!ADC_FLAG;
flag=1;
value=0;
_nop_();_nop_();_nop_();
value=ADC_RESL;
value2=ADC_RES;
value=(value<<8)|value;
ADC_CONTR=ADC_POWER|ADC_SPEEDHH|ADC_START|ch;
led2=0;
}
void process()
{
float temp;
temp=value*5/1024*100;
temp2=(uint)temp;
// buffer=0;
// buffer=temp2/100;
// buffer=temp2%100/10;
// buffer=temp2%100%10;
}
为什么连线时都无法显示?
页:
[1]