我正在使用pic16f877a创建一个项目。在uart
上写作时我遇到了问题。我是uart
的新手
这是我的代码。
int x;
int x1;
char y[3];
char y1[3];
void main() {
UART1_Init(9600);
delay_ms(100);
TRISE = 0;
TRISC = 0xff;
// UART1_Write_Text("Length:");
UART1_Write_Text("Length:");
delay_ms(100);
x=20;
IntToStr(x,y);
PORTE = 0b000;
if(PORTC.f0==1){ // For senors 1-4
x++;}
delay_ms(200);
if(PORTC.f1==1){ //For sensors 5-8
x++;}
delay_ms(200);
PORTE = 0b010;
if(PORTC.f0==1){
x++;}
delay_ms(200);
if(PORTC.f1==1){
x++;}
delay_ms(200);
PORTE = 0b100;
if(PORTC.f0==1){
x++;}
delay_ms(200);
if(PORTC.f1==1){
x++;}
delay_ms(200);
PORTE = 0b110;
if(PORTC.f0==1){
x++;}
delay_ms(200);
if(PORTC.f1==1){
x++;}
IntToStr(x,y);
delay_ms(200);
UART1_WRITE_TEXT(y);
UART1_Write(13);
delay_ms(500);
UART1_Write_Text("Width:");
delay_ms(100);
x1=10;
IntToStr(x1,y1);
PORTE = 0b000;
if(PORTC.f0==1){ // For senors 1-4
x1++;}
delay_ms(200);
if(PORTC.f1==1){ //For sensors 5-8
x1++;}
delay_ms(200);
PORTE = 0b010;
if(PORTC.f0==1){
x1++;}
delay_ms(200);
if(PORTC.f1==1){
x1++;}
delay_ms(200);
PORTE = 0b100;
if(PORTC.f0==1){
x1++;}
delay_ms(200);
if(PORTC.f1==1){
x1++;}
delay_ms(200);
PORTE = 0b110;
if(PORTC.f0==1){
x1++;}
delay_ms(200);
if(PORTC.f1==1){
x1++;}
IntToStr(x1,y1);
delay_ms(200);
UART1_WRITE_TEXT(y1);
}
这是输出:
长度:26个
宽度:166•
y = 26的值是正确的,但是当显示y1 = 16时,它显示错误答案 - 宽度应为16。