久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4390|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

MSP430G2553-PC通訊協(xié)議

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:117761 發(fā)表于 2016-6-18 01:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
main.c
/****************************************************************************/
/*                                                                          */
/*                Copyright (c) 2016, 老馬工作室                                                                            */
/*                     All rights reserved.                                 */
/*                                                                          */
/*      Email:pcwebmaster@163.com                                           */
/****************************************************************************/
/****************************************************************************/
/* 文 件 名:comint.c                                                                       */
/* 版    本:Version 1.0                                                                    */
/* 描    述:串行口中斷帶通訊協(xié)議測試                                                                                                                               */
/* 主控芯片:MSP430G2553                                                                                                                */
/* 晶振頻率:內(nèi)部1MHz                                                                                                                */
/* 編譯環(huán)境:CCS5.4         Grace初始化                                                                                                        */
/* 作    者:pcwebmaster(北極狼)                                                            */
/* 函    數(shù):                                                                                                                                                                       */
/*                 system_init                                                     */
/*                 com_send_command                                                */
/*                 com_command_receive                                                                                                */
/*                        CalCRC16_1021                                                                                                        */
/*                        command_decoder                                                                                                        */
/*                        send_command                                                                                                        */
/* 測    試: 發(fā)送:16 16 02 01 02 01 00 35 03 94 BD接收:49 AA 15                                        */
/* 測試現(xiàn)象:                                                                                                                                        */
/* 歷史記錄:20016.02.23測試通過                                                                                                                          */
/* 北極狼          20016-02-23     Creat Inital version. (Version 1.0)                              */
/****************************************************************************/
#include <msp430.h>
/* ======== Grace related includes ======== */
#include <ti/mcu/msp430/Grace.h>

unsigned char *str = "Hello World!\n\r Serial test normal!\n\r";
unsigned char *str1= "串口測試正常!\n\r";

/*  ======== main ======== */
int main(void)
{
    Grace_init();                   // Activate Grace-generated configuration
    buff_init();
    // >>>>> Fill-in user code here <<<<<
    Send_String(str);//測試
    Send_String(str1);//測試
    while(1)
    {
            com_command_receive();
    }
    return (0);
}

Comint.c
/****************************************************************************/
/*                                                                          */
/*                Copyright (c) 2016, 老馬工作室                            */
/*                     All rights reserved.                                 */
/*                                                                          */
/*      Email:pcwebmaster@163.com                                           */
/****************************************************************************/
/****************************************************************************/
/* 文 件 名:comint.c                                                                       */
/* 版    本:Version 1.0                                                                    */
/* 描    述:串行口中斷帶通訊協(xié)議測試                                                                                                                               */
/* 主控芯片:MSP430G2553                                                                                                                */
/* 晶振頻率:內(nèi)部1MHz                                                                                                                */
/* 編譯環(huán)境:CCS5.4         Grace初始化                                                                                                        */
/* 作    者:pcwebmaster(北極狼)                                                            */
/* 函    數(shù):                                                                                                                                                                       */
/*                 system_init                                                     */
/*                 com_send_command                                                */
/*                 com_command_receive                                                                                                */
/*                        CalCRC16_1021                                                                                                        */
/*                        command_decoder                                                                                                        */
/*                        send_command                                                                                                        */
/* 測    試: 發(fā)送:16 16 02 01 02 01 00 35 03 94 BD接收:49 AA 15                                        */
/* 測試現(xiàn)象:                                                                                                                                        */
/* 歷史記錄:20016.02.23測試通過                                                                                                                          */
/* 北極狼          20016-02-23     Creat Inital version. (Version 1.0)                              */
/****************************************************************************/
#include <msp430.h>
#include <ti/mcu/msp430/Grace.h>
#include "comint.h"


uint8_t  pint_buf[MAX_RINTL];   /* 串口接收緩沖區(qū)       */
uint8_t  pint_read;             /* 串口緩沖區(qū)讀指針     */
uint8_t  pint_write;            /* 串口緩沖區(qū)寫指針     */
//uint8_t  psend_int;             /* 串口發(fā)送允許標(biāo)志     */
uint8_t  serial_flag = 0;       /* 串口接收數(shù)據(jù)標(biāo)志位   */


uint8_t  prec_buf[MAX_COMMAND_LEN];                /* 命令接收緩沖區(qū)    */
uint8_t  prec_num;                    /* 命令接收緩沖區(qū)字節(jié)數(shù) */

uint8_t serial_lengthl = 0;           /* 消息命令長度低8位    */
uint16_t  serial_length = 0;          /* 消息命令長度16位     */

uint8_t ADDRESS[2]={ZU,ZHAN};               /* byte0:通訊組地址, byte1:站地址 */

//-----------------------------------------------------------------
// 串口初始化
//-----------------------------------------------------------------
void USCI_A0_graceInit(void)
{
    /* USER CODE START (section: USCI_A0_graceInit_prologue) */
    /* User initialization code */
    /* USER CODE END (section: USCI_A0_graceInit_prologue) */

    /* Disable USCI */
    UCA0CTL1 |= UCSWRST;

    /*
     * Control Register 1
     *
     * UCSSEL_2 -- SMCLK
     * ~UCRXEIE -- Erroneous characters rejected and UCAxRXIFG is not set
     * ~UCBRKIE -- Received break characters do not set UCAxRXIFG
     * ~UCDORM -- Not dormant. All received characters will set UCAxRXIFG
     * ~UCTXADDR -- Next frame transmitted is data
     * ~UCTXBRK -- Next frame transmitted is not a break
     * UCSWRST -- Enabled. USCI logic held in reset state
     *
     * Note: ~<BIT> indicates that <BIT> has value zero
     */
    UCA0CTL1 = UCSSEL_2 | UCSWRST;

    /*
     * Modulation Control Register
     *
     * UCBRF_0 -- First stage 0
     * UCBRS_1 -- Second stage 1
     * ~UCOS16 -- Disabled
     *
     * Note: ~UCOS16 indicates that UCOS16 has value zero
     */
    UCA0MCTL = UCBRF_0 | UCBRS_1;

    /* Baud rate control register 0 */
    UCA0BR0 = 104;

    /* Enable USCI */
    UCA0CTL1 &= ~UCSWRST;

    /* USER CODE START (section: USCI_A0_graceInit_epilogue) */
    /* User code */
    /* USER CODE END (section: USCI_A0_graceInit_epilogue) */
}
//-----------------------------------------------------------------
// 串口發(fā)送一個字節(jié)
//-----------------------------------------------------------------
void com_send_command(char Onebyte)
{
        UCA0TXBUF = Onebyte;
        __delay_cycles(2000);//發(fā)送漢字參數(shù)2000,發(fā)送字符參數(shù)為1000
}

//------------------------------------------------------------------
// 串口接收中斷程序
//------------------------------------------------------------------
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR_HOOK(void)
{
    uint8_t temp;
    uint8_t temp1;
    // USER CODE START (section: USCI0RX_ISR_HOOK)
    // replace this comment with your code
    // USER CODE END (section: USCI0RX_ISR_HOOK)
        while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?
        //判斷串口的發(fā)送是否正在工作,
        //因為要使用發(fā)送功能,所以得判斷發(fā)送是否忙碌,
        //只有在不忙碌的時候才可以啟用發(fā)送。
        //這一句就是判斷發(fā)送是否在工作,如果是在工作,那么一直等待到不工作為止。
        temp1 =  UCA0RXBUF;       //讀取數(shù)據(jù)             // TX -> RXed character
        temp  = pint_write + 1; /* 判斷是否可以寫入 */
        if (temp == MAX_RINTL)
        {
                        temp=0;
        }
        if (temp != pint_read)
        {
                        pint_buf[pint_write] = temp1; /* 讀取數(shù)據(jù) */
                        pint_write = temp;
        }
}
void buff_init(void)
{
    uint8_t loop;
    loop = UCA0RXBUF;   /* 清串口緩沖區(qū)   */
    for (loop=0; loop<MAX_RINTL; loop++)
    {
        pint_buf[loop] = 0;
    }
}
Comint.h
#ifndef __COMINT_H__
#define __COMINT_H__

#include <stdio.h>
#include <msp430.h>


#define INT8U   unsigned char
#define INT16U  unsigned int
#define uint8_t   unsigned char
#define u_short  unsigned int
#define uint16_t  unsigned int

#define ZU                        0x01                 /*組地址*///通訊地址修改這兩項
#define ZHAN                0x02                 /*站地址*///通訊地址修改這兩項

#define MAX_RINTL       16   /* 串口接收緩沖區(qū)長度   */
#define SYN           0x16   /* 通訊同步位*/
#define STX           0x02   /* 通訊起始位*/
#define ETX           0x03   /* 通訊結(jié)束位*/

#define ACK           0x06
#define NAK           0x15

#define MSG_ACK          2    /* 正確應(yīng)答信息         */
#define MSG_NAK          3    /* 錯誤應(yīng)答信息         */
#define MAX_COMMAND_LEN  16   /* 串口接受命令長度     */

extern uint8_t  pint_read;             // 串口緩沖區(qū)讀指針     */
extern uint8_t  pint_write;            // 串口緩沖區(qū)寫指針
extern uint8_t  pint_buf[MAX_RINTL];   // 串口接收緩沖區(qū)      
extern uint8_t serial_flag;              /* 串口接收數(shù)據(jù)標(biāo)志位   */

extern uint8_t  prec_buf[MAX_COMMAND_LEN];/* 命令接收緩沖區(qū) */       

/* 串口初始化*/
void Serial_port_init(void);
/* 串口發(fā)送一個字節(jié) */
void com_send_command(char Onebyte);
void Send_String(char *str);// 向PC機(jī)發(fā)送字符串
/* 串口接收數(shù)據(jù)處理 */
void com_command_receive(void);
/* 串口接收初始化 */
void buff_init(void);

///* 串口接收一字節(jié)數(shù)據(jù) */
//unsigned char UartReadChar(void); //reentrant
/*計算CRC校驗和使用MTT(0X1021)
參數(shù):
pBuff 為需計算CRC的緩沖區(qū)的頭指針
BufferLen 緩沖區(qū)長度(以字節(jié)計)
*/
u_short CalCRC16_1021(uint8_t x[], u_short BufferLen);

/* 命令解碼子程序 */
void command_decoder(void);
/* 向主機(jī)發(fā)送消息幀,入口參數(shù):消息類型 */
void send_command(uint8_t command);

#endif


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:127562 發(fā)表于 2016-6-21 15:23 | 只看該作者
不錯  有用
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜精品久久久久久不卡欧美一级 | 欧美一级欧美三级在线观看 | caoporn国产精品免费公开 | 午夜精品久久久久久久久久久久久 | 91极品视频 | 中文区中文字幕免费看 | 欧美日韩成人影院 | 青春草国产 | 99色综合| 国产乱码久久久久久一区二区 | 国产成人自拍一区 | 国产在线看片 | 久久精品国产精品青草 | 免费av观看 | 亚洲国产成人精品久久 | 男人阁久久 | 午夜色播 | 欧美一区二区三区在线播放 | av日韩在线播放 | 久久不卡 | 久久精品亚洲精品国产欧美 | 91久久精品一区二区二区 | 亚卅毛片 | 亚洲欧美日韩激情 | 在线三级网址 | 日韩精品一区二区三区视频播放 | 成人国产精品久久久 | 亚洲夜射 | 成人欧美一区二区 | 国产午夜一级 | 一区二区三区在线免费观看 | 成人小视频在线观看 | 91精品国产乱码久久久久久 | 精品影院 | 翔田千里一区二区 | 午夜成人免费视频 | 亚洲男女视频在线观看 | 天天操 天天操 | 不卡的av在线 | 久久国产精品视频 | 国产国语精品 |