PDA

View Full Version : Lỗi khi gửi tín hiệu encoder lên máy tính qua rs232


handsome3746
21-09-2011, 02:14 AM
Đoạn code của em viết như sau. em không hiểu tại sao máy tính nhận được tín hiệu nhưng khi xoay động cơ thì giá trị nhận được lại không thay đổi...
mấy anh giúp em với.
em chỉ nhận được giá trị 0...xoay động cơ vẫn nhận được giá trị 0;
em cảm ơn mấy anh...em đang cần gấp lắm ạ.mong mấy anh giúp đỡ.
em viết bằng ccs tương tự thế này thì chạy tốt nhưng chuyển sang c18 thì gặp vấn đề như vậy...
Thanks in advance!

#include <p18f4431.h>
#include <stdio.h>
#include <delays.h>
#include <usart.h>

//Configuration bits
#pragma config OSC = HS
#pragma config FCMEN = OFF
#pragma config IESO = OFF
#pragma config PWRTEN = OFF
#pragma config BOREN = ON
#pragma config BORV = 27
#pragma config WDTEN = OFF
#pragma config WDPS = 32768
#pragma config MCLRE = ON
#pragma config STVREN = ON
#pragma config LVP = OFF
#pragma config DEBUG = OFF
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CPB = OFF
#pragma config CPD = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRTB = OFF
#pragma config WRTC = OFF
#pragma config WRTD = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTRB = OFF


unsigned char low,high;
unsigned int pos,high_8;

void qei(void)
{

QEICONbits.QEIM0=0;
QEICONbits.QEIM1=1;
QEICONbits.QEIM2=1; // qei enable,x4 update,priod match
QEICONbits.VELM=0;
PORTB=0x00;
PORTC=0X00;
MAXCNTL= 0xCF;
MAXCNTH= 0x7;
POSCNTH=0X00;
POSCNTL=0X00;
}





void main(void)
{
TRISA=0XFF;
TRISB=0;
TRISC=0;
PORTB=0;
qei();
OpenUSART( USART_TX_INT_OFF &
USART_RX_INT_OFF &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_HIGH,
129 );
while (1)
{
Delay1KTCYx(200);
low=POSCNTL;
high=POSCNTH;
high_8=(unsigned int)high<<8;
pos=high_8|low;
printf("%d",pos);
}
}

handsome3746
21-09-2011, 02:15 PM
anh nào giúp em với...hic hic...em mò mãi mà không ra