串口发送时定时器工作在方式1 的问题

2019-03-24 19:18发布

大家做串口发送的时候,一般定时器1都是用的八位重装,有谁用过工作方式1的啊,我现在用八位重装是对的,但用工作方式1 就不对了,望各位给个提示把 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
51新手
1楼-- · 2019-03-25 00:38
把程序贴出来,大家看下
#include <reg51.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit key1=P1^3;
sbit key2=P1^4;
sbit key3=P1^5;

void delay(int ms)
{
    while(ms--)
        {
      uchar i;
          for(i=0;i<250;i++)  
          {
            _nop_();                          
                _nop_();
                _nop_();
                _nop_();
          }
        }
}

void send()
{
//        P0=0x09;
        PCON=0x00;
        EA=1;
        ET1=1;
        TMOD=0x20;
        SCON=0x72;
        TH1=0xFD;
        TL1=0XFD;
        TR1=1;
        //TI=0;
}

void fasong()
{
           key1=0;

           if (key2 == 0)
        {
                delay(5);
                while(!key2);
                   delay(5);       
                while(TI == 0);
                SBUF = '0';
                TI = 0;
        }       
        if (key3 == 0)
        {
                delay(5);
                while(!key3);
                   delay(5);       
                while(TI == 0);
                SBUF = '1';
                TI = 0;
        }
}
void main()
{
        send();
        while(1)
        {
                fasong();
        }
}

void time1() interrupt 3
{
        TR1=0;
        TH1=0x1F;
        TL1=0XFD;
        TR1=1;               
}
51新手
2楼-- · 2019-03-25 05:12
发错了
TH1=0x1F;
TL1=0XFD;

TH1=0xFD;
TL1=0XFD;
还有TMOD=0x10;
melon_1
3楼-- · 2019-03-25 07:56
void send()少了ES=1

一周热门 更多>