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

📄 acquart.c

📁 64输入32输出单片机程序
💻 C
字号:
//---------------------------------------------------------------------------
//	Project Title : Armature (Resistance) tester for stator.
//	  Project No. : 
//	 Project Ver. : 1.00
//	    File Name : ArmUart.c
//	     Revision : 1.00
//	 Initial Date : 22-Nov,2002
//	  Modify Date : 19-Nov,2002
//	  Description :
//---------------------------------------------------------------------------
#include <atmel\at89s53.h>
#include <absacc.h>
#include "AcqUart.h"
#include "Acquisition.h"
#include "ArmAcqui.h"
//---------------------------------------------------------------------------
#pragma ot (5,SPEED)

#define UART_READY 		1
#define UART_REPLY		10
//---------------------------------------------------------------------------
UART_st	uart;
//---------------------------------------------------------------------------
//	Functions Prototype
void uart_interrupt_service (void);

//---------------------------------------------------------------------------
void _uart_initial (void)
{
    TH2 = RCAP2H = BAUD96_MSB;
    TL2 = RCAP2L = BAUD96_LSB;
    SCON = 0x50;       			// SM0=0,SM1=1,SM2=0,REN=1,TB8=0,TR8=0,TI=0,RI=0;
    T2CON = 0x30;       		// set time2
    TR2 = 1;                    // turn on timer2
    ES = REN = 1;               // enable serial
	uart.cmdIn = FALSE;
	uart.bptr = 0;
    uart.step = UART_READY;
} // end func.

//---------------------------------------------------------------------------
void _uart_reply (void)
{
	uart.cmdIn = FALSE;
	uart.bptr = 0;
	uart.step = UART_REPLY;	
    SBUF = uart.sbuf[0];
}

//---------------------------------------------------------------------------
void uart_interrupt_service (void)
{
	TI = RI = 0;
	//----------------------------------------------
	if (!MPUcs) {
		switch (uart.step) {
		case UART_READY :
            uart.command = SBUF;
            if (uart.command >= 0x80) {
				uart.step++;
            }
   		 	break;
		case UART_READY+1 :
         	uart.param = SBUF;
			uart.cmdIn = TRUE;
			uart.step++;
			REN = 0;
   		 	break;
		//----------------------------------------------
		case UART_REPLY :
             SBUF = uart.sbuf[1];
             uart.step++;
			break;
        case UART_REPLY+1 :
				uart.step = UART_READY;
				REN = 1;
			break;
        }
	}
}
//---------------------------------------------------------------------------
//		Serial port RX or TX (vector 4) Interrupt handler. 
//---------------------------------------------------------------------------
serialport (void) interrupt SIO_VECTOR using 3
{		
	if ((SPSR & SPIF_) == SPIF_)
		spi_interrupt_service();
	else
		uart_interrupt_service();
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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