|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | 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 |
求助串口問(wèn)題 |
| 作者:maguofeng0 欄目:EDA技術(shù) |
#include <reg52.h> #define N 8 unsigned CHAR data buf[N]; unsigned CHAR count=0; unsigned CHAR flag; void main(void) { TMOD=0x20; TH1 = 0xfd; TL1 = 0xfd; SCON = 0xd8; PCON = 0x00; flag = 0; TR1 = 1; TI =0; ES=1; while(1) { if(flag) //處理接收命令。命令格式為 0x0a 0xaa XX XX XX XX XX 0x0b { if(buf[0]==0x0a&&buf[7]==0x0b) { if(buf[1]==0xaa) { ;//修改時(shí)鐘 } } flag = 0; } } } void serial(void) interrupt 4 //這是串口中斷,注意只管接收 { CHAR i; ES = 0; if(RI) { i = SBUF;//收到的字節(jié)放到緩沖變量buf里 RI = 0; if(!flag) { buf[count] = i; count++; if(count==N) { flag = 1; //做標(biāo)志,說(shuō)明這個(gè)字節(jié)要回送 count = 0; } TI=1; P2=0x00; } } if(TI) { SBUF=i; TI = 0; //發(fā)送程序 } TI=0; ES = 1; } 我用串口調(diào)試助手怎么就看不到東西呢? |
| 2樓: | >>參與討論 |
| 作者: sassos 于 2006/6/28 16:24:00 發(fā)布:
RE 你這樣同時(shí)讓中斷完成接收發(fā)送功能,不是判斷下RI,TI就可以的,發(fā)送用查詢寫(xiě)在主程序里。不要把簡(jiǎn)單的事情復(fù)雜化 |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |