【正文】
slThreadCreate(D, DThread, 0, 512)。 slPrintString(0, \r\n\r\n)。amp。 || (inbuff[i] 39。 slNetLoadConfig(eth0)。 UCR|=BV(RXEN)|BV(TXEN)。 u_char AutoConfig = 1。) { if(!(PINFamp。) { if(!(PINEamp。939。 AutoIrq = 0。 slDeviceWrite(uart,0, 0)。 connected amp。 Bcount = 0。 else count = Ccount。a39。 //0 stand for AB road greed light and 1 stand for CD road greed lightstatic u_char *road[2] = {CD,AB}。dcbdcb_rx_rdy, timeout)。 //reenable interrupts //all peripherals are now initialized}/*! * \brief sl/OS main entry. * This is the entry point for C programs. To hide neccessary * system initialization from the user program, this entry point * is included in the sl/OS library as a separate object module. * It will initialize memory management and the thread system * and start an idle thread, which in turn initializes the * timer functions. Finally slMain() is called, which must * be defined by the application and may be used to start * additional application threads. * \internal */int main(void){ init_devices()。confos, i = 0。t available. */int slLoadConfig(void){ eeprom_read_block(amp。測試表明,我們的設(shè)計(jì)符合功能要求,并具有一定的實(shí)用價(jià)值。 指向要接收的數(shù)據(jù)緩沖區(qū)的指針。能調(diào)用slTcpError()來得到特定的錯(cuò)誤代碼號(hào)。處理流程:(請看圖32) 圖32 TCP傳輸流程圖(1)系統(tǒng)框圖與流程圖系統(tǒng)框圖(圖33)圖33 系統(tǒng)框圖客戶端系統(tǒng)總的流程圖(圖34):圖34 客戶端系統(tǒng)總的流程圖客戶端系統(tǒng)接收模塊流程圖(圖35):圖35 客戶端系統(tǒng)接收模塊流程圖客戶端發(fā)送時(shí)機(jī)及過程流程圖(圖36):在實(shí)現(xiàn)以上各流程圖時(shí),只要用到的API函數(shù)如下:(1)TCPSOCKET *slTcpCreateSocket(void)創(chuàng)建TCP socket。若INT7:0 配置為電平觸發(fā),這些標(biāo)志位總是為39。因此建議首先在寄存器EIMSK 里清除相應(yīng)的中斷使能位INTn,然后再改變ISCn。當(dāng)DDRxn為1時(shí),對應(yīng)的Pxn配置為輸出引腳;而當(dāng)DDRxn寫入0時(shí),對應(yīng)的Pxn配置為輸入引腳。 Device Driver API. o Serial munication device driver. 167。 sl/OS API o System Initialization o Thread Management 167。它從1989年出現(xiàn)到現(xiàn)在已經(jīng)有十多年的歷史,在全球廣泛使用。這個(gè)工程管理器還能直接產(chǎn)生您希望得到的可以直接使用的INTELHEX 格式文件,INTEL HEX 格式文件可被大多數(shù)的編程器所支持用于下載程序到芯片中去。Web Client系統(tǒng)就把接收到的延時(shí)時(shí)間從PORTB口輸出,交叉路口交通燈控制系統(tǒng)就可以從P0口讀取到下次要設(shè)定的延時(shí)時(shí)間,因?yàn)镻ORTB口跟P0口是相連的。而在交通燈控制系統(tǒng)這部分,我們采用了80C51作為控制芯片。智能交通系統(tǒng)[1](簡稱ITS) ,是將先進(jìn)的信息技術(shù),計(jì)算機(jī)技術(shù),數(shù)據(jù)通信技術(shù),傳感技術(shù),電子控制技術(shù),自動(dòng)控制理論,運(yùn)籌學(xué),人工智能等有效地綜合運(yùn)用于交通運(yùn)輸,服務(wù)控制和車輛制造,加強(qiáng)了車輛,道路和使用者三者之間的聯(lián)系,從而形成一種定時(shí),準(zhǔn)確,高效的綜合運(yùn)輸系統(tǒng)。 Internet。本系統(tǒng)是交叉路口車流信息的Internet[6]傳輸與控制,它主要是把從交叉路口終端采集到的車流信息通過Internet發(fā)送給監(jiān)控中心,監(jiān)控中心根據(jù)交叉路口發(fā)送的車流信息發(fā)出相應(yīng)控制命令,以控制交叉路口的交通情況。跟以住的無線通信智能交通相比,用網(wǎng)絡(luò)實(shí)現(xiàn)智能交通可以利用現(xiàn)有四通八達(dá)的網(wǎng)絡(luò)光纜,只要在各個(gè)交叉路口留下網(wǎng)絡(luò)端口就可以通過網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)的傳輸,這大大節(jié)約的成本,而且不用專門鋪設(shè)線路和購買專門的設(shè)備,用戶可以通過手機(jī)或者其它方式上網(wǎng)就可以實(shí)時(shí)的了解交通情況,不僅方便而且快捷。接下來AB紅燈CD綠燈、AB綠燈CD紅燈和緊急情況三個(gè)按鈕用來模擬控制中心發(fā)過的三個(gè)基本控制命令操作。注意對指針描述這個(gè)const 限定詞可以應(yīng)用于不同的場合,不管是限定指針變量自己還是指向項(xiàng)目的指針。通過這個(gè)網(wǎng)絡(luò)連接開發(fā)板,串口設(shè)備可將自身的運(yùn)行狀態(tài)和工作參數(shù)等信息以TCP或UDP數(shù)據(jù)報(bào)的方式提供給監(jiān)控者,亦可實(shí)現(xiàn)信息的實(shí)時(shí)傳輸。 TCP 167。 Network Buffer 167。(1) 外部中斷控制寄存器A - EICRA[7]表1 外部中斷控制寄存器A - EICRABit 7 6 5 4 3 2 1 0ISC31ISC30SIC21ISC20ISC11ISC10ISC01EICRAISC00讀寫 R/W R/W R/W R/W R/W R/W R/W R/W初始值 0 0 0 0 0 0 0 0ATmega103 兼容模式不能訪問這個(gè)寄存器,但是INT3:0 的初始值定義為低電平中斷。外部中斷控制寄存器– EICRA 和EICRB 的中斷敏感電平控制位決定中斷是由上升沿、下降沿,還是電平觸發(fā)的。因此可以簡單地把系統(tǒng)劃分為兩個(gè)基本模塊,它們分別是數(shù)據(jù)接收模塊與數(shù)據(jù)發(fā)送模塊。調(diào)用該函數(shù)的線程將暫停運(yùn)行直到連接成功或者錯(cuò)誤發(fā)生。該字節(jié)數(shù)可能小于指定要發(fā)送的字節(jié)數(shù)。 交通燈某一次延時(shí)完畢請求獲得新的延時(shí)執(zhí)行的操作,如圖41:交通燈控制系統(tǒng)WEB CLIENT系統(tǒng)從PORTD0口收到下降沿信號(hào)當(dāng)前一次延時(shí)完畢服務(wù)端得到車流信息儲(chǔ)存到數(shù)據(jù)庫中執(zhí)行中斷程序把檢測到車流發(fā)給服務(wù)端WEB CLIENT系統(tǒng)從服務(wù)端收到這次要設(shè)定的時(shí)間查詢數(shù)據(jù)庫把車流對應(yīng)的延時(shí)發(fā)給開發(fā)板交通燈控制系統(tǒng)從P0口讀到要設(shè)定的延時(shí)把要設(shè)定的延時(shí)從PORTB口輸出圖41 交通燈系統(tǒng)請求延時(shí)圖詳細(xì)請看附錄代碼的INT0中斷子程序。extern void slMain(void *arg) __attribute__ ((noreturn))。 int i。 //DDRF |= 0x0C。 return 0。) { slPrintFormat(0, \r\n%s(%s): , prompt, value)。 if(c = 39。A39。 sbi(PORTD,PORTD6)。 slExitCritical()。 u_char t[4]。 slDelay(10)。 for(i=5。 } else if(!strncmp(rxbuff,Ccount,6))//send the C car count to server { slPrintFormat((NUTDEVICE *)sostream, Ccount:%u,Ccount)。BV(PINF2)))//query the PINF2 is zero or not { while(!(PINFamp。BV(PINE3)))//query the PINF3 is zero or not { while(!(PINEamp。 static const char CDF[] = Configuring device failed\r\n。 if(!MyUartAvrInput(uart,1000)) { AutoConfig = 0。 slPrintFlush(uart)。amp。 // Input netmask and gateway, if nonzero IP address. ip = inet_addr(my_ip)。 } slIpRouteAdd(0, 0, gate, amp。 slDelay(250)。 slNetSaveConfig()。 } slPrintString_P(uart, BMAC)。F39。 // Input MAC address. for(。 slPrintFlush(uart)。 static const char BMAC[] = Bad MAC address\r\n。 }}THREAD(DThread, arg){//Endless loop in thread. for(。 }}THREAD(BThread, arg){// Endless loop in thread. for(。 } else if(!strncmp(rxbuff,Acount,6))//send the A car count to server { slPrintFormat((NUTDEVICE *)sostream, Acount:%u,Acount)。 slPrintString((NUTDEVICE *)sostream, info:Burgency irq success.\r\n)。 } else if(!strncmp(rxbuff,urgency,rlen)) { //set PORTD5 to zero 10ms and make 80C51 e into interrupt(int0) //make the red light of AB road turn on PORTDamp。 int c , i , j。 } } else AutoIrq = 1。irq_count2) { if(roadFlag) { cbi(PORTD,PORTD6)。F39。 ) return c 39。 static u_char inbuff[256]。 slHeapAdd((void *)(RAMEND + 1), 0x7FFF RAMEND)。 DDRD = 0xF0。 } return 0。(2)可以加上電磁感應(yīng)傳感器來進(jìn)行車流檢測。除此之外連接的建立必須調(diào)用slTcpConnect或者 slTcpAccept。 要發(fā)送的字節(jié)數(shù)。圖36 客戶端發(fā)送時(shí)機(jī)及過程流程圖(2)int slTcpConnect(TCPSOCKET *sock, u_long addr, u_short port)連接遠(yuǎn)程的socket套節(jié)字。TCP協(xié)議為其上的應(yīng)用層提供了一種可靠傳輸服務(wù)。當(dāng)INT7 – INT0 為39。如果你想在執(zhí)行中斷服務(wù)程序時(shí)響應(yīng)另外一個(gè)更重要的中斷,那么就要在中斷服務(wù)程序中加入一條打開全局中斷的語句。 Realtek 8019AS device driver 167。 HTTP 167。在豐富的庫元件的支持下,所以它對“人機(jī)對話”的模擬增強(qiáng)了系統(tǒng)的真實(shí)性;二是虛擬工具箱的功能,Proteus的虛擬工具箱提供了電路測試中的常用工具和儀器,主要用于在實(shí)時(shí)仿真同時(shí)的電路參數(shù)觀測,測量結(jié)果隨仿真動(dòng)態(tài)變化并顯示,可以滿足精度要求不是很高的測量分析,對于電路特性的定性分析可以起到事半功倍的效果,大大節(jié)約了測試時(shí)間和開發(fā)成本??墒峭枪鸾Y(jié)構(gòu)的AVR,要求數(shù)據(jù)指針能指向任一個(gè)數(shù)據(jù)內(nèi)存和程序內(nèi)存。(3)仿真設(shè)計(jì)根據(jù)系統(tǒng)的原理圖可以作出仿真電路圖23:圖23中左下角的芯片是ATmega128,用來仿真Web Client。兩者結(jié)合的硬件連接圖如圖21:圖21 硬件框圖它跟控制中心相連接是基于Internet[6]的網(wǎng)絡(luò)信息傳輸,其傳輸協(xié)議是因特網(wǎng)已經(jīng)成熟的TCP/IP協(xié)議,不僅可以完成本地信息的接收和發(fā)送而且TCP保證了收到的數(shù)據(jù)都是準(zhǔn)備無誤,另外在遠(yuǎn)距離上可以完成同樣的功能,這就使該系統(tǒng)能較少的受地域的限制,應(yīng)