久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1458|回復: 2
打印 上一主題 下一主題
收起左側

為什么單片機串口二沒有通信還是串口一通信

[復制鏈接]
跳轉到指定樓層
樓主
ID:1012516 發表于 2022-5-24 16:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "stc12c5a60s2.h"
#include <intrins.h>

typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;
typedef signed char int8;
typedef signed int int16;
typedef signed long int32;

sbit Red=P2^7;
sbit Green=P2^6;
sbit Yellow=P2^5;
sbit Sound=P2^4;
sbit RS485_DIR = P1^5;  
sbit WDI=P0^7;
sbit receiveok=P2^0;
sbit sendok=P2^1;
// sbit RS485_RXD=P1^
// sbit RS485_TXD=P1^

uint8 M=0,R=0,Y=0,G=0,RY=0,RG=0,YG=0,RGY=0;S=0;
uint8 a=0,b=0,c=0,d=0,e=0;
uint16 t=0;
uint16 t1=0;
uint16 t2=0;
uint32 t3=0;
uint8 light;
uint8 flaglight;
uint8 flagboma;

bit flagframe = 0;      
bit flagTxd = 0;   
uint8 flag=0;
bit flag1=0;
uint8 T0RH;     
uint8 T0RL;

uint8 code tab1[1] = {0x22};   
uint8 code tab2[2] = {0x88,0x99};
uint8 res=0;
uint8 cntRxd = 0;   
uint8 bufRxd[64];
uint8 pdata buf[40];
#define S2RI 0x01  
#define S2TI 0x02

void UartRxdMonitor(uint8 ms);
void ConfigTimer0(uint16 ms);
void ConfigUart(uint16 baud);
//void UartDriver(
void Delays(uint16 xms);
void UartWrite(uint8 *ptr, uint8 len);
void ConfigUart2();

uint8 GetLightState()
{

        if(t>=2000)
        {
                if(S>=1)   
                {
                                flaglight=0x05;
                                t=0;
                }
                else if(R>=1||RY>=1||RG>=1||RGY>=1)
                {
                        flaglight =0x01;
                        t=0;
                }
                else if(((Y>=1)||(YG>=1))&&(R==0)&&(RY==0)&&(RG==0)&&(RGY==0))
                {
                        flaglight=0x02;
                        t=0;
                }
                else if((G>=1)&&(R==0)&&(RY==0)&&(RG==0)&&(RGY==0)&&(Y==0)&&(YG==0))
                {
                        flaglight=0x03;
                        t=0;
                }        
                else if((M>=1)&&(G==0)&&(R==0)&&(RY==0)&&(RG==0)&&(RGY==0)&&(Y==0)&&(YG==0))
                {
                        flaglight=0x04;
                        t=0;
                }        
               
                R=0; Y=0;        G=0; M=0; RY=0; RG=0;        YG=0; RGY=0;S=0;
  }
        return flaglight;
}

void watchdog()
{
   WDI=~WDI;
}

// void Delay1000ms()              
//
//         unsigned char i, j,

//         i = 4
//         j =
//         k = 20
//         
//        
//                 
//               
//                         while (--k
//                 } while (--j
//         } while (--i
//

void Delay1000ms()               
{
        unsigned char i, j, k;

        i = 22;
        j = 3;
        k = 227;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}

void main()
{
        EA = 1;   
//         IPH=0x1
//         IP=0x0
        PCON=0x00;
//         IPH=0x0
//         IP=0x0
//     IP2H=0x01;
//         IP2=0x0
        ConfigTimer0(1);  
//         ConfigUart(9600);
  ConfigUart2();
        watchdog();
        
        while(1)
        {                           
//        WDT_CONTR = 0X3
          flagboma=(~P0)&0x0f;

//                  UartWrite(&flagboma,1
                watchdog();               
                flag=GetLightState();
                if(flag1==1)
                {
                        flag1=0;
                        UartWrite(tab1,1);
                        UartWrite(&flag,1);
                        UartWrite(&flagboma,1);
                        UartWrite(tab2,2);
                  watchdog();
                        sendok=0;
                        Delay1000ms();
                        sendok=1;
    }
//                 if(t2>210
                if(t2>500)        
                {
                        t2=0;
                        
                        if(flag==0x01)  
                        {
                                if(a<1)
                                {
                                        a++;
                                        UartWrite(tab1,1);
                                        UartWrite(&flag,1);
                                        UartWrite(&flagboma,1);
                                        UartWrite(tab2,2);
                                        watchdog();
                                        sendok=0;
                                        Delay1000ms();
                                        sendok=1;
                                        b=0;
                                        c=0;
                                        d=0;
                                         e=0;
                                        t3=0;
                                }
                        }
                        if(flag==0x02)   
                        {
                                if(b<1)
                                {
                                        b++;
                                        UartWrite(tab1,1);
                                        UartWrite(&flag,1);
                                        UartWrite(&flagboma,1);
                                        UartWrite(tab2,2);
                                        watchdog();
                                        sendok=0;
                                        Delay1000ms();
                                        sendok=1;
                                        a=0;
                                        c=0;
                                        d=0;
                                        e=0;
                                        t3=0;
                                }
                        }
                        if(flag==0x03)   
                        {
                                if(c<1)
                                {
                                        c++;
                                        UartWrite(tab1,1);
                                        UartWrite(&flag,1);
                                        UartWrite(&flagboma,1);
                                        UartWrite(tab2,2);
                                        watchdog();
                                        sendok=0;
                                        Delay1000ms();
                                        sendok=1;
                                        a=0;
                                        b=0;
                                        d=0;
                                         e=0;
                                        t3=0;
                                }
                        }
                        if(flag==0x04)   
                        {
                                if(d<1)
                                {
                                        d++;
                                        UartWrite(tab1,1);
                                        UartWrite(&flag,1);
                                        UartWrite(&flagboma,1);
                                        UartWrite(tab2,2);
                                        watchdog();
                                        sendok=0;
                                        Delay1000ms();
                                        sendok=1;
                                        a=0;
                                        b=0;
                                        c=0;
                                         e=0;
                                        t3=0;
                                }
                        }
                         if(flag==0x05)   
                        {
                                if(e<1)
                                {
                                        e++;
                                        UartWrite(tab1,1);
                                        UartWrite(&flag,1);
                                        UartWrite(&flagboma,1);
                                        UartWrite(tab2,2);
                                  watchdog();
                                 sendok=0;
         Delay1000ms();
         sendok=1;
                                        a=0;
                                        b=0;
                                        c=0;
                                        d=0;
                                        t3=0;
                                }
                        }
                }
        }
}
        
        
        


void Delay10us(uint8 t)
        do{
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
        }while(t--);
}


void UartWrite(uint8 *ptr, uint8 len)   
{
//        uint8 cntTxd;
        RS485_DIR = 1;   
//        cntTxd = 1
        while(len--)
        {
                flagTxd = 0;
                S2BUF = *ptr++;
                while(!flagTxd);                        
  }
        Delay10us(5);  
        RS485_DIR = 0;

}




void ConfigTimer0(uint16 ms)
{
        uint32 tmp;
        tmp = 11059200 / 12;   
        tmp = (tmp*ms) / 1000;  
        tmp = 65536 - tmp + 32;   
        T0RH = (uint8) (tmp >> 8);   
        T0RL = (uint8) tmp;
        TMOD &= 0XF0;   
        TMOD |= 0X01;   
        TH0 = T0RH;
        TL0 = T0RL;
        ET0 = 1;         
        TR0 = 1;   
}


void UartRxdMonitor(uint8 ms)
{
        static uint8 idletmr = 0;
        static uint8 cntbkp = 0;
        if(cntRxd>0)
        {
                if(cntbkp != cntRxd)
                {
                        cntbkp = cntRxd;
                        idletmr = 0;
                }
                else            
                {
                        if(idletmr < 30)  
                        {
                                idletmr += ms;
                                if(idletmr >= 30)  
                                {
                                        flagframe=1;
                                }
                        }
                }
        }
        else
        {
                cntbkp = 0;
        }
}

void Timer0() interrupt 1
{
        uint8 state;
        
        TH0 = T0RH;
        TL0 = T0RL;
        UartRxdMonitor(1);
        t++;
        t1++;
        t2++;
        t3++;
        if(t1>200)   
        {
                state=P2&0xF0;
                switch(state)
                {
                         case 0xF0: M++; break;   
                         case 0x70: R++; break;   
                         case 0xC0: Y++; break;   
                         case 0xA0: G++; break;   
                        case 0x20: RG++; break;   
                        case 0x40: RY++; break;   
                        case 0x80: YG++; break;   
                        case 0x00: RGY++; break;  
                        case 0x60: S++; break;
                        default: break;
                }
                t1=0;
        }
        if(t3>1000)   
        {
                t3=0;
                flag1=1;
        }        
}


void ConfigUart2(void)
{
   RS485_DIR = 0;            
          AUXR&=0xf7;
          S2CON = 0x50;   
          AUXR |=0x04;        
         AUXR|=0X10;         
         BRT=0xdc;
        IE2 |= 0x01;                                         

}


void UART2() interrupt 8
{
        
        if(S2CON&S2RI)
        {
//                 S2CON&=0XF
                 S2CON&=~S2RI;
                if(cntRxd<sizeof(bufRxd))
                {
                        bufRxd[cntRxd++] = S2BUF;
                }

  }
        if(S2CON&S2TI)
        {
//           S2CON&=0XF
                S2CON&=~S2TI;
                flagTxd=1;
        }
        
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:428114 發表于 2022-5-24 17:49 | 只看該作者
先把語文學好啊,實在不明白你想說什么。
回復

使用道具 舉報

板凳
ID:390416 發表于 2022-5-25 10:51 | 只看該作者
單片機串口二波特率250000接收,轉串口-9600到電腦串口助手 http://www.zg4o1577.cn/bbs/dpj-220335-1.html
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天堂资源 | 一区二区三区国产 | 成人在线激情 | 欧美成人在线免费 | 亚洲精品视频一区二区三区 | 天堂一区二区三区四区 | 欧美色成人 | 久久精品视频9 | 国产乱码精品1区2区3区 | 综合精品久久久 | 99免费在线观看视频 | 丝袜 亚洲 欧美 日韩 综合 | 精品福利av导航 | 天天操 天天操 | 国产在线一区二区三区 | 中文成人在线 | 亚洲天堂精品久久 | 日本一二三区电影 | 黄网免费看 | 特级生活片 | 国产成人综合av | 成人毛片视频免费 | 午夜不卡福利视频 | 日本免费一区二区三区四区 | 性做久久久久久免费观看欧美 | 欧美日韩在线一区二区 | 免费日本视频 | 精品蜜桃一区二区三区 | 国产精品美女久久久久aⅴ国产馆 | 日韩在线一区二区三区 | 91操操操 | 国产成人免费视频网站高清观看视频 | 久久99精品国产 | 久久久久国产精品一区 | 色婷婷国产精品综合在线观看 | 欧美日韩中文国产一区发布 | 欧美日韩专区 | 黄色成人国产 | 天天干狠狠操 | 国产亚洲欧美在线视频 | 国产日韩一区二区 |