![]() |
發布時間: 2020-8-19 06:30
正文摘要:各位大神你們好, 我是一枚新手,現在遇到一個問題。實在是不好意思,確實是時間不多了不夠我來慢慢看自己做。所以才在論壇上咨詢各位大神。確實很羞愧做一個伸手黨。 問題如下: 總電路是車輛系統上的燈光總電路 ... |
我改進了這段代碼 #include "msp430g2553.h" int i[8] ={0,1,3,7,15,31,63,127}; void main(void) { WDTCTL = WDTPW + WDTHOLD; if (CALBC1_1MHZ==0xFF) while(1); DCOCTL = 0; BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; P2DIR |= BIT0+BIT7; P2OUT |= BIT0; P2OUT &= ~BIT7; CCTL0 = CCIE; CCR0 = 62500; TACTL = TASSEL_2 + ID_3 + MC_1; P2DIR = 0xff; P2OUT = 0xff; _BIS_SR(LPMO_bits+GIE) ; } #pragma vector = TIMER0_A0_VECTOR //__interrupt void Timer_A (void) int main( void ) { static int j =0; P2OUT=i[j]; j++; if (j>8) j=0; } 現在有個新問題,如果是同一個板子控制前后左右四個車燈。 車前左右分別有停車燈(Standlicht),閃光燈(Blinker),轉向燈(Rueckwaerts) 車后左右分別有剎車燈(Bremslicht),停車燈(Standlicht),閃光燈(Blinker),轉向燈(Rueckwaerts) P1.3與P1.4都是msp430內部pull-up。 當R39 open時 車左閃光燈依次亮,當R39為0Ohm 車右依次亮。 當R1 open時 代表車前方閃光燈,當R1為0Ohm時 代表車后閃光燈。 如何補充這個代碼呢?拜謝! |
這是我寫的代碼 #include "msp430g2553.h" int i[8] ={0,1,3,7,15,31,63,127}; void main(void) { WDTCTL = WDTPW + WDTHOLD; if (CALBC1_1MHZ==0xFF) while(1); DCOCTL = 0; BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; P2DIR |= BIT0+BIT7; P2OUT |= BIT0; P2OUT &= ~BIT7; CCTL0 = CCIE; CCR0 = 62500; TACTL = TASSEL_2 + ID_3 + MC_1; P2DIR = 0xff; P2OUT = 0xff; _BIS_SR(LPMO_bits+GIE) ; } #pragma vector = TIMER0_A0_VECTOR //__interrupt void Timer_A (void) int main( void ) { static int j =0; P2OUT=i[j]; j++; if (j>8) j=0; } |
看你的這個代碼,寫的已經很詳細的閃爍過程了,看樣子他是在中斷里面實現的閃爍。如果你需要使用P1.0去控制的話,就把那段代碼從中斷里面弄出來修改一。我也不是很會,我只能這樣做,具體能不能實現不好說,但是思路沒錯。 void led_run (void) { char i; if(p1out){//就是如果檢測到有信號燈就亮 for(i=0;i<8;i++){ P2OUT = ~(0x80>>i); //燈的點亮順序D8 -> D1,順序不對你就看參考代碼,換一下順序 } if(i == 8) { i = 0; P2OUT=0XFF;//讓所有的燈滅 } } } |