各位大侠版主:
我用的是s12dg128b的片子,给PORTB4,5口分别接入高低电平,程序如下:
#include <hidef.h> /* common defines and macros */ #include <mc9s12dg128.h> /* derivative information */
unsigned int cross,crossTime; #pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
#pragma CODE_SEG DEFAULT void PortInit(void){ DDRB=0xcf; PORTB_BIT0=1; PORTB_BIT1=1; PORTB_BIT2=1; PORTB_BIT3=1; }
void Ten_Cross(void) { if(PORTB_BIT4==0 && PORTB_BIT5==0) { cross=0; } if(PORTB_BIT4==1 && PORTB_BIT5==0) { cross=1; } if(PORTB_BIT4==0 && PORTB_BIT5==1) { cross=2; } if(PORTB_BIT4==1 && PORTB_BIT5==1) { cross=3; } crossTime=2*cross+1; }
void main(void) { PortInit(); EnableInterrupts; for(;;) { Ten_Cross(); if(cross==0) { PORTB_BIT0=0; //LED0亮 } else if(cross==1) { PORTB_BIT1=0; //LED1亮 } else if(cross==2) { PORTB_BIT2=0; //LED2亮 } else if(cross==3) { PORTB_BIT3=0; //LED3亮 } /* wait forever */ } }
片子接上BDM时程序运行无误,LED1亮。但是拔掉BDM后运行时却是LED3亮,按一下复位键就又能正常运行了,不知道这是什么原因!
急切盼望各位大侠伸出援助之手! |