/* multi_m.c */
/* 多機通信的主機部分 */
#ifndef __MULTI_M_C__
#define __MULTI_M_C__
#include
#include
#define __MAX_LEN_ 64 // 數據最大長度
#define _MHz_ 11 // 設置 單片機 使用的晶振頻率(11.0592MHz)
/* 以下為程序協議中使用的握手信號 */
#define __SUCC_ 0x0f // 數據傳送成功
#define __ERR_ 0xf0 // 數據傳送錯誤
void init_serial(); // 串口初始化
void send_data(unsigned char *buf); // 發送數據
void delay10ms(unsigned int count); // 延時子程序(10ms)
void main()
{
char buf[__MAX_LEN_];
unsigned char i = 0;
unsigned char tmp;
unsigned char addr; // 該字節用于保存要通信的從機地址
/* 為緩沖區賦初值 */
P0 = 0xff;
while(P1 != 0) // 每隔100ms從P0口讀取,若讀取到0則表明數據采集結束
{
*(buf+i) = P0;
delay10ms(10); // 延時100ms
P0 = 0xff;
i++;
}
*(buf+i) = 0; // 緩沖區最后一個字節為0表示數據結束
/* 讀要訪問的分機地址 */
P0 = 0xff;
addr = P0;
/* 串口初始化 */
init_serial(); // 初始化串口
EA = 0; // 關閉所有中斷
/* 發送地址幀并接收應答信息,如果接收的信號與發送的地址信息不同,則重新發送地址幀 */
tmp = addr-1;
while(tmp != addr)
{
/* 發送從機地址 */
TI = 0;
TB8 = 1; // 發送地址幀
SBUF = addr;
while(!TI);
TI = 0;
/* 接收從機應答 */
RI = 0;
while(!RI);
tmp = SBUF;
RI = 0;
}
/* 發送數據并接收校驗信息,如果接收的信號為0FH,表示從機接收成功,否則將重新發送該組數據 */
tmp = __ERR_;
while(tmp != __SUCC_)
{
send_data(buf); // 發送數據
RI = 0;
while(!RI);
tmp = SBUF;
RI = 0;
}
while(1); // 程序結束,進入死循環
}
/* 初始化串口 */
void init_serial()
{
TMOD = 0x20; //定時器T1使用工作方式2
TH1 = 250; // 設置初值
TL1 = 250;
TR1 = 1; // 開始計時
PCON = 0x80; // SMOD = 1
SCON = 0xd0; //工作方式3,9位數據位,波特率9600bps,允許接收
}
/* 發送數據 */
void send_data(unsigned char *buf)
{
unsigned char len; // 保存數據長度
unsigned char ecc; // 保存校驗字節
len = strlen(buf); // 計算要發送數據的長度
ecc = len; // 開始進行校驗字節計算
/* 發送數據長度 */
TI = 0;
TB8 = 0; // 發送數據幀
SBUF = len; // 發送長度
while(!TI);
TI = 0;
/* 發送數據 */
for(i=0; i
ecc = ecc^(*buf); // 計算校驗字節
TB8 = 0; // 發送數據幀
SBUF = *buf; // 發送數據
buf++;
while(!TI);
TI = 0;
}
/* 發送校驗字節 */
TB8 = 0; // 發送數據幀
SBUF = ecc; // 發送校驗字節
while(!TI);
TI = 0;
}
/* 延時10ms,精度較低,參數count為延時時間 */
void delay10ms(unsigned int count)
{
unsigned int i, k;
unsigned char j;
unsigned int tmp;
tmp = (int)((100*_MHZ_)/12);
for(i=0; i
for(k=0; k
#endif
上一篇:多機通信的從機程序
下一篇:單片機雙機點對點通信的主機程序
推薦閱讀
史海拾趣
隨著市場競爭的加劇和消費者需求的不斷變化,DIOO公司意識到品牌重塑和多元化發展的重要性。在近幾年中,DIOO公司加強了品牌宣傳和推廣力度,通過推出新的品牌形象和廣告活動,提高了品牌知名度和美譽度。同時,DIOO公司還積極拓展產品線,推出了包括智能家居、智能穿戴設備、游戲硬件等在內的多元化產品系列,進一步滿足了消費者的多樣化需求。
面對數字化時代的挑戰和機遇,DIOO公司決定加快數字化轉型步伐。通過引入云計算、大數據、人工智能等先進技術,DIOO公司實現了產品設計、生產、銷售等各個環節的數字化管理。同時,DIOO公司還積極探索新的商業模式和市場機會,與互聯網企業、電信運營商等合作伙伴共同打造智能生態圈。未來,DIOO公司將繼續秉承創新、卓越、服務的理念,致力于成為全球領先的電子產品制造商和服務提供商。
隨著電子行業的不斷發展,EREM公司也面臨著越來越多的挑戰。為了保持市場領先地位,EREM投入大量資金進行技術研發,推出了一系列具有創新性的產品。其中,一種新型的高硬度碳化鎢合金剪鉗因其卓越的耐用性和精度而備受好評。這一技術突破不僅為EREM贏得了更多客戶,也進一步鞏固了其在電子行業中的地位。
隨著技術的不斷進步和市場需求的多樣化,Advanced Analog的產品逐漸應用于更廣泛的領域。從最初的TFT-LCD面板,到后來的數字相機、手持裝置、網絡通訊裝置等領域,Advanced Analog都提供了完整的解決方案和優質的服務。通過與各行業合作伙伴的緊密合作,Advanced Analog的產品助力眾多電子設備實現了更高效、更穩定的性能,推動了整個電子行業的發展。
作為一家有社會責任感的企業,FMI深知可持續發展和環保的重要性。公司積極響應國家環保政策,采用環保材料和生產工藝,減少對環境的影響。同時,FMI還致力于節能減排和資源循環利用等方面的研究和實踐工作。這些努力不僅體現了FMI對環境保護的承諾和責任感,也為公司的長期發展奠定了堅實的基礎。
綜上所述,Frequency Management International公司憑借其創立與早期發展、技術創新與產品線拓展、市場拓展與國際化戰略、質量管理與客戶服務以及可持續發展與環保責任等方面的努力和發展歷程,在電子行業中取得了顯著的成就和地位。
在快速發展的同時,FINTEK公司始終不忘履行社會責任和推動可持續發展。公司積極參與環保公益事業,致力于減少生產過程中的能源消耗和廢物排放。同時,FINTEK還加大了對清潔能源和可再生能源技術的研發投入,以推動電子行業的綠色轉型。此外,FINTEK還積極履行納稅義務,為社會創造更多的就業機會和稅收貢獻。這些舉措不僅彰顯了FINTEK作為行業領導者的責任感,也為公司的長遠發展奠定了良好的社會基礎。
將5.0BSP移值到6.0 上時,運行到串口驅動時,就運行不下去了, DNW提示信息: WARNING: CReg2440Uart::CReg2440Uart failed to obtain processor frequency - using default value (66750000). DEBUG: Serial2 SYSINTR : -766318612 WARNING: C ...… 查看全部問答∨ |
|
請教如何獲取monthcalendar(日歷控件)被選中的日期信息,急急急急急急急! 如題,小弟在做一個日程管理的小應用程序, 請問如何獲取在日歷控件上選定的日期信息, 比如選定某日, 在程序中要提取該日的日期和星期幾的信息。 謝謝各位,很急,請大家幫幫忙。… 查看全部問答∨ |
|
#include #include void main(void) { WDTCTL=WDT_MDLY_32; IE1|=WDTIE; P1DIR|=BIT6; while(1); } #pragma vector=WDT_VECTOR __interrupt void watchdor(void) { P1O ...… 查看全部問答∨ |
|
我也來加入四層板的學習,在上班抽空時間總算布局完了,大概布了下,還不是很整齊,在這里得感謝@okhxyyo 的耐心幫忙和指導~ 希望能大家一起共同進步和學習… 查看全部問答∨ |