找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4764|回复: 4
打印 上一主题 下一主题
收起左侧

stc15F204ea模拟串口

[复制链接]
跳转到指定楼层
楼主
ID:40241 发表于 2012-5-14 20:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

小弟今天第一次模拟串口,程序如下:其实就是第8.1章的例程,但是我将其下载下去后,串口输入0x55后 没有输出。我在STC-ISP中设置也是设置的11.0592MHz,波特率9600,为什么没有呢?

#include "reg51.h"
typedef unsigned char BYTE;
typedef unsigned WORD;
typedef bit BOOL; 
#define BAUD  0xFE80         /* 9600bps@11.0592MHz           */
sfr AUXR = 0x8E;
sbit RXB = P3^0;          /* 定义串口TX RX端口           */
sbit TXB = P3^1;

BYTE TBUF,RBUF;
BYTE TDAT,RDAT;
BYTE TCNT,RCNT;
BYTE TBIT,RBIT;
BOOL TING,RING;
BOOL TEND,REND;

BYTE t,r;
BYTE buf[16];

void UART_INIT()
{
 TING = 0;
 RING = 0;
 TEND = 1;
 REND = 0;
 TCNT = 0;
 RCNT = 0;
}
void main()
{
 TMOD = 0x00;       /* 定时器0 16位自动装置模式         */
 AUXR = 0x80;       /* 定时器0工作在1T模式          */
 TL0 = BAUD;
 TH0 = BAUD >> 8;         /* 初始化定时器0,并设置自动装置的值      */
 TR0 = 1;            /* 定时器0开始启动           */
 ET0 = 1;            /* 使能定时器0中断           */
 PT0 = 1;            /* 设置定时器0中断优先级         */
 EA = 1;             /* 开全局中断            */
 UART_INIT();            /* 串口初始化            */
 while(1)
 {
 

  if(REND)
  {
     REND = 0;
   buf[r++ & 0x0f] = RBUF;
  }
  if(TEND)
  {
   if(t != r)
   {
    TEND = 0;
    TBUF = buf[t++ & 0x0f];
    TING = 1;
   }
  }

 }
}

void tm0() interrupt 1 using 1
{
 if(RING)
 {
  if(--RCNT == 0)
  {
   RCNT =3;
   if(--RBIT == 0)
   {
    RBUF = RDAT;
    RING = 0;
    REND = 1;
   }
   else
   {
    RDAT >>=1;
    if(RXB)RDAT |= 0x80;
   }
  }
 }
 else if(!RXB)
 {
  RING = 1;
  RCNT = 4;
  RBIT = 9;
 }
 if(--TCNT == 0)
 {
  TCNT = 3;
  if(TING)
  {
   if(TBIT == 0)
   {
    TXB = 0;
    TDAT = TBUF;
    TBIT = 9;
   }
   else
   {
    TDAT >>= 1;
    if(--TBIT ==0)
    {
     TXB = 1;
     TING = 0;
     TEND = 1;
    }
    else
    {
     TXB =CY;
    }
   }
  }

 }
}

 

 

 

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:40241 发表于 2012-5-14 20:45 | 只看该作者
希望各位大侠帮忙解决,万分感谢!
回复

使用道具 举报

板凳
ID:40241 发表于 2012-5-14 21:08 | 只看该作者
感谢各位大侠!
回复

使用道具 举报

地板
ID:114645 发表于 2016-9-24 16:47 来自手机 | 只看该作者
qiancuit 发表于 2012-5-14 20:45
**** 作者被禁止或删除 内容自动屏蔽 ****

楼主,这个问题我也遇到过,在keil C51里面的把memory model设为small就可以正常运行了
回复

使用道具 举报

5#
ID:33544 发表于 2017-8-4 10:30 | 只看该作者
分享是种美德
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表