打印

PIC16F877A串口发送字符串问题

[复制链接]
4703|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
f136025450|  楼主 | 2012-7-14 20:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 f136025450 于 2012-7-16 12:46 编辑

//RB0按下时,单片机发送table里字符串
#include<htc.h>
#include"display.h"
#define uchar unsigned char
#define uint unsigned int
const uchar table[]={'I','.','L','O','V','E','.','Y','O','U',0x0d,0x0a,'k'};
uint i=0;
/*********************************
  按键判断
*********************************/
uchar keypress()
{
if(RB0==0)
{
  return 1;
}
else return 0;
}
/*********************************
发数据
*********************************/
void senddata()
{

while(table!='k')
{
  TXREG=table;
  while(!TRMT);  //检测TSR寄存器是否发送完毕
// display(i);
  i++;
}
}
/*********************************
  main 函数
*********************************/
void main()
{
TRISD=0X00;
TRISA=0X00;
TRISC=0X80; //配置RX、TX输入输出端口

//BRGH=1;   //高速
SPBRG=25;  //设置高速波特率9600
TXSTA=0B00100100;//0X24
RCSTA=0B10010000;
TXIE=1;  
GIE=1;
PEIE=1;
while(1)
{
  ;
}
}
/********************************************
  中断
********************************************/
void interrupt TX()
{
if(TXIE&&TXIF)
{
  if(keypress())
  {
   delay(5);
   if(keypress())
   {
    senddata();  
   }
  }
  while(keypress());
}
}

我按下RB0键后在仿真上显示的怎么是乱码啊??怎么不是table里面的字符串?我是按DATASHEET里面说的设置寄存器的啊,哪位大神知道,求解释!!!
谢谢!!!

沙发
NE5532| | 2012-7-15 18:00 | 只看该作者
while(table!='k')
{
TXREG=table【i】;
while(!TRMT); //检测TSR寄存器是否发送完毕
// display(i);
i++;
}


楼主该检讨C语言数组章节咋学的……

使用特权

评论回复
板凳
f136025450|  楼主 | 2012-7-16 12:48 | 只看该作者
不好意思,源程序是这 样的,复制不对
//RB0按下时,单片机发送table里字符串
#include<htc.h>
#include"display.h"
#define uchar unsigned char
#define uint unsigned int
const uchar table[]={'I','.','L','O','V','E','.','Y','O','U',0x0d,0x0a,'k'};
uint i=0;
/*********************************
  按键判断
*********************************/
uchar keypress()
{
if(RB0==0)
{
  return 1;
}
else return 0;
}
/*********************************
发数据
*********************************/
void senddata()
{

while(table[i]!='k')
{
  TXREG=table[i];
  while(!TRMT);  //检测TSR寄存器是否发送完毕
// display(i);
  i++;
}
}
/*********************************
  main 函数
*********************************/
void main()
{
TRISD=0X00;
TRISA=0X00;
TRISC=0X80; //配置RX、TX输入输出端口

//BRGH=1;   //高速
SPBRG=25;  //设置高速波特率9600
TXSTA=0B00100100;//0X24
RCSTA=0B10010000;
TXIE=1;
TXIF=0;
GIE=1;
PEIE=1;
while(1)
{
  ;
}
}
/********************************************
  中断
********************************************/
void interrupt TX()
{
if(TXIE&&TXIF)
{
  TXIF=0;
  delay(1);
  if(keypress())
  {
   delay(5);
   if(keypress())
   {
    senddata();  
   }
  }
  while(keypress());
}
}

使用特权

评论回复
地板
f136025450|  楼主 | 2012-7-16 12:57 | 只看该作者

使用特权

评论回复
5
blan_k| | 2013-9-9 19:50 | 只看该作者
botelv set no Y or N

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

34

帖子

1

粉丝