微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 帮我看看这个程序问题在哪

帮我看看这个程序问题在哪

时间:10-02 整理:3721RD 点击:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define T 10000
uchar i;
sbit CLK1=P2^0;
sbit CWB1=P2^1;
sbit CLK2=P2^2;
sbit CWB2=P2^3;
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
/* 定时器0服务子程序 */
void time0() interrupt 1   // 用定时器0中断来产生CLK1时钟
{   
        unsigned char a;                                          
    TH0 = -T/256;  
    TL0 = -T%256;
        a++;
        if(a=100)
        {
    CLK1 = ~CLK1;
        }
}
/* 定时器1服务子程序 */
void tim1() interrupt 3   // 用定时器1中断来产生CLK2时钟
{
    unsigned char b;
    TH1 = -T/256;  
    TL1 = -T%256;
        b++;
        if(b=100)
        {
    CLK2= ~CLK2;
        }
}
/*串口初始化*/
void init_uart(void)
{
    TMOD=0x21;
        TH1=0xfd;
        TL1=0xfd;
        SCON=0x50;
        PCON=0x00;
    TR1=1;
        ES=1;
}
       
/* 主程序 */
void main()
{  
        EA=1;
    ET0=1;  
        ET1=1;
    init_uart();
    while(1)
      {
                if(RI==1)                                //查看是否接收到数据
                {
                        i=SBUF;                    //读取数据
                        RI=0;        }                        //清除标志位
            switch(i)
            {
                  case 0x01:
                         TH0 = -T/256;  
            TL0 = -T%256;
                        TR0=1;
                        break;
            case 0x02:
                    TR0=0;
                        break;
                case 0x03:
                    CWB1=0;
                        break;
                case 0x04:
                    CWB1=1;
                        break;
                case 0x05:
                    TR1=0;
                        TMOD=0x10;
                        TH1=-T/256;  
                       TL1=-T%256;
                        TR0=1;
                        break;
                case 0x06:
                    TR1=0;
                        break;
                case 0x07:
                    CWB2=0;
                        break;
                case 0x08:
                    CWB2=1;
                        break;        
                   default:break;
      }
}
}
串口接收程序 发送03 04是对的  01 02不对

小编都没用到中断就不要开中断了,串口初始化 ES=1去掉,首先得确定串口通信是否正确,再判断波形是否正确。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top