標(biāo)題: 單片機(jī)串口收發(fā)程序分享 [打印本頁]

作者: 彥塵    時(shí)間: 2020-12-29 10:50
標(biāo)題: 單片機(jī)串口收發(fā)程序分享
/*
,把發(fā)送的數(shù)據(jù)接收后用P1口的LED燈以二進(jìn)制的形式顯示
并且蜂鳴器發(fā)出提示音,再把接收的數(shù)據(jù)加1并發(fā)出。
使用STC ISP軟件界面上的串口助手,選擇對(duì)應(yīng)的串口號(hào),
設(shè)置波特率為9600,選擇HEX模式發(fā)送和接收
*/
#include <reg52.h>

#define uchar unsigned char
#define uint  unsigned int

sbit beep = P2^3;//蜂鳴器接口
uchar num;//發(fā)送暫存變量

void delay(uint z)
{
        uint x,y;
        for(x = z; x > 0; x--)
                for(y = 114; y > 0 ; y--);
}        
void UART_init()
{
        TMOD = 0x20;          //T1工作模式2  8位自動(dòng)重裝
        TH1 = 0xfd;
        TL1 = 0xfd;         //比特率9600
        TR1 = 1;                //啟動(dòng)T1定時(shí)器
        SM0 = 0;
        SM1 = 1;                 //串口工作方式1 10位異步
        REN = 1;                //串口允許接收
        EA  = 1;                //開總中斷
        ES  = 1;                //串口中斷打開
}
void main()
{
        UART_init(); //串口初始化
        while(1);        
}


void UART() interrupt 4
{
        if(RI)        //檢測(cè)是否接收完成
        {
                num = SBUF;          //num 取出接收緩存器的值
                P1 = SBUF;
                beep = 0;
                delay(100);
                beep = 1;//蜂鳴器發(fā)出滴提示音
                num++;//把接收的數(shù)據(jù)加1并發(fā)送
                RI = 0;
                SBUF = num;        
                while(!TI);
                TI = 0;
        }
}






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1