引用 | 编辑
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 |