|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請各位有經(jīng)驗(yàn)的工程師們給點(diǎn)意見 |
| 作者:happystar 欄目:單片機(jī) |
各位好啊,我現(xiàn)在程序功能模塊組織上優(yōu)點(diǎn)問題要問大家。 我現(xiàn)在做了一個(gè)儀表,分為3個(gè)功能模塊來實(shí)現(xiàn)的,這幾個(gè)模塊已經(jīng)都調(diào)試成功拉,F(xiàn)在要進(jìn)行合并,出現(xiàn)了問題,我感覺怎么都不好。大家給點(diǎn)意見。 這個(gè)儀表主要實(shí)現(xiàn)如下功能: 在C8051F340做主單片機(jī),外接7022B負(fù)責(zé)采樣數(shù)據(jù)。 1、把數(shù)據(jù)通過UART0送到面板(面板用AT89S52)顯示。 2、把數(shù)據(jù)通過UART1送到主站(電網(wǎng)的后臺(tái)主機(jī)) 我現(xiàn)在遇到的問題是,1》在數(shù)據(jù)和面板通信的過程中用T3做9600的波特率(用外部晶振),用T0定時(shí),每2m送全部數(shù)據(jù)。假設(shè)此函數(shù)為uart0();2》在和主站通信的時(shí)候用T1做2400的波特率(用外部晶振),在Modbus通信協(xié)議中用T1做波特率,T4的20ms定時(shí)。假設(shè)此函數(shù)為uart1(); 這樣在主程序中我怎么來調(diào)用他們呢。 void main(){ while(1){ getData();//采集數(shù)據(jù) if(收到8個(gè)數(shù)據(jù)){ uart1();//主站通信 } } } void T0_init() interrupt1{//T0的2ms定時(shí),沒有外部中斷,TO的優(yōu)先級最高 uart0();//面板通信 TH0=t1;//恢復(fù)定時(shí)器初值 TL0=t2; TR0=1; } void uart0_recv() interrupt 4{//和面板通信 if(TI0){ 。。。。。 } } void uart1_recv() interrupt 5{//主站發(fā)下來數(shù)據(jù)的串口中斷,優(yōu)先級最低 if(RI1){ ........ } } void timer0Int() interrupt 1{//Modbus中用于定時(shí)20ms的程序,以前也用T0 ........ } 是不是可以采用在串口中斷中當(dāng)受到數(shù)據(jù)時(shí)關(guān)其他中斷,完畢后再開放。另外2個(gè)中斷也一樣呢? 嘿嘿,寫完上邊的我就覺得不對拉。 注意:和面板通信傳輸數(shù)據(jù)的時(shí)間和主站通信傳輸?shù)臅r(shí)間幾乎是一個(gè)的。 越想越糊涂,懇請各位老師指教,給上班的那些功能模塊大體制套方案。謝謝拉! |
| 2樓: | >>參與討論 |
| 作者: songby00 于 2006/10/29 0:42:00 發(fā)布:
提高波特率 時(shí)間間隔太小,應(yīng)提高波特率,或增大時(shí)間間隔。! |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |