欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機與pc通訊源碼 [打印本頁]

作者: yzsrdalm    時間: 2018-3-15 20:20
標題: 單片機與pc通訊源碼
#include <REG52.H>    /* special function register declarations */
#include <stdio.h>    /* prototype declarations for I/O functions */
#include <intrins.h>
#include <Absacc.h>
#include <string.h>
#include <ctype.h>

#define byte unsigned char
#define uchar unsigned char
#define word unsigned int
#define uint unsigned int
#define ulong unsigned long
#define BYTE         unsigned char
#define WORD         unsigned int

#define TRUE  1
#define FALSE 0

void time(unsigned int ucMs);//延時單位:ms
void initUart(void);/*初始化串口波特率,使用定時器2*/
void sendString(uchar *ucString); //往串口發字符串

/******** main 函數 *********/
void main (void) {

        time(1);/* 延時等待外圍器件完成復位 */
        initUart();/* 初始化串口 */
        IE=0x90; /* 打開串口中斷 */               
        while(TRUE){}
}
/********** 初始化串口波特率 ************/
void initUart(void)/*初始化串口波特率,使用定時器2*/
{
/* Setup the serial port for 9600 baud at 11.0592MHz */
        SCON = 0x50;  //串口工作在方式1
        RCAP2H=(65536-(3456/96))>>8;
        RCAP2L=(65536-(3456/96))%256;
          T2CON=0x34;   
}

/***********  串行口中斷服務程序***************/
void serial0_int(void) interrupt 4
{
uchar rChar;
uchar code str1[]="What do you plan to do this Friday?";//收到0x01時的返回
uchar code str2[]="I plan to go to the concert.";//收到0x02時的返回
uchar code str3[]="What are you doing next week?";//收到0x03時的返回
uchar code str4[]="I'm thinking of going to my grandma's.";//收到0x04時的返回
uchar code strdefault[]="Please select a character '1','2','3' or '4'!";//收到其它時的返回

    EA=0;/* 關總中斷 */
        RI=0;/* 請標志 */
        rChar=SBUF;/* 讀串口緩沖區,得到PC發來的數據 */
        P2=rChar; /* 送P2口顯示 */

        switch(rChar) {
                case '1': //收到字符'1'
                            SBUF='1';while(TI==0){}TI=0;//發送字符'1'
                                SBUF=':';while(TI==0){}TI=0;//發送字符':'
                                sendString(str1);//發送字符串str1
                            break;
                case '2': //收到字符'2'
                            SBUF='2';while(TI==0){}TI=0;//發送字符'2'
                                SBUF=':';while(TI==0){}TI=0;//發送字符':'
                                sendString(str2);//發送字符串str2
                            break;
                case '3': //收到字符'3'
                            SBUF='3';while(TI==0){}TI=0;//發送字符'3'
                                SBUF=':';while(TI==0){}TI=0;//發送字符':'
                                sendString(str3);//發送字符串str3
                            break;
                case '4': //收到字符'4'
                            SBUF='4';while(TI==0){}TI=0;//發送字符'4'
                                SBUF=':';while(TI==0){}TI=0;//發送字符':'
                                sendString(str4);//發送字符串str4
                            break;
                default:  //收到其它字符
                            SBUF='d';while(TI==0){}TI=0;//發送字符'd'
                                SBUF=':';while(TI==0){}TI=0;//發送字符':'
                                sendString(strdefault);//發送字符串strdefault
                            break;
        }
        EA=1;/* 開總中斷 */       
}

void sendString(uchar *ucString) //往串口發字符串
{
uchar i,stringLength=strlen(ucString);
        REN=0;//設置發送狀態
        for(i=0;i<stringLength;i++){
                SBUF=ucString[i];while(TI==0);TI=0;//發送字符
        }
        SBUF=0x0d;while(TI==0);TI=0;//發送回車
        SBUF=0x0a;while(TI==0);TI=0;//發送換行
        SBUF=0x0a;while(TI==0);TI=0;//發送換行
        REN=1;//設置接收狀態
}

void delay_5us(void)//延時5us,晶振改變時只用改變這一個函數!
{
        _nop_();
        _nop_();
        //_nop_();
        //_nop_();
}
/************ delay_50us ***************/
void delay_50us(void)//延時50us
{
        unsigned char i;
        for(i=0;i<4;i++)
        {
                delay_5us();
        }
}
/******** 延時100us ******************/
void delay_100us(void)//延時100us
{
        delay_50us();
        delay_50us();
}

/*********** 延時單位:ms *******************/
void time(unsigned int ucMs)//延時單位:ms
{
        unsigned char j;       
        while(ucMs>0){
                for(j=0;j<10;j++) delay_100us();
                ucMs--;
        }
}







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