當前位置:編程學習大全網 - 源碼下載 - 求單片機串口C語言程序,要求可以發送壹個數據到PC機,可以接受PC機的字符

求單片機串口C語言程序,要求可以發送壹個數據到PC機,可以接受PC機的字符

不知道妳是不是用的51單片機,給妳壹個程序參考壹下吧。

/**************************************

函數功能:

在#MCU2的數碼管上顯示收到的學號後3位

若與自己的相符合,則發送Right!否則發送Wrong!

默認學號為123

***************************************/

#include<reg52.h>

#include<absacc.h>

/*******************************

總線地址定義區

********************************/

#define LED_DIG XBYTE[0xD000] //定義數碼管的段選總線地址

#define LED_COM XBYTE[0xC000] //定義數碼管的位選總線地址

/*******************************

全局變量定義區

********************************/

unsigned char code DisCode[] = {0x0C0,0xF9,0xA4,0xB0,0x99,0x92,

0x82,0xF8,0x80,0x90,0xFF,0xe1,0x89};

//***陽極數碼管碼表,定位在ROM中

bit Flag = 0; //壹個標誌位,防止MCU重復發送

unsigned char RR = 0; //收數指針

unsigned char TT = 0; //發數指針

unsigned char *SDat;

unsigned char Disbuf[] = {0,0,0,0}; //存放欲顯示的數據

unsigned char Hello[] = {'H','e','l','l','o','!','\n'};

unsigned char Right[] = {'R','i','g','h','t','!','\n'};

unsigned char Wrong[] = {'W','r','o','n','g','!','\n'};

/********************************

顯示延時

*********************************/

void Delay()

{

unsigned char i = 10;

while(i--);

}

/********************************

帶參數傳遞的顯示程序循環方式

*********************************/

void Display(unsigned char Dat[4])

{

unsigned char COM = 0X01; //數碼管位選

unsigned char i;

for(i=0;i<4;i++)

{

LED_DIG = DisCode[Dat[i]]; //送段選

LED_COM = COM; //選通壹個數碼管

Delay();

LED_COM = 0; //消隱

COM<<=1; //移位,準備選通下壹個數碼管

}

}

/********************************

主函數

*********************************/

void main(void)

{

//初始化

TMOD = 0x20;

TH1 = TL1 = -11059200/12/32/9600;

SCON = 0x50;

TR1 = 1;

ES= 1;

EA= 1;

//主循環

SDat = Hello;

TI = 1;

while(1)

{

Display(Disbuf); //功能子函數調用

}

}/********************************

中斷函數

*********************************/

void SER_SR() interrupt 4 using 2

{

if(RI)

{

RI = 0;

Disbuf[RR++] = SBUF;

if(RR==3)

{

RR = 0;

if((Disbuf[0]==0x01)&&(Disbuf[1]==0x02)&&(Disbuf[2]==0x03))

{

Disbuf[3] = 0x0b;

SDat = Right;

}

else

{

Disbuf[3] = 0x0c;

SDat = Wrong;

}

TI = 1;

}

}

else

{

TI = 0;

if(TT<7)

{

SBUF = *(SDat+TT);

TT++;

}

else

TT = 0;

}

}

  • 上一篇:怎樣組建免費的無盤系統
  • 下一篇:騰訊微博手機客戶端總是提示登錄失敗,請稍後再試,換手機登錄也是這
  • copyright 2024編程學習大全網