3926|8

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

定时1分钟发送字符串,没有发送出去 [复制链接]

单片机是8051f340

/*****************************************************************
*
*本程序是通过F340的uart0与PC进行串口通讯的例程,具体实现为当F340收
*从PC传来的数据后将数据原样回发给PC机 ,端口为RX=P0.5,TX=P0.4
******************************************************************/
#include
#define uchar unsigned char
#define uint unsigned int

char c_buffer[6] = {'g','d','d','e','j'};
/*****************************************************************
*
*从uart0发送一个字符
*****************************************************************/
void putc_uart0(char ch)         reentrant
{
        while(!TI0);
        TI0 = 0;
        SBUF0 = ch;

        if(ch == '\n') putc_uart0('\r');
}

/*****************************************************************
*
*从uart0发送一个字符串
*****************************************************************/
void puts_uart0(char * pch)
{
        while(*pch != '\0') putc_uart0(*pch++);
}

/*****************************************************************
*
*端口初始化函数
*****************************************************************/
void PORT_Init (void)
{
   XBR0      = 0x01;                                          
   XBR1      = 0x40;                    
   P0MDOUT   = 0x10;                    

}

/****************************************************************
*
*UART0初始化函数
*****************************************************************/
void UART0_Init (void)
{
   SCON0    |= 0x10;                        //UART0接收允许
   CKCON     = 0x01;                        //系统时钟/4
   TH1       = 0x64;                        //波特率为9600
   TL1       = TH1;
   TMOD      = 0x20;                        //方式 2:自动重装载的 8 位计数器/定时器
   TR1       = 1;                                //定时器 1 允许
   TI0       = 1;                                //发送中断标志
}

void timer2(void) interrupt 5
{
        static uchar t;
        TF2H = 0;
        t++;
        if(20 == t)
        {
                puts_uart0(c_buffer);
                t = 0;
        }
}

void Timer2_Init(void)
{
        ET2                = 1;                        //允许 TF2L 或 TF2H 标志的中断请求
        T2SPLIT = 0;                        //定时器 2 工作在 16 位自动重装载方式
        T2SOF        = 0;                        //配合T2SPLIT工作,使定时器2工作在16 位自动重装载方式
        TR2                = 1;                        //T2允许

        TMR2H = 0x3c;                        //定时器初始值
        TMR2L |= 0xb0;
}
/*****************************************************************
*
*主函数
*****************************************************************/
void main()
{
        PCA0MD    &= ~0x40;                //关闭看门狗
        OSCICN    |= 0x03;                //SYSCLK 为内部高频振荡器输出(不分频)
        PORT_Init();  
        UART0_Init();
        Timer2_Init();

        while(1);
}

求高手帮忙看下哪里写错了。

最新回复

void putc_uart0(char ch) reentrant { TI0 = 0; SBUF0 = ch;    /* 要先送一个字符,才可以等待TI0变成1 */ while(!TI0); if(ch == '\n') putc_uart0('\r');}   详情 回复 发表于 2009-12-28 16:45
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
单次发送可以吗?
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
一次都发送不出去
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
先拿示波器看下数据是不是真的没发出,波特率什么的都对不对。
再然后也就只好找个仿真器来看看了。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 wangbinds 的回复:
先拿示波器看下数据是不是真的没发出,波特率什么的都对不对。
再然后也就只好找个仿真器来看看了。

先把单次发送调成功吧
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 2 楼 wkzg 的回复:
一次都发送不出去


哦,刚才搞错了,不使用定时器,单次是可以把字符串发送出去的,
加上定时器就不行了,对定时器的使用还不熟悉
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

7
 
你的定时器初始化与中断处理程序有点问题。

晚上回去给你完整的程序,到时QQ:604914729聊。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
应该是在定时器中断处理上出的问题,甚至可能没进中断
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 
void putc_uart0(char ch) reentrant
{
TI0 = 0;
SBUF0 = ch;    /* 要先送一个字符,才可以等待TI0变成1 */
while(!TI0);

if(ch == '\n') putc_uart0('\r');}
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表