PIC12LF1822串口通信求助,弄了一个多星期了,看不出了实在·~

2019-07-15 21:21发布

要实现通过串口助手给单片机发一个数据,单片机再把数据回发给串口助手。仿真和ICD3在线调试都试了。能接收,放了颗LED做测试,但数据不对,也发不回来。

俺的智能蓝牙遥控调光LED格栅灯还差蓝牙遥控部分,实现了俺开源,大家一玩。
/************************************************************
项目名称:串口接收
要求:串口接收/发送
设计:robin_chen559
日期:2013.12.05
备注:
************************************************************/
#include<pic.h>              //包含头文件pic12lf1822.h
#include<stdio.h>

#define LED_G  RA0             //RA0为LED_G口
#define uchar unsigned char
#define uint  unsigned int

uchar Uart_Data = 0x00;


//子程序声明

void Init_star(void);       //系统初始化
void Init_UART(void);       //串口初始化
void Delay_MS(uint MS);     //延迟子程序

//子程序
void Init_star(void)        //系统初始化子程序
{
   OSCCON = 0b01101010;        //4M系统时钟
   APFCON = 0b10000100;        //端口复用定义RA5/4 RD TX,RA2 CPP
   TRISA  = 0b00101010;        //A口输入输出设置,RA5/1/3输入,RA4/0/2输出
   ANSELA = 0b00000000;        //RA2设模拟输入,其他全部是数字输入
}

void Init_UART(void)
{
INTCON  = 0b11000000;         //开总中断GIE,外设中断PEIE
TXIE    = 1;                  //允许发送中断
RCIE    = 1;                  //允许接收中断
TXSTA   = 0b00100110;         //串口配置字
RCSTA   = 0b10010000;         //接受寄存器配置P295
BAUDCON = 0b11001001;         //16位波特率计数器
SPBRGH  = 0b00000000;         //011,16位异步,9600波特率,查表103
SPBRGL  = 0b01111101;
}


void Delay_MS(uint MS)         //延时函数
{
  uchar i;
  uint j;

   for(i=0;i<MS;i++)       
      for(j=115;j>0;j--);         
}


void interrupt ISR(void)       //中断子程序无需声明
{
if(RCIF == 1)
{
   Uart_Data = RCREG;           //读串口数据  
   //LED_G = 0;       //test1

   TXIE   = 1;                  //开串口发送中断
   while(TXIF == 0);            //待串口准备好      
   TXREG = Uart_Data  ;         //Uart_Data
   while(TRMT == 0);            //串口发送中,等待
   TXIE   = 0;                  //防止串口发送中断一直申请
}
}


void main (void)             //主程序
{
Init_star();                //开机初始化
Init_UART();               //中断初始化


while(1)
{
   if(Uart_Data == 0x0A)
   {
    LED_G = 0;
   }
   if(Uart_Data == 0x0B)
   {
    LED_G = 1;
   }

  }
}



附件 :仿真包,原程序。malab8.7 proteus7.10

UART.rar 下载积分: 积分 -1 分
3.11 MB, 下载次数: 27, 下载积分: 积分 -1 分 原包
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
robin_chen559
1楼-- · 2019-07-16 00:02
验证用STC12C5410AD实板出来了,PIC16F877a仿真也可以实现,但就是1822出不来。8脚带串口和PWM的单片机太少了~~~~~
robin_chen559
2楼-- · 2019-07-16 01:29
俺的电源部分已经发出来了,176V-265V 基本工作正常。搜搜俺的帖子应该可以找到的~~~
msfet
3楼-- · 2019-07-16 02:44
 精彩回答 2  元偷偷看……
robin_chen559
4楼-- · 2019-07-16 05:06
msfet 发表于 2013-12-11 18:45
原理图能看一下吗

我的博客上有,你去翻翻看好了~~~~~~~~~
robin_chen559
5楼-- · 2019-07-16 07:25
还好21ic的好心人帮忙解决
谢谢 yklstudent 兄台
有两个原因:
(1)波特率写错了103--》1100111又对齐01100111 SPBRGL  = 0b01100111;才对,主要是这个写错了,什么弄都是错的。
(2)BAUDCON = 0b01001000 设置固定波特率。调试的时候这个参数改了好多回,自动固定都试过,就是前头写错了。
做项目小心细致为上,一个小错误,能把人给搞死。
现以可以调出,十分感谢,下一步试试蓝牙串口了

UART.rar 下载积分: 积分 -1 分

6.09 MB, 下载次数: 76, 下载积分: 积分 -1 分

Legend_24a
6楼-- · 2019-07-16 12:59
你用它做的什么设计

一周热门 更多>