/*****************主函数**************/
void main()
{
init();
while(1) {
AD();
P1 = ~AD_DATA[1];
ES=1; //允许串口中断--允许它中断,却没有它的处理函数!
SBUF=AD_DATA[1];
while(!TI); //--等待TI=1,但是,一旦TI=1,程序就跑飞了
TI=0;
ES=0;
}
}
把: ES=1; //允许串口中断
删除试试。
AD转换部分你确定是正确的?那个CLK由定时器去反转,也就是CLK输出的是固定频率的方波,AD转换要求的CLK是这样的吗?
先确定AD转换部分是否正确执行并得到你想要的结果
你主循环里无论AD转换结果有没有变化都不断送结果到串口和P1,假如AD转换成功,那P1显示的结果也不会稳定吧,显示的太快了
这个现象我也出现过,不知道能不能帮到你!
在主函数中的 SBUF=AD_DATA[1] 会使程序进入中断函数去执行
你在分析一下吧
adsf