首页 > 代码库 > sms

sms

//danny 
#include <STC12C5A60S2.H>

sbit S0 = P1^0;
sbit S1 = P1^1;
sbit S2 = P1^2;
sbit S3 = P1^3;

unsigned int RXnum = 0;	//数量
unsigned int TXnum = 0;	//数量
unsigned char code LedChar[] = {	//数码管显示字符转换表
    0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};

unsigned char RxdByte; //串口接收到的字节

void UartInit(void);
//void sendData();
//void sendString();


/* 主函数 */
void main()
{
	EA = 1;		//允许出现中断
	ES = 1;		//允许串口中断
	UartInit();

	S0=S1=S2=S3=1;
	while(1){

		S3=0;
		P0 = LedChar[RXnum%10];
		S0=S1=S2=S3=1;P0=0XFF;
		S2=0;
		P0 = LedChar[RXnum/10%10];
		S0=S1=S2=S3=1;P0=0XFF;
		
		S1=0;
		P0 = LedChar[TXnum%10];
		S0=S1=S2=S3=1;P0=0XFF;
		S0=0;
		P0 = LedChar[TXnum/10%10];
		S0=S1=S2=S3=1;P0=0XFF;	
	}
}

/* UART初始化 */
void UartInit(void)		//9600bps@11.0592MHz
{
	PCON &= 0x7F;		//波特率不倍速
	SCON = 	0x50;		//8位数据,可变波特率
	AUXR |= 0x04;		//独立波特率发生器时钟为Fosc,即1T
	BRT = 	0xDC;		//设定独立波特率发生器重装值
	AUXR |= 0x01;		//串口1选择独立波特率发生器为波特率发生器
	AUXR |= 0x10;		//启动独立波特率发生器
}

/* UART 中断服务函数 */
void Uart_Isr() interrupt 4 using 1
{
	//接收
    if (RI){
		RI = 0;			//Clear receive interrupt flag
		RXnum++;
		RxdByte = SBUF;
		SBUF = RxdByte;
    }
	//发送
    if (TI){
        TI = 0;			//Clear transmit interrupt flag
		TXnum++;
    }
}



sms