|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:
9 c0 `: [; z# p8 w: R7 ~& r. W" |7 e/ I, `5 X6 p+ C; T
#include <reg51.h>
4 Q2 _* T! r- V6 k; `, C8 \#define MESSAGE_LEN 3 // 定义数据长度; _1 Z* K& @/ M& r
unsigned char message[MESSAGE_LEN];
' T! H& E: U; [+ h# Kvoid init_serialcomm()
+ U3 n" M1 H3 b0 ?{
+ }' R n& S5 I1 b TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X20& s) Q- t0 x2 i# m* o
TH1 = 0xfd;
3 G. l& e4 ]3 W0 e- i/ X0 D' X7 e TL1 = 0xfd;
. E3 @+ _/ `# F1 x- F TR1 = 1;
* ]( f# a/ N+ s* u' d6 x SCON = 0xd8;* A$ B2 h: ]1 S o/ ]
PCON = 0x00;0 I. D& u* s% {6 l. T4 g( `. q" [7 X
IE = 0x90;
/ |# e' I, N3 j* @ y5 B7 ?, h; g}
, Y8 O; g1 M1 a/ n& L% }( ~# M) Fvoid putchar(unsigned char ch) // 串口发送一个字符
2 r& y$ i$ w, W- x' U* K* [{
; C; e2 J! h1 t5 K7 I0 T2 U6 U$ V SBUF = ch;
- x0 P2 n7 W4 f2 q& l( g while (TI == 0);# c; c* M% X* Z0 [. ~
TI = 0;
# c3 i: ~1 b% {! @, o" s- z}
6 X4 W. f+ I& \' k- xvoid send_message(void) // 串口发送字符串+ X8 F8 }. f# |' _5 F1 W- t
{
/ S9 s: a9 d N( k/ n) e6 a, R4 [ unsigned int i = 0;4 M4 M9 y. Z* U2 S9 W
do
" [6 x9 |+ B% d/ q/ ?$ Y {* Q7 B( \3 L$ |0 j5 s' N
putchar(message[i]);
, g3 X2 O# g$ g r% w7 i i++;
- y" t' h0 M5 @ } while (i < MESSAGE_LEN);
; O7 w2 n4 v8 ~& C5 {* z}6 U# t! G, w) k- H+ o. C
main()5 Y6 O1 i" A/ l- d
{, U5 b' m; D) V
message[MESSAGE_LEN] = {'M','C','S'};
+ O }* Z) |, ] Q3 W" L init_serialcomm();/ R4 R$ ~1 v, I1 S
send_message();/ c. u) \; `9 O3 c0 J( w3 X9 ?
}4 X8 Y% Y$ p$ @( t4 f6 q! {
: e( ]; t- r) L; L使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”# U: j* W3 P! A2 q0 w) J3 `
本想显示“MCS”,为什么会显示错呢?
6 _! ^; h) `# q' J# y% P, y- U+ v+ A* \0 q9 G
哪位高手可以指导一下呢? |
|