imagepower 发表于 2011-12-28 21:06:50

STC12C5410AD单片机程序解释

请问大家,我最近在做毕业设计,在程序上出现了问题,下面这一段程序不知什么意思,还有那些怎么设置出来的,能否大家把意思详细给我解释一下,我用的是STCC12C5410AD的单片机,有注释的英文部分也只知道字面意思,具体怎么来的就不知道了。还请大神尽量详细,不懂再问大家。谢谢
void InitADC()
{
    P1 = P1M0 = P1M1 = 0xff;      //Set all P1 as Open-Drain mode
    ADC_RES = 0;                  //Clear previous result
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
    delay_ms(2);                     //ADC power-on and delay
}

/*----------------------------
Get ADC result
----------------------------*/
uchar GetADCResult(uchar ch)
{
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
    _nop_();                        //Must wait before inquiry
    _nop_();
    _nop_();
    _nop_();
    while (!(ADC_CONTR & ADC_FLAG));//Wait complete flag
    ADC_CONTR &= ~ADC_FLAG;         //Close ADC

    return ADC_RES;               //Return ADC result
}
/*--------------------------------
       主程序
--------------------------------*/
voidmain()
{
        uchar adc_val;
        uchar adc_disp={0,0,0,0};
        tim_init();
        InitLcd();
        InitADC();                      //Init ADC sfr
        delay_ms(10);
        display(0x81,"");
        display(0x89,"");
        display(0x81,"");
        display(0x99,"");
        delay_ms(1000);
        while(1)
    {
          P1_0=!P1_0;
                delay_ms(200);
                adc_val=GetADCResult(2);
                adc_disp=adc_val/100+'0';
                adc_disp=adc_val/10%10+'0';
                adc_disp=adc_val%10+'0';
                display(0x9a,adc_disp);
                adc_disp= 0x00;
      //key_detect();
    }
}
/*--------------------------------
       初始化程序
--------------------------------*/
voidtim_init()
{
    TMOD=0x01;
    TR0=1;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
//    EA=1;
//    ET0=1;
//    timer0IntCnt=0x00;       
//    second=0x00;
//    minute=0x00;
//    hour=0x00;
}
/*--------------------------------
       定时器0中断程序
--------------------------------*/
void timer0_ISR() interrupt 1
{
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
}
/*--------------------------------
      毫秒延时程序
--------------------------------*/
void delay_ms(uint no)
{
    uint i,j;
        for(i=0;i<no;i++)
        {
             for(j=0;j<1000;j++);
        }       
}
页: [1]
查看完整版本: STC12C5410AD单片机程序解释