?? serial.h
字號:
///////////////////////////////////////////////////////////////////////
// 圓夢51!圓夢51!圓夢51!圓夢51!圓夢51!圓夢51!圓夢51!圓夢51!圓夢51!圓夢51!
// 1998.x.x 多少遺憾,多少淚水,路在何方?? 為什么失敗的總是我??夢想為什么這么遙遠
// ........學x86很久了,書本都翻了n遍了......
// 雖然x86很強大,但要做臺x86計算機真是太難了,8051單片機真的簡單了很多,我想做個8051的計算機.
// 沒有編程器的日子,真是不好受,自己又沒條件能做電路板,要是能有臺計算機模擬8051,那將是多莫令人興奮的事情啊
// 但是我什么都沒有............什么都沒有
// 1999.x.x草稿紙上完成基本的框架圖和基本算法,并完成部分核心代碼,將項目名稱定為圓夢51
// .......飄啊搖啊,淡漠了生活,忘記了夢想,就這樣渾渾噩噩的活著........夢已死
// 2002.8.24 塵世間多少煩惱,從此不必再牽掛。為了夢想我終于可以從現實中解脫出來一段時間,不上學的日子真好,真令人懷念。
// 建立指令模擬instruction和memory 代碼檔。
// 不懂windows C編程是我最大的障礙,......1年時間......我想應該是我這一生中最有價值的時間,以前沒有,以后可能更沒有了
// 2003.12.x
// 因為要上學,所以能夠靜下心來學習的時間基本上再也找不到了
// 2004.9.2 基本初步完成,尚未完成中斷返回,尚未debug
// 2004.11.17 調試浮點程序通過,^_^ :) ^o^ ^0^ :( >_< 他的缺點就是他的優點,我無法權衡,指令類暫時先穩定下來吧
// 當學生真是無奈,我在倒退..............我在放棄夢想...............
// 2005.3.28 不管怎樣我要圓夢,我不能做個永遠失敗的人,建立KernelMsg interruptcontroller代碼檔
// 2005.4.3 建立TIMER檔,這可把我難倒了,效能,錯誤...............
// 2005.4.14 KernelMsg TIMER初步完成,莫名其妙的錯誤太多,KernelMsg真的很失敗,增加了編寫難度,更不易調試.....
// 2005.4.18 不管三七二十一,湊出來再說,我好想運行以下ucos ii,建立Serial類
// 2005.4.21 為了提供對多處理器系統的支持,并能夠模擬多了處理器,對全局變量 函數作了修改,使之不但打破了C++的封裝,
// 又使得全局函數類似類中的函數,所以在不增加代碼的情況下,可直接模擬多處理器
// 2005.4.24 垃圾誕生,不得不對KernelMsg重新編寫,以提高時間事件函數HOOK的安全性,降低時間HOOK的編寫難度,
// 不用自己處理下層的HOOK問題,效率更高,隨后TIMER Serial也作了大面積修改
// 2005.4.25 uCOS-II終于正確無誤的運行成功了。0.10版核心到此為止告一段落。
// 盡管0.10沒有經過完全的測試,我敢肯定定時器這部分還是有問題,而且串口,定時器還沒有完善,
// 但是我已經對他沒有很大主動測試方面的興趣了,留著讓用戶來發現吧
// 著手開始0.11的開發,這更能吸引我的眼球,新的目標是利用KernelMsg思想大面積優化指令集的加速,以其其他速度方面的優化,
// 希望速度能追上Keil C
//////////////////////////////////////////////////////////////////////
// Serial.h: interface for the Serial class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SERIAL_H__4CEBBECE_EF1D_4C4F_9DC7_F53DB71BDE76__INCLUDED_)
#define AFX_SERIAL_H__4CEBBECE_EF1D_4C4F_9DC7_F53DB71BDE76__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "MyObject.h"
#include "GlobalVar.h"
#include "SerialBus.h"
void Serial_SBUF_Read_HOOK(BYTE VarNum,int mode,BYTE data);
void Serial_SBUF_Write_HOOK(BYTE VarNum,int mode,BYTE data);
void TI_Clock_HOOKFun(BYTE VarNum,unsigned short Clocknum);
void TIHOOK_Clock_HOOKFun(BYTE VarNum,unsigned short Clocknum);
void RI_Clock_HOOKFun(BYTE VarNum,unsigned short Clocknum);
void Serial_SCON_Write_HOOK(BYTE VarNum,int mode,BYTE data);
void TI_HOOKFun(BYTE VarNum,int mode,BYTE data);
void RI_HOOKFun(BYTE VarNum,int mode,BYTE data);
class Serial:public MyObject
{
public:
BYTE SBUFR,SBUFW;
kernelMsg * pKMsg;
memory * mem;
EVENT_POS TICLOCKEVENTPOS,RICLOCKEVENTPOS;
SerialBus * psbustxd,*psbusrxd;
// ClockHook TI_Clock_BackFun,RI_Clock_BackFun,TIHOOK_Clock_BackFun;
// unsigned short TI_Clock_BackFunNum,TIHOOK_Clock_BackFunNum;
//TI_Clock_BackFunNum正常波特率產生的HOOK,TIHOOK_Clock_BackFunNum為設置TI造成的HOOK
unsigned int Baudrate,Cycle;
unsigned char databuf1[65536*64];
unsigned char databuf2[65536];
unsigned char *bufpos;
unsigned char SendComplete,RecvComplete;
int CFlag;//中文字符標志
BYTE chbuf;//暫存SBUFR數據
public:
void SetSBUSrxd(SerialBus * pBUS);
void SetSBUStxd(SerialBus * pBUS);
int Serial_Char_Event_CallBack(char ch);
Serial();
virtual ~Serial();
int init();
};
#endif // !defined(AFX_SERIAL_H__4CEBBECE_EF1D_4C4F_9DC7_F53DB71BDE76__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -