|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
源程序如下:1 L+ d I+ j7 a
! I9 L& j3 D/ X: W#include <reg51.h>
+ V) u) K5 z$ Z( c* W#define MESSAGE_LEN 3 // 定义数据长度4 @1 k3 V' J/ M4 `9 m
unsigned char message[MESSAGE_LEN];- @ Z8 `& t- u6 z- s
void init_serialcomm()% \4 r G7 k: B* s% I7 L0 w* G8 Y' |
{
D, l% \" u% ?) X' S: Y( z0 E TMOD = 0x20; // 设置定时器1为工作方式1,波特率9600,初值为0X20- l9 r( U5 H) D. B4 m
TH1 = 0xfd;& ]& b9 q+ Z- X, C, ^1 J0 U
TL1 = 0xfd;0 s" I' B2 h6 w' P
TR1 = 1;
# b" a" c. z5 ` _' p( Y SCON = 0xd8;9 f" y& u9 ~5 S
PCON = 0x00;, Q& S2 N H& Y; X8 u+ o9 R
IE = 0x90;# x, H% h1 S2 u& n6 D1 H5 O1 o
}
8 a0 ^, i/ C. j5 U) Avoid putchar(unsigned char ch) // 串口发送一个字符
s O" D1 r0 z6 l{* _( d1 A. F5 G; O4 B
SBUF = ch;2 [4 }: N% Z. v l
while (TI == 0);
8 ~% W% ^3 L4 G5 j+ }5 ?1 l- N TI = 0; ' M$ K M2 {& O
}8 Y( [7 z* V& f" C; P5 b
void send_message(void) // 串口发送字符串
6 \; w9 Y4 o- k{
0 U6 H+ W( O. J3 R8 l' Q0 j unsigned int i = 0;
. \- K4 m6 ~- O8 j2 j, [ do" B; W7 g; Q6 P5 {
{5 f* K+ V/ v J
putchar(message[i]);* O2 c9 i) ?! i
i++; + k' a9 V1 l% ~- J1 y$ Y
} while (i < MESSAGE_LEN);; @( R7 d% n. e" j( B; Q9 x% }
}
4 m* _, _9 p% k5 Wmain()- I2 R+ D4 \- D. a) {
{
: v! N) Z5 w- F/ X8 c* s- R- k message[MESSAGE_LEN] = {'M','C','S'};
8 t9 W* D) ]+ {& [. K# @* F init_serialcomm();
6 L# `4 y! B* B6 \! i/ ? send_message();
) M* S+ h, m/ B2 h! b1 L}% I$ ^' e$ ~. {; w
) @- X9 r$ v1 b. _5 L$ J. J使用KEIL编译后模拟仿真,在串行口输出窗口输出“MMCS”) p# e+ M. V" ~4 }5 b& x. r0 ~
本想显示“MCS”,为什么会显示错呢?
. {, J- B7 U" a3 X
+ R0 H5 {9 n& M: X: a' d哪位高手可以指导一下呢? |
|