www.pudn.com > 320.rar > serial.c
#include#include #include //#include //#include "dir\config.h" #include "serial.h" #include //uchar serial_rec_byte; //extern uchar code num_dis[10]; /**************************************************************************** * 名称:void int_serial(void) interrupt 4 * 功能:串口中断 * 入口参数:无 * 出口参数:无 ****************************************************************************/ /* void int_serial(void) interrupt 4 { uchar a; EA=0; if(RI) { RI=0; serial_rec_byte++; a=SBUF; LCM1602(0,0,1,&num_dis[(serial_rec_byte/100)]); LCM1602(1,0,1,&num_dis[(serial_rec_byte/10)%10]); LCM1602(2,0,1,&num_dis[serial_rec_byte%10]); LCM1602(4,0,1,&a); } if(TI) { TI=0; } EA=1; } */ /**************************************************************************** * 名称:void test_serial(void) * 功能:测试串口,向超级终端发送一串字符。 * 入口参数:无 * 出口参数:无 ****************************************************************************/ void test_serial(void) { //printf("test serial ok!\n"); //printf("\n\n***************************************************************\n"); //printf("***** Serial Test OK! *****\n"); //printf("***** 串口测试完成 *****\n"); //printf("***** 系统复位 *****\n"); printf("***************************************************************\n"); } /**************************************************************************** * 名称:void test_ram(void) * 功能:测试RAM,先向RAM中写入一定量已知数据,然后向超级终端发送数据 * 入口参数:无 * 出口参数:无 ****************************************************************************/ /* void test_ram(void) { uint a; for(a=0;a<32*1024;a++) { XBYTE[a]=a%0xff; printf("NO%d:%d\n",(int)a,(int)XBYTE[a]); } } */ /**************************************************************************** * 名称:void serial_init(void) * 功能:串口初始化。 * 入口参数:无 * 出口参数:无 ****************************************************************************/ void serial_init(void) { SCON = 0X52; /* SCON: SM0|SM1|SM2|REN|TB8|RB8|TI|RI */ PCON = 0X80 | PCON; /* PCON: SMOD | - | - | - | GF1|GF0|PD |IDL| */ TMOD = 0X20; /* TMOD: GATE|C/T|M1|M0|GATE|C/T|M1|M0 */ TCON = 0x69; /* TCON: TF1|TR1|TF0|TR0|IE1|IT1|IE0|IT0 */ //TH1 = 0xE5; /* 2400@12M */ TH1=0x97; /* 300@6M */ //TH1 = 0xF9; /* 9600@12M 这时误差太大,还是用上面的比较好 */ ] //ES=1; //EA=1; }