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

📄 serial.c

📁 很少见的源码公开的msc51和z80的c编译器。
💻 C
字号:
//----------------------------------------------------------------------------//Written by Dmitry S. Obukhov, 1996// dso@usa.net //----------------------------------------------------------------------------//This module implements serial interrupt handler and IO routinwes using//two 256 byte cyclic buffers. Bit variables can be used as flags for //real-time kernel tasks//Last modified 6 Apr 97//----------------------------------------------------------------------------//This module contains definition of I8051 registers#include "8052.h"static unsigned char xdata stx_index_in, srx_index_in, stx_index_out, srx_index_out;static unsigned char xdata stx_buffer[0x100];static unsigned char xdata srx_buffer[0x100];static bit work_flag_byte_arrived;static bit work_flag_buffer_transfered;static bit tx_serial_buffer_empty;static bit rx_serial_buffer_empty;void serial_init(void){    SCON = 0x50;    T2CON = 0x34;    PS = 1;    T2CON = 0x34;    RCAP2H = 0xFF;    RCAP2L = 0xDA;        RI = 0;    TI = 0;        stx_index_in = srx_index_in = stx_index_out = srx_index_out = 0;    rx_serial_buffer_empty = tx_serial_buffer_empty = 1;    work_flag_buffer_transfered = 0;    work_flag_byte_arrived = 0;    ES=1;}void serial_interrupt_handler(void) interrupt 4 using 1{    ES=0;    if ( TI )	{	    TI = 0;	    if (stx_index_out == stx_index_in )		{		    tx_serial_buffer_empty = 1;		    work_flag_buffer_transfered = 1;		}	    else SBUF = stx_buffer[stx_index_out++];	}    if ( RI )	{	    RI = 0;	    srx_buffer[srx_index_in++]=SBUF;	    work_flag_byte_arrived = 1;	    rx_serial_buffer_empty = 0;	}    ES=1;}//Next two functions are interfacevoid serial_putc(unsigned char c){    stx_buffer[stx_index_in++]=c;    ES=0;    if ( tx_serial_buffer_empty )	{	    tx_serial_buffer_empty = 0;	    TI=1;	}    ES=1;}unsigned char serial_getc(void){    unsigned char tmp = srx_buffer[srx_index_out++];    ES=0;    if ( srx_index_out == srx_index_in) rx_serial_buffer_empty = 1;    ES=1;    return tmp;}//END OF MODULE

⌨️ 快捷键说明

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