RT,使用dsPIC30F5015。刚刚上手,从初始的I/O端口操作学习开始
编写如下程序
#include "p30f5015.h"
// Macros for Configuration Fuse Registers (copied from device header file):
_FOSC(CSW_FSCM_OFF & XT_PLL8); //Set up for Crystal multiplied by 8x PLL
_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
#define S1 PORTBbits.RB15 //S1为按键
#define STATUS PORTCbits.RC14 //STATUS接到发光二极管的负端
#define NOP( ) {__asm__ volatile ("nop");}
int main()
{
INTCON1=0x0000; //关闭所有中断
INTCON2=0x0000;
PORTC=0x4000; //初始化RC端口
NOP( );
TRISC=0x0000; //设置RC14为输出
NOP( );
while(1)
{
PORTB=0xffff;//初始化RB端口
NOP( );
TRISB=0xff00;//设置RB15为输入
NOP( );
STATUS=S1;
}
return 0;
}
按理说不按键led亮,按键后led灭。用ICD2调试没问题,很正常,然而烧写到板子上后LED一直亮着,按键也不灭。已使用万用表测出按钮电平变化正常(不按时为高电平,按时为低电平,S1串接1k电阻到电源,并联0.1uF电容。)
使用RC13口代替RB15口一切正常。
望各位高手路过的指点小弟一下,不甚感激!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
初始化部分加一句
ADPCFG = 0xFFFF;//配置为数字通道
之前有人也是这样,dsPIC单片机默认复位后RB口为模拟输入通道,当读取端口寄存器时,所有配置为模拟输入通道的引脚都将读为零(低电平)
一周热门 更多>