⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serial.c

📁 Small RTOS(51) 1.00v 无需外扩ram即可在51上执行的占先式RTOS 可移植,完全免费,公开源代码 具有详细中文文档和注释 (作者已经把它运用到实际的项目中)
💻 C
字号:
#include "config.h"

unsigned char Buf[NBYTE-3];

		void InitSerial(void)
{
	SCON=0x50;
	PCON=0x80;
	TMOD=TMOD&0x0f;
	TMOD=TMOD|0x20;
	TH1=0xf3;                   //com is 4800 b/s
	TL1=0xf3;
	TR1=1;
	ES=1;

}


                            void main(void)
{
	InitSerial();
	TMOD=(TMOD & 0XF0) | 0X01;
	TL0=0x0;
	TH0=0x0;
	TR0=1;
	ET0=1;
	TF0=0;
    OSStart();
}

        void comm(void) interrupt 4
{
    OS_INT_ENTER();
    if(RI==1)
    {
        RI=0;
        OSIntSendSignal(RECIVE_TASK_ID);
    }
    if(TI==1)
    {
        TI=0;
        OSIntSendSignal(1);        
    }
    OSIntExit();
}

    void Recuve(void)
{
    unsigned char temp,temp1,Sum,i;

    OSWait(K_SIG,0);
    temp=SBUF;
    while(1)
    {
        while(1)
        {
            OSWait(K_SIG,0);
            temp1=SBUF;
            if((temp==STARTBYTE1)&&(temp1==STARTBYTE2)) break;
            temp=temp1;
        }
        Sum=STARTBYTE1+STARTBYTE2;

        OSWait(K_SIG,0);
        temp=SBUF;
        for(i=0;i<NBYTE-3;i++)
        {
            OSWait(K_SIG,0);
            temp1=SBUF;
            if((temp==STARTBYTE1)&&(temp1==STARTBYTE2))
            {
                OSWait(K_SIG,0);
                temp=SBUF;
                i=-1;
                Sum=STARTBYTE1+STARTBYTE2;
                continue;
            }
            Buf[i]=temp;
            Sum+=temp;
            temp=temp1;
        }
        Sum+=temp1;
        if(Sum==0) OSSendSignal(1);
    }
}
                            void TaskB(void)
{
    while(1)
    {
        OSWait(K_SIG,0);
        SBUF='O';
        OSWait(K_SIG,0);
        SBUF='K';
        OSWait(K_SIG,0);
        SBUF='!';
        OSWait(K_SIG,0);
    } 
}
                            void TaskC(void)
{
    while(1)
    {
        PCON=PCON|0x01;
    } 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -