欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

stc單片機雙串口中斷收發源程序

查看數: 10068 | 評論數: 18 | 收藏 7
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2017-4-7 18:22

正文摘要:

雙串口中斷收發源代碼:

回復

ID:1044540 發表于 2022-9-12 14:47
#include "UART.h"
#include "Key.h"
#include "Record.h"

uint8_t Rcv_Buf[RCV_LENGTH];
uint8_t Snd_Buf[SND_LENGTH];

volatile uint8_t        recvbyte=0;
uint8_t RcvFlag = 0;

volatile uint16_t         ScanTimeMs;
volatile uint16_t SysOverTime;
uint8_t InitStartEnable;

uint8_t SendAdd;

uint16_t SysCallStatus1=0;
uint16_t SysCallStatus2=0;

uint16_t SysCallStatus1Bak=0;
uint16_t SysCallStatus2Bak=0;
uint16_t alarm = 0;

bit MyAddStart;
bit Over1min;

bit OverTimeFlag;

bit OtherMaster;
bit OtherMasterChecked;

volatile uint16_t DisableSendTimeMs;

volatile uint16_t u16_OverTimeMs;

void UART1_ISR() interrupt 4 using 1
{
        if(RI)
        {
                RI = 0;
                SysOverTime = 0;
                UartErr = 0;
                Rcv_Buf[recvbyte] = SBUF;                        //接收數據
                if(Rcv_Buf[0] == 0x53)
                {
                        recvbyte++;
                }
               
                if((Rcv_Buf[recvbyte-1]==0x0a) && (Rcv_Buf[recvbyte-2]==0x0d))                 //接收到幀尾
                {
                        RcvFlag = 1;                        //置位接收標志
                        recvbyte = 0;                        //接收下標清零
                }
        }
}

void Uart1_Init(void)
{
//        SCON = 0x50;
//        TMOD &= 0x0f;
//       
//        TH1 = BAUD>>8;
//        TL1 = BAUD;
//       
//        TR1 = 1;
//        AUXR |= 0x40;
//         ES = 1;
//        EA = 1;
//       
//       
//        RS485_RcevEnable();
                        TR1 = 0;
                AUXR &= ~0x01;                //S1 BRT Use Timer1;
                AUXR |=  (1<<6);        //Timer1 set as 1T mode
                TMOD &= ~(1<<6);        //Timer1 set As Timer
                TMOD &= ~0x30;                //Timer1_16bitAutoReload;
                TH1 = (uint8_t)(BAUD >> 8);
                TL1 = (uint8_t)BAUD;
                ET1 = 0;                                                // 禁止Timer1中斷
//                INT_CLKO &= ~0x02;        // Timer1不輸出高速時鐘
        //        INT_CLKO |=  0x02;        // Timer1輸出高速時鐘
                TR1  = 1;                        // 運行Timer1
       
        SCON = (SCON & 0x3f) | (1<<6);        // 8位數據, 1位起始位, 1位停止位, 無校驗
//        PS  = 1;        //高優先級中斷
        ES  = 1;        //允許中斷
        REN = 1;        //允許接收       
       
//        if(MasterAdd !=0)
//        {
//                        MyAddStart = 0;
//        }
       
       
       
        OtherMaster = 1;
        OtherMasterChecked = 0;
        DisableSendTimeMs = 0;
       
        SysOverTime = 0;
        Over1min = 0;
       
        RS485_RcevEnable();
}
void UART1_Send_Char(unsigned char c)
{
        RS485_SendEnable();
        _nop_();
        _nop_();
        _nop_();
        SBUF = c;
        while(!TI);       
        TI = 0;
       
        _nop_();
        _nop_();
        _nop_();
        RS485_RcevEnable();
}
void UART1_Send_String(unsigned char *s)
{
        while(*s)
        {
                UART1_Send_Char(*s++);
        }
}
void UART1_Send_Int(unsigned int c)
{
        UART1_Send_Char(c/10000+0x30);
        UART1_Send_Char(c%10000/1000+0x30);
        UART1_Send_Char(c%1000/100+0x30);
        UART1_Send_Char(c%100/10+0x30);
        UART1_Send_Char(c%10+0x30);
        UART1_Send_Char(0x0d);
        UART1_Send_Char(0x0a);
}
void UART1_Send_Buf(unsigned char *s,unsigned char len)
{
        unsigned char i;
       
        for(i=0;i<len;i++)
        {
                UART1_Send_Char(s[i]);
        }
}

void UART_Timer_Ms(void)
{
        SysOverTime++;
        if(SysOverTime > 10000)
        {
                UartErr = 1;
                MyAddStart = InitStartEnable;
                ScanTimeMs = 0;
        }
        if(MyAddStart)
        {
                ScanTimeMs++;
請教一下,這個程序中初始波特率是多少呢
ID:596723 發表于 2019-8-7 11:39
標記,下載測試下
ID:299740 發表于 2019-7-1 08:27
非常感謝,正在被這個串口2收發問題困擾,趕緊下下來測試。
ID:535790 發表于 2019-5-26 16:24
謝謝,學習了
ID:43121 發表于 2019-5-24 09:38
謝謝分享,收獲很大
ID:434016 發表于 2018-11-27 10:44
謝謝提供,測試看看...
ID:120672 發表于 2018-9-29 18:19
謝謝分享,正在找相關資料呢!
ID:66287 發表于 2018-8-1 10:40
學習了,謝謝分享!
ID:381135 發表于 2018-7-31 09:52
謝謝分享
ID:65956 發表于 2018-7-12 08:51
謝謝分享,幫助很大,謝謝
ID:189673 發表于 2018-5-29 19:50
無常 發表于 2018-5-8 15:24
謝謝分享,初學很懵逼

要測試下這個可不可以用
ID:283906 發表于 2018-5-8 15:24
謝謝分享,初學很懵逼
ID:323951 發表于 2018-5-7 16:29
謝謝謝謝!非常感謝!!
ID:225369 發表于 2017-12-28 15:32
謝謝謝謝!非常感謝!!
ID:225369 發表于 2017-12-28 15:31
我正要找 這個,可不可以用?
ID:225369 發表于 2017-12-28 15:31
謝謝!謝謝!非常感謝!!
ID:94867 發表于 2017-12-27 11:03
我要測試下這個可不可以用
ID:94867 發表于 2017-12-27 11:00
標記謝謝分享

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表