P89LPC925微控制器串列埠封裝

2021-06-22 01:37:00 字數 3069 閱讀 8521

先簡單說明串列埠協議的規範:

1       通訊協議

1.1  串列埠傳送資料協議

1.       資料頭:包含1個位元組,設定為0xfd。

2.      

3.       傳送命令頭:包含1個位元組,以區別不同命令。

4.       資料長度:包含1個位元組,傳送資料的長度n。

5.       資料:實際傳送資料n個位元組

6.       校驗碼:除校驗碼之外,前面所有資料按位元組相加,取低8位。

資料頭裝置位址

傳送命令頭

資料長度

資料校驗碼n

1.2  串列埠接收資料協議

1.       資料頭:包含1個位元組,設定為0xfd。

2.      

3.       返回命令頭:包含1個位元組,命令執行結果。

4.       資料長度:包含1個位元組,傳送資料的長度n。

5.       資料:實際傳送資料n個位元組。

6.       校驗碼:除校驗碼之外,前面所有資料按位元組相加,低8位。

資料頭裝置位址

返回命令頭

資料長度

資料校驗碼n

**的模板如下:

#ifndef __uart_232_h

#define __uart_232_h

//#include "types.h"

#include "reg925.h"

////串列埠控制暫存器

#define uart_mode1_ena(scon = 0x50)//選擇模式1,並使能串列埠

#define brgen_close(brgcon = 0x00)//波特率發生器關閉

#define brgen_open(brgcon = 0x03)//波特率發生器開啟

#define uart_inten(x)(es = (x))//串列埠中斷使能操作

//波特率

#define bautrate_9600//

#define bautrate_19200 

//#define uart_stat_idle0//空閒

#define uart_stat_rec1//接收

#define uart_stat_parse2//解析

#define uart_stat_ack3//響應

//typedef struct uart_stat_bit

uart_stat_bit;

typedef union uart_stat

uart_stat;

//externvoid uart232_init(void);

extern  void uart232_debug(u8 ucdebug);

extern  void uart232_isp();

extern  void uart232_reboot();

extern  u8uart232_ack(u8 uccmd);

extern  void uart232_run(void);

extern  u8uart232_getstate(uart_stat* puartstat);

//#endif//__uart_232_h

實現檔案:

#include "uart232.h"

///uart_stat   m_uartstat;

u32 m_uluarttime;

u8m_ucuartbuf[uart_buf_size];

////

void (*exisp)(void) = 0x1e46;//isp指標函式

////初始化串列埠

void uart232_init(void)

//串列埠中斷接收

void uart_int (void)interrupt 4

else

ti = 0;

}else if(ri) //接收中斷

}else if(m_uartstat.stat.stat == uart_stat_rec)

m_uartstat.stat.reccnt++;

if ( m_uartstat.stat.reccnt > frame_o_len && m_uartstat.stat.reccnt >= m_ucuartbuf[frame_o_len] + frame_size ) 

}m_uluarttime = g_ulcurtickcount;

}es = 1;  //開啟串列埠中斷

}void uart232_run(void)

}switch(m_uartstat.stat.stat) 

if(m_uartstat.stat.reboot)

}break;

case uart_stat_rec:

break;

case uart_stat_ack://響應

}break;

case uart_stat_parse://解析

default:

}else if(ucerr == err_com_addr)

else

packageframe(m_ucuartbuf, m_ucuartbuf[frame_o_len], g_bydevaddr);

m_uartstat.stat.sndcnt = 0;

m_uartstat.stat.stat = uart_stat_ack;

m_uluarttime = g_ulcurtickcount;

sbuf = m_ucuartbuf[m_uartstat.stat.sndcnt];

}break;}}

void uart232_debug(u8 ucdebug)

void uart232_isp()

void uart232_reboot()

u8uart232_ack(u8 uccmd)

return ucret;

}u8 uart232_getstate(uart_stat* puartstat)

//

P89C52X2微控制器解密P89系列

p89c52x2主要功能特性 80c51 cpu 8kb flash 256 位元組ram 布林處理器,全靜態操作 12個時鐘操作具有可選的6 個時鐘操作 儲存位址能力 達到64kb rom和64kbram 電源控制模式 時鐘可以停止和恢復 閒置模式 掉電模式 2 個速度範圍 0 20mhz 具有6...

51微控制器(一) 初學STC89C52微控制器

1.cpu運算器和控制器 微控制器的核心構成部分之一 2.內部資料儲存器存放可讀的資料,如程式中的定義。3.程式儲存器8kb,0000h 1fffh 存放程式,原始資料。4.定時 計算器3個定時器 計算器,即可設定成計數方式用於外部事件計數,也可以設定成定時模式,用於對微控制器的計時控制。5.並行埠...

89C52微控制器之串列埠

include include define uint unsigned int define uchar unsigned char uchar flag 0 uchar buf 0x55 u void init t1 定時器1 void uart init 串列埠 void uart1 send...