📄 acquart.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 + -