串口程序能收 不能发,求教

2020-02-10 08:58发布


#include<pic.h>
#include<pic16lf1933.h>



#define uchar unsigned char
#define uint unsigned int
//PIC16LF1933.H
__CONFIG(FOSC_INTOSC & WDTE_OFF & PWRTE_OFF & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF & CLKOUTEN_OFF & IESO_OFF & FCMEN_OFF);
__CONFIG(WRT_OFF & PLLEN_OFF & STVREN_ON & BORV_LO & LVP_OFF);
uchar recdata;


void delay()
                        {
                                uint k;
                                for(k=300;k>0;k--);                               
                        }

void init()
                {
                                OSCCON  = 0b01110000;               // 4x PLL Is disabled,
                                                                //Internal Oscillator Frequency Select bits . 000x = 8MHz LF
                                                                //SCS<1:0>: System Clock Select bits. 1x = Internal oscillator block
                                TRISC=0XC0; //  IO                         
                                 TRISA=0XC0;  //out
                                 PORTA=0XC0;                                
                                         ABDOVF=0;
                                         RCIDL=0;
                                         SCKP=0;
                                         WUE=0;
                                         ABDEN=0;
                               
                                         SYNC=0;
                                         BRG16=0;
                                         SPBRG=51;
                                 //        TXSTA=0X24; //chuankou shineng
                                         TXSTA=0XA4;//内部震荡
                                         RCSTA=0X90;//lianxu
                                         RCIE=1;
                                 //        TXIE=1;
                                         GIE=1;
                                         PEIE=1;       
                                //        RCREG=0;  
                }
               
                               

void interrupt usart()
                                {
                                        if(RCIF==1)
                                                {
                                                RCIF=0;
                                                recdata=RCREG;
                                               
                                               TXREG=recdata;
                                  
                                                }
                               
                               
                                }


void main ()
                        {
                                init();

                                  while(1)
                                          {
                                
                                          switch(recdata)
                                                          {
                                                                  case 0X01:PORTA=0X01;break;
                                                                  case 0X02:PORTA=0X02;break;
                                                                  case 0X03:PORTA=0X04;break;
                                                                  case 0X04:PORTA=0X08;break;
                                                                  case 0X05:PORTA=0X10;break;
                                                                  case 0X06:PORTA=0X20;break;
                                                         
                                                          }
                                 
                                                 
                                                          delay();
                                                 
                         
                                          }
                       
                        }
                       

        接收,使用proteus仿真,串口助手发送数据,接收和响应 都正常,。 但是串口助手收不到回发的数据。 从寄存器里看TXREG已经赋值了的                       

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
huarana
1楼-- · 2020-02-10 13:33
现在烧写到硬件上,收发都有数据了。但是 返回值不正确。  比如发00 返回80

发01返回c0
egbj9999
2楼-- · 2020-02-10 17:52
波特率?
459707495
3楼-- · 2020-02-10 23:08
 精彩回答 2  元偷偷看……
wiisir
4楼-- · 2020-02-11 01:57
huarana 发表于 2013-4-16 14:45
现在烧写到硬件上,收发都有数据了。但是 返回值不正确。  比如发00 返回80

发01返回c0 ...

LZ这么多年了,肯定解决了吧,能告诉我怎么解决的吗?
huarana
5楼-- · 2020-02-11 04:04
wiisir 发表于 2019-10-4 17:03
LZ这么多年了,肯定解决了吧,能告诉我怎么解决的吗?

时间太久了,忘记了都。  好像就是波特率的问题。
wiisir
6楼-- · 2020-02-11 04:38
huarana 发表于 2019-10-8 08:51
时间太久了,忘记了都。  好像就是波特率的问题。

谢谢回复。

一周热门 更多>