langbaiyue 发表于 2011-10-7 11:30:22

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]
查看完整版本: STC12C5A08S2单片机AD转换问题,请求大家帮助