引用 | 編輯
cmovies
2007-02-01 10:36 |
1樓
▲ ▼ |
(14.7456MHz / 12) / 32 = 38400
38400 / 9600bps = 4 TH1 = 256 - 4 = 252 // 只要將 TMOD, TH1, TR1, SCON 設定正確就可以透過 SBUF 來傳送資料給PC SCON = 0x50; // 8 bit UART (mode 1) TMOD = 0x20; // T0 mod 0, T1 mode 1 TH1 = -4; // 256 - 4 = 252 TR1 = 1; // 啟動 Timer 1 // 透過 SBUF 傳送資料給 PC SBUF = Ɔ' // 傳送 Ɔ' (0x30) 給 PC while (!TI) ; // 等待傳送完成 // 透過 KEIL C 的 puts, printf,... 來傳送RS232資料 TI = 1; // 使用 puts, printf, ... 前一定要先設為 1 puts("Hello"); // 傳送 "Hello" 給 PC x0 |
引用 | 編輯
cmovies
2007-02-01 18:54 |
3樓
▲ ▼ |
你用的是 KEIL 的 C51 嗎? PC 用什麼軟體來接收顯示?
#include <reg52.h> #include <stdio.h> void main(void) { // 只要將 TMOD, TH1, TR1, SCON 設定正確就可以透過 SBUF 來傳送資料給PC SCON = 0x50; // 8 bit UART (mode 1) TMOD = 0x20; // T0 mod 0, T1 mode 1 TH1 = -4; // 256 - 4 = 252 TR1 = 1; // 啟動 Timer 1 // 透過 KEIL C 的 puts, printf,... 來傳送RS232資料 TI = 1; // 使用 puts, printf, ... 前一定要先設為 1 puts("Hello"); // 傳送 "Hello" 給 PC while (1) ; } x0 |
引用 | 編輯
a0918149010
2008-04-10 18:51 |
7樓
▲ ▼ |
#include <REG51.H>
#include <stdio.h> void main(void) { // 只要將 TMOD, TH1, TR1, SCON 設定正確就可以透過 SBUF 來傳送資料給PC // SCON = 0x50; // 8 bit UART (mode 1) // TMOD = 0x20; // T0 mod 0, T1 mode 1 // TH1 = -4; // 256 - 4 = 252 // TR1 = 1; // 啟動 Timer 1 // 透過 KEIL C 的 puts, printf,... 來傳送RS232資料 TI = 1; // 使用 puts, printf, ... 前一定要先設為 1 puts("Hello"); // 傳送 "Hello" 給 PC while (1) ; } 請問我的鮑率由硬體選擇是否就可以不管SCON了呢??我用SBUF可以傳送SBUF的值給PC, 但是用puts或printf就沒辦法傳回到超級終端機,請問大大能否幫幫我呢?感激不盡 x0 |
引用 | 編輯
a0918149010
2008-04-10 18:59 |
8樓
▲ ▼ |
#include <REG51.H>
#include <stdio.h> void main(void) { // 只要將 TMOD, TH1, TR1, SCON 設定正確就可以透過 SBUF 來傳送資料給PC // SCON = 0x50; // 8 bit UART (mode 1) // TMOD = 0x20; // T0 mod 0, T1 mode 1 // TH1 = -4; // 256 - 4 = 252 // TR1 = 1; // 啟動 Timer 1 // 透過 KEIL C 的 puts, printf,... 來傳送RS232資料 TI = 1; // 使用 puts, printf, ... 前一定要先設為 1 puts("Hello"); // 傳送 "Hello" 給 PC while (1) ; } 請問大大我的RS232用SBUF可以回傳SBUF裡的值給PC超級終端機, 但是puts或是printf沒辦法回傳字串回去, 我程式是否有錯呢??因為我的硬體已有鮑率的選擇, 是否可以不用設定SCON??請大大幫我解答一下, 感激不盡^^ x0 |