|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:/ }. X$ Q5 [5 ~$ `, O6 G2 q4 s
- }# _8 \- \9 S
#include <reg51.h># Y8 g s& z8 E
#define MESSAGE_LEN 3 // 定义数据长度
# S6 z& D# ?6 |) z( w& f% ?unsigned char message[MESSAGE_LEN];4 i. A; f# z# {3 f" B4 ^
void init_serialcomm()( d$ {( `6 q+ `6 t# ^$ W
{
% ?6 g' }1 K! {) m TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X20! b H* m1 L! L" z( o& l+ [- a
TH1 = 0xfd;
1 z- x- H& C; O8 o" w* c2 C) Z TL1 = 0xfd;2 ~, P5 X* T9 j* B# a M7 c
TR1 = 1;
/ o* z5 h& v) J2 H SCON = 0xd8;; p7 i9 d3 ?- f9 B3 y3 Y; X" U
PCON = 0x00;' y( E2 \0 i D! }& l j
IE = 0x90; U N, W8 f% f3 h
}
; Q5 k# O* S1 u; `" |: T$ Nvoid putchar(unsigned char ch) // 串口发送一个字符+ n6 F0 C6 B$ D
{3 |4 Z8 [, g$ w: f
SBUF = ch;
6 {/ N# @3 }, {5 x/ \4 T while (TI == 0);7 L9 v, z4 q& H7 |4 o4 |
TI = 0; % X9 e5 ~, P1 y% N' ^8 f( P1 a
}+ @3 p3 Z& G- G5 _0 ^+ o
void send_message(void) // 串口发送字符串) A2 B6 h* W; d6 s' n" w
{) w* ?! k3 J$ g ^3 `0 ~
unsigned int i = 0;% a7 q: _5 l+ \- F
do
I. ~% N3 E/ i) P8 {2 ~( r" K3 ?3 Q {' d( L3 e) m G' k$ Q1 z
putchar(message[i]);
& k3 }5 g! @) s# z& U2 ^ i++; 9 a5 K, Q* `& f, u
} while (i < MESSAGE_LEN);5 ^1 `) G& w6 N
}/ L8 s6 X- e/ o$ X1 R) a
main()6 c# o( ?* O4 a. T0 y+ Q# j! }
{
' S+ T) Q3 H4 B3 L9 j message[MESSAGE_LEN] = {'M','C','S'};
) Y: S* C" ~- K1 y5 X init_serialcomm(); }7 p. Z' C: @# @' K1 W* H
send_message();
2 u& T8 O W2 G$ q) A+ U}
$ d0 {' W/ b. |0 e5 ?
& X9 T& l8 ]1 t. t2 E9 g1 e使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”
1 l' W" v$ s* j& w本想显示“MCS”,为什么会显示错呢?: [9 a: N, U# @1 J
" E3 ^6 X2 @# M8 T5 C& @, I哪位高手可以指导一下呢? |
|