線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1847
推到 Plurk!
推到 Facebook!

懇求各c++ builder 及8051 高手出手相助

尚未結案
mcng815
一般會員


發表:4
回覆:1
積分:1
註冊:2004-10-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-05 00:13:17 IP:219.77.xxx.xxx 未訂閱
假設BCB中有個button通過RE-232來控制8051上的LED,當按著個button時8051上的LCD就會著,那麼BCB中的button program及8051上的c program要怎樣寫??? 懇求各c builder 及8051 高手出手相助,無限感激
Albertz
初階會員


發表:2
回覆:57
積分:31
註冊:2002-09-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-05 09:17:12 IP:211.20.xxx.xxx 未訂閱
引述 ChengCTI大大的名言供你參考一下:    ============================ 曾經有個課程放在我面前, 但是我一直沒有去上課 等到我可能被當掉的時候才後悔莫及開始找幫手 塵世間最痛苦莫過於此 如果上天可以給我個機會再來一次 我會跟老師說, 讓我重修 如果非要在重修加上一個期限 我希望是 "三年" ============================    作業要自己做
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-05 10:13:53 IP:61.218.xxx.xxx 未訂閱
你的問題論壇上有很多答案喔!! 你可以用RS232這個關鍵字去收尋 會有很多滿意的答案 請參考各位大大的文章 http://delphi.ktop.com.tw/topic.php?topic_id=53689 http://delphi.ktop.com.tw/topic.php?topic_id=51633 http://delphi.ktop.com.tw/topic.php?topic_id=41588 8051的部分其實很容易只要把IE,SCON,TMOD,TCON這些暫存器設定好就可以了 參考一下 下面的程式片段 就夠了 /*------------------------------------------------------------------------------ ------------------------------------------------------------------------------*/ #define TBUF_SIZE 256 /* DO NOT CHANGE */ #define RBUF_SIZE 256 /* DO NOT CHANGE */ static xdata unsigned char tbuf [TBUF_SIZE]; static xdata unsigned char rbuf [RBUF_SIZE]; static xdata unsigned char t_in = 0; static xdata unsigned char t_out = 0; static xdata unsigned char t_disabled = 0; static xdata unsigned char r_in = 0; static xdata unsigned char r_out = 0; /*------------------------------------------------------------------------------ ------------------------------------------------------------------------------*/ static void com_isr (void) interrupt 4 using 2 { /*------------------------------------------------ Received data interrupt. ------------------------------------------------*/ if (RI != 0) { RI = 0; if ((r_in 1) != r_out) rbuf [r_in ] = SBUF; } /*------------------------------------------------ Transmitted data interrupt. ------------------------------------------------*/ if (TI != 0) { TI = 0; if (t_in != t_out) SBUF = tbuf [t_out ]; else t_disabled = 1; } } /*------------------------------------------------------------------------------ ------------------------------------------------------------------------------*/ void com_initialize (void) { /*------------------------------------------------ Setup TIMER1 to generate the proper baud rate. ------------------------------------------------*/ com_baudrate (1200); /*------------------------------------------------ Clear com buffer indexes. ------------------------------------------------*/ EA = 0; /* Disable Interrupts */ t_in = 0; t_out = 0; t_disabled = 1; r_in = 0; r_out = 0; /*------------------------------------------------ Setup serial port registers. ------------------------------------------------*/ SM0 = 0; SM1 = 1; /* serial port MODE 1 */ SM2 = 0; REN = 1; /* enable serial receiver */ TI = 0; /* clear transmit interrupt */ RI = 0; /* clear receiver interrupt */ ES = 1; /* enable serial interrupts */ PS = 0; /* set serial interrupts to low priority */ EA = 1; /* Enable Interrupts */ } /*------------------------------------------------------------------------------ ------------------------------------------------------------------------------*/ void com_baudrate ( unsigned baudrate) { EA = 0; /* Disable Interrupts */ /*------------------------------------------------ Clear transmit interrupt and buffer. ------------------------------------------------*/ TI = 0; /* clear transmit interrupt */ t_in = 0; /* empty transmit buffer */ t_out = 0; t_disabled = 1; /* disable transmitter */ /*------------------------------------------------ Set timer 1 up as a baud rate generator. ------------------------------------------------*/ TR1 = 0; /* stop timer 1 */ ET1 = 0; /* disable timer 1 interrupt */ PCON |= 0x80; /* 0x80=SMOD: set serial baudrate doubler */ TMOD &= ~0xF0; /* clear timer 1 mode bits */ TMOD |= 0x20; /* put timer 1 into MODE 2 */ TH1 = (unsigned char) (256 - (XTAL / (16L * 12L * baudrate))); TR1 = 1; /* start timer 1 */ EA = 1; /* Enable Interrupts */ } /*------------------------------------------------------------------------------ ------------------------------------------------------------------------------*/ char com_putchar ( unsigned char c) { /*------------------------------------------------ If the buffer is full, return an error value. ------------------------------------------------*/ if ((TBUF_SIZE - com_tbuflen ()) <= 2) return (-1); /*------------------------------------------------ Add the data to the transmit buffer. If the transmit interrupt is disabled, then enable it. ------------------------------------------------*/ EA = 0; /* Disable Interrupts */ tbuf [t_in ] = c; if (t_disabled) /* if transmitter is disabled */ { t_disabled = 0; TI = 1; /* enable it */ } EA = 1; /* Enable Interrupts */ return (0); } /*------------------------------------------------------------------------------ ------------------------------------------------------------------------------*/ int com_getchar (void) { int c; if (com_rbuflen () == 0) return (-1); EA = 0; /* Disable Interrupts */ c = rbuf [r_out ]; EA = 1; /* Enable Interrupts */ return (c); } /*------------------------------------------------------------------------------ ------------------------------------------------------------------------------*/ unsigned char com_rbuflen (void) { return (r_in - r_out); } /*------------------------------------------------------------------------------ ------------------------------------------------------------------------------*/ unsigned char com_tbuflen (void) { return (t_in - t_out); } /*------------------------------------------------------------------------------ ------------------------------------------------------------------------------*/ ~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
系統時間:2024-03-29 15:54:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!