Re: 請問版大,關於C語言的Bootloader
|
||||
---|---|---|---|---|
新會員
|
發表於: 2007/10/19 14:26
|
|||
|
uart的問題
|
||||
---|---|---|---|---|
新會員
|
各位兄台:
我現在有關於rs232接收的問題,我針對Datasheet上的uart模組做設定,但是卻不會動作!! 因此想問問各位先進,是否小弟我哪裡做錯呢? 這個程式是利用rs232從pc端傳送ascii給dspic,然後dspic看是收到哪個按鍵,在選擇亮甚麼led: 謝謝各位兄台的幫忙!!!! void InitGPIO(void); void InitUART1(void); unsigned int InChar(void) ; //--------------------------------------------------------------------------- unsigned int RxValue; //*************************************************************************** //*Program Start //*************************************************************************** void main(void) { InitUART1(); // Initialize UART1 InitGPIO(); while(1) // repeat forever { RxValue=InChar(); if (RxValue == '1'){ PORTD = 0x000E; } else if (RxValue == '2'){ PORTD = 0x000C; } else if (RxValue == '3'){ PORTD = 0x0008; } else if (RxValue == '4'){ PORTD = 0x0000; } else if (RxValue == '5'){ PORTD = 0x000A; } else if (RxValue == '6'){ PORTD = 0x0005; } else if (RxValue == 0x0000){ PORTD = 0x0004; } } // end of while forever*/ } // end of main program //*************************************************************************** //*Initialize //*************************************************************************** void InitGPIO(void) { TRISA = 0xFFFF; // make RA all inputs for SW1-SW4 TRISD = 0x0000; // make RD all output PORTD = 0x0000; } void InitUART1(void) { unsigned int baudvalue; unsigned int U1MODEvalue; unsigned int U1STAvalue; CloseUART1(); ConfigIntUART1( UART_RX_INT_EN & UART_RX_INT_PR6 & UART_TX_INT_DIS & UART_TX_INT_PR2 ); U1MODEvalue = UART_EN & UART_IDLE_CON & UART_DIS_WAKE & UART_EN_LOOPBACK & UART_EN_ABAUD & UART_NO_PAR_8BIT & UART_1STOPBIT; U1STAvalue = UART_INT_TX_BUF_EMPTY & UART_TX_PIN_NORMAL & UART_TX_ENABLE & UART_INT_RX_CHAR & UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR; // The BAUDRATE = 9600, FCY is already defined so use // it as "FCY". Plug into the formula provided in the slides baudvalue = 48; //FCY/(16*BAUDRATE) - 1 initialize the variable baudvalue OpenUART1(U1MODEvalue, U1STAvalue, baudvalue); } //************************************************************************ //*Uart polling Function //************************************************************************ unsigned int InChar(void) { /********************************************** * Function: POLLING LOOP * * **********************************************/ do{ }while(!IFS0bits.U1RXIF); IFS0bits.U1RXIF=0; return(U1RXREG); }
發表於: 2004/12/13 15:29
|
|||
|
Re: pic10f206的問題
|
||||
---|---|---|---|---|
新會員
|
謝謝這位高人指點,我的確疏忽比較器的設定。
發表於: 2004/11/19 9:28
|
|||
|
pic10f206的問題
|
||||
---|---|---|---|---|
新會員
|
各位前輩!!
我現在因為幾個案子會用到PIC10F206,因此先試玩一下這顆 IC,但是我碰到一些問題,因此想拿出來跟大家討論!! 以下是我寫的簡單DEMO 程式: list p=10f206 #include <P10F206.inc> ;**************************************************************** ;Initialize GPIO & 10f206 & OSC ;**************************************************************** DelayCounter1 equ 0x10 DelayCounter2 equ 0x11 ;***************************************************************** ;Program start ;***************************************************************** org 0x00 ; reset vector nop ; Reserve for MPLAB-ICD Initialize: clrf GPIO movlw b'00000000' TRIS GPIO movlw b'01111110' movwf OSCCAL goto main ;--Delay Function-------------------------------------------------- pDelay1ms: movlw .198 movwf DelayCounter1 nop nop tagDelay1ms_01: nop nop decfsz DelayCounter1, F goto tagDelay1ms_01 retlw 0x00 pDelay250ms: movlw .250 movwf DelayCounter2 tagDelay250ms_01: call pDelay1ms decfsz DelayCounter2, F goto tagDelay250ms_01 retlw 0x00 ;--Main----------------------------------------------------------- main: ;call pDelay250ms NOP movlw b'00000111' movwf GPIO ;call pDelay250ms NOP movlw b'00000000' movwf GPIO goto main END 此程式組譯會過,MPLAB SIM的GPIO的值也是我要的,但是 當我把PIC10F206燒好放在板子上時,GPIO0,1,2所接的LED 燈卻不會動作,因此我想請教大家可能是拿裡出問題呢? 我用電錶量gpio0,1,2只有0.4V但是gpio3卻有5V 這該如何是好呢?? 謝謝大家
發表於: 2004/11/17 15:42
|
|||
|