打印
[PIC®/AVR®/dsPIC®产品]

dipic30f4011输入电平变化模块测试

[复制链接]
1273|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
suda_ljn|  楼主 | 2015-4-23 11:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目的:测试一下输入电平变化模块
描述:RB0作为输入,来检测电平变化,RB3作为输出,向RB0提供变化的电平;
在中断中,通过RB1来点亮灯检测是否进入中断。当检测到1时,不亮,当检测到0时,亮。效果应该是灯不断闪烁。
但是如果改成:检测到1时,亮,当检测到0时,不亮,灯就不亮了。求高手指点????

#include "p30F4011.h"
//配置位
_FOSC(CSW_FSCM_OFF & XT_PLL8);  //Run this project using an external crystal,routed via the PLL in 8x multiplier mode                                
_FWDT(WDT_OFF);                 //Turn off the Watch-Dog Timer.
_FBORPOR(MCLR_EN & PWRT_OFF);        //Enable MCLR reset pin and turn off the power-up timers.                                                       
_FGS(CODE_PROT_OFF);            //Disable Code Protection


int j=0;
int i=0;
#define k PORTBbits.RB3

void delay(int n);
void InitCN(void);
void __attribute__((interrupt, no_auto_psv)) _CNInterrupt(void);

void main()
{  
   PORTB=0;
   TRISB=1;        
   InitCN();
   while(1)
   {
    k=1;
    for(i=0;i<100;i++)
    delay(3);
    k=0;
    for(i=0;i<100;i++)
    delay(3);     
   }
}





void delay(int n)
{
   int a=0,b=0;
   for(a=0;a<n;a++)
    for(b=0;b<20000;b++);//1.25ms
}




/*N interrupt function test program*/


//RB0输入电平奇数次变化,则RB1输出1,RB0输入电平奇偶数次变化,则RB1输出0
void InitCN(void)
{
  CNEN1=4;                //CN0(RB0) enabled
  CNPU1=4;                //enable internal pullups(CN0(RB0))
  ADPCFG=0x0001;
  IFS0bits.CNIF=0;        //clear CNIF
  IEC0bits.CNIE=1;        //enable CN interrupt
  IPC3=0x7000;//设置为最高优先级中断      
}
void __attribute__((interrupt, no_auto_psv)) _CNInterrupt(void)
{
  IFS0bits.CNIF=0;        //clear CNIF  
  int a=0;
  a=PORTB&1;
  if(a==0)PORTBbits.RB1=1;
  if(a==1)PORTBbits.RB1=0;
}
/*******************************************************/
目的:测试一下输入电平变化模块
描述:RB0作为输入,来检测电平变化,RB3作为输出,向RB0提供变化的电平;
在中断中,通过RB1来点亮灯检测是否进入中断。当检测到1时,不亮,当检测到0时,亮。效果应该是灯不断闪烁。
但是如果改成:检测到1时,亮,当检测到0时,不亮,灯就不亮了。求高手指点????
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝