英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

标题: 求助如何解决电压检测中输出跳变的问题 [打印本页]

作者: min    时间: 2012-8-17 18:26
标题: 求助如何解决电压检测中输出跳变的问题
本帖最后由 min 于 2012-8-17 18:32 编辑

以下内容含脚本,或可能导致页面不正常的代码
这是我设计的电压检测电路、可是在仿真运行的时候、电压还没到5V输出的引脚就发生了好几次跳变、
同样在电压还未到达0时也是这样、我已附上电路图和程序、哪位大侠帮忙看一下
<font face="Verdana">#include<pic.h>__CONFIG(0x3f39);
</font><font face="Verdana">void delay(unsigned int n)
{        unsigned int j;        char k;        for(j=0;j<n;j++)            
    for(k=246;k>0;k--)                NOP();            
    }void main(void){                         unsigned int x;      
  char i; char m;                              
                                                         
// 设置一个中间数                                 
x=0;                                                      
   TRISB=0b00000000;            
                     RB1=0;                           
*     RB4=0;                                
RB5=0;                                                                                                                          
       // 设置B口为输出                              
*   TRISA0=1;                                                                                                                                                                                                         //设置A0口为AD通道                                 
ADCON0=0b01000001;                                                                                                            
*                   //                              
   ADCON1=0B00000000;     
*                                                                                                
                          //                  
               for(i=1;i<5;i++)                                                                                                                                               
  //                              
  NOP();                           
*     //上电检测                              
*   do                                
{         for(m=0;m<100;m++)      
           NOP();                                                
         ADGO=1;                                                                                                                                                                                                                         //                                                         while(ADGO==1);                                                  
       ADIF=0;                                                      
   x=0;x=ADRESH;                                                
         x=x<<8;                                                   
     x=x+ADRESL;}        while(x*5/1023<5);                                                         
       RB4=1;                                                            
*   RB1=1;                                                              
   delay(15);                                                               
RB5=1;                                                               
RB4=0;                                                                 
RB1=0;                                                      
   do                                                      
  {         for(m=0;m<100;m++)                     
    NOP();                                                                       
  ADGO=1;                                                                                                                                                                                                                         //                                                                                 while(ADGO==1);                                                                              
   ADIF=0;                                                                              
  x=0;x=ADRESH;                                                                              
   x=x<<8;                                                                              
  x=x+ADRESL;}                              
  while(x*5/1023>0);                                                                                      
*   RB1=1;                                 RB5=0;                     
                                                           delay(10);                                                                                      
*                                   RB1=0;                                                                 ;                                                                                                                          }<div><img src="file:///E:/games/QQ/Users/742973418/Image/V[)7)C@Z[6L2LI6(NCJ337G.jpg"/>
</div></font>
[此贴子已经被作者于2010-12-20 11:48:04编辑过]
说明:上面显示的是代码内容。您可以先检查过代码没问题,或修改之后再运行.








欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/) Powered by Discuz! X3.2