我的這個程序無法運行
// STC 官網 STC12C5Axx Series MCU A/D 例程
#include "STC12C5A60S2.H"
#include "stdio.h"
#include "intrins.h"
#define uchar unsigned char
#define UINT8 unsigned int
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//共陽數字編碼 0.1.2.3.4....9
UINT8 code tongdao[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07}; //通道選擇0-7
int getad(UINT8 tongdao);
UINT8 junzhi=0;
void delay(uchar i) //延時函數
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display() //顯示函數
{
P0=table[junzhi/1000];
P2_0 = 0;
delay(5);
P2_0 = 1;
P0=table[junzhi%1000/100];
P2_1 = 0;
delay(5);
P2_1 = 1;
P0=table[junzhi%100/10];
P2_2 = 0;
delay(5);
P2_2 = 1;
P0=table[junzhi%10];
P2_3 = 0;
delay(5);
P2_3 = 1;
}
void ad_init()
{
P1M0=0xff;
P1M1=0xff; //P1口設置成開漏模式
ADC_CONTR=0xe0; //開A/D控制寄存器 ADC_POWER(AD電源控制位) SPEED1、SPEED0(為轉換速率選擇位(都為1時)速度最快為210個時鐘/次) ADC_FLAG 轉換結束標志位 ADC_START:ADC轉換器的啟動控制位 CHS2、CHS1
delay(200);
}
int getad(UINT8 tongdao) //轉換函數
{
UINT8 jieshu=0;
int jieguo;
ADC_CONTR|=tongdao;
ADC_CONTR|=0x08;
while(jieshu==0)
{
jieshu=(ADC_CONTR&0x10);
}
//jieguo=(ADC_DATA<<2)+ADC_LOW2; //5410ad單片機用數據調取
jieguo=ADC_RES; //60s2單片機用數據調取
ADC_CONTR&=0xef;
return (jieguo);
}
float qiuzhi(UINT8 tongdao) //濾波求值函數
{
UINT8 junzhi=0;
UINT8 i;
for(i=15;i>0;i--)
{
junzhi+=getad(tongdao);
}
junzhi/=15.0;
junzhi=((junzhi*5.0)/0.256)+5;
//junzhi=junzhi*0.13-30.0;
//junzhi=junzhi/6.5536;
junzhi=(2507-junzhi)/0.86;
return (junzhi);
}
void main()
{
void ad_init();
while(1)
{
int getad(UINT8 tongdao);
float qiuzhi(UINT8 tongdao);
void display();
}
} |